如何在适用于 Amazon Linux 2 的 Amazon EC2 实例上使用实例角色在 AWS CodeCommit 存储库上执行 Git 操作?

上次更新日期:2020 年 10 月 20 日

我想在适用于 Amazon Linux 2 的 Amazon Elastic Compute Cloud (Amazon EC2) 实例上使用实例角色在 AWS CodeCommit 存储库上执行 Git 操作。

简短描述

您可以使用 AWS 命令行界面 (AWS CLI) 凭证帮助程序在 EC2 实例上使用 AWS Identity and Access Management (IAM) 角色在 CodeCommit 存储库上执行 Git 操作。

注意:对于不需要 IAM 用户的 CodeCommit 存储库,使用凭证帮助程序是唯一连接方法。

解决方法

注意:如果在运行 AWS CLI 命令时收到错误,请确保您使用的是最新版本的 AWS CLI

1.    为 EC2 实例创建 IAM 角色,然后将以下示例 IAM 策略附加到该角色。将 arn:aws:codecommit:us-east-1:111111111111:testrepo 替换为 CodeCommit 存储库的 ARN。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
       
            "codecommit:GitPull",
                "codecommit:GitPush"
            ],
            "Resource": "arn:aws:codecommit:us-east-1:111111111111:testrepo"
 
          }
    ]
}

注意:步骤 1 的策略允许 IAM 角色在 CodeCommit 存储库上执行 Git 提取和推送操作。有关为 CodeCommit 使用 IAM 策略的更多示例,请参阅为 CodeCommit 使用基于身份的策略(IAM 策略)

2.    将您在步骤 1 中创建的 IAM 角色附加到 EC2 实例

3.    在您的 EC2 实例上安装 Git。

注意:有关更多信息,请参阅 Git 网站上的下载

4.    要在 EC2 实例上设置凭证帮助程序,请运行以下命令:

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

注意:步骤 4 中的命令指定了将 Git 凭证帮助程序与 AWS 凭证配置文件一起使用。当 Git 需要通过 AWS 进行身份验证以与 CodeCommit 存储库进行交互时,凭证配置文件允许 Git 使用 HTTPS 和 EC2 实例角色的加密签名版本。

5.    要显式配置您的名称和电子邮件地址,请运行以下命令:

$ git config --global user.email "testuser@example.com"
$ git config --global user.name "testuser"

注意:系统会根据您的用户名和主机名自动配置您的名称和电子邮件地址。

6.    要将存储库克隆到 EC2 实例,请运行以下命令:

$ git clone https://git-codecommit.us-east-1.amazonaws.com/v1/repos/testrepo

7.    在 CodeCommit 存储库中创建 commit

注意:如果您使用的是 Windows,请参阅使用 AWS CLI 凭证帮助程序在 Windows 上通过 HTTPS 连接到 AWS CodeCommit 存储库的设置步骤