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

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

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

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

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

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

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

注記

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

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

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

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

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

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

キー
name container_name
imageUri imageUri
注記

名前フィールドは、コンテナイメージ名、つまり Docker イメージの名前に使用されます。

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

[ { "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として使用するパイプラインを作成するための step-by-step チュートリアルについては、「チュートリアル: での継続的デプロイ CodePipeline」を参照してください。

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

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

注記

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

アクションとそのパラメータの説明については、「Amazon Elastic Container Service と CodeDeploy ブルーグリーンデプロイアクションリファレンス」を参照してください。

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

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

    注記

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

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

    注記

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

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

アーティファクトバケットに含まれる imageDetail.json ファイルを示す図

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

キー
イメージURI image_URI
imageDetail.json

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

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

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

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

{ "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. パイプラインがビルドステージをスキップした場合は、ソースアクションがアーティファクトを提供できるように CodeCommit、JSONファイルを手動で作成し、 などのソースリポジトリにアップロードする必要があります。テキストエディタを使用してファイルを作成し、ファイルに名前を付けます。または、デフォルトの 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