【发布时间】:2020-02-05 07:51:58
【问题描述】:
我正在尝试部署一个在将 AVRO 文件写入现有 S3 存储桶时触发的 AWS Lambda 函数。
我的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 配置的支持之前使用的旧无服务器插件之外,还有其他方法吗?
另外,arn:aws:iam::<account_id>:role/braze-lambdas-dev-IamRoleCustomResourcesLambdaExec-1M5QQI6P2ZYUH 中的 1M5QQI6P2ZYUH 是什么?它是一个随机标识符吗?这是否意味着每次我尝试部署 Lambda 函数时,Serverless 都会尝试创建新的 IAM 角色?
【问题讨论】:
标签: amazon-iam serverless-framework aws-serverless serverless-plugins