Я пытаюсь развернуть лямбда-функцию, которая запускается при записи файла AVRO в существующую корзину s3.
Моя конфигурация serverless.yml выглядит следующим образом:
service: braze-lambdas
provider:
name: aws
runtime: python3.7
region: us-west-1
role: arn:aws:iam::<account_id>:role/<role_name>
stage: dev
deploymentBucket:
name: serverless-framework-dev-us-west-1
serverSideEncryption: AES256
functions:
hello:
handler: handler.hello
events:
- s3:
bucket: <company>-dev-ec2-us-west-2
existing: true
events: s3:ObjectCreated:*
rules:
- prefix: gaurav/lambdas/123/
- suffix: .avro
Когда я запускаю serverless deploy
, я получаю следующую ошибку:
ServerlessError: An error occurred: IamRoleCustomResourcesLambdaExecution - API: iam:CreateRole User: arn:aws:sts::<account_id>:assumed-role/serverless-framework-dev/jenkins_braze_lambdas_deploy is not authorized to perform: iam:CreateRole on resource: arn:aws:iam::<account_id>:role/braze-lambdas-dev-IamRoleCustomResourcesLambdaExec-1M5QQI6P2ZYUH.
Я вижу некоторые упоминания о том, что без сервера требуется iam:CreateRole
из-за того, как работает CloudFormation, но кто-нибудь может подтвердить, что это единственное решение, если я хочуиспользовать existing: true
? Есть ли другой способ обойти это, кроме использования старого безсерверного плагина, который использовался до того, как фреймворк добавил поддержку конфигурации existing: true
?
Кроме того, что такое 1M5QQI6P2ZYUH
в arn:aws:iam::<account_id>:role/braze-lambdas-dev-IamRoleCustomResourcesLambdaExec-1M5QQI6P2ZYUH
? Это случайный идентификатор? Означает ли это, что сервер не будет пытаться создать новую роль каждый раз, когда я пытаюсь развернуть функцию?