我正在使用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中的所有管理权限授予我使用无服务器的用户。
答案 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/*"
}