无公网环境下如何将私有AWS CodeCommit仓库克隆至本地服务器?
我们的AWS账户无NAT网关或互联网网关,拥有一个私有CodeCommit仓库。本地VPC已通过VPC直连与AWS VPC打通,本地防火墙也已向AWS VPC开放443端口。本地服务器无公网连接,我们已在AWS VPC中创建访问CodeCommit的接口终端节点,且本地服务器配置了包含访问密钥和秘密密钥的AWS配置文件,但在尝试仓库克隆、更新及推送操作时遇到问题。
故障详情
尝试通过Git HTTPS URL克隆仓库时,请求直接指向CodeCommit的公网终端节点,最终因连接超时失败,报错信息如下:
git clone https://git-codecommit.ap-south-1.amazonaws.com/v1/repos/xxx-xxx-projects
Cloning into 'xxx-xxx-projects'...
fatal: unable to access 'https://git-codecommit.ap-south-1.amazonaws.com/v1/repos/xxx-xxx-projects/': Failed to connect to git-codecommit.ap-south-1.amazonaws.com port 443: Connection timed out
要让本地服务器通过VPC接口终端节点访问CodeCommit,需通过DNS解析或修改Git配置,将请求导向终端节点的私有网络地址,具体步骤如下:
获取CodeCommit接口终端节点的私有信息
在AWS控制台的VPC终端节点页面,找到已创建的CodeCommit接口终端节点,记录它的私有域名(格式类似vpce-xxxxxx.codecommit.ap-south-1.vpce.amazonaws.com)和对应的私有IP地址。修改本地DNS解析或Hosts文件
- 若有内部DNS服务器,添加解析记录:将
git-codecommit.ap-south-1.amazonaws.com指向终端节点的私有IP(若终端节点有多个私有IP,可添加多条记录)。 - 单台服务器测试时,直接修改Hosts文件:
Linux系统编辑/etc/hosts,Windows系统编辑C:\Windows\System32\drivers\etc\hosts,添加一行:<终端节点私有IP> git-codecommit.ap-south-1.amazonaws.com
- 若有内部DNS服务器,添加解析记录:将
验证解析生效
在本地服务器执行以下命令,确认域名解析已指向私有IP:nslookup git-codecommit.ap-south-1.amazonaws.com或
dig git-codecommit.ap-south-1.amazonaws.com重新执行Git操作
解析配置完成后,再次尝试克隆、更新或推送:git clone https://git-codecommit.ap-south-1.amazonaws.com/v1/repos/xxx-xxx-projects替代方案:直接使用终端节点私有域名
若不想修改DNS解析,可直接用终端节点的私有域名替换Git URL中的公网域名:git clone https://vpce-xxxxxx.codecommit.ap-south-1.vpce.amazonaws.com/v1/repos/xxx-xxx-projects需确保本地服务器能解析该私有域名(通常VPC内DNS可自动解析,本地通过VPC直连时需确认DNS转发配置)。
内容的提问来源于stack exchange,提问作者Nitin G

