Git克隆在AWS CodeCommit中工作,但推送失败,因为

时间:2017-11-15 16:22:24

标签: git amazon-web-services git-push aws-codecommit

我可以成功克隆我的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 cannot push

修改:查看我的CodeCommit政策后,它有Full: Read Limited: List, Write

enter image description here

还有ResourceSpecifier = foo-*,但这适用于GitPull权限和拉动作品,所以我怀疑它是资源说明符。

3 个答案:

答案 0 :(得分:1)

我认为你对只读权限是正确的。作为docs状态,您需要允许IAM策略中的SELECT "State", SUM("Price" * "Profit") AS PxP FROM ( SELECT * FROM AVTable ) GROUP BY "State" 权限将提交从本地存储库推送到CodeCommit存储库。

能够拉取存储库意味着您的凭据设置正确,如果不是,您根本无法codecommit:GitPush / git pull

答案 1 :(得分:1)

对于MacOS:删除Keychain中的代码提交互联网密码,然后重试。也:

git config --global credential.helper '!aws codecommit credential-helper $@'
git config --global credential.UseHttpPath true

答案 2 :(得分:0)

@汤姆的回答让我朝着正确的方向前进。为了扩展它,原因是我的用户只对名称与包含通配符的特定模式匹配的存储库具有写权限。

此模式来自策略JSON,如下所示:

"Resource": "arn:aws:codecommit:*:*:bar*"

这种模式可以让我对名称以bar开头的任何存储库进行写访问,因此我可以推送到名为barbar2的仓库,但不能推送到名为{的仓库。 {1}}因为它不以foo-bar开头,即使它包含它。