AWS CodeCommit とは - AWS CodeCommit

AWS CodeCommit とは

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

注記

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

これは HIPAA 対象サービスです。AWS, U.S. の詳細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、Unix、または Windows 上の Bash エミュレーター:

    git ls-remote | wc -l
  • Powershell:

    git ls-remote | Measure-Object -line

CodeCommit の仕組み

Git ベースのリポジトリのユーザーは CodeCommit を使い慣れていますが、それ以外のユーザーでも 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 コンソールを使用できます。

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

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