イメージ定義ファイルのリファレンス - AWS CodePipeline

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

イメージ定義ファイルのリファレンス

このセクションは参照のみを目的としています。コンテナのソースまたはデプロイアクションを使用してパイプラインを作成する方法については、「でパイプラインを作成する CodePipeline」を参照してください。

Amazon ECR ソースアクションまたは Amazon ECS デプロイアクションなどのコンテナアクションの AWS CodePipeline ジョブワーカーは、定義ファイルを使用してイメージ URI とコンテナ名をタスク定義にマッピングします。各定義ファイルは、次のようにアクションプロバイダによって使用される JSON 形式のファイルです。

  • Amazon ECS 標準デプロイでは、デプロイアクションへの入力で imagedefinitions.json ファイルが必要です。

  • Amazon ECS Blue/Green デプロイでは、デプロイアクションへの入力で imageDetail.json ファイルが必要です。

    • Amazon ECR ソースアクションでは、ソースアクションの出力として提供される、imageDetail.json ファイルが生成されます。

Amazon ECS 標準デプロイアクション用の imagedefinitions.json ファイル

イメージ定義ドキュメントは、Amazon ECS のコンテナ名およびイメージとタグについて説明する JSON ファイルです。コンテナベースのアプリケーションをデプロイする場合は、イメージ定義ファイルを生成して CodePipeline のジョブワーカーに Amazon ECS コンテナを提供し、Amazon ECR などのイメージリポジトリから取得するイメージ ID を生成する必要があります。

注記

このファイルのデフォルトのファイル名は imagedefinitions.json です。別のファイル名を使用することを選択した場合は、パイプラインデプロイステージを作成するときにそのファイル名を指定する必要があります。

以下の考慮事項に注意して、imagedefinitions.json ファイルを作成します。

  • ファイルには UTF-8 エンコーディングを使用する必要があります。

  • イメージ定義ファイルの最大ファイルサイズの制限は 100 KB です。

  • ファイルは、ソースとして作成するか、デプロイアクションの入力アーティファクトになるようにアーティファクトを構築する必要があります。つまり、ファイルが CodeCommit リポジトリなどのソースの場所にアップロードされていること、またはビルドされた出力アーティファクトとして生成されていることを確認してください。

imagedefinitions.json ファイルはコンテナ名とイメージ URI を提供します。次のキーと値のペアのセットで構築する必要があります。

キー
名前 コンテナ名
imageUri imageUri

コンテナ名が sample-app で、イメージ URI が ecs-repo、タグが latest の JSON 構造は次のとおりです。

[ { "name": "sample-app", "imageUri": "11111EXAMPLE.dkr.ecr.us-west-2.amazonaws.com/ecs-repo:latest" } ]

複数のコンテナイメージのペアをリストするようにファイルを構築することもできます。

JSON の構造:

[ { "name": "simple-app", "imageUri": "httpd:2.4" }, { "name": "simple-app-1", "imageUri": "mysql" }, { "name": "simple-app-2", "imageUri": "java1.8" } ]

パイプラインを作成する前に、以下の手順に従って imagedefinitions.json ファイルを設定します。

  1. パイプラインのコンテナベースのアプリケーションデプロイの計画の一環として、ソースステージとビルドステージを計画します (該当する場合)。

  2. 次のいずれかを選択します。

    1. パイプラインがビルドステージをスキップするように作成されている場合、ソースアクションがアーティファクトを提供できるように、手動で JSON ファイルを作成してソースリポジトリにアップロードする必要があります。テキストエディタを使用してファイルを作成し、ファイルに名前を付けます。または、デフォルトの imagedefinitions.json ファイル名を使用します。イメージ定義ファイルをソースリポジトリにプッシュします。

      注記

      ソースリポジトリが Amazon S3 バケットの場合は、JSON ファイルを圧縮してください。

    2. パイプラインにビルドステージがある場合は、ビルドフェーズ中にソースリポジトリにイメージ定義ファイルを出力するコマンドをビルドスペックファイルに追加します。以下の例では、printf コマンドを使用して、imagedefinitions.json ファイルを作成します。buildspec.yml ファイルの post_build セクションにこのコマンドをリストします。

      printf '[{"name":"container_name","imageUri":"image_URI"}]' > imagedefinitions.json

      イメージ定義ファイルを出力アーティファクトとして buildspec.yml ファイルに含める必要があります。

  3. コンソールでパイプラインを作成する場合、[パイプラインの作成] ウィザードの [デプロイ] ページの [イメージのファイル名] にイメージ定義ファイル名を入力します。

Amazon ECS をデプロイプロバイダーとして使用するパイプラインを作成するための段階的なチュートリアルについては、[チュートリアル: CodePipeline を使用した継続的デプロイメント] を参照してください。

Amazon ECS Blue/Green デプロイアクション用の imageDetail.json ファイル

imageDetail.json ドキュメントは、 Amazon ECS イメージ URI を説明する JSON ファイルです。ブルー/グリーンデプロイ用にコンテナベースのアプリケーションをデプロイする場合、imageDetail.json ファイルを生成して、Amazon ECS と CodeDeploy ジョブワーカーに、Amazon ECR などのイメージリポジトリから取得するイメージ ID を提供する必要があります。

