メニュー
AWS CodeBuild
ユーザーガイド (API Version 2016-10-06)

AWS CodeBuild の Amazon ECR サンプル

このサンプルでは、Amazon Elastic Container Registry (Amazon ECR) イメージレポジトリの Docker イメージを使用して、AWS CodeBuild の「Maven サンプル」をビルドします。

重要

このサンプルを実行すると、AWS アカウントに課金される場合があります。これには、AWS CodeBuild の料金、および Amazon S3、AWS KMS、CloudWatch Logs、Amazon ECR に関連した AWS リソースおよびアクションの料金が含まれます。詳細については、「AWS CodeBuild 料金表」、「Amazon S3 料金表」、「AWS Key Management Service 料金表」、「Amazon CloudWatch 料金表」、「Amazon Elastic Container Registry 料金表」を参照してください。

サンプルの実行

このサンプルを実行するには。

  1. Amazon ECR でイメージレポジトリに Docker イメージを作成してプッシュするには、「Docker サンプル」の「サンプルの実行」セクションにある手順を完了します。

  2. ビルドするソースコードを作成しアップロードするには、「Maven サンプル」の「サンプルの実行」セクションの 1 から 4 の手順を完了します。

  3. AWS CodeBuild がリポジトリの Docker イメージをビルド環境にプルできるように、Amazon ECR のイメージリポジトリにアクセス許可を割り当てます。

    1. AWS ルートアカウントまたは管理者 IAM ユーザーの代わりに IAM ユーザーを使用して Amazon ECR を操作する場合は、ユーザー (またはユーザーが関連付けられている IAM グループ) にステートメントを (### BEGIN ADDING STATEMENT HERE ###### END ADDING STATEMENT HERE ### の間に) 追加します。(AWS ルートアカウントを使用することは推奨されません。)このステートメントは、Amazon ECR リポジトリの管理権限にアクセスするためのものです。省略記号 (...) は、簡潔にするために使用され、ステートメントを追加する場所の特定に役立ちます。ステートメントを削除しないでください、また、これらの省略記号をポリシーに入力しないでください。詳細については、『IAM ユーザーガイド』の「AWS マネジメントコンソール でのインラインポリシーの使用」を参照してください。

      { "Statement": [ ### BEGIN ADDING STATEMENT HERE ### { "Action": [ "ecr:*RepositoryPolicy" ], "Resource": "*", "Effect": "Allow" }, ### END ADDING STATEMENT HERE ### ... ], "Version": "2012-10-17" }

      注記

      このポリシーを変更する IAM エンティティは、ポリシーを変更するために IAM のアクセス権限を持っている必要があります。

    2. https://console.aws.amazon.com/ecs/ にある Amazon ECS コンソールを開きます。

    3. Repositories を選択します。

    4. リポジトリ名のリストで、作成または選択したリポジトリの名前を選択します。

    5. [Permissions] タブを選択し、[Add] を選択した後、ステートメントを作成します。

    6. [Sid] で、識別子を入力します (例: CodeBuildAccess)。

    7. [Effect] では、AWS CodeBuild へのアクセスを許可するため、[Allow] を選択したままにしておきます。

    8. [Principal] では、201349592320,570169269855,964771811575,883865855280,828209784933,157144849617,064387162992,131992011433 と入力します。(これらは内部の AWS アカウント ID で、サポートされている AWS リージョンで Amazon ECR リポジトリにアクセスするために AWS CodeBuild が使用します)。AWS CodeBuild のみへアクセスを許可するため、[Everybody] はオフのままにしておきます。

      注記

      前述の内部 AWS アカウント ID は、以下の AWS リージョンのためのものです。

      • 201349592320: 米国東部(バージニア北部)

      • 570169269855: 欧州 (アイルランド)

      • 964771811575: 米国西部 (オレゴン)

      • 883865855280: 米国東部 (オハイオ)

      • 828209784933: 欧州 (フランクフルト)

      • 157144849617: アジアパシフィック (東京)

      • 064387162992: アジアパシフィック (シンガポール)

      • 131992011433: アジアパシフィック (シドニー)

      特定の AWS リージョンで AWS CodeBuild が Amazon ECR リポジトリへアクセスするのを拒否するには、アクセスを拒否する AWS リージョンの内部 AWS アカウント ID を削除します。

    9. [All IAM entities] リストをスキップします。

    10. [Action] で、[Pull only actions] を選択します。

      すべてのプル専用アクション ([ecr:DownloadUrlForLayer]、[ecr:BatchGetImage]、および [ecr:BatchCheckLayerAvailability]) が選択されます。

    11. Save all を選択します。

      [Policy document] にポリシーが表示されます。

      { "Version": "2012-10-17", "Statement": [ { "Sid": "CodeBuildAccess", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::201349592320:root", "arn:aws:iam::570169269855:root", "arn:aws:iam::964771811575:root", "arn:aws:iam::883865855280:root", "arn:aws:iam::828209784933:root", "arn:aws:iam::157144849617:root", "arn:aws:iam::064387162992:root", "arn:aws:iam::131992011433:root" ] }, "Action": [ "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "ecr:BatchCheckLayerAvailability" ] } ] }
  4. AWS CodeBuild を直接実行する」の手順に従って、ビルドプロジェクトを作成し、ビルドを実行し、ビルド情報を表示します。

    AWS CLI を使用してビルドプロジェクトを作成する場合、create-project コマンドへの JSON 形式の入力はこれに似ています。(プレースホルダを独自の値に置き換えます。)

    { "name": "amazon-ecr-sample-project", "source": { "type": "S3", "location": "codebuild-region-ID-account-ID-input-bucket/MavenIn5MinutesSample.zip" }, "artifacts": { "type": "S3", "location": "codebuild-region-ID-account-ID-output-bucket", "packaging": "ZIP", "name": "MavenIn5MinutesOutputArtifact.zip" }, "environment": { "type": "LINUX_CONTAINER", "image": "account-ID.dkr.ecr.us-east-1.amazonaws.com/your-Amazon-ECR-repo-name:latest", "computeType": "BUILD_GENERAL1_SMALL" }, "serviceRole": "arn:aws:iam::account-ID:role/role-name", "encryptionKey": "arn:aws:kms:region-ID:account-ID:key/key-ID" }
  5. ビルド出力アーティファクトを取得するには、Amazon S3 出力バケットを開きます。

  6. MavenIn5MinutesOutputArtifact.zip ファイルをローカルコンピュータまたはインスタンスへダウンロードし、MavenIn5MinutesOutputArtifact.zip ファイルの内容を展開します。展開した内容から、target フォルダを開き、my-app-1.0-SNAPSHOT.jar ファイルを取得します。

このページの内容: