参数存储请求在AWS Lambda内部超时

时间:2018-09-02 04:58:39

标签: amazon-web-services aws-lambda serverless-framework serverless

我正尝试访问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

我想念什么?

1 个答案:

答案 0 :(得分:5)

由于提到过Lambda无法访问公共互联网,因此要访问AWS API,请设置VPC endpoint

按照说明-“ VPC端点使您可以将VPC专用连接到支持的AWS服务和VPC端点服务”

对于AWS Systems Manager,请遵循以下过程-Setting Up VPC Endpoints for Systems Manager