注記

ファイルの名前は imageDetail.json である必要があります。

アクションとそのパラメータの説明については、「Amazon Elastic Container Service と CodeDeploy blue-green」を参照してください。

imageDetail.json ファイルは、ソースとして作成するか、デプロイアクションの入力アーティファクトになるようにアーティファクトを構築する必要があります。これらの方法のいずれかを使用して、パイプラインに imageDetail.json ファイルを提供できます。

  • ソースの場所に imageDetail.json ファイルを含め、Amazon ECS Blue/Green デプロイアクションへの入力としてパイプラインで提供されるようにします。

    注記

    ソースリポジトリが Amazon S3 バケットの場合は、JSON ファイルを圧縮してください。

  • Amazon ECR ソースアクションでは、次のアクションへの入力アーティファクトとして imageDetail.json ファイルが自動生成されます。

    注記

    Amazon ECR ソースアクションがこのファイルを作成するので、Amazon ECR ソースアクションを含むパイプラインは 手動で imageDetail.json ファイルを提供する必要はありません。

    Amazon ECR ソースステージを含むパイプラインの作成に関するチュートリアルについては、チュートリアル: Amazon ECR ソース、ECS - CodeDeploy 間のデプロイでパイプラインを作成する を参照してください。

imageDetail.json ファイルは、イメージ URI を提供します。次のキーと値のペアで構築する必要があります。

キー
ImageURI image_URI
imageDetail.json

以下に、イメージ URI が ACCOUNTID.dkr.ecr.us-west-2.amazonaws.com/dk-image-repo@sha256:example3 である JSON 構造を示します。

{ "ImageURI": "ACCOUNTID.dkr.ecr.us-west-2.amazonaws.com/dk-image-repo@sha256:example3" }
imageDetail.json (generated by ECR)

変更がイメージリポジトリにプッシュされるたびに、Amazon ECR ソースアクションによって imageDetail.json ファイルが自動生成されます。Amazon ECR ソースアクションにより生成された imageDetail.json は、ソースアクションから出力アーティファクトとしてパイプラインの次のアクションに提供されます。

リポジトリ名が dk-image-repo で、イメージ URI が ecs-repo、イメージタグが latest の JSON 構造は次のとおりです。

{ "ImageSizeInBytes": "44728918", "ImageDigest": "sha256:EXAMPLE11223344556677889900bfea42ea2d3b8a1ee8329ba7e68694950afd3", "Version": "1.0", "ImagePushedAt": "Mon Jan 21 20:04:00 UTC 2019", "RegistryId": "EXAMPLE12233", "RepositoryName": "dk-image-repo", "ImageURI": "ACCOUNTID.dkr.ecr.us-west-2.amazonaws.com/dk-image-repo@sha256:example3", "ImageTags": [ "latest" ] }

imageDetail.json ファイルは、次のようにイメージ URI とコンテナ名を Amazon ECS タスク定義にマッピングします。

  • ImageSizeInBytes: リポジトリ内のイメージのサイズ (単位: バイト)。

  • ImageDigest: イメージマニフェストの sha256 ダイジェスト。

  • Version: イメージバージョン。

  • ImagePushedAt: 最新のイメージがリポジトリにプッシュされた日時。

  • RegistryId: リポジトリが格納されているレジストリに関連付けられている AWS アカウント ID。

  • RepositoryName: イメージがプッシュされた Amazon ECR リポジトリの名前。

  • ImageURI: イメージの URI。

  • ImageTags: イメージに使用されるタグ。

パイプラインを作成する前に、以下の手順に従って imageDetail.json ファイルを設定します。

  1. パイプラインのコンテナベースのアプリケーション Blue/Green デプロイの計画の一環として、ソースステージとビルドステージを計画します (該当する場合)。

  2. 次のいずれかを選択します。

    1. パイプラインでビルドステージをスキップしている場合、JSON ファイルを手動で作成し、CodeCommit などのソースリポジトリにアップロードして、ソースアクションがアーティファクトを提供できるようにします。テキストエディタを使用してファイルを作成し、ファイルに名前を付けます。または、デフォルトの imageDetail.json ファイル名を使用します。imageDetail.json ファイルをソースリポジトリにプッシュします。

    2. パイプラインにビルドステージがある場合は、以下の手順を実行します。

      1. ビルドフェーズ中にソースリポジトリにイメージ定義ファイルを出力するコマンドをビルドスペックファイルに追加します。以下の例では、printf コマンドを使用して、imageDetail.json ファイルを作成します。buildspec.yml ファイルの post_build セクションにこのコマンドをリストします。

        printf '{"ImageURI":"image_URI"}' > imageDetail.json

        imageDetail.json ファイルを出力アーティファクトとして buildspec.yml ファイルに含める必要があります。

      2. imageDetail.jsonをアーティファクトファイルとして buildspec.yml ファイルに追加します。

        artifacts: files: - imageDetail.json