AccessDeniedException:用户无权在resource:table上执行dynamodb BatchWriteItem

时间:2018-03-13 16:58:26

标签: node.js amazon-web-services aws-lambda amazon-dynamodb serverless

我正在使用nodejs,无服务器和aws dynamodb。我正在尝试创建一个lambda,我在调用API,获取数据(1000条记录),现在,我想将这些数据插入到我的dynamodb中。

我正在使用batchWrite并通过创建每个25个json对象的桶来使用它。但是我收到了一个错误:
AccessDeniedException: <Username> is not authorized to perform dynamodb BatchWriteItem on resource <table-name>

当我在没有batchWrite和单个PUT操作的情况下执行相同操作时,它工作正常(但我需要使用批处理,因为这会导致吞吐量超出错误)。

我已将AWS中的所有管理权限授予我使用无服务器的用户。

2 个答案:

答案 0 :(得分:5)

在serverless.yml文件中,您应该添加一个新角色

    - Effect: Allow
  Action:
    - dynamodb:DescribeTable
    - dynamodb:Query
    - dynamodb:Scan
    - dynamodb:GetItem
    - dynamodb:PutItem
    - dynamodb:UpdateItem
    - dynamodb:DeleteItem
    - dynamodb:BatchWriteItem
  Resource: "arn:aws:dynamodb:${self:custom.region}:*:table/*"

答案 1 :(得分:2)

这是使用Amplify CLI项目时如何设置它:

{
    "Effect": "Allow",
    "Action": [
        "dynamodb:PutItem",
        "dynamodb:DeleteItem",
        "dynamodb:GetItem",
        "dynamodb:Query",
        "dynamodb:Scan",
        "dynamodb:UpdateItem",
        "dynamodb:BatchWriteItem",
        "dynamodb:Scan"
    ],
    "Resource": "arn:aws:dynamodb:*:*:table/*"
},
{
    "Effect": "Allow",
    "Action": "dynamodb:Query",
    "Resource": "arn:aws:dynamodb:*:*:table/*/index/*"
}