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

AWS CodeCommit での Git の使用に関するチュートリアル

Git と CodeCommit を初めて使用するお客様向けに、このチュートリアルでは、シンプルなコマンドの使用方法について説明します。Git にすでに精通している場合は、このチュートリアルをスキップし、「CodeCommit のチュートリアル」に進むことができます。

このチュートリアルでは、CodeCommit リポジトリ のローカルコピーを表すリポジトリを作成します。このリポジトリを ローカル repo と呼びます。

ローカル repo の作成後、いくつかの変更を加えます。その後、変更を CodeCommit リポジトリ に送信 (プッシュ) します。

また、2 人のユーザーが個別に ローカル repo への変更をコミットし、その変更を CodeCommit リポジトリ にプッシュする、チーム環境をシミュレートします。その後、ユーザーは CodeCommit リポジトリ から変更を自身の ローカル repo にプルして、他のユーザーが加えた変更を確認します。

また、ブランチとタグを作成し、CodeCommit リポジトリ でのアクセス権限を管理します。

このチュートリアルを完了後、自身のプロジェクトで Git と CodeCommit の主要概念を使用するには、十分な練習が必要です。

以下の前提条件と設定を完了します。

  • IAM ユーザーにアクセス権限を割り当てる

  • このチュートリアルでローカルマシンでの HTTPS および SSH 接続に使用する認証情報管理を設定する

  • リポジトリの作成を含むすべてのオペレーションで、コマンドラインまたはターミナルを使用する場合の AWS CLI を設定する

ステップ 1: CodeCommit リポジトリを作成する

このステップでは、CodeCommit コンソールを使用してリポジトリを作成します。

使用する CodeCommit リポジトリがすでにある場合は、このステップをスキップできます。

注記

使用状況によっては、リポジトリの作成またはアクセスに対して課金される場合があります。詳細については、CodeCommit 製品情報ページの「料金表」を参照してください。

CodeCommit リポジトリ を作成するには

  1. https://console.aws.amazon.com/codesuite/codecommit/home にある CodeCommit コンソールを開きます。

  2. AWS リージョンセレクタで、リポジトリを作成するリージョンを選択します。詳細については、「リージョンと Git 接続エンドポイント」を参照してください。

  3. [Repositories (リポジトリ)] ページで、[Create repository (リポジトリの作成)] を選択します。

  4. [リポジトリの作成] ページの [レポジトリ名] に、新しいレポジトリの名前を入力します (例: MyDemoRepo)。

    注記

    リポジトリ名は 100 文字以内で入力してください。詳細については、「制限」を参照してください。

  5. (オプション) [Description (説明)] に、説明 (例: My demonstration repository) を入力します。この説明は、お客様と他のユーザーがリポジトリの用途を識別するのに役立ちます。

  6. [作成] を選択します。

注記

このチュートリアルの残りのステップでは、CodeCommit リポジトリ の名前として MyDemoRepo を使用します。別の名前を選択した場合は、このチュートリアル全体でそれを使用してください。

ターミナルやコマンドラインからリポジトリを作成する方法を含め、リポジトリの作成の詳細については、「リポジトリの作成」を参照してください。

ステップ 2: ローカルリポジトリを作成する

このステップでは、ローカルマシン上のローカルリポジトリをお客様のレポジトリに接続するように設定します。そのためには、ローカルマシン上のローカルリポジトリを表すディレクトリを選択します。Git を使用して、空の CodeCommit リポジトリ のコピーをそのディレクトリ内に複製し、初期化します。次に、コミットに注釈を付けるために使用するユーザー名と E メールアドレスを指定します。

  1. https://console.aws.amazon.com/codesuite/codecommit/home にある CodeCommit コンソールを開きます。

  2. リージョンセレクタで、リポジトリが作成された AWS リージョンを選択します。リポジトリは、AWS リージョンに固有のものです。詳細については、「リージョンと Git 接続エンドポイント」を参照してください。

  3. [ダッシュボード] ページで、共有するリポジトリの名前を選択します。

  4. [コード] ページで [URL のクローン] を選択し、ユーザーが使用するプロトコルを選択します。

  5. CodeCommit リポジトリに接続するときにユーザーが使用する接続プロトコルの表示された URL をコピーします。

  6. こうした、AWS CLI をインストールするプロファイルを設定する、または Git をインストールするなど、他の指示と一緒にユーザーの接続情報を送信します。接続プロトコルの設定情報を含めるようにしてください (HTTPS、Git の認証情報ヘルパーの設定など)。

