1. 简介

  • AWS CodeCommit 是由 Amazon Web Services 托管的版本控制服务,可让您在云中私下存储和管理资产(如文档、源代码和二进制文件)。


  • 它支持 Git 的标准功能,可与您现有的基于 Git 的工具无缝协作。


  • 定价image.png


2. CodeCommit 是如何工作的?

AWS CodeCommit - 图2

3. 开始使用 CodeCommit

开始使用 CodeCommit

  • 按照 设置 中的步骤准备您的开发计算机。
  • 按照 入门 中的一个或多个教程中的步骤操作。
  • 在 CodeCommit 中创建版本控制项目或者将版本控制项目迁移到 CodeCommit。


3.1 对 AWS CodeCommit 进行设置

通过本地计算机来使用 CodeCommit 存储库,需要设置安全凭证。设置 CodeCommit 的最简单方法是为 AWS CodeCommit 配置 HTTPS Git 凭证。

该 HTTPS 身份验证方法:

  • 使用静态用户名和密码。
  • 适用于 CodeCommit 支持的所有操作系统。
  • 兼容支持 Git 凭证的集成开发环境 (IDE) 及其他开发工具。


3.1.1 查看和管理您的凭证

  • 在右上角的导航栏中,选择您的用户名,然后选择 My Security Credentials (我的安全凭证)。AWS CodeCommit - 图3
  • 选择 AWS CodeCommit 凭证选项卡。


3.1.2 使用 Git 凭证设置

利用 HTTPS 连接和 Git 凭证,您可以在 IAM 中生成静态用户名和密码。然后,您可以在 Git 和支持 Git 用户名及密码身份验证的任何第三方工具中使用这些凭证。此方法得到大多数 IDEs 和开发工具。它是配合 CodeCommit 使用时最简单、最轻松的连接方法。

  • 对于使用 Git 凭证的 HTTPS 用户:按照以下说明使用 Git 凭证设置本地计算机与 CodeCommit 存储库之间的连接。
  • 用于开发工具的连接:按照以下准则使用 Git 凭证设置 IDE 或其他开发工具与 CodeCommit 存储库之间的连接。IDEs 支持 Git 凭证的包括 (但不限于) VisualStudio、Eclipse、Xcode和 IntelliJ。

image.png

3.2 迁移到 AWS CodeCommit

您可以通过多种方法将 Git 存储库迁移到 CodeCommit 存储库:克隆、镜像、迁移所有或部分分支等。您也可以将计算机上的本地、非版本控制内容迁移到 CodeCommit。

3.2.1 将 Git 存储库迁移到 AWS CodeCommit

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

  • 完成 CodeCommit 所需的初始设置。
  • 创建 CodeCommit 存储库。
  • 克隆存储库并将其推送到 CodeCommit。
  • 查看 CodeCommit 存储库中的文件。
  • 与您的团队共享 CodeCommit 存储库。

AWS CodeCommit - 图5

第1步: 创建 CodeCommit 存储库

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

  1. $ git clone https://git-codecommit.us-west-2.amazonaws.com/v1/repos/MyClonedRepository

image.png

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

  1. 使用 git clone 命令与 --mirror 选项,将远程存储库(https://github.com/awslabs/aws-demo-php-simple-app.git)的裸副本克隆到名为的新文件夹中 aws-codecommit-demo。这是一个裸存储库,仅用于迁移。

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

    1. cd aws-codecommit-demo
  3. 运行 git push 命令,指定目标 CodeCommit 存储库的 URL 和名称以及 —all 选项。

    1. —all 选项仅推送该存储库的所有分支。它不会推送其他引用,例如标签。
      1. git push https://git-codecommit.us-west-2.amazonaws.com/v1/repos/MyClonedRepository --all

      第3步: 分享 CodeCommit 存储库

      在与他人共享您的存储库之前,您必须创建允许其他用户访问该存储库的 IAM 策略。
      为存储库创建客户托管策略:
  4. 打开 IAM 控制台。

  5. Dashboard 导航区域中选择 Policies,然后选择 Create Policy
  6. 创建策略 页面,选择 导入托管策略.
  7. 导入托管策略 页面,在 过滤策略,输入 AWSCodeCommitPowerUser。选择策略名称旁边的按钮,然后选择 导入.
  8. 创建策略页面上,选择 JSON。替换的“*”部分 Resource 行 CodeCommit 使用Amazon资源名称(ARN) CodeCommit 存储库,如此处所示:

    1. "Resource": [
    2. "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo"
    3. ]

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

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

    完成编辑后,请选择 审查政策.

  9. 审查政策 页面,在 名称,输入策略的新名称(例如: AWSCodeCommitPowerUser-MyDemoRepo)。

  10. 选择创建策略

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

  1. 打开 IAM 控制台。
  2. Dashboard 导航区域中选择 Groups,然后选择 Create New Group
  3. 设置组名称 页面,在 组名称,输入组的名称(例如: MyDemoRepoGroup),然后选择 下一步. 请考虑在组名称中包含存储库名称。
  4. 选中您在前一部分中创建的客户托管策略旁边的复选框(例如,AWSCodeCommitPowerUser-MyDemoRepo)。
  5. 审核页面上,选择创建组。IAM 将创建此组并且已附加指定策略。此组会显示在与您的 AWS 账户关联的组列表中。
  6. 从列表中选择您的组。
  7. 在组摘要页面上,选择用户 选项卡,然后选择向组添加多个用户。在显示与您的 AWS 账户关联的所有用户的列表中,选中要允许其访问 CodeCommit 存储库的用户旁边的复选框,然后选择添加用户
  8. 添加用户后,关闭 IAM 控制台。

3.2.2 将内容迁移到 CodeCommit

本主题中的过程演示如何将计算机上的现有项目或本地内容迁移到 CodeCommit 存储库。

  1. 在本地计算机上的终端或命令行中,进入要用作存储库源的目录。
  2. 运行 git init 命令在该目录中初始化 Git 版本控制。这会在启用版本控制跟踪的目录的根目录中创建一个 .git 子目录。.git 文件夹还包含存储库的所有必需元数据。

    1. git init
  3. 添加要置于版本控制之下的文件。在本教程中,将运行带 . 说明符的 git add 命令来添加该目录中的所有文件。

    1. git add .
  4. 为添加的文件创建一个带有提交消息的提交。

    1. git commit m "Initial commit"
  5. 运行 git push 命令,指定目标 CodeCommit 存储库的 URL 和名称以及 --all 选项。

    1. git push https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyFirstRepo --all

3.2.3 增量迁移存储库

步骤0: 确定是否逐步迁移

如果您满足以下一个或多个条件,则可能需要配置增量推送:

  • 您要迁移的存储库具有五年以上的历史。
  • 您的 Internet 连接存在间歇性中断、丢包、响应缓慢或其他服务中断问题。
  • 存储库的整体大小大于 2 GB,并且您打算迁移整个存储库。
  • 存储库包含压缩率不高的大型项目或二进制文件,例如具有超过五个跟踪版本的大型映像文件。
  • 您以前尝试过迁移到 CodeCommit,但收到“内部服务错误”消息。

    后续步骤

    具体步骤参考官方文档:https://docs.aws.amazon.com/zh_cn/codecommit/latest/userguide/how-to-push-large-repositories.html