Развертывание функций AWS SAM с использованием уже созданных ролей - PullRequest
0 голосов
/ 06 сентября 2018

При попытке выполнить развертывание в aws с помощью aws sam cli мои лямбда-функции используют следующий скрипт:

aws cloudformation deploy --template-file /Users/ndelvalle/Projects/foo/functions/packaged-template.yaml --stack-name foo --region sa-east-1 --capabilities CAPABILITY_IAM --no-fail-on-empty-changeset

Я получил следующую ошибку в событиях стека:

API: iam:CreateRole User: arn:aws:iam::user/nico is not authorized to perform: iam:CreateRole on resource

Это потому, что у меня нет разрешения на создание роли в моей учетной записи. Вот почему я задаюсь вопросом, есть ли способ определить заранее созданные роли для моих лямбд, поэтому сценарию не нужно создавать роль.

1 Ответ

0 голосов
/ 09 сентября 2018

Для ответа вам нужно больше информации. Многие различные разрешения вступают в игру при развертывании с SAM. Я внедрил шаблон SAM для своей компании, чтобы управлять нашими лямбда-стеками. Нам нужно было предоставить нашим разработчикам Java, работающим со стеками, те же разрешения, которые неявно и явно создает шаблон SAM, помимо простого создания ролей. Для этого мы создали несколько специальных групп в IAM, к которым также прикрепили наших разработчиков без серверов. Можно назначить определенные предопределенные роли для Lambdas, https://github.com/awslabs/serverless-application-model/blob/master/versions/2016-10-31.md#awsserverlessfunction. Если вы определяете роль в шаблоне, она не создает роль автоматически. Однако, если вы объявляете другие ресурсы, такие как Api Gateway и DynamoDB, у вас все равно будут проблемы.

Короче говоря, если вы работаете с SAM, то лучше, если ваш системный администратор предоставит вам разрешения на создание роли, и вам также понадобятся другие разрешения, или же развертывание шаблона SAM будет выполнено исполнителем заданий. как Дженкинс (у которого есть разрешения). Если это слишком благоприятно для вашей команды / компании, возможно, SAM не является хорошим решением ... Лучше всего переключиться на что-то вроде чистого CloudFormation и отказаться от рабочего процесса, ориентированного на разработчика. Есть о чем подумать, надеюсь, это полезно.

...