AWS CodeCommit

AWS 曾提供的全托管 Git 仓库服务,具备 IAM 认证授权和存储自动加密功能,但已于 2024 年 7 月停止新用户注册

概述

AWS CodeCommit 曾是一项全托管的 Git 仓库源代码管理服务。其特点是通过 IAM 用户或角色进行访问控制、使用 AWS KMS 自动加密存储数据,以及与 CodePipeline 紧密集成,可在 AWS 生态系统内构建完整的 CI/CD 流水线。2024 年 7 月 25 日起停止接受新客户,现有用户也被建议迁移到其他服务。

IAM 集成认证带来的 AWS 原生源代码管理

CodeCommit 最大的差异化优势在于可通过 IAM 统一管理 Git 仓库的认证和授权。GitHub 或 GitLab 需要为每个用户管理 SSH 密钥或个人访问令牌,而 CodeCommit 可通过 IAM 策略以声明式方式定义仓库级和分支级的访问控制。例如仅允许发布管理员角色向 main 分支推送这样的控制可通过 IAM 策略的 Condition 子句实现。认证方式支持 HTTPS(通过 Git 凭证助手)和 SSH,使用 AWS CLI 的 credential helper 可透明地使用 IAM 临时凭证进行 Git 操作。存储数据通过 AWS KMS 客户托管密钥或 AWS 托管密钥自动加密,通信通过 TLS 保护。对于金融机构和政府机关等对源代码存储位置有严格要求的组织,仓库封闭在 AWS 区域内是一大优势。

CodePipeline 集成与 CI/CD 流水线构建模式

CodeCommit 作为 CodePipeline 的源阶段原生集成,可构建以仓库推送为触发、通过 CodeBuild 执行构建和测试、通过 CodeDeploy 自动部署的 CI/CD 流水线。通过 EventBridge 规则检测推送事件,无轮询延迟,流水线实时启动。还具备拉取请求功能,可通过审批规则模板强制至少需要 2 名审阅者批准等合并条件。但与 GitHub 或 GitLab 相比,拉取请求的 UI 和功能较为有限。Azure DevOps 的 Azure Repos 也提供类似的云原生 Git 仓库,且截至 2026 年仍可新注册使用。Git 相关书籍(Amazon)可帮助打好基础。

服务终止与迁移目标选择

2024 年 7 月 25 日,AWS 停止向新账户提供 CodeCommit。现有用户仍可继续使用,但不会添加新功能,预计将逐步缩减。AWS 在官方博客中推荐的迁移目标是 GitHub、GitLab、Bitbucket 等第三方 Git 托管服务。迁移时首先需要将基于 IAM 的访问控制重新设计为迁移目标的认证模型。CodePipeline 支持 GitHub 和 Bitbucket 作为源提供者,因此流水线重建相对容易。但如果使用了 CodeCommit 触发器的 EventBridge 规则,则需要替换为 GitHub Webhooks 或 GitLab Webhooks。迁移步骤最简单的方式是使用 git clone --mirror 获取仓库的完整副本,然后通过 git push --mirror 推送到迁移目标。分支保护规则和审批模板需要手动重新设置。

共有するXB!