如何在Serverless框架中修改provider级iamRoleStatements的角色名称?
保留provider级iamRoleStatements的同时修改Lambda角色名称
可以实现,只需在Serverless配置的provider块中添加角色名称的自定义配置,框架会自动把你定义的iamRoleStatements权限附加到这个指定名称的角色上,具体有两种常用配置方式:
1. 固定角色名称
直接在provider.iam.role.name中设置你想要的固定名称:
provider: name: aws ... iamRoleStatements: - Effect: Allow Action: - dynamodb:DescribeTable - dynamodb:Query - dynamodb:Scan - dynamodb:GetItem - dynamodb:PutItem - dynamodb:UpdateItem - dynamodb:DeleteItem iam: role: name: "my-custom-lambda-role" # 自定义固定角色名
2. 动态生成角色名称
如果需要像原生成逻辑那样包含环境、区域等动态变量,可使用CloudFormation内置函数来定义:
provider: name: aws ... iamRoleStatements: - Effect: Allow Action: - dynamodb:DescribeTable - dynamodb:Query - dynamodb:Scan - dynamodb:GetItem - dynamodb:PutItem - dynamodb:UpdateItem - dynamodb:DeleteItem iam: role: name: Fn::Join: - "-" - [ "my-custom-prefix", "${self:provider.stage}", { Ref: "AWS::Region" }, "lambda-role" ]
配置完成后,Serverless会创建你指定名称的IAM角色,同时自动将provider.iamRoleStatements中的权限策略绑定到该角色上,既保留了原有权限配置,又实现了角色名称的自定义。
内容的提问来源于stack exchange,提问作者Joey Yi Zhao
相关产品推荐
相关产品推荐

