代码之家  ›  专栏  ›  技术社区  ›  sashoalm Jason Rogers

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

  •  3
  • sashoalm Jason Rogers  · 技术社区  · 7 年前

    我可以成功克隆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 回复  |  直到 7 年前
        1
  •  2
  •   woodpav    6 年前

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

    git config --global credential.helper '!aws codecommit credential-helper $@'
    git config --global credential.UseHttpPath true
    
        2
  •  1
  •   Tom Nijs    7 年前

    我想你对只读权限的看法是对的。作为 docs 州,你需要 codecommit:GitPush IAM策略中允许将提交从本地存储库推送到CodeCommit存储库的权限。

    能够拉取存储库意味着您的凭据设置正确,如果没有,您将无法 git pull / git fetch 完全

        3
  •  0
  •   sashoalm Jason Rogers    7 年前

    @汤姆的回答给了我正确的方向。进一步说,原因是我的用户只对名称与包含通配符的特定模式匹配的存储库具有写入权限。

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

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

    bar bar2 ,但不适用于名为 foo-bar 酒吧 即使它包含了它。