Я пытаюсь использовать новые DynamoDB BatchResolvers для записи в две таблицы DynamoDB в распознавателе AppSync (в настоящее время для этого используется функция 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
вместо роли таблицы - могу ли я «заставить» его использовать роль таблицы?