跨账户存储库访问:AccountB 中存储库用户的操作 - AWS CodeCommit

AWS CodeCommit 不再向新客户提供。 AWS CodeCommit 的现有客户可以继续正常使用该服务。了解更多

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

跨账户存储库访问:AccountB 中存储库用户的操作

要访问 AccountA 中的存储库,AccountB 组中的用户必须配置其本地计算机以访问存储库。以下各节提供了步骤和示例。

步骤 1:配置 AWS CLI 和 Git,让 AccountB 用户能够访问 AccountA 中的仓库

您不能使用SSH密钥或 Git 凭证访问其他 Amazon Web Services 账户中的存储库。AccountB 用户必须将其计算机配置为使用git-remote-codecommit(推荐)或凭据助手来访问 AccountA CodeCommit 中的共享存储库。但是,在访问 AccountB 中的存储库时,您可以继续使用SSH密钥或 Git 凭证。

请按照以下步骤使用 git-remote-codecommit 配置访问权限。如果尚未安装 git-remote-codecommit,请在 Python 程序包索引网站上通过 git-remote-codecommit 下载它。

配置 AWS CLI 和 Git 以实现跨账户访问
  1. 在本地计算机 AWS CLI 上安装。请参阅安装 AWS CLI 中有关您的操作系统的说明。

  2. 在本地计算机上安装 Git。要安装 Git,建议访问 Git 下载Git for Windows 等网站。

    注意

    CodeCommit 支持 Git 版本 1.7.9 及更高版本。Git 版本 2.28 支持为初始提交配置分支名称。我们建议使用最新版本的 Git。Git 是一个不断发展的平台,会定期进行更新。有时,功能更改可能会影响其工作方式 CodeCommit。如果您在使用特定版本的 Git 时遇到问题 CodeCommit,请查看中的信息故障排除

  3. 从终端或命令行中,在要克隆存储库的目录位置,运行 git config --local user.namegit config --local user.email 命令可为您将对存储库做出的提交设置用户名和电子邮件。例如:

    git config --local user.name "Saanvi Sarkar" git config --local user.email saanvi_sarkar@example.com

    这些命令未返回任何内容,但您指定的电子邮件和用户名将与您对 AccountA 中的存储库进行的提交关联。

  4. 运行 aws configure --profile 命令以配置在连接到 AccountB 中的资源时要使用的默认配置文件。出现提示时,请为您的IAM用户提供访问密钥和私有密钥。

    注意

    如果您已经安装 AWS CLI 并配置了配置文件,则可以跳过此步骤。

    例如,运行以下命令创建用于访问美国东部(俄亥俄州)AccountB(us-east-2)中 AWS 资源的默认 AWS CLI 配置文件:

    aws configure

    当系统提示时,请提供以下信息:

    AWS Access Key ID [None]: Your-IAM-User-Access-Key AWS Secret Access Key ID [None]: Your-IAM-User-Secret-Access-Key Default region name ID [None]: us-east-2 Default output format [None]: json
  5. 再次运行 aws configure --profile 命令可配置在连接到 AccountA 中的存储库时要使用的命名配置文件。出现提示时,请为您的IAM用户提供访问密钥和私有密钥。例如,运行以下命令来创建名为的 AWS CLI 配置文件 MyCrossAccountAccessProfile 你用来访问美国东部(俄亥俄州)AccountA(us-east-2)中存储库的内容:

    aws configure --profile MyCrossAccountAccessProfile

    当系统提示时,请提供以下信息:

    AWS Access Key ID [None]: Your-IAM-User-Access-Key AWS Secret Access Key ID [None]: Your-IAM-User-Secret-Access-Key Default region name ID [None]: us-east-2 Default output format [None]: json
  6. 在纯文本编辑器中,打开 config 文件(也称为 AWS CLI 配置文件)。根据您的操作系统,此文件可能位于 Linux、macOS 或 Unix ~/.aws/config 上,或者位于 drive:\ 用户\USERNAMEWindows 上的\ .aws\ config。

  7. 在文件中,找到与您为访问 AccountB 中的存储库而配置的默认配置文件相对应的条目。如下所示:

    [default] region = us-east-2 output = json

    account 添加到配置文件配置。提供 AccountB 的 AWS 账户 ID。例如:

    [default] account = 888888888888 region = us-east-2 output = json
  8. 在文件中,找到与之对应的条目 MyCrossAccountAccessProfile 您刚刚创建的个人资料。如下所示:

    [profile MyCrossAccountAccessProfile] region = us-east-2 output = json

    accountrole_arnsource_profile 添加到配置文件配置。提供 AccountA 的 Amazon Web Services 账户 ID、您假设在另一个账户中访问存储库的账户 A 中的角色以及 AccountB 中您的默认个人资料 AWS CLI 的名称。ARN例如:

    [profile MyCrossAccountAccessProfile] region = us-east-2 account = 111122223333 role_arn = arn:aws:iam::111122223333:role/MyCrossAccountRepositoryContributorRole source_profile = default output = json

    保存更改并关闭纯文本编辑器。

第 2 步:在 AccountA 中克隆并访问 CodeCommit 仓库

运行git clonegit push、和git pull以克隆、推送到跨账户存储库和从中拉取跨账户 CodeCommit存储库。您还可以登录 AWS 管理控制台、切换角色并使用 CodeCommit 控制台与其他账户中的存储库进行交互。

注意

根据IAM角色的配置方式,您可能可以在的默认页面上查看存储库 CodeCommit。如果您无法查看存储库,请仓库管理员通过电子邮件向您发送URL指向 CodeCommit 控制台中共享仓库代码页面的链接。类似URL于以下内容:

https://console.aws.amazon.com/codecommit/home?region=us-east-2#/repository/MySharedDemoRepo/browse/HEAD/--/
将跨账户存储库克隆到本地计算机
  1. 在命令行或终端上,在要克隆存储库的目录中,使用 HTTPS (GRC) clone 运行git clone命令URL。例如:

    git clone codecommit://MyCrossAccountAccessProfile@MySharedDemoRepo

    除非另行指定,否则会将存储库克隆到与存储库同名的子目录中。

  2. 将目录更改为克隆的存储库,并添加或更改文件。例如,您可以添加一个名为的文件 NewFile.txt.

  3. 将文件添加到本地存储库的跟踪更改中,提交更改,然后将文件推送到 CodeCommit 存储库。例如:

    git add NewFile.txt git commit -m "Added a file to test cross-account access to this repository" git push

    有关更多信息,请参阅 Git 和 AWS CodeCommit 入门

现在您已经添加了文件,请前往 CodeCommit 控制台查看您的提交、查看其他用户对存储库的更改、参与拉取请求等。

在控制台中访问跨账户存储库 CodeCommit
  1. 登录到账 AWS Management Console 号B (888888888888) 作为被授予对 AccountA 中仓库的跨账户访问权限的IAM用户。

  2. 在导航栏中选择您的用户名,然后在下拉列表中选择切换角色

    注意

    如果这是您首次选择此选项,请查看该页面上的信息,然后再次选择切换角色

  3. Switch Role (切换角色) 页面上,执行以下操作:

    • 账户中,输入账户 A 的账户 ID(例如 111122223333).

    • 在 “角色” 中,输入您要代入的 accountA 中访问存储库的角色名称(例如 MyCrossAccountRepositoryContributorRole).

    • Display Name (显示名称) 中,输入此角色的友好名称。当您代入此角色时,该名称将显示在控制台中。此外,当您下次想在控制台中切换角色时,该名称会显示在已代入角色的列表中。

    • (可选) 在颜色中,选择显示名称的颜色标签。

    • 选择 Switch Role

    有关更多信息,请参阅切换到角色(AWS Management Console)

  4. https://console.aws.amazon.com/codesuite/codemmit /home 打开 CodeCommit 控制台。

    如果已代入角色有权查看 AccountA 中的存储库的名称,您会看到一个存储库列表,并且会显示一条错误消息,告知您无权查看其状态。这是预料之中的行为。从该列表中选择共享存储库的名称。

    如果已代入角色无权查看 AccountA 中的存储库的名称,您会看到一条错误消息和一个没有存储库的空白列表。粘贴存储库URL链接或修改控制台链接,然后更改/list为共享存储库的名称(例如/MySharedDemoRepo)。

  5. 代码中,找到您已从本地计算机中添加的文件的名称。选择该名称以浏览文件中的代码,然后浏览存储库的其余内容并开始使用其功能。

    有关更多信息,请参阅 入门 AWS CodeCommit