AppSync BatchResolver AssumeRole 错误

AppSync BatchResolver AssumeRole Error

我正在尝试使用新的 DynamoDB BatchResolvers 在 AppSync 解析器中写入两个 DynamoDB table(目前使用 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 操作并在我的响应中得到空值 - 更改 table 的策略访问级别修复了空值:

但是,选中 BatchWriteItem 的复选框似乎无法解决问题,无论是将权限添加到数据源 table 的策略中。

我还在 AppSync 中测试了我的解析器测试功能,评估的请求和响应按预期工作。

我还能在哪里为两个 table 之间的 BatchWriteItem 操作设置权限?它似乎在调用用户的 assumed-role 而不是 table 的角色 - 我可以 'force' 它来使用 table 的角色吗?

它正在使用您在 AppSync 控制台中为 table 配置的角色。请注意,该特定角色应该将 appsync 作为可信实体。

或者如果您在控制台中创建数据源时使用新角色复选框,它应该会处理它。