繁体   English   中英

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

[英]Connect to CodeCommit from EC2 using temporary credentials

我已经设置了一个EC2实例,为它提供了一个具有IAM角色的实例配置文件,该实例配置文件允许它访问我的代码提交存储库,现在我正尝试使用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进行此操作,因为它破坏了临时凭证的全部内容。 我想以正确的方式做。 但这令人发指。

我已经看了一遍过于冗长的亚马逊文档,而且似乎找不到答案所在的页面。

任何帮助将不胜感激。 我实际上是在拔头发。

找到了解决方案

问题出在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)

据我所知,这并不是一个真正的解决方案,它的重建有点丑陋。 如果发现更优雅的内容,我将进行更新。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM