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 作为可信实体。
或者如果您在控制台中创建数据源时使用新角色复选框,它应该会处理它。
我正在尝试使用新的 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 作为可信实体。
或者如果您在控制台中创建数据源时使用新角色复选框,它应该会处理它。