使用临时凭证从EC2连接到CodeCommit

时间:2016-04-14 21:30:45

标签: git amazon-ec2 aws-codecommit

我已经设置了一个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做这件事,因为它击败了临时证书的全部内容。我想以正确的方式做到这一点。但它是在进行感染。

我已经看了一百万次过于冗长的亚马逊文档,而且似乎无法找到我的回答页面的方式。

非常感谢任何帮助。我真的把头发拉了出来。

1 个答案:

答案 0 :(得分:1)

找到解决方案

问题出在git和ubuntu14.04上。似乎默认包使用gnutls进行身份验证,而不是openssl,并且它没有很好地处理代理。所以我不得不用libcurl4-openssl-dev重建git。解决方案以及详细的构建说明来自此处:

https://askubuntu.com/questions/186847/error-gnutls-handshake-failed-when-connecting-to-https-servers

一旦构建完成,我所要做的就是如下所示:

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,如果你已经进入了

重建有点难看,因为我知道这不是一个真正的解决方案。如果我找到更优雅的东西,我会更新它。