我可以成功克隆我的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
:
还有ResourceSpecifier = foo-*
,但这适用于GitPull
权限和拉动作品,所以我怀疑它是资源说明符。
答案 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
开头的任何存储库进行写访问,因此我可以推送到名为bar
或bar2
的仓库,但不能推送到名为{的仓库。 {1}}因为它不以foo-bar
开头,即使它包含它。