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

Git リポジトリを AWS CodeCommit に移行

既存の Git リポジトリ CodeCommit リポジトリ に移行できます。このトピックの手順では、別の Git リポジトリにホストされているプロジェクトを CodeCommit に移行する方法について説明します。このプロセスの一環として、次の作業を行います。

  • CodeCommit に必要な初期セットアップを完了します。

  • CodeCommit リポジトリを作成します。

  • リポジトリをクローンし、CodeCommit にプッシュします。

  • CodeCommit リポジトリのファイルを表示します。

  • CodeCommit リポジトリをチームと共有します。


            Git リポジトリを CodeCommit へ移行

ステップ 0: CodeCommit へアクセスに必要なセットアップを行う

リポジトリを CodeCommit に移行する前に、CodeCommit 用の IAM ユーザーを作成して構成し、アクセス用にローカルコンピュータを構成する必要があります。CodeCommit を管理するには AWS CLI もインストールする必要があります。ほとんどの CodeCommit タスクを実行できますが、AWS CLI はコマンドラインや端末で Git を操作するときに柔軟性を提供します。

CodeCommit 用にすでに設定されている場合は、ステップ 1: CodeCommit リポジトリを作成する にスキップできます。

CodeCommit にアクセスするための IAM ユーザーを作成および設定するには

  1. AWS アカウントを作成するには、http://aws.amazon.com にアクセスし、[Sign Up (サインアップ)] を選択します。

  2. IAM ユーザーを作成するか、AWS アカウントに関連付けられた既存のユーザーを使用します。アクセスキー ID およびシークレットアクセスキーがその IAM ユーザーに関連付けられていることを確認します。詳細については、「AWS アカウント内での IAM ユーザーの作成」を参照してください。

    注記

    CodeCommit には AWS Key Management Service が必要です。既存の IAM ユーザーを使用している場合は、CodeCommit で必要な AWS KMS アクションを明示的に拒否するユーザーにポリシーがアタッチされていないことを確認します。詳細については、「AWS KMS および暗号化」を参照してください。

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

  4. IAM コンソールのナビゲーションペインで、[Users (ユーザー)] を選択し、続いて、CodeCommit へアクセスするために設定する IAM ユーザーを選択します。

  5. [Permissions (アクセス許可)] タブで、[Add Permissions (アクセス許可の追加)] を選択します。

  6. [Grant permissions (アクセス許可の付与)] で、[Attach existing policies directly (既存のポリシーを直接アタッチする)] を選択します。

  7. ポリシーのリストから、CodeCommit にアクセスするために、ポリシーのリストから [AWSCodeCommitFullAccess]、または別の管理ポリシーを選択します。詳細については、「CodeCommit の AWS 管理 (定義済み) ポリシー」を参照してください。

    アタッチするポリシーを選択したら、[Next: Review] を選択して、IAM ユーザーにアタッチするポリシーのリストを表示します。リストが正しい場合は、[Add permissions (アクセス許可の追加)] を選択します。

    CodeCommit 管理ポリシーや、その他のグループおよびユーザーを含むリポジトリへのアクセス共有の詳細については、「リポジトリの共有」および「AWS CodeCommit に対する認証とアクセスコントロール」を参照してください。

AWS CLI をインストールして設定するには

  1. ローカルマシンで、AWS CLI をダウンロードしてインストールします。これは、コマンドラインから CodeCommit とやり取りするための前提条件です。詳細については、「AWS コマンドラインインターフェイスの設定」を参照してください。

    注記

    CodeCommit は AWS CLI のバージョン 1.7.38 以降 でのみ動作します。インストールした AWS CLI のバージョンを確認するには、aws --version コマンドを実行します。

    以前のバージョンの AWS CLI を最新バージョンにアップグレードするには、「AWS Command Line Interface のインストール」を参照してください。

  2. このコマンドを実行して、AWS CLI の CodeCommit コマンドがインストールされていることを確認します。

    aws codecommit help

    このコマンドは CodeCommit コマンドのリストを返します。

  3. 以下のように、configure コマンドを使用して AWS CLI を設定します。

    aws configure

    プロンプトが表示されたら、CodeCommit で使用する IAM ユーザーの AWS アクセスキーと AWS シークレットアクセスキーを指定します。また、リポジトリが存在する AWS リージョン (us-east-2 など) を指定します。デフォルトの出力形式の入力を求められたら、json を指定します。例:

    AWS Access Key ID [None]: Type your target AWS access key ID here, and then press Enter AWS Secret Access Key [None]: Type your target AWS secret access key here, and then press Enter Default region name [None]: Type a supported region for CodeCommit here, and then press Enter Default output format [None]: Type json here, and then press Enter

    別の AWS リージョンに存在するリポジトリまたはリソースに接続するには、そのリージョンのデフォルトのリージョン名を使用して AWS CLI を再設定する必要があります。CodeCommit でサポートされるデフォルトのリージョン名は以下のとおりです。

    • us-east-2

    • us-east-1

    • eu-west-1

    • us-west-2

    • ap-northeast-1

    • ap-southeast-1

    • ap-southeast-2

    • eu-central-1

    • ap-northeast-2

    • sa-east-1

    • us-west-1

    • eu-west-2

    • ap-south-1

    • ca-central-1

    • us-gov-west-1

    • us-gov-east-1

    • eu-north-1

    CodeCommit と AWS リージョンの詳細については、「リージョンと Git 接続エンドポイント」を参照してください。IAM、アクセスキー、シークレットキーに関する詳細については、「認証情報を取得する方法」および「IAM ユーザーのアクセスキーの管理」を参照してください。

