为CodePipeline角色配置信任策略避免“困惑代理人”问题遇阻
解决CodePipeline角色信任策略条件限制导致的角色无法扮演问题
问题核心在于你配置的aws:SourceArn条件仅匹配流水线本身的ARN,但CodePipeline调用sts:AssumeRole时传递的是流水线执行实例的ARN(格式类似arn:aws:codepipeline:eu-west-1:111111111:mypipeline/execution/xxx),原条件无法匹配该格式,导致角色扮演请求被拒绝。
修正后的信任策略配置
改用StringLike匹配流水线ARN的前缀,覆盖该流水线的所有执行实例:
AssumeRolePolicyDocument: Version: "2012-10-17" Statement: - Action: sts:AssumeRole Effect: Allow Principal: Service: codepipeline.amazonaws.com Condition: StringEquals: aws:SourceAccount: !Ref AWS::AccountId StringLike: aws:SourceArn: "arn:aws:codepipeline:eu-west-1:111111111:mypipeline/*"
额外检查项
- 确认角色与流水线处于同一AWS区域,跨区域调用时区域字段不匹配会导致条件验证失败
- 检查流水线的执行角色是否拥有
sts:AssumeRole权限,目标为当前配置的这个角色 - 若使用CloudFormation部署,需等待栈更新完成后再触发流水线测试
内容的提问来源于stack exchange,提问作者Ronan Cunningham
相关产品推荐
相关产品推荐

