什么是 AWS CodeCommit? - AWS CodeCommit

AWS CodeCommit 不再向新客户提供。 AWS CodeCommit 的现有客户可以继续正常使用该服务。了解更多

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

什么是 AWS CodeCommit?

AWS CodeCommit 是一项由 Amazon Web Services 托管的版本控制服务,可让您在云中通过私有方式存储和管理资产(例如文档、源代码和二进制文件)。有关 CodeCommit 的定价信息,请参阅定价

注意

CodeCommit 适用于许多合规性计划。有关 AWS 和合规性工作的详细信息,请参阅 AWS 按合规性计划提供的范围内服务

这是一项符合 HIPAA 要求的服务。有关AWS、《1996 年健康保险可携性与责任法》(HIPAA) 以及使用AWS服务处理、存储和传输受保护的医疗信息 (PHI) 的更多信息,请参阅 HIPAA 概述

有关该服务以及规定安全管理最佳实践的安全管理标准 ISO 27001 的信息,请参阅 ISO 27001 概述

有关此服务和支付卡行业数据安全标准 (PCI DSS) 的信息,请参阅 PCI DSS 概述

有关此服务和美国联邦信息处理标准 (FIPS) 第 140-2 版美国政府标准(其中规定了对保护敏感信息的加密模块的安全要求)的信息,请参阅美国联邦信息处理标准 (FIPS) 第 140-2 版概览 Git 连接端点

CodeCommit 简介

CodeCommit 是一项安全、高度可扩展的托管式源代码控制服务,用于托管私有 Git 存储库。借助 CodeCommit,您无需管理自己的源代码控制系统,也无需担心其基础设施的扩展。您可以使用 CodeCommit 存储从代码到二进制文件的一切内容。它支持 Git 的标准功能,可与您现有的基于 Git 的工具无缝协作。

使用 CodeCommit,您可以:

  • 受益于 AWS 托管的完全托管服务。CodeCommit 可提供高服务可用性和高持久性,并能消除管理您自己的硬件和软件的管理开销。没有需要预置和扩展的硬件,也没有需要安装、配置和更新的服务器软件。

  • 安全地存储您的代码:CodeCommit 存储库在静止和传输时处于加密状态。

  • 协作处理代码:CodeCommit 存储库支持拉取请求,使用户可以相互查看和评论各自的代码更改,然后再将其合并到分支,还支持通过通知功能自动向用户发送有关拉取请求和评论的电子邮件等。

  • 轻松扩展您的版本控制项目:CodeCommit 存储库可以扩展以满足您的开发需求。该服务能够处理具有大量文件或分支、大尺寸文件及冗长版本历史记录的存储库。

  • 随时随地存储:CodeCommit 不限制您的存储库大小,也不限制可存储的文件类型。

  • 与其他 AWS 及第三方服务集成。CodeCommit 将您的存储库放置在靠近您托管在 AWS 云中的其他生产资源的位置,这有助于提高您的开发周期的速度和频率。它与 IAM 集成,并且可与其他 AWS 服务结合使用以及与其他存储库同时使用。有关更多信息,请参阅产品和服务与 AWS CodeCommit

  • 轻松地从远程存储库迁移文件。您可以从任意 Git 存储库迁移到 CodeCommit。

  • 使用自己熟悉的 Git 工具:CodeCommit 支持 Git 命令及其自己的 AWS CLI 命令和 API。

CodeCommit、Git 以及选择合适的 AWS 服务来满足您的需求

作为一项基于 Git 的服务,CodeCommit 非常适合用于满足大多数版本控制需求。未对文件大小、文件类型和存储库大小施加任何限制。但是,Git 有一些固有的限制,这些限制会对某些类型的操作的性能产生负面影响,特别是随着时间的推移。通过避免在其他 AWS 服务更适合于任务的使用案例中使用 CodeCommit 存储库,可以避免 CodeCommit 存储库性能的潜在下降。您还可以为复杂的存储库优化 Git 性能。以下是一些使用案例,其中 Git(也就是 CodeCommit)可能不是最适合您的解决方案,或者您可能需要采取额外步骤来优化 Git。

使用案例 描述 要考虑的其他服务
经常更改的大文件 Git 使用增量编码来存储各个文件版本之间的差异。例如,如果您更改文档中的几个单词,Git 将只存储这些已更改的单词。如果您的文件或对象的大小超过 5 MB,并且进行了许多更改,则 Git 可能需要重新构造一个很大的增量差异链。当这些文件随着时间的推移而增长时,这会在本地计算机和 CodeCommit 中使用越来越多的计算资源。 要对大型文件进行版本控制,请考虑使用 Amazon Simple Storage Service (Amazon S3)。有关更多信息,请参阅《Amazon Simple Storage Service 用户指南》中的使用版本控制
数据库 随着时间的推移,Git 存储库会变得越来越大。由于版本控制将跟踪所有更改,因此,任何更改都将增大您的存储库。换句话说,在提交数据时,即使删除了提交中的数据,也会将数据添加到存储库中。随着时间的推移,需要处理和传输的数据会越来越多,Git 的速度将变慢。这对数据库使用案例尤其不利。Git 不是作为数据库设计的。 要创建和使用具有一致性能的数据库(而不管大小如何),请考虑使用 Amazon DynamoDB。有关更多信息,请参阅 Amazon DynamoDB 入门指南
审核跟踪 通常,审核跟踪会保持很长一段时间,并且由系统进程以非常频繁的节奏连续生成。Git 旨在安全地存储由开发人员组在开发周期中生成的源代码。快速更改的存储库会不断存储以编程方式生成的系统更改,但性能会随着时间的推移而降低。 要存储审计跟踪记录,请考虑使用 Amazon Simple Storage Service (Amazon S3)。

