AWS管理员权限IAM角色CloudFormation操作时EC2 Describe权限不足问题
AWS CloudFormation 批处理计算环境权限报错解决方案
你遇到的报错属于典型的服务关联角色委派权限缺失问题,和你提交模板时使用的IAM角色是否拥有AdministratorAccess权限无关,具体原因和修复方案如下:
报错信息:CLIENT_ERROR - 您无权限调用EC2 Describe operations,执行CreateLaunchConfiguration操作需要该权限。
核心原因
- AWS Batch服务创建计算环境(ComputeEnvironment)时,默认使用自身的服务关联角色
AWSServiceRoleForBatch执行底层资源创建操作,而非使用你提交CloudFormation模板时的身份角色。 - 你给提交模板的角色配置的AdministratorAccess权限,仅能保证CloudFormation触发Batch服务创建的请求被允许,无法解决Batch服务自身操作EC2资源的权限不足问题。
排查步骤
- 登录IAM控制台,搜索确认账号下是否存在
AWSServiceRoleForBatch服务关联角色,也可通过AWS CLI执行命令验证:aws iam get-role --role-name AWSServiceRoleForBatch - 若角色存在,检查该角色的权限配置:是否被手动移除了默认托管策略、是否附加了限制EC2操作的权限边界、是否存在拒绝EC2相关操作的自定义策略。
- 排查账号所属AWS Organizations的服务控制策略(SCP),确认没有全局拒绝
ec2:Describe*、ec2:CreateLaunchConfiguration操作的规则,SCP限制会作用于所有角色包括服务关联角色。
修复方案
- 若不存在
AWSServiceRoleForBatch角色,手动创建服务关联角色即可:aws iam create-service-linked-role --aws-service-name batch.amazonaws.com - 若角色已存在但权限被修改,重新为角色附加AWS官方托管的
AWSBatchServiceRolePolicy策略,该默认策略已包含所有Batch服务需要的EC2操作权限。 - 若你自定义了Batch服务使用的执行角色而非默认服务关联角色,在自定义角色的权限策略中添加以下权限段即可:
{ "Effect": "Allow", "Action": [ "ec2:Describe*", "ec2:CreateLaunchConfiguration" ], "Resource": "*" }
内容的提问来源于stack exchange,提问作者Olshansky
相关产品推荐
相关产品推荐

