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

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

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

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

步骤 1:为 AccountB 用户配置Amazon CLI和 Git 以访问 AccountA 中的存储库

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

请按照以下步骤使用 git-remote-codecommit 配置访问权限。如果您尚未安装git-remote-codecommit,请从 Python Pac git-remote-codecommitkage 索引网站上下载。

配置 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配置文件,可让您在美国东部(俄亥俄)(us-east-2)的 AccountB(us-east-2)中访问Amazon资源:

    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,可让您在美国东部(俄亥俄)(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 配置文件)。根据您的操作系统,此文件可能位于 Linux、macOS 或 Unix~/.aws/config 上,或者位于 Windows 上的驱动器:\ 用户\ 用户\ .aws\ config。

  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 pushgit 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. 以 IAM 用户身份登录 in AccountB (888888888888),该用户已被授予对 AccountA 中存储库的跨账户访问权限。Amazon Web Services Management Console

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

    注意

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

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

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

    • 在 “角色” 中,输入要在 AccountA 中访问存储库时要担任的角色的名称(例如,MyCrossAccountRepositoryContributorRole)。

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

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

    • 选择 Switch Role

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

  4. 通过 https://console.aws.amazon.com/codesuite/codecommit/home 打开 CodeCommit 主机。

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

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

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

    有关更多信息,请参阅 开始使用 Amazon CodeCommit