【发布时间】:2019-02-07 14:05:18
【问题描述】:
我正在尝试访问 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
我错过了什么?
【问题讨论】:
-
我不会将它连接到不正确的权限,因为在这种情况下,您会立即收到 IAM 错误。这是挂在哪个确切的函数调用上?
-
您是否尝试增加 lambda 超时,只是为了测试?
-
@LechMigdal 我有。我刚刚发现删除 VPC 可以解决此问题,但我需要 VPC 才能访问 RDS。
aws-sdk不应该能够在不访问公共互联网的情况下访问 aws 资源吗? -
啊,所以 lambda 无法访问公共互联网?尝试为 SSM 设置 VPC 端点 - docs.aws.amazon.com/systems-manager/latest/userguide/…
-
我很高兴,另外您可能想要编辑问题的标题以使其更通用/不指向 IAM 作为问题根本原因的东西:)
标签: amazon-web-services aws-lambda serverless-framework serverless