[英]Git clone works in AWS CodeCommit but pushing fails with 403
我可以成功克隆我的CodeCommit存儲庫,但是當我嘗試將其推送到存儲庫時,我得到403。但是,獲取和拉取作品卻可以。 好像我具有只讀訪問權限。
我已將.gitconfig
設置為使用AWS CLI作為憑證管理器:
[credential]
helper = !aws --profile builder codecommit credential-helper $@
UseHttpPath = true
問題是錯誤沒有告訴我推送失敗的原因:
$ git push origin test-branch
fatal: unable to access 'https://git-codecommit.us-east-1.amazonaws.com/v1/repos/my-example-repo/': The requested URL returned error: 403
互聯網上有關他的錯誤的大多數問題是克隆失敗時,但是克隆對我有用。 我發現了克隆成功而推送失敗的問題,但他的錯誤有所不同-aws codecommit無法推送 。
編輯::在查看我的CodeCommit策略后,它具有“ Full: Read Limited: List, Write
:
還有一個ResourceSpecifier = foo-*
,但是它適用於GitPull
權限和拉取工作,因此我懷疑它是資源說明符。
我想您對只讀權限是正確的。 如文檔所述 ,您需要在IAM策略中具有codecommit:GitPush
權限,以允許將提交從本地存儲庫推送到CodeCommit存儲庫。
能夠提取存儲庫意味着您的憑據已正確設置,如果不正確,則根本無法進行git pull
/ git fetch
。
對於MacOS:在“鑰匙串”中刪除密碼輸入互聯網密碼,然后重試。 也:
git config --global credential.helper '!aws codecommit credential-helper $@'
git config --global credential.UseHttpPath true
@湯姆的答案向我指示了正確的方向。 對此進行擴展,原因是我的用戶僅對名稱與包含通配符的特定模式匹配的存儲庫具有寫權限。
此模式來自策略JSON,如下所示:
"Resource": "arn:aws:codecommit:*:*:bar*"
這種模式可以使我對任何以bar
開頭的存儲庫進行寫訪問,因此我可以推送到名為bar
或bar2
,但不能推送到名為foo-bar
因為即使它包含bar
也不會以bar
開頭。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.