通过 HTTP 克隆 AWS codecommit 仓库

clone AWS codecommit repo via HTTP

我在 AWS Codecommit 中设置了 2 个存储库,并在 Windows 的 SourceTree 之前使用,设置了通过 HTTP 协议的访问并且一切正常。

不对,我正在我已经安装 ubuntu 并且选择使用 gitkraken 的机器上迁移项目的开发。

我能够 git 克隆到我的用户通过终端具有读写访问权限(我的用户)的文件夹中,因此 Ubuntu 中的权限不相关,在 git clone "aws repo url" 我被提示询问 IAM 的用户名和密码(在 AWS IAM 控制台创建的那个)。

我当然可以从 gitkraken 打开那个 repo 文件夹,甚至可以看到所有远程分支和所有历史记录,但是一旦我从 gitkraken 中拉出它就失败了 "access"否认。我也不能从 Gitkraken 克隆相同或另一个 repo。所以我似乎必须在 gitkraken 中配置我的凭据,但不确定应该在哪里完成。这个官方doc就不多说了

您可以尝试按照此文档设置 SSH 连接:https://docs.aws.amazon.com/codecommit/latest/userguide/setting-up-ssh-unixes.html

之后,使用 Gitkraken 打开存储库。当您尝试拉取或推送时,Gitkrake 会要求您提供凭据。使用在上一步中创建的 ssh 凭据。

如果 Gitkraken 再次失败,请检查存储库本地副本中的文件 .git/config。我注意到创建的 url 不正确,因此请检查生成的 url 是否符合以下模式:

[remote "origin"]
url = ssh://<Your-SSH-Key-ID>@git-codecommit.<region>.amazonaws.com/v1/repos/<repo-name>
fetch = +refs/heads/*:refs/remotes/origin/*

我实际上发现我能够连接,之前我失败了,因为没有遵循一些完全隐藏在 AWS Codecommit 文档中的步骤:

我不确定在提示时提供以下内容是否是必要的步骤,但我想它们不会造成伤害:

在终端提供以下内容:

aws configure

系统会提示您提供:

AWS 访问密钥 ID

AWS 秘密访问密钥

默认区域名称

默认输出格式

到这里我还是建议提供以上内容

克隆 "your https AWS address" your_repo_name 后,系统会提示您提供用户名和密码。不幸的是,对于我的根帐户和我的 IAM 帐户(具有正确的规则策略),我收到了 403 错误。

成功的是在没有提供额外凭证的情况下在终端执行以下操作:

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

然后简单地:

clone https://your_url_code your_repo_name for HTTPS connection from AWS Codecommit console

更详细的说明参考官方docs

这对我有用。

在尝试将 aws 存储库克隆到本地文件夹时,请确保存储库的区域代码与本地 aws CLI 配置中指定的默认区域代码相同。否则会报错。

fatal: unable to access 'https://git-codecommit.us-east-1.amazonaws.com/v1/repos/coderepo/': The requested URL returned error: 403