Git clone在AWS CodeCommit中工作,但推送失败,返回403
我可以成功克隆我的CodeCommit存储库,但当我尝试推送到它时,我得到403。然而,抓取和拉取是有效的。就好像我有只读权限一样 我已将我的Git clone在AWS CodeCommit中工作,但推送失败,返回403,git,amazon-web-services,git-push,aws-codecommit,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
.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
互联网上关于他的错误的大多数问题都是克隆失败的时候,但克隆对我来说是可行的。我发现了克隆成功而推送失败的问题,但他的错误不同-
编辑::查看我的CodeCommit策略后,它有Full:Read Limited:List,Write
:
还有一个
ResourceSpecifier=foo-*
,但它适用于GitPull
权限,而且拉取有效,所以我怀疑它是资源说明符。我想您对只读权限的看法是正确的。作为状态,您需要IAM策略中的codecommit:GitPush
权限才能将提交从本地存储库推送到codecommit存储库
能够提取存储库意味着您的凭据设置正确,如果没有设置,您将根本无法
git-pull
/git-fetch
。@Tom的回答给了我正确的方向。要扩展它,原因是我的用户只对名称与包含通配符的特定模式匹配的存储库具有写入权限
此模式来自策略JSON,如下所示:
"Resource": "arn:aws:codecommit:*:*:bar*"
此模式将允许我对名称以
bar
开头的任何存储库进行写访问,因此我可以推送到名为bar
或bar2
的回购,但不适用于名为foo bar
的回购协议,因为它不是以bar
开头的,即使它包含它。对于MacOS:删除密钥链中的代码提交internet密码,然后重试。此外:
git config --global credential.helper '!aws codecommit credential-helper $@'
git config --global credential.UseHttpPath true
我更新了我的问题,详细介绍了我的IAM政策。你能包括你的实际政策吗?它将具有您实际拥有的特定权限,而不是“受限”权限,它可以是任意数量的内容。我发现它确实是
资源说明符。在保险单中更改后,它与我的回购协议名称匹配,然后开始工作。我会接受你的回答,因为它指引了我正确的方向。这是在mac还是windows上?我在windows上。好的,你是如何在windows上使用git的?您是否安装了凭据管理器?使用Eclipse?Visual Studio?Git Bash还是Cygwin?以及如何使用git的版本。我在官方网站上使用git bash for Windows。但请记住,克隆和拉取已经起作用了。您想到的大多数问题都会阻止我克隆,而不仅仅是推送。您的用户有什么完整的IAM策略?