サービスの更新 - Amazon Elastic Container Service

サービスの更新

実行中のサービスを更新することで、サービスが維持するタスク数、タスクがどのタスク定義を使用するか、また、タスクで Fargate 起動タイプを使用している場合には、サービスが使用するプラットフォームバージョンなど、一部のサービス設定パラメータを変更できます。さらに容量が必要なアプリケーションがある場合には、サービスのスケール調整ができます。スケールダウンする未使用のキャパシティーがある場合は、サービスのタスクの必要数を減らし、リソースを解放できます。

更新されたコンテナイメージをタスクに使用する場合は、そのイメージを使用して新しいタスク定義リビジョンを作成し、コンソールで [新しいデプロイの強制] オプションを使用して、サービスにデプロイできます。

サービススケジューラは、最小ヘルス率と最大ヘルス率のパラメータ (サービスのデプロイ設定) を使用して、デプロイ戦略を判断します。

サービスでローリング更新 (ECS) のデプロイタイプが使用されている場合、最小ヘルス率は、デプロイ時に RUNNING 状態に保つ必要のあるサービスのタスクの下限数をサービスのタスクの必要数のパーセント値 (最も近い整数に切り上げ) で表します。サービスに EC2 起動タイプを使用するタスクが含まれている場合、DRAINING 状態のコンテナインスタンスがある間は、パラメータも適用されます。このパラメータにより、追加のクラスターキャパシティーを使用せずにデプロイできます。たとえば、サービスで必要数が 4 タスク、最小ヘルス率が 50% とすると、スケジューラは 2 つの新しいタスクを開始する前に、2 つの既存のタスクを停止してクラスターのキャパシティーを解放できます。ロードバランサーを使用しないサービスのタスクは、RUNNING 状態にある場合正常な状態と見なされます。ロードバランサーを使用するサービスのタスクは、RUNNING 状態にあり、ロードバランサーによって正常と報告された場合に、正常であると見なされます。最小ヘルス率のデフォルト値は 100% です。

サービスでローリング更新 (ECS) のデプロイタイプが使用されている場合、最大ヘルス率パラメータは、デプロイ時に RUNNING または PENDING 状態で使用できるサービスのタスクの上限数をサービスのタスクの必要数のパーセント値 (最も近い整数に切り下げ) で表します。サービスに EC2 起動タイプを使用するタスクが含まれている場合、DRAINING 状態のコンテナインスタンスがある間は、パラメータも適用されます。このパラメータを使用すると、デプロイのバッチサイズを定義できます。たとえば、サービスで必要数が 4 タスク、最大ヘルス率の値が 200% とすると、スケジューラは 4 つの古いタスクを停止する前に、4 つの新しいタスクを開始できます。そのために必要なクラスターリソースを使用できることが前提です。最大ヘルス率のデフォルト値は 200% です。

サービスで EC2 起動タイプを使用する Blue/Green (CODE_DEPLOY) デプロイタイプとタスクが使用されている場合、最小ヘルス率 および 最大ヘルス率の値はデフォルト値に設定されます。コンテナインスタンスが DRAINING 状態にある間、RUNNING 状態を保つサービスのタスク数の下限と上限を定義する目的でのみ使用されます。サービスのタスクで Fargate 起動タイプを使用する場合、最小ヘルス率と最大ヘルス率の値は使用されません。現在、サービスについて説明するときに、これらは表示されます。

更新中にサービススケジューラがタスクを置き換えるとき、サービスはまずロードバランサーからタスクを削除し (使用されている場合)、接続のドレインが完了するのを待ちます。その後、タスクで実行されているコンテナに docker stop と同等のコマンドが発行されます。この結果、SIGTERM 信号と 30 秒のタイムアウトが発生し、その後に SIGKILL が送信され、コンテナが強制的に停止されます。コンテナが SIGTERM 信号を正常に処理し、その受信時から 30 秒以内に終了する場合、SIGKILL 信号は送信されません。サービススケジューラは、最小ヘルス率と最大ヘルス率の設定で定義されているとおりに、タスクを開始および停止します。

重要

タスク定義でコンテナが使用するポートを変更する場合は、更新後のポートを使用するようにコンテナインスタンスのセキュリティグループを更新する必要がある場合があります。

サービスでロードバランサーを使用する場合、サービスの作成時に定義したロードバランサー設定は変更できません。サービスのタスク定義を更新する場合、サービスの作成時に指定したコンテナ名とコンテナポートは、タスク定義のままにしておく必要があります。

ロードバランサー名、コンテナ名、またはサービスロードバランサー設定に関連付けられたコンテナポートを変更するには、新しいサービスを作成する必要があります。

Amazon ECS は、Elastic Load Balancing ロードバランサーまたは Amazon ECS コンテナインスタンスに関連付けられたセキュリティグループを自動的には更新しません。