ステップ 3: 最初のコミットを作成する

このステップでは、ローカル repo で最初のコミットを作成します。そのためには、ローカル repo に 2 つのサンプルファイルを作成します。Git を使用して変更をステージングし、ローカル repo にコミットします。

  1. テキストエディタを使用して、ディレクトリに以下の 2 つのサンプルテキストファイルを作成します。ファイルに cat.txt および dog.txt という名前を付けます。

    cat.txt ------- The domestic cat (Felis catus or Felis silvestris catus) is a small, usually furry, domesticated, and carnivorous mammal.
    dog.txt ------- The domestic dog (Canis lupus familiaris) is a canid that is known as man's best friend.
  2. git add を実行して、変更をステージングします。

    git add cat.txt dog.txt
  3. git commit を実行して、以下の変更をコミットします。

    git commit -m "Added cat.txt and dog.txt"

    ヒント

    先ほど行ったコミットの詳細を表示するには、git log を実行します。

ステップ 4: 最初のコミットをプッシュする

このステップでは、ローカル repo から CodeCommit リポジトリ にコミットをプッシュします。

git push を実行して、Git が CodeCommit リポジトリ (origin) に使用するデフォルトのリモート名を通じて、ローカル repo (master) のデフォルトブランチからコミットをプッシュします。

git push -u origin master

ヒント

CodeCommit リポジトリにファイルをプッシュした後、CodeCommit コンソールを使用して、その内容を表示できます。詳細については、「リポジトリでのファイルの参照」を参照してください。

ステップ 5: CodeCommit リポジトリを共有し、別のコミットをプッシュしてプルする

このステップでは、CodeCommit リポジトリ に関する情報を同じチームのメンバーと共有します。チームメンバーは、この情報を使用してローカルコピーを取得し、変更を加えた後、そのローカルコピーを CodeCommit リポジトリ にプッシュします。続いて、CodeCommit リポジトリ から ローカル repo に変更をプルします。

このチュートリアルでは、ステップ 2 で作成したディレクトリとは別のディレクトリが Git によって作成されるようにすることで、同じチームのユーザーをシミュレートします(通常、このディレクトリは別のマシンにあります)。 この新しいディレクトリは CodeCommit リポジトリ のコピーです。既存のディレクトリまたはこの新しいディレクトリには、変更が個別に加えられます。これらのディレクトリへの変更を識別する唯一の方法は、CodeCommit リポジトリ からプルすることです。

同じローカルマシン上にあっても、既存のディレクトリをローカルリポジトリ、新しいディレクトリを共有リポジトリと呼びます。

新しいディレクトリから、CodeCommit リポジトリ の別のコピーを取得します。次に、新しいサンプルファイルを追加し、共有リポジトリに変更をコミットした後、共有リポジトリから CodeCommit リポジトリ にコミットをプッシュします。

最後に、変更をリポジトリから ローカル repo にプルした後に参照して、他のユーザーがコミットした変更を確認します。

  1. /tmp ディレクトリか c:\temp ディレクトリに切り替えます。

  2. git clone を実行して、リポジトリのコピーを共有リポジトリにプルダウンします。

    HTTPS の場合:

    git clone https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo shared-demo-repo

    SSH の場合:

    git clone ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo shared-demo-repo

    注記

    Windows オペレーティングシステムで SSH を使用してリポジトリを複製する場合は、以下のように SSH キー ID を接続文字列に追加する必要があります。

    git clone ssh://Your-SSH-Key-ID@git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo my-demo-repo

    詳細については、「Windows での SSH 接続の場合」を参照してください。

    このコマンドでは、MyDemoRepo は CodeCommit リポジトリ の名前です。shared-demo-repo/tmp ディレクトリか c:\temp ディレクトリで Git が作成するディレクトリの名前です。ディレクトリの作成後、Git はリポジトリのコピーを shared-demo-repo ディレクトリにプルダウンします。

  3. shared-demo-repo ディレクトリに切り替えます。

    (For Linux, macOS, or Unix) cd /tmp/shared-demo-repo (For Windows) cd c:\temp\shared-demo-repo
  4. git config を実行して、プレースホルダー other-user-nameother-email-address で表されている、別のユーザー名と E メールアドレス (John Doejohndoe@example.com など) を追加します。これにより、他のユーザーが作成したコミットをより簡単に識別できます。

    git config --local user.name "other-user-name" git config --local user.email other-email-address
  5. テキストエディタを使用して、shared-demo-repo ディレクトリに以下のサンプルテキストファイルを作成します。ファイルに horse.txt という名前を付けます。

    horse.txt ------- The horse (Equus ferus caballus) is one of two extant subspecies of Equus ferus.
  6. git add を実行して、変更を共有リポジトリにステージングします。

    git add horse.txt
  7. git commit を実行して、変更を共有リポジトリにコミットします。

    git commit -m "Added horse.txt"
  8. git push を実行して、Git が CodeCommit リポジトリ (origin) に使用するデフォルトのリモート名を通じて、ローカル repo (master) のデフォルトブランチから最初のコミットをプッシュします。

    git push -u origin master
  9. ローカル repo に切り替え、git pull を実行して、共有リポジトリによって ローカル repo に作成されたコミットを CodeCommit リポジトリ にプルします。その後、git log を実行して、共有リポジトリから開始されたコミットを確認します。

