Amazon ECS 外部デプロイ用のサードパーティーコントローラーを使用する - Amazon Elastic Container Service

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

Amazon ECS 外部デプロイ用のサードパーティーコントローラーを使用する

この外部デプロイタイプでは、Amazon ECS サービスのデプロイプロセスを完全に制御するために、すべてのサードパーティーのデプロイコントローラーを使用できます。サービスの詳細はサービス管理 API アクション (CreateServiceUpdateServiceDeleteService) または タスク設定管理 API アクション (CreateTaskSetUpdateTaskSetUpdateServicePrimaryTaskSetDeleteTaskSet) のいずれかにより管理されます。各 API アクションは、サービス定義パラメータのサブセットを管理します。

UpdateService API アクションは、サービスの必要数およびヘルスチェック猶予期間パラメータを更新します。起動タイプ、プラットフォームバージョン、ロードバランサーの詳細、ネットワーク構成、またはタスク定義を更新する必要がある場合、新しいタスクセットを作成する必要があります。

UpdateTaskSet API アクションは、タスクセットのスケールパラメータのみを更新します。

UpdateServicePrimaryTaskSet API アクションは、サービス内のどのタスクセットをプライマリタスクセットであるかを変更します。DescribeServices API アクションを呼び出すと、プライマリタスクセットに指定されたすべてのフィールドが返されます。サービスのプライマリタスクセットが更新されると、サービスの新しいプライマリタスクセットに存在し、古いプライマリタスクセットとは異なるタスクセットのパラメータ値はどれでも、新しいプライマリタスクセットが定義されるときに新しい値に更新されます。サービスにプライマリタスクセットが定義されていない場合にサービスを定義するとき、タスクセットフィールドは null になります。

外部デプロイに関する考慮事項

外部デプロイタイプを使用するときは、以下の点を考慮します。

  • サポートされているロードバランサーのタイプは、Application Load Balancer または Network Load Balancer です。

  • Fargate 起動タイプ、または EXTERNAL デプロイコントローラータイプは、DAEMON スケジューリング戦略をサポートしません。

外部デプロイワークフロー

以下は、Amazon ECS で外部デプロイを管理するための基本的なワークフローです。

