跨账户存储库访问:AccountB 中存储库用户的操作 - Amazon CodeCommit
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

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

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

步骤 1:配置 Amazon 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 下载它。

配置 Amazon CLI 和 Git 以实现跨账户访问
  1. 在本地计算机 Amazon CLI 上安装。请参阅安装 Amazon 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 用户的访问密钥和私有密钥。

    注意

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

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

    aws configure

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

    Amazon Access Key ID [None]: Your-IAM-User-Access-Key Amazon 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 用户的访问密钥和私有密钥。例如,运行以下命令创建一个名为的 Amazon CLI 配置文件 MyCrossAccountAccessProfile,用于访问美国东部(俄亥俄州)AccountA(us-east-2)中的存储库:

    aws configure --profile MyCrossAccountAccessProfile

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

    Amazon Access Key ID [None]: Your-IAM-User-Access-Key Amazon 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 文件(也称为 Amazon CLI 配置文件)。根据您的操作系统,此文件可能位于 ~/.aws/config(Linux、macOS 或 Unix),或者位于 drive:\Users\USERNAME\.aws\config (Windows)。

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

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

    account 添加到配置文件配置。提供 AccountB 的 Amazon 账户 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、AccountA 中您将代入(以访问其他账户中的存储库)的角色的 ARN,以及您在 AccountB 中的默认 Amazon CLI 配置文件的名称。例如:

    [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存储库。您还可以登录 Amazon 管理控制台、切换角色并使用 CodeCommit 控制台与其他账户中的存储库进行交互。

注意

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

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

    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 和 Amazon CodeCommit 入门

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

在控制台中访问跨账户存储库 CodeCommit
  1. 以 AccountA Amazon Web Services Management Console 中被授予跨账户访问权限的 IAM 用户身份登录账户 B (888888888888)。

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

    注意

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

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

    • 账户中,输入 AccountA 的账户 ID(例如,111122223333)。

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

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

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

    • 选择 Switch Role

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

  4. 打开 CodeCommit 控制台,网址为 https://console.aws.amazon.com/codesuite/codecommit/home

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

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

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

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