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

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

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

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

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

  • Amazon ECS 標準デプロイには、imagedefinitions.jsonファイルをデプロイアクションへの入力として。

  • Amazon ECS Blue/Green デプロイでは、imageDetail.jsonファイルをデプロイアクションへの入力として。

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

imagedefinitions.json ファイル

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

注記

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

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

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

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

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

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

キー
name コンテナ名
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 ファイルです。Blue/Green デプロイのためにコンテナベースのアプリケーションをデプロイする場合、コンテナベースのアプリケーションをデプロイするためにimageDetail.jsonファイルを使用して、Amazon ECS と CodeDeploy ジョブワーカーに、Docker Hub などのリポジトリから取得するイメージ ID を提供することができます。

注記

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

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)

あん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