将 Git 存储库迁移到AWS CodeCommit - AWS CodeCommit

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

将 Git 存储库迁移到AWS CodeCommit

您可以将现有的 Git 存储库迁移到 CodeCommit 存储库。本主题中的过程将演示如何将托管在另一个 Git 存储库上的项目迁移到 CodeCommit。在该过程中,您将:

  • 完成 CodeCommit 所需的初始设置。

  • 创建 CodeCommit 存储库。

  • 克隆存储库并将其推送到 CodeCommit。

  • 查看 CodeCommit 存储库中的文件。

  • 与您的团队共享 CodeCommit 存储库。


            将 Git 存储库迁移到 CodeCommit

步骤 0:访问 CodeCommit 所需的设置

在将存储库迁移到 CodeCommit 之前,您必须为创建和配置 IAM 用户,并配置您的本地计算机以进行访问。您还应安装AWS CLI来管理 CodeCommit。虽然您可以在没有 CodeCommit 的情况下执行大多数 CodeComAWS CLI在命令行或终端中使用 Git 提供了灵活性。

如果您已完成 CodeCommit 所需的设置,请跳到。第 1 步:创建 CodeCommit 存储库.

创建和配置用于访问 CodeCommit 的 IAM 用户

  1. 转到创建 Amazon Web Services 账户http://aws.amazon.com然后选择注册.

  2. 创建 IAM 用户或使用您的 Amazon Web Services 账户中现有的 IAM 用户。确保您具有与该 IAM 用户关联的访问密钥 ID 和私有访问密钥。有关更多信息,请参阅 。在您的 Amazon Web Services 账户中创建 IAM 用户.

    注意

    CodeCommit 需要AWS Key Management Service. 如果使用现有的 IAM 用户,请确保未向该用户附加明确拒绝的 IAM 用户的任何策略。AWS KMSCodeCommit 所需的操作。有关更多信息,请参阅 AWS KMS和加密

  3. 登录 AWS Management Console,然后通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  4. 在 IAM 控制台的导航窗格中,选择用户,然后选择要配置用于 CodeCommit 访问的 IAM 用户。

  5. Permissions 选项卡上,选择 Add Permissions

  6. Grant permissions (授予权限) 中,选择 Attach existing policies directly (直接附加现有策略)

  7. 从策略列表中,选择AWSCodeCommitPowerUser或另一个用于 CodeCommit 访问的托管策略。有关更多信息,请参阅 AWSCodeCommit 的托管策略

    选中要附加的策略后,选择后续:审核以审核要附加到 IAM 用户的策略列表。如果列表正确,选择 Add permissions

    有关 CodeCommit 管理的策略以及与其他组和用户共享访问存储库的更多信息,请参阅。共享存储库AWS CodeCommit 的身份验证和访问控制.

