Как мне присоединить разрешение BatchWriteItem к моей политике ролей IAM через безсерверную инфраструктуру? - PullRequest
0 голосов
/ 25 февраля 2019

Эй, я только начал с Serverless, поэтому я стараюсь быть максимально точным с моей проблемой.

Я использую решатели AWS AppSyncDynamoDB, чтобы использовать GraphQL для хранения и получения данных в моей таблице Amazon DynamoDB.Все работало нормально, пока я не захотел использовать пакетные операции, в частности BatchDeleteItem.

Я получил ошибку, что у моего пользователя отсутствовали необходимые разрешения, хотя я указал в своем файле Serverless.yml следующее:

Effect: “Allow”

Action:

- dynamodb:DescribeTable
- dynamodb:Query
- dynamodb:Scan
- dynamodb:GetItem
- dynamodb:PutItem
- dynamodb:UpdateItem
- dynamodb:DeleteItem
- dynamodb:BatchWriteItem
- dynamodb:BatchDeleteItem

Я зашел в консоль управления IAM и увидел, что в созданной политике отсутствуют BatchWriteItem и BatchDelteItem:

{
“Version”: “2012-10-17”,
“Statement”: [
{
  “Action”: [
    “dynamodb:DeleteItem”,
    “dynamodb:GetItem”,
    “dynamodb:PutItem”,
    “dynamodb:Query”,
    “dynamodb:Scan”,
    “dynamodb:UpdateItem”
  ],
  “Resource”: [
    “arn:aws:dynamodb:eu-central-1:MYID:table/MYTABLENAME”,
    “arn:aws:dynamodb:eu-central-1:MYID:table/MYTABLENAME/*”
  ],
  “Effect”: “Allow”
}
]
}

Когда я добавляю необходимое разрешение вручную в политику, все работает.Но для меня действительно важно, чтобы эта политика создавалась на основе файла serverless.yml и развертывания sls.

Я что-то здесь упустил?

Спасибо, Бен!

Ответы [ 2 ]

0 голосов
/ 13 марта 2019

Что на самом деле решило мою проблему, так это то, что лямбда-функция Appsync была вызвана через плагин Serverless Appsync, и в этой роли отсутствовал BatchWriteItem.Я изменил в файле package.json версию плагина на версию GitHub, в которой эта проблема уже исправлена, но до сегодняшнего дня не выпущена.Это исправлено: "serverless-appsync-plugin": "https://github.com/sid88in/serverless-appsync-plugin.git#e33b5cfd"

0 голосов
/ 25 февраля 2019

Это не дает полного ответа на ваш вопрос (по крайней мере, на ту часть, которая спрашивает «почему BatchRead / Write не присоединяется»), но это допустимый вариант в вашем сценарии, когда вам требуются точные разрешения, охватываемыеПолитика управления AWS.Имея это в виду, вы можете использовать Политика DynamoDB crud. Ваша политика будет выглядеть следующим образом (при присоединении к тегу Policies вашего ресурса):

Policies:
- DynamoDBCrudPolicy: 
  TableName: !Ref YourTableName

Поскольку существует единственная политика DynamoDBCrudPolicyотсутствует описание DescribeTable, вы можете попробовать добавить это отдельно, если вам это нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...