次に、Git をインストールする必要があります。

  • Linux, macOS, or Unix の場合

    ファイル、コミット、および CodeCommit レポジトリのその他の情報を操作するには、ローカルマシンに Git をインストールする必要があります。CodeCommit は Git バージョン 1.7.9 以降をサポートしています。

    Git をインストールするには、Git のダウンロードなどのウェブサイトをお勧めします。

    注記

    Git は、定期的に更新されている、発展中のプラットフォームです。機能の変更により、CodeCommit での動作が影響を受ける場合があります。特定のバージョンの Git と CodeCommit で問題が発生した場合は、「トラブルシューティング」の情報を確認してください。

  • Windows の場合:

    CodeCommit のファイル、コミット、およびその他の情報を使用するには、ローカルマシンに Git をインストールする必要があります。CodeCommit は Git バージョン 1.7.9 以降をサポートしています。

    Git をインストールするには、Git for Windows などのウェブサイトをお勧めします。このリンクを使用して Git をインストールする場合、以下を除くすべてのインストールのデフォルト設定を使用できます。

    • [Adjusting your PATH environment (PATH 環境の調整)] ステップでプロンプトが表示されたら、[Use Git from the Windows Command Prompt (Windows コマンドプロンプトから Git を使用する)] オプションを選択します。

    • (省略可能) CodeCommit 用の Git 認証情報を設定する代わりに、AWS CLI に含まれている認証情報ヘルパーで HTTPS を使用する場合は、[Configuring extra options (追加のオプションの設定)] ページで、[Enable Git Credential Manager (Git 認証情報マネージャーの有効化)] オプションがオフになっていることを確認します。Git 認証情報マネージャーは、IAM ユーザーが Git 認証情報を設定する場合にのみ、CodeCommit と互換性があります。詳細については、「Git 認証情報を使用する HTTPS ユーザー用」および「Git for Windows: Git for Windows をインストールしましたが、リポジトリへのアクセスが拒否されます (403)」を参照してください。

    注記

    Git は、定期的に更新されている、発展中のプラットフォームです。機能の変更により、CodeCommit での動作が影響を受ける場合があります。特定のバージョンの Git と CodeCommit で問題が発生した場合は、「トラブルシューティング」の情報を確認してください。

CodeCommit は、HTTPS 認証と SSH 認証の両方をサポートしています。設定を完了するには、CodeCommit の Git 認証情報 (HTTPS、一部を除きすべてのユーザーに推奨)、CodeCommit へのアクセス時に使用する SSH キーペア (SSH)、AWS CLI に含まれる認証情報ヘルパー (HTTPS) を設定する必要があります。

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

このセクションでは、CodeCommit コンソールを使用して、このチュートリアルの残りの部分で使用する CodeCommit リポジトリを作成します。AWS CLI を使用してリポジトリを作成するには、「リポジトリの作成 (AWS CLI)」を参照してください。

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

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

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

  4. [Create repository (リポジトリの作成)] ページの [Repository name (リポジトリ名)] に、リポジトリの名前を入力します。

    注記

    リポジトリ名では大文字と小文字が区別されます。この名前は AWS アカウントの AWS リージョンで一意であることが必要です。

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

    注記

    コンソールの説明フィールドに [Markdown] と表示され、すべての HTML 文字とすべての有効な Unicode 文字を使用できます。アプリケーション開発者として GetRepository または BatchGetRepositories API を使用していて、ウェブブラウザにレポジトリの説明フィールドを表示させる場合は、CodeCommit API リファレンスを参照してください。

  6. (オプション) [Add tag] を選択して 1 つ以上のリポジトリタグ (AWS リソースを整理して管理するのに役立つカスタム属性ラベル) をリポジトリに追加します。詳細については、「AWS CodeCommit でのリポジトリのタグ付け」を参照してください。

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


                CodeCommit リポジトリを移行するための Git リポジトリを作成

