我正尝试访问AWS SSM参数存储,就像this article一样。我已经在本地测试过lambda函数,它可以按预期工作。但是,当推送到AWS时,lambda在尝试检索配置时会失败;超时:
{
"errorMessage": "2018-09-02T04:55:49.096Z 71a5006a-ae6c-11e8-9322-313ba5e28048 Task timed out after 6.01 seconds"
}
我在我的serverless.yml
中添加了以下权限。我已尽可能不受限制地尝试查找错误的位置。另外,该参数只是一个字符串,因此它不使用KMS。
service: pwaer-messages-service
provider:
name: aws
runtime: nodejs8.10
vpc:
securityGroupIds:
- sg-222f126f
subnetIds:
- subnet-756aef12
- subnet-130f8f3d
environment:
NODE_ENV: ${opt:stage, 'dev'}
iamRoleStatements:
- Effect: 'Allow'
Action: 'ssm:**'
Resource:
- 'Fn::Join':
- ':'
-
- 'arn:aws:ssm'
- Ref: 'AWS::Region'
- Ref: 'AWS::AccountId'
- 'parameter/*'
functions:
receiveText:
handler: dist/receive.handler
events:
- http:
path: sms/parse
method: post
我想念什么?
答案 0 :(得分:5)
由于提到过Lambda无法访问公共互联网,因此要访问AWS API,请设置VPC endpoint。
按照说明-“ VPC端点使您可以将VPC专用连接到支持的AWS服务和VPC端点服务” 。
对于AWS Systems Manager,请遵循以下过程-Setting Up VPC Endpoints for Systems Manager