AWS CodePipeline部署CloudFormation报root无iam:PassRole权限求助
问题修复方案
报错根因
你收到的root is not authorized to perform: iam:PassRole报错,是因为调用CloudFormation执行部署的身份(你当前使用的root账号)缺少IAM PassRole权限,无法将模板中定义的IAM角色传递给CloudFormation服务完成资源创建。
修复步骤
- 第一步:为操作身份添加PassRole权限
不建议生产环境使用root账号执行部署操作,你可以先为当前使用的root账号添加如下自定义策略,也可以切换为专用IAM操作账号并给该账号配置对应权限:
生产环境请将Resource替换为你实际创建的IAM角色ARN,缩小权限范围{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "*", "Condition": { "StringEquals": { "iam:PassedToService": "cloudformation.amazonaws.com" } } } ] } - 第二步:修正CloudFormation模板错误
你当前模板中的RootInstanceProfile资源的Roles参数引用错误,原本引用的是角色名参数,实际应该引用RootRole资源,修正后的代码段如下:RootInstanceProfile: Type: 'AWS::IAM::InstanceProfile' Properties: Path: / Roles: - !Ref RootRole - 第三步:可选优化项
你当前定义的IAM角色开放了全操作全资源权限,且仅信任S3服务,可根据实际使用场景收敛权限范围、补充需要信任的服务主体,避免权限过大带来的安全风险。
内容的提问来源于stack exchange,提问作者wilkux
相关产品推荐
相关产品推荐