要审计 AWS 活动,请考虑使用 AWS CloudTrailAWS ConfigAmazon CloudWatch,具体取决于您的使用案例。

备份 Git 是为开发人员编写的版本源代码而设计的。您可以将提交推送到两个远程存储库(包括一个 CodeCommit 存储库)作为备份策略。但是,Git 并不是设计用来处理计算机文件系统、数据库转储或类似备份内容的备份。这样做可能会降低系统速度,增加克隆和推送存储库所需的时间。 有关如何备份到 AWS 云的信息,请参阅备份和还原
大量分支或引用 当 Git 客户端推送或提取存储库数据时,即使您只对单个分支感兴趣,远程服务器也必须发送所有分支和引用(如标签)。如果您有数千个分支和引用,这可能需要一些时间来处理和发送(打包协商)并导致明显缓慢的存储库响应。您拥有的分支和标签越多,此过程所需的时间就越长。我们建议使用 CodeCommit,但需删除不再需要的分支和标签。 要分析 CodeCommit 存储库中的引用数以确定可能不需要的引用,您可使用以下命令之一:
  • Linux、macOS、Unix 或 Windows 上的 Bash 模拟器:

    git ls-remote | wc -l
  • Powershell:

    git ls-remote | Measure-Object -line

CodeCommit 如何运作?

CodeCommit 会给基于 Git 的存储库的用户带来熟悉的使用感受,即使是不熟悉此类存储库的用户,也会发现转换到 CodeCommit 的过程十分简单。CodeCommit 提供一个控制台,您可以使用它轻松创建存储库并列出现有的存储库和分支。用户只需执行几个简单的步骤,就能找到存储库的相关信息、将其克隆到自己的计算机、创建可进行更改的本地存储库,然后将更改推送到 CodeCommit 存储库。用户可以在本地计算机上使用命令行或使用基于 GUI 的编辑器执行作业。

下图显示了使用开发计算机、AWS CLI 或 CodeCommit 控制台和 CodeCommit 服务创建和管理存储库的过程:

典型 CodeCommit 工作流

  1. 使用 AWS CLI 或 CodeCommit 控制台创建 CodeCommit 存储库。

  2. 在开发计算机上,使用 Git 运行 git clone 并指定 CodeCommit 存储库的名称。这将创建一个连接到 CodeCommit 存储库的本地存储库。

  3. 在您的开发计算机上使用本地存储库修改(添加、编辑和删除)文件,然后运行 git add 将修改后的文件暂存在本地。运行 git commit 以在本地提交文件,然后运行 git push 以将文件发送到 CodeCommit 存储库。

  4. 下载其他用户的更改。运行 git pull 以将 CodeCommit 存储库中的文件与您的本地存储库同步。这可确保您使用最新版本的文件。

您可以使用 AWS CLI 或 CodeCommit 控制台跟踪和管理自己的存储库。

CodeCommit 与 Amazon S3 中的文件版本控制有何区别?

CodeCommit 针对团队软件开发进行了优化。它能够管理多个文件的更改批次(当其他开发人员也在进行更改时,可能会发生这种情况)。Amazon S3 版本控制支持恢复以往版本的文件,但它不侧重于软件开发团队需要的协作文件跟踪功能。

如何开始使用 CodeCommit?

要开始使用 CodeCommit,请执行以下操作:

  1. 按照设置 中的步骤准备您的开发计算机。

  2. 按照开始使用中的一个或多个教程中的步骤操作。

  3. 在 CodeCommit 中创建版本控制项目,或将版本控制项目迁移到 CodeCommit。

哪里可以找到有关 Git 的更多信息?

如果您还不知道它,应该先了解如何使用 Git。下面是一些有用的资源:

  • Pro Git - Pro Git 图书的在线版本。作者是 Scott Chacon。由 Apress 出版。

  • Git Immersion - 一个以实验为本的探索之旅,旨在指导您掌握使用 Git 的基础知识。由 Neo Innovation, Inc. 发布。

  • Git 参考 - 一个在线快速参考,也可用作更深入的 Git 教程。由 GitHub 团队发布。

  • Git 备忘单 - 包含基本 Git 命令的语法。由 GitHub 团队发布。

  • Git 袖珍指南。作者是 Richard E. Silverman。由 O'Reilly Media, Inc. 发布。