我已经设置了一个EC2实例,假设它有一个具有IAM角色的实例配置文件,允许它访问我的codecommit存储库,现在我试图使用git从中获取它。由于我使用的是iam角色的临时凭证,因此我没有凭据配置文件......但这应该没问题。
我试过了:
git config --global credential.helper '!aws codecommit credential-helper $@'
但那不起作用
如果我将以下内容放入文件中,请说' repodesc'
protocol=https
path=/v1/repos/reponame
host=git-codecommit.us-east-1.amazonaws.com'
然后运行
cat repodesc | aws codecommit credential-helper get
它给我发回了一个临时用户名和密码......所以我知道它正在工作......
所以使用我尝试过:
git pull https://user:pass@git-codecommit.us-east-1.amazonaws.com/v1/repos/reponame
但那失败了。说格式错了。
我不想用ssh做这件事,因为它击败了临时证书的全部内容。我想以正确的方式做到这一点。但它是在进行感染。
我已经看了一百万次过于冗长的亚马逊文档,而且似乎无法找到我的回答页面的方式。
非常感谢任何帮助。我真的把头发拉了出来。
答案 0 :(得分:1)
找到解决方案
问题出在git和ubuntu14.04上。似乎默认包使用gnutls进行身份验证,而不是openssl,并且它没有很好地处理代理。所以我不得不用libcurl4-openssl-dev重建git。解决方案以及详细的构建说明来自此处:
一旦构建完成,我所要做的就是如下所示:
git config --global credential.helper '!aws codecommit credential-helper $@'
git pull https://git-codecommit.us-east-1.amazonaws.com/v1/repos/reponame master
(或者使用git clone,如果你已经进入了
)重建有点难看,因为我知道这不是一个真正的解决方案。如果我找到更优雅的东西,我会更新它。