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

如何通过Terraform实现跨账号CodeCommit仓库访问配置

跨账号CodeCommit作为PROD侧CodeBuild/CodePipeline代码源配置方案

核心认知纠正

配置跨账号CodeCommit源不需要为Terraform配置INT账号的访问凭证,跨账号拉取代码的权限由PROD侧CodeBuild/CodePipeline的执行角色通过IAM跨账号信任机制获取,和Terraform运行时使用的凭证无关,完全适配SSO生成的12小时有效期临时凭证场景,不需要使用长期Access Key。

具体配置步骤

1. 核对跨账号IAM权限

你已提前创建好所需策略与角色,只需确认两项配置符合要求:

  • INT账号侧的跨账号访问角色信任策略,必须允许PROD账号下的CodeBuild/CodePipeline服务主体、以及PROD侧对应资源的执行角色代入
  • INT账号侧CodeCommit仓库的资源策略,必须给上述跨账号角色授予codecommit:GetRepository、codecommit:GitPull等代码拉取必需的权限

2. 调整CodeBuild的source配置块

你当前的配置缺少跨账号认证配置,且仓库地址未指定INT账号ID,默认会读取当前PROD账号下的同名仓库,需调整为如下格式:

source {
  type        = "CODECOMMIT"
  # 替换占位符为实际的区域、INT账号ID、仓库名
  location    = "https://git-codecommit.<region>.amazonaws.com/v1/repos/<INT_ACCOUNT_ID>:example-repo"
  buildspec   = data.local_file.buildspec_local.content

  # 跨账号访问必须补充该认证块
  source_auth {
    type     = "CODECONNECTIONS"
    # 替换为INT账号侧创建的跨账号访问角色的完整ARN
    resource = "arn:aws:iam::<INT_ACCOUNT_ID>:role/<cross_account_codecommit_role_name>"
  }
}

3. CodePipeline场景配置差异

如果是在CodePipeline中配置INT账号的CodeCommit作为源,不需要使用上述source_auth格式,只需要在Source阶段的动作配置中完成两项设置:

  • 填写INT账号下CodeCommit仓库的完整ARN:arn:aws:codecommit:<region>:<INT_ACCOUNT_ID>:example-repo
  • 在动作的角色配置项中,填入INT账号侧允许跨账号访问的角色ARN即可

注意事项

  • 所有Terraform资源仍然部署在PROD账号下,运行Terraform时仅需要PROD账号的SSO临时凭证,不需要额外配置INT账号的provider块
  • 该方案为AWS原生支持的跨账号CodeCommit访问方式,全程走IAM角色临时凭证鉴权,不需要存储任何长期访问密钥
  • 配置完成后可以先在PROD账号中手动触发一次CodeBuild构建,验证代码拉取逻辑是否正常,无需调整其他CI/CD流程配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 00:24:26