メニュー
Amazon Elastic Container Service
開発者ガイド (API Version 2014-11-13)

サービスの更新

実行中のサービスを更新して、サービスによって維持されるタスクの数や、タスクによって使用されるタスク定義を変更できます。アプリケーションでキャパシティーを増やす必要がある場合は、使用可能な範囲でコンテナインスタンスを増やすようにサービスをスケールアップできます。未使用のキャパシティーがあり、そのキャパシティーをスケールダウンする場合は、サービスのタスクの必要数を減らし、リソースを解放できます。

アプリケーションの Docker イメージを更新した場合は、そのイメージを使用する新しいタスク定義を作成し、サービスにデプロイできます。サービススケジューラは、最小ヘルス率と最大ヘルス率のパラメーター (サービスのデプロイ設定) を使用して、デプロイ戦略を判断します。

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

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

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

重要

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

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

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

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

実行中のサービスを更新するには

  1. https://console.aws.amazon.com/ecs/ にある Amazon ECS コンソールを開きます。

  2. ナビゲーションバーで、クラスターのあるリージョンを選択します。

  3. ナビゲーションペインで [Clusters] を選択します。

  4. [Clusters] ページで、サービスが存在するクラスターの名前を選択します。

  5. [Cluster: name] ページで、[Services] を選択します。

  6. 更新するサービスの左側にあるチェックボックスをオンにし、[Update] を選択します。

  7. [Update Service] ページで、サービスの情報はあらかじめ入力されています。タスク定義、デプロイ設定、タスクの必要数のいずれか (またはこれらの組み合わせ) を変更します。

  8. (オプション) サービスの Auto Scaling を使用すると、CloudWatch アラームに応じてサービスが自動的にスケールアップ/ダウンされるようにできます。

    1. [Optional configurations] で、[Configure サービスの Auto Scaling] を選択します。

    2. (オプション) サービスの Auto Scaling を使用するようにサービスを設定する」の「ステップ 3」に進みます。

    3. そのセクションの手順を完了し、ここに戻ります。

  9. [Update Service] を選択して終了し、サービスを更新します。