You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

跨账号CI/CD流水线CodeBuild失败问题排查求助

跨账号CDK流水线CodeBuild失败问题解决

问题核心

你的Alpha账号(111111)中CodeBuild执行角色,缺少调用Prod账号(222222)CDK lookup角色的sts:AssumeRole权限。虽然Prod的lookup角色已信任Alpha的root账号,但Alpha账号内的具体IAM角色(如CodeBuild执行角色)仍需被明确授予该操作权限,才能完成跨账号资源查询。

解决方案

1. 为Synth步骤添加权限

修改PipelineStack中的Synth步骤配置,给CodeBuild执行角色添加允许assume Prod lookup角色的策略:

synth: new pipelines.ShellStep("Synth", {
  input: pipelines.CodePipelineSource.gitHub(
    "pandanyc/eCommerceDatabaseCdk",
    "main",
    {
      authentication: Cdk.SecretValue.secretsManager('github-token')
    }
  ),
  commands: [
    'npm ci',
    'npm run build',
    'npx cdk synth'
  ],
  // 新增权限策略
  rolePolicyStatements: [
    new Cdk.aws_iam.PolicyStatement({
      actions: ['sts:AssumeRole'],
      resources: ['arn:aws:iam::222222:role/cdk-hnb659fds-lookup-role-222222-us-east-1']
    })
  ]
}),

2. 确认Bootstrap配置(可选)

确保使用最新版本的CDK CLI,若权限添加后仍有问题,可重新执行Bootstrap命令以确保信任关系生效:

cdk bootstrap --profile=eCommerceService-Prod --bootstrap-customer-key --cloudformation-execution-policies 'arn:aws:iam::aws:policy/AdministratorAccess' --trust 111111 --trust-for-lookup 111111 aws://222222/us-east-1

原因解释

CDK流水线在Synth阶段需要跨账号查询目标环境的资源状态(比如验证资源是否存在),这依赖于目标账号的CDK lookup角色。Prod账号的lookup角色仅信任Alpha的root账号,这只是开放了“资格”,但Alpha内的具体执行角色(CodeBuild角色)必须被明确授予sts:AssumeRole权限,才能实际调用该角色完成查询操作。

内容的提问来源于stack exchange,提问作者Yang Liu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 00:09:24