2016-04-14 41 views
0

我已經設置了一個EC2實例,給它一個帶有IAM角色的實例配置文件,允許它訪問我的codecommit存儲庫,現在我試圖從它使用git 。由於我使用的是來自iam角色的臨時憑證,因此我沒有憑證資料...但應該沒問題。使用臨時憑證連接到來自EC2的CodeCommit

我已經試過:

git config --global credential.helper '!aws codecommit credential-helper [email protected]' 

但是,這並不工作

如果我把下列文件,說 'repodesc'

protocol=https 
path=/v1/repos/reponame 
host=git-codecommit.us-east-1.amazonaws.com' 

,然後運行

cat repodesc | aws codecommit credential-helper get 

它se NDS我回了臨時用戶名和密碼,所以,我知道這是工作......

所以使用我想:

git pull https://user:[email protected]/v1/repos/reponame 

但是失敗了。說格式錯了。

我不想用ssh來做這件事,因爲它破壞了臨時憑證的整個點。我想以正確的方式做到這一點。但它是INFURIATING。

我已經查看了過百萬次的詳細亞馬遜文檔,似乎無法找到我的答案在頁面上。

任何幫助將非常感激。我真的把我的頭髮拉出來。

回答

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 [email protected]' 
git pull https://git-codecommit.us-east-1.amazonaws.com/v1/repos/reponame master 

(或者使用git克隆如果這就是你想要的)

重建有點難看,所以據我所知這不是一個真正的解決方案。如果我找到更優雅的東西,我會更新它。