作成されたリポジトリは、[リポジトリ] リストに表示されます。URL 列で、コピーアイコンを選択し、CodeCommit に接続するために使用するプロトコル (SSH または HTTPS) を選択します。URL をコピーします。

たとえば、リポジトリの名前を MyClonedRepository とし、米国西部 (オレゴン) リージョンで HTTPS で Git 認証情報を使用している場合、URL は次のようになります。

https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyClonedRepository

この URL は後で ステップ 2: リポジトリをクローンして CodeCommit リポジトリにプッシュする で必要になります。

ステップ 2: リポジトリをクローンして CodeCommit リポジトリにプッシュする

このセクションでは、既存の Git リポジトリのクローン (ローカルリポジトリと呼ばれる) をローカルコンピュータに作成します。次に、ローカルリポジトリの内容を、先ほど作成した CodeCommit リポジトリにプッシュします。

  1. ローカルコンピュータのターミナルまたはコマンドプロンプトから、--mirror オプションを指定して git clone コマンドを実行し、リモートリポジトリのベアコピーを aws-codecommit-demo という名前の新しいフォルダにクローンを作成します。これは移行にのみ使用するベアリポジトリです。CodeCommit の移行されたリポジトリとやり取りするためのローカルリポジトリではありません。ローカルリポジトリは、CodeCommit への移行が完了してから作成することができます。

    次の例では、GitHub (https://github.com/awslabs/aws-demo-php-simple-app.git) でホストされたデモアプリケーションを、aws-codecommit-demo というディレクトリのローカルリポジトリにクローンを作成します。

    git clone --mirror https://github.com/awslabs/aws-demo-php-simple-app.git aws-codecommit-demo
  2. クローンを作成したディレクトリに変更します。

    cd aws-codecommit-demo
  3. 送信先 CodeCommit リポジトリの URL と名前、および --all オプションを指定して、git push コマンドを実行します。(ここで指定するのは「ステップ 1: CodeCommit リポジトリを作成する」でコピーした URL です)。

    たとえば、リポジトリに MyClonedRepository という名前を付けて HTTPS を使用するように設定されている場合は、次のコマンドを実行します。

    git push https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyClonedRepository --all

    注記

    --all オプションは、リポジトリのすべてのブランチをプッシュします。タグのような他の参照をプッシュしません。タグをプッシュする場合は、最初のプッシュが完了するまで待機してから、--tags オプションを使用して、もう一度プッシュします。

    git push ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyClonedRepository --tags

    詳細については、Git ウェブサイトで Git push のページを参照してください。大きなリポジトリをプッシュする方法については、特にすべての参照を一度にプッシュする場合 (たとえば、--mirror オプションを指定する場合) は、「リポジトリの段階的移行」を参照してください。

aws-codecommit-demo フォルダとそのコンテンツは、CodeCommit にリポジトリを移行した後で削除することができます。すべての正しいリファレンスを使用してローカルリポジトリを作成し、CodeCommit のリポジトリを操作するには、--mirror オプションを指定せず git clone コマンドを実行します。

git clone https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyClonedRepository

ステップ 3: CodeCommit 内のファイルを表示

ディレクトリの内容をプッシュした後、CodeCommit コンソールを使用して、そのリポジトリ内のすべてのファイルをすばやく表示できます。

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

  2. [リポジトリ] で、リポジトリの名前 (例: MyClonedRepository) を選択します。

  3. ブランチ、クローン URL、設定などのリポジトリ内のファイルを表示します。

    
                        CodeCommit のクローンされたリポジトリの表示

ステップ 4: CodeCommit リポジトリを共有する

CodeCommit でリポジトリを作成すると、HTTPS 接続用と SSH 接続用の 2 つのエンドポイントが生成されます。どちらもネットワーク経由で安全な接続を提供します。ユーザーは、いずれかのプロトコルを使用できます。両方のエンドポイントは、どのプロトコルをユーザーに推奨するにしてもアクティブのままです。リポジトリを他のユーザーと共有する前に、リポジトリへのアクセスを他のユーザーに許可する IAM ポリシーを作成する必要があります。これらのアクセス指示をユーザーに提供します。

リポジトリのカスタマー管理ポリシーを作成します。

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

  2. [ダッシュボード] ナビゲーションエリアで、[ポリシー] を選択し、次に [ポリシーの作成] を選択します。

  3. [ポリシーの作成] ページで、[AWS 管理ポリシーのコピー] の横の [選択] を選択します。

  4. [AWS 管理ポリシーのコピー] ページの [Search Policies (ポリシーの検索)] に「AWSCodeCommitPowerUser」と入力します。ポリシー名の横にある [選択] を選択します。

  5. [Review Policy (ポリシーの確認)] ページの [Policy Name (ポリシー名)] に、ポリシーの新しい名前 (例: AWSCodeCommitPowerUser-MyDemoRepo) を入力します。

    [Policy Document (ポリシードキュメント)] で、次に示すように、Resource 行の「*」部分を CodeCommit リポジトリの Amazon リソースネーム (ARN) に置き換えます。

    "Resource": [ "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo" ]

    ヒント

    CodeCommit リポジトリの ARN を確認するには、CodeCommit コンソールを開き、リストからリポジトリ名を選択します。詳細については、「リポジトリの詳細の表示」を参照してください。

    このポリシーに複数のリポジトリを適用するには、リソースに ARN を指定して各リポジトリを追加します。次に示すように、各 Resource ステートメントはカンマで区切ります。

    "Resource": [ "arn:aws:codecommit:us-east-2:111111111111:MyDemoRepo", "arn:aws:codecommit:us-east-2:111111111111:MyOtherDemoRepo" ]
  6. [Validate Policy (ポリシーの検証)] を選択します。ポリシーを検証したら、[Create Policy (ポリシーの作成)] を選択します。

リポジトリへのアクセスを管理するには、リポジトリユーザーの IAM グループを作成し、そのグループに IAM ユーザーを追加します。次に、前のステップで作成したカスタマー管理ポリシーをアタッチします。アクセスに必要なポリシー (IAMUserSSHKeys または IAMSelfManageServiceSpecificCredentials) をアタッチします。

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

  2. [ダッシュボード] ナビゲーションエリアで、[グループ] を選択し、次に [Create New Group (新しいグループの作成)] を選択します。

  3. [Set Group Name (グループ名の設定)] ページの [Group Name (グループ名)] に、グループの名前 (例: MyDemoRepoGroup) を入力し、[Next Step (次のステップ)] を選択します。ここで、グループ名の一部として、リポジトリ名を含めることを検討してください。

    注記

    この名前はすべての AWS アカウント間で一意であることが必要です。

  4. 前のセクションで作成したカスタマー管理ポリシー (例: [AWSCodeCommitPowerUser-MyDemoRepo]) の横にあるボックスをオンにします。

  5. [Review (確認)] ページで、[Create Group (グループの作成)] を選択します。IAM によって、指定されたポリシーがアタッチされた状態でこのグループが作成されます。このグループは、AWS アカウントに関連付けられたグループのリストに表示されます。

  6. リストからグループを選択します。

  7. グループの概要ページで、[ユーザー] タブを選択し、次に [Add Users to Group (グループにユーザーを追加)] を選択します。AWS アカウントに関連付けられているすべてのユーザーを示すリスト上で、CodeCommit リポジトリへのアクセスを許可するユーザーの横にあるボックスをオンにして、[Add Users (ユーザーの追加)] を選択します。

    ヒント

    検索ボックスに名前を入力して、ユーザーをすばやく見つけることができます。

  8. ユーザーの追加が完了したら、IAM コンソールを閉じます。

設定したポリシーグループとポリシーを使用して CodeCommit にアクセスする IAM ユーザーを作成したら、リポジトリへの接続に必要な情報をそのユーザーに送信します。

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

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

  3. [Repositories (リポジトリ)] ページで、共有するリポジトリの名前を探します。

  4. [Clone URL (クローン URL)] で、ユーザーが使用するプロトコル (HTTPS または SSH) を選択します。接続プロトコルのクローン URL がコピーされます。

  5. AWS CLI インストール、プロファイルの設定、Git のインストールなどのその他の手順と合わせて、このクローン URL をユーザーに送信します。接続プロトコルの設定情報を含めるようにしてください (HTTPS、Git の認証情報ヘルパーの設定など)。