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

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

跨账户存储库访问权限: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,从下载git-remote-codecommit在 Python 软件包索引网站上。

配置 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 并配置了配置文件 ,则可跳过该步骤。

    例如,运行以下命令以创建默认值:Amazon CLI你用来访问的个人资料Amazon美国东部(俄亥俄)(us-east-2) 的 AccountB 中的资源:

    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名配置文件MyCrossAccountAccess配置文件用于访问美国东部 (俄亥俄) (us-east-2) 中的 AccountA 中的存储库:

    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 上,驾驶:\ 用户\用户名\ .aws\ 在 Windows 上配置。

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

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

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

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

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

    accountrole_arnsource_profile 添加到配置文件配置。提供 AccountA 的 Amazon Web Services 账户 ID、AccountA 中您代入(以访问其他账户中的存储库)的角色的 ARN,以及您的默认名称。Amazon CLIAccountB 中的个人资料。例如:

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

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

第 2 步:克隆并访问CodeCommitAccountA 中的存储库

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

注意

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

https://console.aws.amazon.com/codecommit/home?region=us-east-2#/repository/MySharedDemoRepo/browse/HEAD/--/

将跨账户存储库克隆到本地计算机

  1. 在命令行或终端,在要克隆存储库的目录中,运行git clone使用 HTTPS 的命令(GRC)克隆 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 和Amazon CodeCommit

现在,您已添加一个文件,请转到 CodeCommit 控制台来查看您的提交,审核其他用户对存储库所做的更改,参与提取请求等。

在 CodeCommit 控制台中访问跨账户存储库

  1. 登录到Amazon Web Services Management Console在 AccountB 中 (88888888888888) 作为已获得对 AccountA 中的存储库的跨账户访问权限的 IAM 用户。

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

    注意

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

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

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

    • In角色在 AccountA 中,输入要代入的角色(用于访问 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