我試圖使用無服務器框架(v 0.5.6)從Lambda函數訪問AWS Elasticache羣集,而不會丟失對Dynamodb的訪問權限。我試過用這個Gist沒有運氣。在Lambda函數內部,我要做的第一件事就是連接到Redis實例,但我不斷收到超時,我已經重複檢查了CloudFormation輸出變量及其在函數內的可見性以及VPC的Lambda角色/策略,但仍然沒有任何內容...我沒有沒有找到任何有關如何使用CloudFormation和無服務器創建VPC和安全組的指南,以便按建議的here創建公共和私有子網,NAT和Internet網關。誰能幫忙?使用無服務器框架將Lambda連接到Elasticache
1
A
回答
2
您必須將Lambda函數置於ElastiCache羣集所在的VPC中。當然,一旦您這樣做了,Lambda函數只能訪問VPC內部存在的資源,因此它將不再具有對DynamoDB。解決方案是將一個NAT網關添加到VPC,這將允許Lambda函數訪問VPC外部的資源。
我認爲設置VPC和NAT網關會落在無服務器框架之外,但我不是該框架的專家。我建議您考慮通過AWS控制檯手動配置,或者通過CloudFormation等方式進行配置,然後在無服務器框架配置中指定它需要使用的VPC。
1
雖然它沒有適當的記錄,實際上你可以直接在無服務器的配置文件來配置VPC(見link)
版本0.5
# s-function.json
{
"name": "hello",
"runtime": "nodejs4.3",
"handler": "handler.hello」,
"endpoints": [],
"events": [],
"vpc": {
"securityGroupIds": ["sg-123456"],
"subnetIds": [
"subnet-abc1",
"subnet-abc2",
"subnet-abc3",
]
}
}
1.0版
# serverless.yaml
service: aws-hello
provider: aws
runtime: nodejs4.3
vpc:
securityGroupIds:
— "sg-123456"
subnetIds:
— "subnet-abc1"
— "subnet-abc1"
— "subnet-abc1"
functions:
foo: # inherits the VPC config
handler: src/handler.foo
bar: # overwrites the VPC config
handler: src/handler.bar
vpc:
securityGroupIds:
— "sg-999999"
subnetIds:
— "subnet-zzz9"
相關問題
- 1. 從lambda無服務器連接RDS
- 2. 無法連接到SQL服務器框
- 3. 實體框架6 - 無法連接到數據庫服務器
- 4. 在本地測試Elasticache和無服務器AWS Lambda
- 5. AWS lambda無法連接到EC2 Mysql服務器
- 6. 帶無服務器的MoonMail Lambda架構
- 7. 無法使用iOS的XMPP框架連接Amazon上的ejabberd服務器
- 8. 無服務器框架Facebook Bot慢(AWS Lambda)
- 9. 連接到MySQL服務器通過SSL Zend框架
- 10. 可以通過Robot框架連接到遠程服務器嗎?
- 11. 連接到SQL服務器對話框
- 12. 將MySQL作爲鏈接服務器連接到SQL服務器
- 13. 無法使用套接字連接客戶端到服務器
- 14. 使用LAMP連接到MSSQL服務器
- 15. 使用zend服務器連接到mysql
- 16. 使用Sequelize連接到MSSQL服務器
- 17. 使用android連接到web服務器
- 18. 使用ftp連接到服務器
- 19. 使用TSQL連接到服務器
- 20. 使用ODBC連接到MSSQL服務器
- 21. PHP:Mongodb連接到服務器使用IP
- 22. 使用ssl連接到MySQL服務器
- 23. 連接到使用遠程服務器
- 24. 使用GWT連接到SQL服務器
- 25. 使用android連接到服務器
- 26. 使用C#連接到IRC服務器
- 27. 使用服務器端連接到API
- 28. 使用UDP連接到服務器
- 29. 使用CCDT連接到MQ服務器
- 30. 服務與zend框架連接到另一個sftp服務器的大文件
感謝您的回覆,我已經知道如何手動做,但我發現無主服務器的Gist並且它似乎是一件好事,我希望使用無服務器框架和雲形成工作。 –