外部デプロイコントローラーを使用して Amazon ECS サービスを管理するには
  1. Amazon ECS サービスを作成する 必須のパラメータは、サービス名のみです。サービスを作成するときに、外部デプロイコントローラーを使用して以下のパラメータを指定できます。その他すべてのサービスパラメータは、サービス内でタスクセットが作成されるときに指定されます。

    serviceName

    タイプ: 文字列

    必須: はい

    サービスの名前。最大 255 文字の英字 (大文字と小文字)、数字、ハイフン、アンダースコアを使用できます。サービス名は同じクラスター内で一意になるようにしてください。ただし、リージョン内の複数のクラスター間や複数のリージョンにまたがるクラスター間では、同様の名前のサービスがあっても構いません。

    desiredCount

    指定したタスクセットのタスク定義のインスタンスをサービス内で実行状態に保つ数を設定します。

    deploymentConfiguration

    デプロイ時に実行されるタスクの数と、タスクの停止および開始の順序を制御するオプションのデプロイパラメータ。詳細については、「deploymentConfiguration」を参照してください。

    tags

    型: オブジェクトの配列

    必須: いいえ

    サービスに適用し、サービスの分類と整理に役立つメタデータ。タグはそれぞれ、1 つのキーとオプションの 1 つの値で設定されており、どちらもお客様側が定義します。サービスが削除されると、タグも削除されます。サービスには最大 50 個のタグを適用できます。詳細については、「 Amazon ECS リソースのタグ付け」を参照してください。

    key

    タイプ: 文字列

    長さの制限: 最小長は 1 です。最大長は 128 です。

    必須: いいえ

    タグを構成するキーと値のペアの一部。キーは、より具体的なタグ値のカテゴリのように動作する、一般的なラベルです。

    value

    タイプ: 文字列

    長さの制限: 最小長は 0 です。最大長は 256 です。

    必須: いいえ

    タグを構成するキーと値のペアのオプションの一部。値はタグカテゴリ (キー) の記述子として機能します。

    enableECSManagedTags

    サービス内のタスクに Amazon ECS マネージドタグを使用するか否かを指定します。詳細については、「請求用のリソースにタグを付ける」を参照してください。

    propagateTags

    タイプ: 文字列

    有効な値: TASK_DEFINITION | SERVICE

    必須: いいえ

    タグをタスク定義またはサービスからサービスのタスクへコピーするかどうかを指定します。値を指定しない場合、タグはコピーされません。タグは、サービス作成中のサービス内のタスクにのみコピーすることができます。タグをサービス作成後またはタスク作成後のタスクに追加するには、TagResource API アクションを使用します。

    healthCheckGracePeriodSeconds

    タイプ: 整数

    必須: いいえ

    Amazon ECS サービススケジューラが、タスクが RUNNING 状態になった後で異常な Elastic Load Balancing ターゲットのヘルスチェック、コンテナのヘルスチェック、Route 53 のヘルスチェックを無視する期間 (秒単位)。これが有効であるのは、ロードバランサーを使用するようにサービスが設定されている場合のみです。サービスにロードバランサーを定義している場合、ヘルスチェックの猶予期間値を指定しないと、デフォルト値の 0 が使用されます。

    サービスのタスクで、ヘルスチェックを開始して応答するまでに時間がかかる場合は、ヘルスチェックの猶予期間として最大 2,147,483,647 秒まで指定できます。この間は、ECS サービススケジューラはヘルスチェックのステータスを無視します。この猶予期間により、ECS サービススケジューラがタスクを異常とマークして時間より前に停止することがなくなります。

    Elastic Load Balancing を使用しない場合、タスク定義のヘルスチェックパラメータの startPeriod を使用することをお勧めします。詳細については、[Health check] (ヘルスチェック) を参照してください。

    schedulingStrategy

    使用するスケジュール戦略。外部デプロイコントローラーを使用するサービスは、REPLICA スケジューリング戦略のみをサポートします。詳細については、「サービススケジューラの概念」を参照してください。

    placementConstraints

    サービスのタスクに使用する、配置制約オブジェクトの配列。タスクごとに最大 10 個の制約を指定できます (この制限数には、タスク定義内の制約と、実行時に指定される制約が含まれます)。Fargate 起動タイプを使用している場合、タスク配置の制約事項はサポートされません。

    placementStrategy

    サービスのタスクで使用する配置戦略オブジェクト。サービスごとに最大 4 つの戦略ルールを指定できます。

    次の例は、外部デプロイコントローラーを使用するサービスを作成するためのサービス定義です。

    { "cluster": "", "serviceName": "", "desiredCount": 0, "role": "", "deploymentConfiguration": { "maximumPercent": 0, "minimumHealthyPercent": 0 }, "placementConstraints": [ { "type": "distinctInstance", "expression": "" } ], "placementStrategy": [ { "type": "binpack", "field": "" } ], "healthCheckGracePeriodSeconds": 0, "schedulingStrategy": "REPLICA", "deploymentController": { "type": "EXTERNAL" }, "tags": [ { "key": "", "value": "" } ], "enableECSManagedTags": true, "propagateTags": "TASK_DEFINITION" }
  2. 最初のタスクセットを作成します。タスクセットには、サービスに関する次の詳細が含まれています。

    taskDefinition

    使用するタスクセットのタスクのタスク定義。

    launchType

    タイプ: 文字列

    有効な値: EC2 | FARGATE | EXTERNAL

    必須: いいえ

    サービスを実行する起動タイプ。起動タイプを指定しない場合は、デフォルトで capacityProviderStrategy が使用されます。詳しくは、「Amazon ECS 起動タイプ」を参照してください。

    launchType を指定した場合、capacityProviderStrategy パラメータを省略する必要があります。

    platformVersion

    タイプ: 文字列

    必須: いいえ

    サービス内のタスクが実行されているプラットフォームのバージョン。プラットフォームのバージョンは、Fargate 起動タイプを使用するタスクに対してのみ指定されています。指定されない場合、デフォルトで最新バージョン (LATEST) が使用されます。

    AWS Fargate プラットフォームのバージョンは、Fargate タスクインフラストラクチャの特定のランタイム環境を参照するために使用されます。プラットフォームのバージョンに LATEST を指定してタスクを実行またはサービスを作成すると、プラットフォームの最新バージョンをタスクで利用できるようになります。サービスをスケールアップする場合は、これらのタスクには、サービスの最新のデプロイで指定されたプラットフォームのバージョンが提供されます。詳細については、「Fargate Linux プラットフォームのバージョン」を参照してください。

    注記

    プラットフォームのバージョンは、EC2 起動タイプを使用するタスクには指定されません。

    loadBalancers

    サービスで使用するロードバランサーを表すロードバランサーオブジェクト。外部デプロイコントローラーを使用する場合、Application Load Balancer と Network Load Balancer のみがサポートされます。Application Load Balancer を使用している場合、タスクセットあたり 1 つの Application Load Balancer ターゲットグループのみが許可されます。

    次のスニペットは、使用する loadBalancer オブジェクトの例を示しています。

    "loadBalancers": [ { "targetGroupArn": "", "containerName": "", "containerPort": 0 } ]
    注記

    loadBalancer オブジェクトを指定する場合は、targetGroupArn を指定し、loadBalancerName パラメータを省略する必要があります。

    networkConfiguration

    サービスのネットワーク構成。このパラメータは awsvpc ネットワークモードを使用して独自の Elastic Network Interface を受け取るタスク定義の場合に必要です。その他のネットワークモードではサポートされていません。Amazon EC2 起動タイプのネットワークの詳細については、「Fargate タスクネットワーキング」を参照してください。Fargate 起動タイプのネットワークの詳細については、「」を参照してくださいFargate でのタスクのタスクネットワーキング

    serviceRegistries

    このサービスに割り当てるサービス検出レジストリの詳細。詳細については、「サービス検出」を参照してください。

    scale

    タスクセットに配置して実行し続けるために必要なタスク数の浮動小数点パーセンテージ。この値は、サービスの desiredCount の割合 (%) の合計として指定されます。許容値は 0 から 100 までの数字です。

    外部デプロイコントローラー用のタスクセットを作成するための JSON の例を次に示します。

    { "service": "", "cluster": "", "externalId": "", "taskDefinition": "", "networkConfiguration": { "awsvpcConfiguration": { "subnets": [ "" ], "securityGroups": [ "" ], "assignPublicIp": "DISABLED" } }, "loadBalancers": [ { "targetGroupArn": "", "containerName": "", "containerPort": 0 } ], "serviceRegistries": [ { "registryArn": "", "port": 0, "containerName": "", "containerPort": 0 } ], "launchType": "EC2", "capacityProviderStrategy": [ { "capacityProvider": "", "weight": 0, "base": 0 } ], "platformVersion": "", "scale": { "value": null, "unit": "PERCENT" }, "clientToken": "" }
  3. サービスの変更が必要な場合、更新するパラメータに応じて UpdateServiceUpdateTaskSet、または CreateTaskSet のいずれかの API アクションを使用します。タスクセットを作成した場合は、サービスの各タスクセットに scale パラメータを使用して、サービス内で継続して実行するタスクの数を決定します。例えば、tasksetA を含むサービスがあり tasksetB を作成した場合、本番トラフィックを移行する前に tasksetB の有効性をテストする場合があります。両方のタスクの scale100 に設定し、すべての本番トラフィックを tasksetB に移行する準備が整ったときに、tasksetAscale0 に更新して、スケールダウンすることもできます。