如何在使用无服务器框架时从AWS Lambda访问DynamoDB?

Zan*_*non 9 amazon-web-services amazon-dynamodb aws-sdk aws-lambda serverless-framework

我正在使用无服务器框架来管理我的AWS Lambda部署.框架凭据可以访问DynamoDB资源,但是随框架一起部署的Lambda无法访问我的DynamoDB表.

如何为Lambda函数提供正确的访问权限?

Zan*_*non 14

编辑:更新了无服务器框架1.x的答案.

解决方案是设置iamRoleStatements以允许Lambda访问DynamoDB资源.注意:无服务器框架使用的凭据必须具有相同DynamoDB资源的权限.

  1. 添加iamRoleStatementsserverless.yml:

    provider:
      name: aws
      runtime: nodejs4.3
      stage: dev
      region: us-east-1
      iamRoleStatements:
        - Effect: "Allow"
          Action:
            - "dynamodb:*"
          Resource: "arn:aws:dynamodb:${self:provider.region}:*:table/*"
    
    Run Code Online (Sandbox Code Playgroud)
  2. 部署更改:

    > serverless deploy
    
    Run Code Online (Sandbox Code Playgroud)

要在功能级别提供权限(而不是允许所有功能访问DynamoDB),请在此处查看我的其他答案.