单AWS账号执行CloudFormation栈时遇跨账号传角色不允许错误求助
检查CloudFormation模板/自定义配置中的角色ARN
确认custom.mk或CloudFormation模板里指定的所有IAM角色ARN(比如EKS集群角色、节点实例角色等)的账号ID与aws sts get-caller-identity --query 'Account' --output text返回的完全一致,避免手误填入其他账号ID。验证IAM角色的信任策略
对于栈中用到的每个IAM角色,检查其信任策略是否仅允许当前账号的服务/主体调用:aws iam get-role --role-name <目标角色名> --query 'Role.AssumeRolePolicyDocument'确保
Principal字段中没有包含其他账号的ARN(如arn:aws:iam::OTHER_ACCOUNT_ID:root),同时确认允许cloudformation.amazonaws.com、eks.amazonaws.com等必要服务主体。检查CloudFormation命令的角色参数
查看Makefile中create-eks-cluster目标对应的aws cloudformation create-stack命令,确认是否指定了--role-arn参数,且该参数的值属于当前账号。如果该参数指向其他账号的角色,会直接触发跨账号错误。排查IAM用户的权限边界与会话策略
即使属于admin组,用户可能被权限边界或会话策略限制了iam:PassRole操作:- 查看用户的权限边界:
aws iam get-user --user-name <你的IAM用户名> --query 'User.PermissionsBoundary' - 确认边界策略允许对当前账号内的角色执行
iam:PassRole动作。
- 查看用户的权限边界:
检查AWS Organizations服务控制策略(SCP)
如果账号属于AWS Organizations,联系管理员检查组织级SCP是否存在限制iam:PassRole的规则,比如误将Resource设置为其他账号ARN,或者直接Deny了跨账号传递(即使你是同一账号,SCP的错误配置也可能触发拦截)。确认AWS CLI配置一致性
执行aws configure list确认当前CLI默认配置的账号ID与aws sts get-caller-identity返回一致,同时检查Makefile中是否指定了--profile参数指向其他账号的配置文件。
内容的提问来源于stack exchange,提问作者Robert Campbell

