我正在尝试使用新的DynamoDB BatchResolvers写入AppSync解析器中的两个DynamoDB表(目前使用Lambda函数执行此操作)。但是,在查看CloudWatch日志时,我收到以下权限错误:
“User: arn:aws:sts::111111111111:assumed-role/appsync-datasource-ddb-xxxxxx-TABLE-ONE/APPSYNC_ASSUME_ROLE is not authorized to perform: dynamodb:BatchWriteItem on resource: arn:aws:dynamodb:us-east-1:111111111111:table/TABLE-TWO (Service: AmazonDynamoDBv2; Status Code: 400; Error Code: AccessDeniedException;
我在我的解析器中使用TABLE-ONE
作为我的数据源。
我添加了"dynamodb:BatchWriteItem"
和"dynamodb:BatchGetItem"
到TABLE-ONE
的权限:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"dynamodb:BatchGetItem",
"dynamodb:BatchWriteItem",
"dynamodb:PutItem",
"dynamodb:DeleteItem",
"dynamodb:GetItem",
"dynamodb:Scan",
"dynamodb:Query",
"dynamodb:UpdateItem"
],
"Resource": [
"arn:aws:dynamodb:us-east-1:111111111111:table/TABLE-ONE",
"arn:aws:dynamodb:us-east-1:111111111111:table/TABLE-ONE/*",
"arn:aws:dynamodb:us-east-1:111111111111:table/TABLE-TWO",
"arn:aws:dynamodb:us-east-1:111111111111:table/TABLE-TWO/*"
]
}
]
}
我有另一个使用BatchGetItem
操作的解析程序,并在我的响应中获取空值 - 更改表的策略访问级别修复了空值:
但是,选中BatchWriteItem
的复选框似乎无法解决向数据源表的策略添加权限的问题。
我还在AppSync中测试了我的解析器测试功能,评估的请求和响应正在按预期工作。
我还能在两个表之间设置BatchWriteItem操作的权限吗?它似乎是在调用用户的assumed-role
而不是表格的角色 - 我可以强行使用'强制'它使用表的角色?