ステップ 6: ブランチを作成して共有する

このステップでは、ローカル repo にブランチを作成し、いくつかの変更を加えた後、そのブランチを CodeCommit リポジトリ にプッシュします。続いて、CodeCommit リポジトリ から共有リポジトリにブランチをプルします。

ブランチを使用すると、異なるバージョンのリポジトリの内容を個別に開発できます (たとえば、チームメンバーの作業に影響を与えずに、新しいソフトウェア機能の開発に取り組むことができます)。その機能が安定したら、ブランチをソフトウェアのより安定したブランチにマージします。

Git を使用してブランチを作成し、そのブランチが最初のコミットを参照するようにします。Git を使用してそのブランチを CodeCommit リポジトリ にプッシュします。その後、共有リポジトリに切り替え、Git を使用して新しいブランチを共有 ローカル repo にプルし、そのブランチを確認します。

  1. ローカル repo から、ブランチの名前 (MyNewBranch など) と、ローカル repo で作成した最初のコミットの ID を指定して、git checkout を実行します。

    コミットの ID がわからない場合は、git log を実行して取得します。コミットのユーザー名と E メールアドレスが、他のユーザーのものではなく、お客様のものであることを確認してください。これにより、master が、CodeCommit リポジトリ の安定したバージョンであり、MyNewBranch が、比較的不安定な新しい機能に使用されるブランチであることがシミュレートされます。

    git checkout -b MyNewBranch commit-ID
  2. git push を実行して、ローカル repo から CodeCommit リポジトリ に新しいブランチを送ります。

    git push origin MyNewBranch
  3. 続いて、そのブランチを共有リポジトリにプルし、結果を確認します。

    1. 共有リポジトリディレクトリ (shared-demo-repo) に切り替えます。

    2. 新しいブランチをプルします (git fetch origin)。

    3. ブランチがプルされたことを確認します (git branch --all はリポジトリ内のすべてのブランチのリストを表示します)。

    4. 新しいブランチに切り替えます (git checkout MyNewBranch)。

    5. MyNewBranch ブランチに切り替えたことを確認するには、git status または git branch を実行します。出力に現在のブランチが表示されます。この場合は MyNewBranch です。

    6. ブランチ内のコミットのリストを表示します (git log)。

    呼び出す Git コマンドのリストは以下のとおりです。

    git fetch origin git branch --all git checkout MyNewBranch git branch or git status git log
  4. master ブランチに戻り、そのコミットのリストを表示します。Git のコマンドは以下のようになります。

    git checkout master git log
  5. ローカル repo 内の master ブランチに切り替えます。git status または git branch を実行できます。出力に現在のブランチが表示されます。この場合は master です。Git のコマンドは以下のようになります。

    git checkout master git branch or git status

ステップ 7: タグを作成して共有する

このステップでは、2 つのタグを ローカル repo に作成し、コミットに関連付けてから、CodeCommit リポジトリ にプッシュします。その後、CodeCommit リポジトリ から共有リポジトリに変更をプルします。

タグは、コミット (またはブランチや別のタグ) に人間が読める名前を付けるために使用されます。たとえば、これを行うのは、コミットに "v2.1" というタグを付ける場合です。 コミット、ブランチ、またはタグには、任意の数のタグを関連付けることができますが、個々のタグは 1 つのコミット、ブランチ、またはタグにのみ関連付けることができます。このチュートリアルでは、1 つのコミットに 解放 タグを、もう 1 つのコミットに beta タグを付けます。

