AWS Codecommit-致命错误:无法访问:请求的URL返回错误:403。

7

在重新安装 aws-cli 后,我无法从我的 AWS CodeCommit 存储库中拉取和/或推送更新。我尝试了所有我能找到的建议解决方案,但似乎都不起作用。

我正在使用 Ubuntu 21.10,并安装了:

$ aws --v
  aws-cli/1.19.1 Python/3.9.7 Linux/5.13.0-41-generic botocore/1.20.0

git version 2.32.0

我遇到的错误是:

fatal: unable to access 'https://git-codecommit.eu-west-2.amazonaws.com/v1/repos/myrepo/': The requested URL returned error: 403

以前它会要求我输入用户名和密码,但是在我尝试解决这个问题后,它完全停止要求我的凭据。无论如何,我确认我使用了正确的凭据。此外,我在AWS上拥有必要的权限。直到几个小时之前,我都成功地拉取和推送更新。

按照大多数在线解决方案的建议,aws凭证助手已经设置好了。更具体地说,我的.gitconfig文件如下:

[user]
    name = My_name
    email = My_email
[credential]
    helper = !aws codecommit credential-helper $@
    UseHttpPath = true

此外,我正确地设置了$ aws configure配置(使用正确的区域)。

运行 $ git config --list --show-origin 命令后,我得到了以下内容:

file:/etc/gitconfig     user.email=My_email
file:/home/f_user/.gitconfig user.name=My_name
file:/home/f_user/.gitconfig user.email=My_email
file:/home/f_user/.gitconfig credential.helper=!aws codecommit credential-helper $@
file:/home/f_user/.gitconfig credential.usehttppath=true

说实话我不知道还可以尝试什么,非常感谢任何帮助!

编辑: 我解决问题的方法是:

  • 从系统中卸载了aws客户端并重新安装并从头开始配置。
  • 克隆了我的IAM帐户并授予了完全的AWSCodeCommit访问权限。

我不确定哪一步解决了问题,可能是第一步。


1
403表示“禁止访问”,即您没有权限。请检查您的权限。请注意,user.nameuser.email不是凭据;您传递给AWS的凭据来自于aws codecommit credential-helper。如果您使用的是macOS,请参阅https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-https-unixes.html。 - torek
我已经检查了权限,它们与几天前推送更改时相同。关于凭据,我知道名称和电子邮件不是我需要进行身份验证的凭据。它是用户名和密码,但是命令甚至在这一点上都停止提示我使用我的凭据,这就是为什么这么让人困惑的原因。 - Flora Biletsiou
2
有些东西已经改变了:你向 AWS 提供的凭证,或者 AWS 进行的验证,或者两者都有。使用 VonC 展示的测试 来查看你发送给 AWS 的内容(和/或设置 GIT_TRACE、GIT_PACKET_TRACE、CURL 跟踪等;参见这个问题)。 - torek
我使用了SSH端点而不是HTTPS。这样更简单。 - f01
11个回答

15
如果你在使用Mac电脑,前往密钥链访问(Keychain Access),搜索codecommit并删除存储的密钥。

Mac的已接受解决方案 - Aravind Vemula
这对我来说很有效! - undefined

10

只需按以下步骤删除凭据,下次弹出窗口会提示重新输入账户密码

控制面板 选择 "凭据管理器" 在通用凭据下,删除相应的 Git 凭据。


在删除后,再次在“凭据管理器”上创建它。 - Guillermo
有没有方法可以解决每次都需要删除保存的凭据的问题? 我正在处理多个codecommit存储库,当从一个切换到另一个时,我总是需要删除已保存的凭据。 - Roberto Aureli

3
如果您是 Mac 用户,只需键入 code ~/.gitconfig,然后粘贴以下内容(如果凭据部分缺失)。
[credential]
    helper = !aws codecommit credential-helper $@
    UseHttpPath = true

2

我确实检查了我的AWS托管策略,但情况并非如此。此时,该命令甚至不会要求我提供凭据,因此我认为这与权限无关。 - Flora Biletsiou
3
对于存储的密码,我没有得到任何有用的返回。printf "protocol=https\nhost=git-codecommit.eu-west-2.amazonaws.com"|aws codecommit credential-helper get --> 'path' - Flora Biletsiou

1
我最终解决这个问题的方法是:
Uninstalled aws client from my system and re installed and configured it from scratch.
I cloned my IAM account and gave it Full AWSCodeCommit access.

我不确定是哪一步解决了问题,可能是第一步,因为在我重新安装所有内容后,我又被提示使用我的凭据。


1
我的解决方案是重新安装Git并取消选择Git凭据助手。

0
你可以直接给你的用户添加AWSCodeCommitPowerUser权限策略,这对我来说有效。

1
你的回答可以通过提供更多支持性信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的回答是否正确。你可以在帮助中心找到关于如何撰写好回答的更多信息。 - undefined

0
对于Windows系统,如果问题仍然存在,出现了"fatal: unable to access 'https://git-codecommit.us-east-1.amazonaws.com/v1/repos/RepositoryName': The requested URL returned error: 403"的错误提示,请尝试修复您的环境变量。如果克隆存储库的凭据已更改,则环境变量可能仍使用旧的区域和密钥值。
以下是解决方法:
1. 搜索"编辑系统环境变量" 2. 找到"环境变量" 3. 设置新的访问密钥、秘密访问密钥和默认区域 4. 点击"确定"

0

0
我也遇到了类似的问题,
fatal: unable to access 'https://git-codecommit.ap-south-1.amazonaws.com/v1/repos/sunday-demo/': 
The requested URL returned error: 403

解决方案:
执行以下两个命令,这样就会弹出凭据窗口。
git config --global credential.helper '!aws codecommit credential-helper $@'

git config --global credential.UseHttpPath true

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接