安装和配置 AWS CLI

  1. 在本地计算机上,下载并安装 AWS CLI。这是从命令行与 CodeCommit 交互的前提条件。我们建议您安装AWS CLI版本 2。这是的最新主版本。AWS CLI并支持所有最新功能。这是唯一的版本AWS CLI支持将根账户、联合访问或临时凭证用于git-remote-codecommit.

    有关更多信息,请参阅使用 AWS 命令行界面进行设置

    注意

    CodeCommit 只适用于AWS CLI版本 1.7.38 及更高版本。作为最佳做法,请安装 AWS CLI 或将其升级到可用的最新版本。要确定您安装的 AWS CLI 的版本,请运行 aws --version 命令。

    要将旧版本的 AWS CLI 升级到最新版本,请参阅安装 AWS Command Line Interface

  2. 运行此命令确认用于的 CodeCommit 命令AWS CLI已安装。

    aws codecommit help

    该命令返回 CodeCommit 命令列表。

  3. 配置AWS CLI使用配置文件configure命令,如下所示:。

    aws configure

    系统提示时,请指定AWS访问密钥和AWS用于 CodeCommit 的 IAM 用户的私有访问密钥。此外,请务必指定AWS 区域存储库存在的位置,例如us-east-2. 系统提示指定默认输出格式时,指定 json。例如,如果您正在为 IAM 用户配置配置文件:

    AWS Access Key ID [None]: Type your IAM user AWS access key ID here, and then press Enter AWS Secret Access Key [None]: Type your IAM user AWS secret access key here, and then press Enter Default region name [None]: Type a supported region for CodeCommit here, and then press Enter Default output format [None]: Type json here, and then press Enter

    有关创建和配置相关配置文件以与 AWS CLI 配合使用的详细信息,请参阅以下内容:

    连接存储库或另一个存储库中的资源AWS 区域,您必须重新配置AWS CLI使用默认区域名称。CodeCommit 支持的默认区域名称包括:

    • us-east-2

    • us-east-1

    • eu-west-1

    • us-west-2

    • ap-northeast-1

    • ap-southeast-1

    • ap-southeast-2

    • eu-central-1

    • ap-northeast-2

    • sa-east-1

    • us-west-1

    • eu-west-2

    • ap-south-1

    • ca-central-1

    • us-gov-west-1

    • us-gov-east-1

    • eu-north-1

    • ap-east-1

    • me-south-1

    • cn-north-1

    • cn-northwest-1

    • eu-south-1

    • ap-northeast-3

    • af-south-1

    有关 CodeCommit 和的更多信息AWS 区域,请参阅区域和 Git 连接终端节点. 有关 IAM、访问密钥和私有密钥的更多信息,请参阅如何获得证书?管理 IAM 用户的访问密钥. 有关 AWS CLI 和配置文件的更多信息,请参阅命名配置文件

接下来,您必须安装 Git。

  • 对于 Linux、macOS 或 Unix

    要处理 CodeCommit 存储库中的文件、提交和其他信息,必须在本地计算机上安装 Git。CodeCommit 支持 Git 1.7.9 以及更高版本。Git 2.28 版支持为初始提交配置分支名称。我们建议使用最新版本的 Git。

    要安装 Git,建议访问以下网站:Git 下载.

    注意

    Git 是一个不断发展的平台,会定期进行更新。有时,功能上的更改可能会影响到它与 CodeCommit 协作的方式。如果遇到 Git 和 CodeCommit 的特定版本的问题,请参阅中的信息。故障排除.

  • 对于 Windows:

    要处理 CodeCommit 存储库中的文件、提交和其他信息,必须在本地计算机上安装 Git。CodeCommit 支持 Git 1.7.9 以及更高版本。Git 2.28 版支持为初始提交配置分支名称。我们建议使用最新版本的 Git。

    要安装 Git,建议访问以下网站:适用于 Windows 的 Git. 如果您使用此链接安装 Git,则可以接受除以下设置之外的所有安装默认设置:

    注意

    Git 是一个不断发展的平台,会定期进行更新。有时,功能上的更改可能会影响到它与 CodeCommit 协作的方式。如果遇到 Git 和 CodeCommit 的特定版本的问题,请参阅中的信息。故障排除.

CodeCommit 支持 HTTPS 和 SSH 身份验证。要完成设置,您必须配置用于的 Git 凭证(建议大多数用户使用 HTTPS)、访问 CodeCommit (key pair)、访问 CodeCommit (SSH)、git-remote-codecommit(建议使用联合访问的用户)或中包含的凭证助程序AWS CLI(HTTPS)。

第 1 步:创建 CodeCommit 存储库