Git を使用してタグを作成し、最初のコミットに 解放 タグを付け、他のユーザーが作成したコミットに beta タグを付けます。続いて、Git を使用してタグを CodeCommit リポジトリ にプッシュします。その後、共有リポジトリに切り替え、Git を使用して新しいタグを共有 ローカル repo にプルし、そのタグを確認します。

  1. ローカル repo から、git tag を実行します。その際、新しいタグ (解放) と、ローカル repo で作成した最初のコミットの ID を指定します。

    コミットの ID がわからない場合は、git log を実行して取得します。コミットのユーザー名と E メールアドレスが、他のユーザーのものではなく、お客様のものであることを確認してください。これにより、コミットが CodeCommit リポジトリ の安定したバージョンであることがシミュレートされます。

    git tag 解放 commit-ID

    git tag をもう一度実行して、他のユーザーからのコミットに beta タグを付けます。これにより、それが比較的不安定な新しい機能に使用されるコミットであることがシミュレートされます。

    git tag beta commit-ID
  2. CodeCommit リポジトリ にタグを送信するには、git push --tags を実行します。

  3. ここで、タグを共有リポジトリにプルし、結果を確認します。

    1. 共有リポジトリディレクトリ (shared-demo-repo) に切り替えます。

    2. 新しいタグをプルします (git fetch origin)。

    3. タグがプルされたことを確認します (git tag はリポジトリ内のタグのリストを表示します)。

    4. 各ログ (git log 解放 および git log beta) に関する情報を表示します。

    呼び出す Git コマンドのリストは以下のとおりです。

    git fetch origin git tag git log 解放 git log beta
  4. これを ローカル repo でも試してみます。

    git log 解放 git log beta

ステップ 8: アクセス権限を設定する

このステップでは、共有リポジトリを CodeCommit リポジトリ に同期させるアクセス権限をユーザーに付与します。これは任意の手順です。CodeCommit リポジトリへのアクセスを制御する方法に関心のあるユーザーにお勧めします。

このステップでは、IAM コンソールを使用して IAM ユーザーを作成します。このユーザーにはデフォルトで、共有リポジトリを CodeCommit リポジトリ に同期させるアクセス許可がありません。このアクセス許可の有無を確認するには、git pull を実行します。新しいユーザーに同期させるアクセス権限がないと、このコマンドは機能しません。次に、IAM コンソールに戻り、ユーザーによる git pull の使用を許可するポリシーを適用します。もう一度、git pull を実行して、このアクセス許可の有無を確認します。

