Amazon ECS タスク定義の変更 - Amazon CodeCatalyst

Amazon ECS タスク定義の変更

このセクションでは、CodeCatalyst ワークフローを使用して Amazon Elastic Container Service (Amazon ECS) タスク定義ファイルの image フィールドを更新する方法について説明します。これを行うには、「Amazon ECS タスク定義のレンダリング」アクションをワークフローに追加する必要があります。このアクションによって、タスク定義ファイルの image フィールドが、実行時にワークフローで指定された Docker イメージ名で更新されます。

注記

このアクションを使用して、タスク定義の environment フィールドを環境変数で更新することもできます。

このアクションを使用する場合

このアクションは、ワークフローで Docker イメージをビルドして、動的コンテンツ (コミット ID やタイムスタンプなど) でタグ付けする場合に使用します。

タスク定義ファイルに常に同じイメージ値が含まれる場合は、このアクションを使用しないでください。その場合には、イメージの名前をタスク定義ファイルに手動で入力できます。

「Amazon ECS タスク定義のレンダリング」アクションの仕組み

Amazon ECS タスク定義のレンダリングアクションは、ワークフローのビルドアクションと Amazon ECS へのデプロイアクションで使用する必要があります。これらのアクションは連携して、次のように機能します。

  1. ビルドアクションでは、Docker イメージをビルドし、名前、コミット ID、タイムスタンプ、その他の動的コンテンツでタグ付けします。例えば、ビルドアクションは次のようになります。

    MyECSWorkflow Actions: BuildAction: Identifier: aws/build@v1 ... Configuration: Steps: # Build, tag, and push the Docker image... - Run: docker build -t MyDockerImage:${WorkflowSource.CommitId} . ...

    上記のコードでは、アクションの実行時に docker build -t ディレクティブ が Docker イメージをビルドし、コミット ID でタグ付けします。生成されたイメージ名は次のようになります。

    MyDockerImage:a37bd7e

  2. Amazon ECS タスク定義のレンダリングアクションは、次のように、動的に生成されたイメージ名 MyDockerImage:a37bd7e をタスク定義ファイルに追加します。

    { "executionRoleArn": "arn:aws:iam::account_ID:role/codecatalyst-ecs-task-execution-role", "containerDefinitions": [ { "name": "codecatalyst-ecs-container", "image": MyDockerImage:a37bd7e, "essential": true, ... "portMappings": [ { "hostPort": 80, "protocol": "tcp", "containerPort": 80 } ] } ], ... }

    必要に応じて、次のように、Amazon ECS タスク定義のレンダリングアクションでタスク定義に環境変数を追加することもできます。

    { "executionRoleArn": "arn:aws:iam::account_ID:role/codecatalyst-ecs-task-execution-role", "containerDefinitions": [ { "name": "codecatalyst-ecs-container", "image": MyDockerImage:a37bd7e, ... "environment": [ { name": "ECS_LOGLEVEL", value": "info" } ] } ], ... }

    環境変数の詳細については、「Amazon Elastic Container Service デベロッパーガイド」の「環境変数の指定」を参照してください。

  3. Amazon ECS へのデプロイアクションは、更新されたタスク定義ファイルを Amazon ECS に登録します。更新されたタスク定義ファイルを登録すると、新しいイメージ MyDockerImage:a37bd7e が Amazon ECS にデプロイされます。

「Amazon ECS タスク定義のレンダリング」アクションで使用されるランタイムイメージ

Amazon ECS タスク定義のレンダリングアクションは、2022 年 11 月のイメージで実行されます。詳細については、「アクティブなイメージ」を参照してください。