在本部分中,您将使用 CodeCommit 控制台创建在本教程的剩余部分中使用的 CodeCommit 存储库。要使用 AWS CLI 创建存储库,请参阅创建存储库 (AWS CLI)

  1. 从打开 CodeCommit 控制台https://console.aws.amazon.com/codesuite/codecommit/home.

  2. 在区域选择器中,选择AWS 区域要在其中创建存储库。有关更多信息,请参阅 区域和 Git 连接终端节点

  3. 存储库页面上,选择创建存储库

  4. 创建存储库页面上的存储库名称中,为存储库输入名称。

    注意

    存储库名称区分大小写。该名称在AWS 区域对于您的 Amazon Web Services 账户。

  5. (可选)在描述中,输入存储库的描述。这可以帮助您及其他用户了解存储库的用途。

    注意

    描述字段会在控制台中显示 Markdown,并接受所有 HTML 字符和有效的 Unicode 字符。如果你是应用程序开发人员使用GetRepository要么BatchGetRepositoriesAPI 并且您计划在 Web 浏览器中显示存储库描述字段,请参阅CodeCommit API 参考.

  6. (可选)选择Add tag (添加标签),向您的存储库添加一个或多个存储库标签(自定义属性标签,可帮助您组织和管理您的 AWS 资源)。有关更多信息,请参阅 在中标记存储库AWS CodeCommit

  7. (可选)选择为 Java 和 Python 启用亚马逊 CodeGuru Reviewer如果此存储库包含 Java 或 Python 代码,并且您希望 CodeGuru Reviewer 对其进行分析。CodeGuru Reviewer 使用多种机器学习模型来查找代码缺陷,并提出拉取请求的改进和修复建议。有关更多信息,请参阅 。Amazon CodeGuru Reviewer 用户指南.

  8. 选择创建


                创建存储库,以便将 Git 存储库迁移到 CodeCommit

创建后,存储库将显示在存储库列表中。在 URL 列中,选择复制图标,然后选择用于连接到 CodeCommit 的协议(SSH 或 HTTPS)。复制 URL。

例如,如果你命名了仓库MyClonedRepository并且您是在美国东部(俄亥俄)区域中使用 Git 凭证来进行 HTTPS 连接的,URL 如下所示:

https://git-codecommit.us-east-2.amazonaws.com/MyClonedRepository

稍后在第 2 步:克隆存储库并将其推送到 CodeCommit 存储库中您将需要该 URL。

第 2 步:克隆存储库并将其推送到 CodeCommit 存储库