このステップでは、AWS アカウントで IAM ユーザーを作成するアクセス許可があることを前提としています。これらのアクセス権限がない場合は、このステップを実行することはできません。チュートリアルで使用したリソースをクリーンアップするには、「ステップ 9: クリーンアップ」に進みます。

  1. AWS マネジメントコンソール にサインインし、IAM コンソール(https://console.aws.amazon.com/iam/)を開きます。

    セットアップ 」で使用したものと同じユーザー名とパスワードでサインインします。

  2. ナビゲーションペインで [ユーザー] を選択し、続いて [Create New Users (新しいユーザーの作成)] を選択します。

  3. 最初の [Enter User Names (ユーザー名を入力)] ボックスに、サンプルユーザー名 (JaneDoe-CodeCommit など) を入力します。[Generate an access key for each user (ユーザーごとにアクセスキーを生成)] ボックスを選択し、[作成] を選択します。

  4. [Show User Security Credentials] を選択します。アクセスキー ID とシークレットアクセスキーをメモするか、[Download Credentials (認証情報のダウンロード)] を選択します。

  5. Git 認証情報を使用する HTTPS ユーザー用」の手順に従って、IAM ユーザーの認証情報を生成して入力します。

    SSH を使用する場合は、「SSH および Linux, macOS, or Unix: Git および CodeCommit で使用するパブリックキーとプライベートキーのセットアップ」または「SSH と Windows: Git と CodeCommit 用のパブリックキーとプライベートキーの設定」の指示に従って、パブリックキーとプライベートキーでユーザーを設定します。

  6. git pull を実行します。以下のエラーが表示されます。

    HTTPS の場合:

    fatal: unable to access 'https://git-codecommit.us-east-2.amazonaws.com/v1/repos/repository-name/': The requested URL returned error: 403.

    SSH の場合:

    fatal: unable to access 'ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/repository-name/': The requested URL returned error: 403.

    このエラーが表示されるのは、新しいユーザーに共有リポジトリを CodeCommit リポジトリ に同期させるアクセス権限がないためです。

  7. IAM コンソールに戻ります。ナビゲーションペインで、[Policies] を選択し、[Create Policy] を選択します。([Get Started (開始方法)] ボタンが表示された場合は、そのボタンを選択してから、[Create Policy (ポリシーの作成)] を選択します)。

  8. [独自のポリシーを作成] の横の [選択] を選択します。

  9. [ポリシー名] ボックスに、名前 (例: CodeCommitAccess-GettingStarted) を入力します。

  10. [Policy Document (ポリシードキュメント)] ボックスに以下のように入力します。これにより、IAM ユーザーは、その IAM ユーザー自身に関連付けられたリポジトリからプルできるようになります。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codecommit:GitPull" ], "Resource": "*" } ] }

    ヒント

    IAM ユーザーがその IAM ユーザー自身に関連付けられたリポジトリにコミットをプッシュできるようにするには、代わりに以下のように入力します。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codecommit:GitPull", "codecommit:GitPush" ], "Resource": "*" } ] }

    他の CodeCommit アクションや、リソースに対してユーザーに付与できるその他のアクセス許可については、「AWS CodeCommit に対する認証とアクセスコントロール」を参照してください。

  11. ナビゲーションペインで [ユーザー] を選択します。

  12. ポリシーをアタッチするサンプルユーザー名 (JaneDoe-CodeCommit など) を選択します。

  13. [アクセス許可] タブを選択します。

  14. [管理ポリシー] で、[Attach Policy (ポリシーのアタッチ)] を選択します。

  15. 先ほど作成した CodeCommitAccess-GettingStarted ポリシーを選択してから、[Attach Policy (ポリシーのアタッチ)] を選択します。

  16. git pull を実行します。今回は、コマンドが機能し、"Already up-to-date" メッセージが表示されます。

  17. HTTPS を使用している場合は、元の認証情報に切り替えます。詳細については、「ステップ 3: 認証情報ヘルパーを設定する」または「ステップ 3: 認証情報ヘルパーを設定する」の指示を参照してください。

    SSH を使用している場合は、元のキーに切り替えます。詳細については、「SSH および Linux, macOS, or Unix: Git および CodeCommit で使用するパブリックキーとプライベートキーのセットアップ」または「SSH と Windows: Git と CodeCommit 用のパブリックキーとプライベートキーの設定」を参照してください。

次は、このチュートリアルの最後のステップです。

ステップ 9: クリーンアップ

このステップでは、このチュートリアルで使用した CodeCommit リポジトリ を削除します。これにより、ストレージ領域に対して使用料金は発生しなくなります。

CodeCommit リポジトリ の削除後は不要になるため、ローカルマシン上の ローカル repo と共有リポジトリも削除します。

重要

このリポジトリを削除すると、そのリポジトリを ローカル repo または共有リポジトリに複製できなくなります。また、ローカル repo または共有リポジトリに対してデータをプルすることもプッシュすることもできなくなります。このアクションは元に戻すことができません。

CodeCommit リポジトリ を削除するには (コンソール)

  1. https://console.aws.amazon.com/codesuite/codecommit/home にある CodeCommit コンソールを開きます。

  2. [Dashboard (ダッシュボード)] ページのリポジトリのリストから、[MyDemoRepo] を選択します。

  3. ナビゲーションペインで [設定] を選択します。

  4. [設定] ページの [リポジトリの削除] で、[リポジトリの削除] を選択します。

  5. [削除の確認のため、リポジトリ名を入力] の横にあるボックスに、MyDemoRepo を入力し、次に [削除] を選択します。

CodeCommit リポジトリ (AWS CLI) を削除するには

delete-repository コマンドを実行します。

aws codecommit delete-repository --repository-name MyDemoRepo

ローカル repo と共有リポジトリを削除するには

複数 Linux, macOS, or Unix:

cd /tmp rm -rf /tmp/my-demo-repo rm -rf /tmp/shared-demo-repo

Windows の場合:

cd c:\temp rd /s /q c:\temp\my-demo-repo rd /s /q c:\temp\shared-demo-repo