AppSync BatchResolver AssumeRole Ошибка - PullRequest
0 голосов
/ 27 апреля 2018

Я пытаюсь использовать новые 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 и получает нулевые значения в моем ответе - изменение уровня доступа к политике таблицы фиксировало нулевые значения: enter image description here

Однако установка флажка для BatchWriteItem, похоже, не решает проблему, либо добавляя разрешения в политику таблицы источника данных.

Я также проверил свою функцию проверки резольвера в AppSync, оцененный запрос и ответ работают должным образом.

Где еще можно установить разрешения для операции BatchWriteItem между двумя таблицами? Похоже, что он вызывает пользователя assumed-role вместо роли таблицы - могу ли я «заставить» его использовать роль таблицы?

1 Ответ

0 голосов
/ 05 мая 2018

Используется роль, настроенная для таблицы в консоли AppSync. Обратите внимание, что эта конкретная роль должна иметь appsync в качестве доверенного объекта. enter image description here

Или, если вы используете новый флажок роли при создании источника данных в консоли, он должен позаботиться об этом.

...