在本部分中,您将 Git 存储库克隆到本地计算机,从而创建所谓的本地存储库。然后,您将把本地存储库的内容推送到您之前创建的 CodeCommit 存储库。

  1. 在本地计算机上的终端或命令提示符中,运行带 --mirror 选项的 git clone 命令,以将远程存储库的裸副本克隆到名为 aws-codecommit-demo 的新文件夹中。这是仅用于迁移的裸存储库。它不是用于与 CodeCommit 中迁移的存储库交互的本地存储库。稍后,在完成到 CodeCommit 的迁移后,您可以创建该本地副本。

    以下示例将 GitHub (https://github.com/awslabs/aws-demo-php-simple-app.git) 上托管的演示应用程序克隆到名为 aws-codecommit-demo 的目录中的本地存储库。

    git clone --mirror https://github.com/awslabs/aws-demo-php-simple-app.git aws-codecommit-demo
  2. 切换到您执行克隆操作的目录。

    cd aws-codecommit-demo
  3. 运行git push命令,指定目标 CodeCommit 存储库的 URL 和名称以及--all选项。(这是您在第 1 步:创建 CodeCommit 存储库中复制的 URL)。

    例如,如果将存储库命名为 MyClonedRepository 并设置为使用 HTTPS,则将运行以下命令:

    git push https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyClonedRepository --all
    注意

    --all 选项仅推送该存储库的所有分支。它不会推送其他引用,例如标签。如果您想要推送标签,请等待初始推送完成,然后再次推送,这次使用 --tags 选项:

    git push ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyClonedRepository --tags

    有关更多信息,请参阅 Git 网站上的 Git 推送。有关推送大型存储库的信息,特别是一次性推送所有引用的情况(例如,使用 --mirror 选项),请参阅以增量方式迁移仓库

您可以删除aws-code 提交演示将存储库迁移到 CodeCommit 后,文件夹以及其中的内容。要创建本地存储库,在其中包含用于处理 CodeCommit 中的存储库的所有正确引用,请运行git clone命令没有--mirror选项:

git clone https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyClonedRepository

第 3 步:在 CodeCommit 中查看文件

推送完目录内容后,可以使用 CodeCommit 控制台快速查看存储库中的所有文件。

  1. 从打开 CodeCommit 控制台https://console.aws.amazon.com/codesuite/codecommit/home.

  2. 存储库中,选择存储库的名称(例如,MyClonedRepository)。

  3. 查看存储库中的文件,以了解分支、克隆 URL、设置等信息。

    
                        CodeCommit 中克隆的存储库的视图

第 4 步:分享 CodeCommit 存储库

在 CodeCommit 中创建存储库时,会生成两个终端节点:一个用于 HTTPS 连接,一个用于 SSH 连接。两者都能提供安全的网络连接。您的用户可以使用这两种协议中的任何一种。不管您向用户推荐哪种协议,这两种终端节点都保持有效。在与他人共享您的存储库之前,您必须创建允许其他用户访问该存储库的 IAM 策略。向您的用户提供下述访问说明。

为存储库创建客户托管策略

  1. 登录 AWS Management Console,然后通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. Dashboard 导航区域中选择 Policies,然后选择 Create Policy

  3. 在存储库的创建策略页面,选择导入托管策略.

  4. 在存储库的导入托管策略(在) 页面筛选策略,输入AWSCodeCommitPowerUser. 选择策略名称旁边的按钮,然后选择导入.

  5. 创建策略页面上,选择 JSON。替换的 “*” 部分Resource用于 CodeCommit 存储库的 Amazon 资源名称 (ARN) 的 CodeCommit 操作,如下所示:

    "Resource": [ "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo" ]
    提示

    要查找 CodeCommit 存储库的 ARN,请转到 CodeCommit 控制台,从列表中选择存储库名称,然后选择。设置. 有关更多信息,请参阅 查看存储库详细信息

    若要将该策略应用到多个存储库,请通过指定其 ARN 将各个存储库添加为资源。在每个资源语句之间加上逗号,如下所示:

    "Resource": [ "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo", "arn:aws:codecommit:us-east-2:111111111111:MyOtherDemoRepo" ]

    完成编辑后,选择查看策略.

  6. 在存储库的查看策略(在) 页面名称,输入策略的新名称(例如,awscodeCommit Poweruser mydemorepo)。(可选)为此策略提供描述。

  7. 选择 Create Policy (创建策略)

要管理对您的存储库的访问,请为其用户创建一个 IAM 组,向该组添加 IAM 用户,然后附加在上一步中创建的客户托管策略。附加访问所需的任何其他策略,例如 iAMUSERsShKeys 或 IAMSofsManagement Services 凭证。

  1. 登录 AWS Management Console,然后通过以下网址打开 IAM 控制台:https://console.aws.amazon.com/iam/

  2. Dashboard 导航区域中选择 Groups,然后选择 Create New Group

  3. 在存储库的设置组名(在) 页面组名,输入组的名称(例如,mydemorepoGroup),然后选择下一步. 请考虑在组名称中包含存储库名称。

    注意

    该名称必须在 Amazon Web Services 账户间保持唯一。

  4. 选中您在前一部分中创建的客户托管策略旁边的复选框(例如,awscodeCommit Poweruser mydemorepo)。

  5. Review 页面上,选择 Create Group。IAM 使用已附加指定策略来创建此组。该组会显示在与您的 Amazon Web Services 账户关联的组列表中。

  6. 从列表中选择您的组。

  7. 在组摘要页面上,选择用户 选项卡,然后选择向组添加多个用户。在显示与您的 Amazon Web Services 账户关联的所有用户的列表中,选中要允许其访问 CodeCommit 存储库的用户旁边的复选框,然后选择。添加用户.

    提示

    您可以使用搜索框快速地按名称查找用户。

  8. 添加用户后,关闭 IAM 控制台。

在创建使用您配置的策略组和策略访问 CodeCommit 后,向该用户发送连接到存储库所需的信息。

  1. 从打开 CodeCommit 控制台https://console.aws.amazon.com/codesuite/codecommit/home.

  2. 在区域选择器中,选择AWS 区域创建存储库的位置。存储库特定于AWS 区域. 有关更多信息,请参阅 区域和 Git 连接终端节点

  3. Repositories (存储库) 页面上,选择要共享的存储库。

  4. 克隆 URL 中,选择您希望用户使用的协议。这会复制连接协议的克隆 URL。

  5. 向您的用户发送克隆 URL 以及任何其他说明,如安装 AWS CLI、对配置文件进行配置或安装 Git 的说明。请确保包含连接协议(例如 HTTPS)的配置信息。