AccessDeniedException:用户无权对资源:表执行dynamodb BatchWriteItem

Vip*_*rma 4 amazon-web-services node.js amazon-dynamodb aws-lambda 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中的所有管理权限授予了我与无服务器一起使用的用户。

Tho*_*988 6

在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/*"
Run Code Online (Sandbox Code Playgroud)

  • 谢谢。我已经知道了。是的,你是对的。serverless.yml文件中提到的角色正在覆盖我在aws帐户中设置的权限。因此,我添加了上面提到的“动作”并且它起作用了。:) (2认同)

gil*_*niy 5

以下是我在使用 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/*"
}
Run Code Online (Sandbox Code Playgroud)