Cloud Service
AWS CodeCommit
サーバー管理なしでプライベートな Git リポジトリをホストでき、IAM 認証で安全にコードを共有できるフルマネージドサービス。Azure Repos や Cloud Source Repositories に相当。
- 1.Git 互換のプライベートリポジトリをマネージドにホストし、容量やサーバーの運用を任せられる
- 2.アクセス制御は IAM に統合され、HTTPS や SSH の認証情報を AWS の仕組みで配布できる
- 3.新規アカウントでは利用できないが、既存アカウントでは引き続き利用と他サービス連携が可能
AWS CodeCommit は、プライベートな Git リポジトリをホストするためのフルマネージドなソース管理サービスです。標準的な Git クライアントからそのまま利用でき、リポジトリの保存先やサーバーの運用を AWS に任せられます。アクセス制御は IAM と統合され、AWS の他の開発者向けサービスやイベント基盤とも連携します。なお CodeCommit は新規の利用申し込みを終了しており、新たに使い始めることはできませんが、すでに利用しているアカウントでは引き続き利用できます。
解決する課題
チームでコードを共有するには、Git リポジトリをホストする基盤が必要です。これを自前のサーバーで運用しようとすると、可用性の確保、ストレージ容量の拡張、バックアップ、認証・認可の仕組み、パッチ適用といった継続的な運用負担が発生します。
CodeCommit はマネージドな Git リポジトリを提供することで、こうした基盤運用から開発者を解放します。リポジトリは AWS が冗長化して保持し、容量も利用に応じて拡張されるため、サーバーのサイジングを気にする必要がありません。さらにアクセス制御を IAM に集約できるため、専用の認証基盤を別途用意せずに、AWS アカウント内の権限管理と同じ仕組みでリポジトリへのアクセスを統制できます。
主要概念と用語
- リポジトリ: コードの履歴を保持する単位。Git の標準的なリポジトリとして振る舞い、ブランチやタグ、コミット履歴を持つ。
- 認証情報: リポジトリへアクセスするための資格情報。HTTPS 用の Git 認証情報、SSH 公開鍵、または一時的な認証情報を用いる方式がある。
- IAM ポリシー: どのプリンシパルがどのリポジトリに対してどの操作を行えるかを定義する権限。リポジトリ単位やアクション単位で絞り込める。
- プルリクエスト: 変更をレビューし、議論したうえでブランチへ取り込むためのレビュー単位。
- 承認ルール: プルリクエストのマージ前に必要な承認者数や条件を定めるルール。テンプレートとして複数リポジトリに適用できる。
- トリガー / 通知: コミットやプルリクエストなどのイベントを契機に、後続の処理や通知を起動する仕組み。
- マージ戦略: プルリクエストを取り込む際の方式。早送り、3 方向マージ、スカッシュなどを選べる。
仕様・制限・クォータ
CodeCommit は標準的な Git プロトコルに対応しており、git コマンドや一般的なクライアントからそのまま利用できます。接続は HTTPS と SSH に対応し、いずれも転送時は暗号化されます。保存されるデータは保管時に暗号化されます。
1 アカウントあたりのリポジトリ数、1 リポジトリのサイズ、1 ファイルのサイズ、参照(ブランチやタグ)数などにクォータが設定されています。具体的な上限値は変動し、一部は引き上げ可能なため、設計時には最新のサービスクォータを確認してください。非常に大きなバイナリを多数扱うリポジトリでは、サイズ上限や Git の取り扱いを踏まえた設計が必要です。
CodeCommit は新規アカウントでの利用を受け付けていません。これから Git ホスティングを選ぶ場合は、外部の Git サービスや他の選択肢の利用を検討してください。既存アカウントでは引き続き利用できます。
内部の仕組み
CodeCommit はリポジトリの実体を AWS が管理するストレージに保持し、複数の場所へ冗長化することで耐久性と可用性を確保します。利用者はサーバーのプロビジョニングやスケーリングを意識する必要がなく、リポジトリのサイズは利用に応じて拡張されます。
クライアントからの操作は Git のプロトコルを通じて行われますが、認証は AWS の署名や認証情報の仕組みに統合されています。HTTPS でアクセスする場合は専用の Git 認証情報、あるいは認証情報ヘルパーを介した一時的な署名を用い、SSH でアクセスする場合は IAM ユーザーに登録した公開鍵で認証します。コミットやブランチ更新、プルリクエストといった操作はイベントとして発行でき、これを契機に通知や自動処理を起動できます。
設計パターン / ベストプラクティス
リポジトリは用途やチーム、マイクロサービスの単位で分割し、それぞれに最小権限の IAM ポリシーを割り当てると統制しやすくなります。本番に直結するブランチには承認ルールを設定し、一定数の承認とレビューを経たプルリクエストだけがマージされるようにすると、変更の品質を担保できます。
CI/CD と組み合わせる場合は、コミットやマージのイベントを契機にビルドやデプロイのパイプラインを起動する構成が基本です。承認ルールはテンプレート化して複数リポジトリへ一括適用すると、組織全体で一貫したレビュー要件を維持できます。
承認ルールテンプレートを用いると、必要な承認者数やレビュー条件を複数リポジトリへ一括適用できます。重要なブランチへのマージ前に一定の承認を必須化することで、レビューの抜け漏れを防げます。
運用・監視
CodeCommit に対する API 呼び出しは証跡として記録できるため、誰がいつリポジトリを作成・更新・削除し、どのコードへアクセスしたかを監査できます。コミットやプルリクエストのイベントは通知やイベント基盤と連携でき、レビュー依頼の通知や後続処理の自動起動に利用できます。
運用では、リポジトリ単位の権限を定期的に見直し、退職者や役割変更に伴う不要な権限を削除することが重要です。CI/CD パイプラインと連携する場合は、リポジトリのイベントからビルド・テスト・デプロイまでの流れを自動化し、変更の取り込みからリリースまでを再現性のあるものにします。
コスト
CodeCommit の料金は、アクティブな利用者数を基準とした課金が中心で、一定数までのアクティブユーザーや一定量のストレージ・リクエストは無料枠に含まれます。これを超えた分のアクティブユーザー、ストレージ、Git リクエストに応じて費用が発生します。
コストを抑えるには、実際に利用するメンバーへのアクセス付与にとどめ、不要になったリポジトリや巨大なバイナリ履歴を整理することが有効です。具体的な単価や無料枠の範囲は変動するため、最新の料金ページで確認してください。
セキュリティ
アクセス制御は IAM ポリシーで行い、プリンシパルごとにリポジトリ単位・アクション単位の権限を定義します。最小権限の原則に従い、読み取りのみ・書き込み可能・管理権限といった役割を分離するのが望ましい設計です。HTTPS では専用の Git 認証情報や認証情報ヘルパー、SSH では登録した公開鍵を用いて認証し、いずれも転送時は暗号化されます。
保存されるデータは保管時に暗号化されます。VPC からの閉域アクセスが必要な場合は、インターフェース型のプライベート接続を用いることで、インターネットを経由せずにリポジトリへアクセスできます。多要素認証や認証情報の定期的なローテーションを組み合わせると、認証情報の漏洩リスクを下げられます。
Git 認証情報や SSH 鍵を個人をまたいで共有すると、操作の追跡が困難になります。利用者ごとに認証情報を発行し、リポジトリへの権限は必要最小限にとどめてください。
関連サービス・比較
CodeCommit と比較されやすいのは、広く使われている外部の Git ホスティングサービスである GitHub です。どちらも Git リポジトリをホストしますが、CodeCommit は IAM への統合や AWS サービスとの連携を重視するのに対し、GitHub は豊富なコミュニティ機能やエコシステムを備えます。AWS のパイプラインは外部の Git サービスとも連携できるため、両者を組み合わせる構成も一般的です。
| 観点 | AWS CodeCommit | GitHub |
|---|---|---|
| ホスティング形態 | AWS マネージドのプライベートリポジトリ | 外部サービスとして提供 |
| 認証・認可 | IAM に統合 | 独自のアカウントと権限管理 |
| AWS との連携 | イベントや CI/CD と密に連携 | 連携可能だが外部経由 |
| 新規利用 | 新規アカウントでは不可 | 誰でも利用可能 |
| エコシステム | AWS 中心 | 広範なコミュニティと連携機能 |
ハンズオン / CLI例
# リポジトリを作成
aws codecommit create-repository \
--repository-name my-repo \
--repository-description "サンプルリポジトリ"
# リポジトリ一覧を確認
aws codecommit list-repositories
# クローン用の HTTPS URL を取得
aws codecommit get-repository \
--repository-name my-repo \
--query repositoryMetadata.cloneUrlHttp \
--output text
# 取得した URL を使って Git でクローン(認証情報ヘルパー設定済みの前提)
git clone https://git-codecommit.<リージョン>.amazonaws.com/v1/repos/my-repo
AWS Service
AWS CodeCommitを実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
開発者ツール
比較で見る軸
クラウド: AWS / カテゴリ: 開発者ツール / 難易度: basic
導入後に効く点
アクセス制御は IAM に統合され、HTTPS や SSH の認証情報を AWS の仕組みで配布できる
先に潰すリスク
サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。
- クラウド
- AWS
- カテゴリ
- 開発者ツール
- 難易度
- basic
- 関連資格
- DOP-C02 / DVA-C02
- 設計柱
- security / operational
判断チェックリスト
- 自社の用途が「開発者ツール / security」に近いか確認する。
- 強みである「Git 互換のプライベートリポジトリをマネージドにホストし、容量やサーバーの運用を任せられる」が本当に評価軸になるか確認する。
- 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。