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

如何在无NAT网关的情况下跨账户访问CodeCommit

跨AWS账户通过VPC终端节点访问CodeCommit的解决方案

核心配置检查与修复步骤

1. 确认VPC终端节点配置正确性

  • 确保创建的是CodeCommit专属Interface类型VPC终端节点,服务名称格式为com.amazonaws.<你的区域>.codecommit
  • 终端节点安全组规则:允许EC2实例所在安全组的出站HTTPS(443)流量,同时终端节点安全组允许入站443流量来自EC2的安全组
  • 子网路由表需添加路由:目标为CodeCommit的服务前缀(可在AWS控制台终端节点详情中查看),下一跳指向该VPC终端节点

2. 配置跨账户权限

在prod账户(CodeCommit所属账户)的仓库权限中添加dev账户角色授权

将以下策略附加到prod账户的CodeCommit仓库权限(替换占位符为实际信息):

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::<dev账户ID>:role/<EC2实例使用的IAM角色名>"
      },
      "Action": ["codecommit:GitPull", "codecommit:GitPush"],
      "Resource": "arn:aws:codecommit::<prod账户ID>:<仓库名称>",
      "Condition": {
        "StringEquals": {
          "codecommit:References": ["refs/heads/dev"]
        }
      }
    }
  ]
}

在dev账户的EC2 IAM角色中添加访问权限

给EC2使用的IAM角色附加以下权限策略:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["codecommit:GitPull", "codecommit:GitPush"],
      "Resource": "arn:aws:codecommit::<prod账户ID>:<仓库名称>"
    }
  ]
}

3. 配置EC2实例的CodeCommit访问

  • 在EC2实例上配置AWS CLI使用实例元数据获取凭证:
    aws configure set region <你的AWS区域>
    aws configure set credential_source Ec2InstanceMetadata
    
  • 测试克隆dev分支(替换区域和仓库名):
    git clone -b dev https://git-codecommit.<区域>.amazonaws.com/v1/repos/<仓库名称>
    

4. 排查DNS解析问题

  • 确认VPC的enableDnsSupport和enableDnsHostnames参数均设为true
  • 在EC2实例上执行解析测试,应返回VPC终端节点的私有IP:
    nslookup git-codecommit.<区域>.amazonaws.com
    

5. 验证VPC终端节点的访问策略

确保终端节点的访问策略允许dev账户的EC2角色访问:

{
  "Version": "2008-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::<dev账户ID>:role/<EC2实例使用的IAM角色名>"
      },
      "Action": "*",
      "Resource": "*"
    }
  ]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 11:55:26