AWS CodeCommit
ユーザーガイド (API バージョン 2015-04-13)

AWS CodeCommit とは

AWS CodeCommit は、クラウド内のアセット (ドキュメント、ソースコード、バイナリファイルなど) を非公開で保存および管理するために使用できる Amazon Web Services によってホストされるバージョン管理サービスです。CodeCommit の料金については、「料金表」を参照してください。

注記

CodeCommit は多くのコンプライアンスプログラムの範囲内です。AWS およびコンプライアンスの取り組みの詳細については、「コンプライアンスプログラムによる AWS 対象範囲内のサービス」を参照してください。

これは HIPAA 対象サービスです。AWS、米国 Health Insurance Portability and Accountability Act of 1996 (HIPAA)、および AWS サービスを使用した保護されるべき医療情報 (PHI) の処理、保存、転送に関する詳細については、「HIPAA 概要」を参照してください。

このサービスについて、また、セキュリティ管理のベストプラクティスを規定したセキュリティ管理規格である ISO 27001 については、「ISO 27001 の概要」を参照してください。

このサービスの詳細および Payment Card Industry Data Security Standard (PCI DSS) については、「PCI DSS の概要」を参照してください。

このサービスの詳細、および機密情報を保護する暗号化モジュールのセキュリティ要件を指定する連邦情報処理規格 (FIPS) 出版物 140-2 の米国政府規格の詳細については、「連邦情報処理規格 (FIPS) 140-2 の概要」および「Git の接続エンドポイント」を参照してください。

CodeCommit のご紹介

CodeCommit は、セキュアでスケーラブル性が高いマネージド型ソースコントロールサービスで、プライベート Git リポジトリをホストします。CodeCommit では、ソース管理システムを管理したり、そのインフラストラクチャをスケールしたりする必要がありません。CodeCommit を使用してコードからバイナリまであらゆるものを保存します。Git の標準機能がサポートされているため、既存の Git ベースのツールをシームレスに使用できます。

CodeCommit を使用すると、次のことが可能になります。

  • AWS によってホストされる完全マネージド型サービスのメリット CodeCommit では、サービスの高可用性および高耐久性を実現しているため、独自のハードウェアおよびソフトウェアの管理オーバーヘッドは必要ありません。ハードウェアのプロビジョニングおよびスケーリングはもちろん、サーバーソフトウェアのインストール、設定、アップデートも不要です。

  • コードを安全に保存します。CodeCommit リポジトリは、不使用時および転送中に暗号化されます。

  • 協力してコード作業を行います。 CodeCommit リポジトリは、ブランチへマージする前に互いのコード変更を確認してそれにコメントできるプルリクエスト、プルリクエストやコメントについてユーザーに自動的に E メールを送る通知、その他多くをサポートしています。

  • バージョン管理プロジェクトを簡単にスケールします。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 リポジトリのパフォーマンスが低下する可能性を回避できます。複雑なリポジトリの 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 Config、または Amazon CloudWatch を検討してください。

バックアップ Git は開発者によって作成されたソースコードをバージョン管理するように設計されました。バックアップ戦略として、CodeCommit リポジトリを含む 2 つのリモートリポジトリにコミットをプッシュできます。ただし、Git は、コンピュータのファイルシステムのバックアップ、データベースのダンプ、または同様のバックアップコンテンツを処理するようには設計されていません。これを行うと、システムの速度が低下し、リポジトリのクローン作成とプッシュに必要な時間が長くなる可能性があります。 AWS クラウドへのバックアップの詳細については、バックアップと復元を参照してください。
大量のブランチまたはリファレンス Git クライアントがリポジトリデータをプッシュまたはプルするとき、たとえあなたが単一のブランチが必要な場合も、リモートサーバーは、タグなどの、すべてのブランチとリファレンスを送る必要があります。何千ものブランチやリファレンスがある場合、処理と送信に時間がかかり (パックネゴシエーション)、リポジトリの応答が遅くなる可能性があります。ブランチやタグが多いほど、この処理にかかる時間が長くなります。CodeCommit の使用をお勧めしますが、不要になったブランチやタグは削除してください。 必要ではないものを判別するために CodeCommit リポジトリのリファレンスの数を分析するためには、次のいずれかのコマンドを使用できます。
  • Linux, macOS, or 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 リポジトリ に接続する ローカル repo が作成されます。

  3. 開発マシン上で ローカル repo を使用してファイルを変更 (追加、編集、削除) し、続いて、git add を実行し、変更したファイルをローカルでステージングします。git commit を実行してファイルをローカルにコミットしてから、git push を実行して、そのファイルを CodeCommit リポジトリ に送信します。

  4. 他のユーザーの変更をダウンロードします。git pull を実行して、CodeCommit リポジトリ のファイルを ローカル repo と同期します。これにより、最新バージョンのファイルを操作できます。

リポジトリを追跡および管理するには、AWS CLI または CodeCommit コンソールを使用できます。

CodeCommit と Amazon S3 のファイルバージョニングの違いは?

CodeCommit は、チームによるソフトウェア開発のために最適化されています。また、複数のファイルの変更のバッチを管理できるため、他の開発者が操作していても、同時に変更することができます。Amazon S3 のバージョニングでは、過去のバージョンのファイルを復元できますが、ソフトウェア開発チームが必要とする提携ファイルの追跡機能は搭載されていません。

CodeCommit の使用を開始するには

CodeCommit の使用を開始するには

  1. セットアップ 」の手順に従って、開発マシンを準備します。

  2. 開始方法」の 1 つ以上のチュートリアルの手順に従います。

  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 です。