部署应用到AWS Lambda时CloudFormation是否必要?权限问题求助
部署AWS Lambda时CloudFormation是否必要?
不是必须的,但强烈推荐使用:
- 不使用CloudFormation的情况下,你可以通过AWS控制台、CLI或SDK直接创建Lambda函数,手动配置触发器、执行角色、环境变量等关联资源。但这种方式无法实现基础设施即代码(IaC),资源变更难以追踪、复用和版本控制,也无法保证多环境的一致性。
- 使用CloudFormation的话,能将Lambda及所有依赖资源(比如IAM角色、API Gateway、DynamoDB表等)定义在模板文件中,实现一键部署、更新、回滚,同时支持版本管理和团队协作,更适合生产环境。
CloudFormation部署Lambda所需的核心权限
根据你实际用到的资源,IAM用户/角色需要以下基础权限(遵循最小权限原则按需添加):
- CloudFormation操作权限:
cloudformation:CreateStack、cloudformation:UpdateStack、cloudformation:DeleteStackcloudformation:DescribeStacks、cloudformation:DescribeStackEvents、cloudformation:GetTemplate
- Lambda操作权限:
lambda:CreateFunction、lambda:UpdateFunctionCode、lambda:UpdateFunctionConfigurationlambda:AddPermission(若需配置触发器权限)
- IAM关联权限(若模板中创建Lambda执行角色):
iam:CreateRole、iam:AttachRolePolicy、iam:PassRole(允许CloudFormation将角色传递给Lambda)
- 其他依赖资源权限(如用到API Gateway、S3、DynamoDB时,需添加对应资源的创建/配置权限)
解决
cloudformation:DescribeStacks权限错误 你遇到的错误直接指向IAM用户demo缺少对目标CloudFormation栈执行DescribeStacks的权限,解决步骤如下:
- 登录AWS控制台,进入IAM服务
- 找到用户
demo,进入其权限策略配置页面 - 添加一条身份内联策略(或托管策略),授权该用户对指定栈执行目标操作:
最小权限示例策略(仅允许指定栈):
若需允许所有CloudFormation栈操作,可将{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "cloudformation:DescribeStacks", "Resource": "arn:aws:cloudformation:ap-south-1:987654321:stack/demo-test-dev/*" } ] }Resource设为"*",但建议优先遵循最小权限原则。 - 保存策略后,重新执行部署操作即可。
内容的提问来源于stack exchange,提问作者Jeet
相关产品推荐
相关产品推荐

