コンソールを使用したサービスの更新 - Amazon Elastic Container Service

コンソールを使用したサービスの更新

Amazon ECS サービスは、Amazon ECS コンソールを使用して更新できます。サービス設定は、そのままの状態で事前入力されています。タスク定義、タスクの必要数、キャパシティープロバイダー戦略、プラットフォームバージョン、デプロイ設定、またはこれらの組み合わせを更新できます。

ブルー/グリーンデプロイ設定の更新方法については、「コンソールを使用してブルー/グリーンデプロイ設定を更新します。」を参照してください。

新しいコンソールを使用する際には、次の点を検討してください。

  • ローリング更新 (ECS) のデプロイタイプを使用するサービスのみが、新しい Amazon ECS エクスペリエンスにより更新可能です。

  • 現在、コンソールでは、ターゲット追跡 のスケーリングポリシーのみがサポートされています。ステップスケーリングを使用するには、クラシックコンソールに切り替えます。

  • 現在、コンソールでは、レプリカのサービスタイプのみがサポートされています。Daemon サービスタイプを使用する場合は、クラシックコンソールに切り替えてください。

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

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

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

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

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

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

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

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

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

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

重要

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

サービスのタスク定義を更新する場合、サービスの作成時に指定したコンテナ名とコンテナポートは、タスク定義のままにしておく必要があります。

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

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

サービスを更新するには (Amazon ECS コンソール)
  1. コンソール (https://console.aws.amazon.com/ecs/v2) を開きます。

  2. [Clusters] (クラスター) ページで、クラスターを選択します。

  3. [Cluster overview] (クラスターの概要ページ) で、サービスを選択し、[Update] (更新) を選択します。

  4. サービスで新しいデプロイを開始するには、[Force new deployment] (新しいデプロイの強制) を選択します。

  5. [タスク定義] の場合、タスク定義ファミリーとリビジョンを選択します。

    重要

    コンソールは、選択したタスク定義ファミリーおよびリビジョンが、定義されたコンピューティング設定と互換性があることを確認します。警告が表示された場合は、タスク定義の互換性と、選択したコンピューティング設定の両方を確認します。

  6. [必要なタスク] で、サービスのために実行するタスクの数を入力します。

  7. [Min running tasks] (実行中のタスクの最小化) の場合、デプロイ時に RUNNING の状態に保つ必要のあるサービス内のタスクの下限数をタスクの必要数のパーセント値 (最も近い整数に切り上げ) で入力します。詳細については、[Deployment configuration] (デプロイ設定) を参照してください。

  8. [Max running tasks] (実行中のタスクの最大化)) には、デプロイ時に RUNNING または PENDING 状態にできるサービスのタスクの上限数を必要数のタスクのパーセント値 (最も近い整数に切り下げ) で入力します。

  9. Amazon ECS がデプロイの障害を検出して処理する方法を設定するには、[Deployment failure detection] (デプロイ障害検出) を展開し、オプションを選択します。

    1. タスクを開始できない場合にデプロイを停止するには、[Use the Amazon ECS deployment circuit breaker] (Amazon ECS デプロイサーキットブレーカーを使用する) を選択します。

      デプロイサーキットブレーカーによってデプロイが失敗状態に設定されたときに、ソフトウェアがデプロイを最後に完了したデプロイ状態に自動的にロールバックするようにするには、[Rollback on failure] (失敗時のロールバック) を選択します。

    2. アプリケーションメトリクスに基づいてデプロイを停止するには、[Use CloudWatch alarms] (CloudWatch アラームを使用する) を選択します。次に、[CloudWatch alarm names] (CloudWatch アラーム名) からアラームを選択します。新しいアラームを作成するには、[Create new alarm] (新しいアラームの作成) を選択します。

      CloudWatch アラームによってデプロイが失敗状態に設定されたときに、ソフトウェアがデプロイを最後に完了したデプロイ状態に自動的にロールバックするようにするには、[Rollback on failure] (失敗時のロールバック) を選択します。

  10. 計算オプションを変更するには、[Deployment options] (デプロイオプション)、[Compute configuration] (コンピュート構成) を展開し、以下の操作を実行します。

    1. AWS Fargate のサービスにとって、[Platform version] (プラットフォームのバージョン) で、新しいバージョンを選択します。

    2. キャパシティプロバイダー戦略を使用するサービスの場合、[キャパシティプロバイダー戦略] で、次を実行します。

      • キャパシティプロバイダーをさらに追加するには、[さらに追加] を選択します。その後、[キャパシティプロバイダー] で、キャパシティプロバイダーを選択します。

      • キャパシティプロバイダーを削除するには、キャパシティプロバイダーの右側にある [削除] を選択します。

      Auto Scaling グループキャパシティープロバイダーを使用するサービスは、Fargate キャパシティープロバイダーを使用するように更新することはできません。その逆も同様です。

  11. サービスの自動スケーリングを設定するには、[Service auto scaling] (サービスの自動スケーリング) を展開し、次のパラメータを指定します。

    1. サービスの自動スケーリングを使用するには、[Service auto scaling] (サービスの自動スケーリング) を選択します。

    2. [タスクの最小数] に、自動スケーリングサービスで使用する使用するタスクの下限数を入力します。必要な数がこの数を下回ることはありません。

    3. [タスクの最大数] に、自動スケーリングサービスで使用するタスクの上限数を入力します。必要な数がこの数を超えることはありません。

    4. [スケーリングポリシータイプ] で [ターゲットの追跡] を選択します。

    5. [ポリシー名] で、このポリシー名を入力します。

    6. [ECS サービスメトリクス] で、次のいずれかのメトリクスを選択します。

      • [ECSServiceAverageCPUUtilization]: サービスの平均 CPU 使用率。

      • [ECSServiceAverageMemoryUtilization]: サービスのメモリ平均使用率。

      • [ALBRequestCountPerTarget]: Application Load Balancer ターゲットグループ内のターゲットごとに完了したリクエストの数。

        メトリックスには、Application Load Balancer と Application Load Balancer のターゲットグループが必要です。

    7. [Target value] (ターゲット値) には、選択したメトリクスに対してサービスが保持する値をパーセント単位で入力します。

    8. [スケールアウトクールダウン期間] で、スケールアウトアクティビティの後、他のスケールアウトが行われない時間 (秒) を入力します。

    9. [スケールインクールダウン期間] で、スケールインアクティビティの後、他のスケールインが行われない時間 (秒) を入力します。

    10. ポリシーがスケールインアクティビティを実行しないようにするには、[Turn off scale-in] (スケールインをオフにする) を選択します。

  12. (オプション) サービスを識別しやすくするには、[Tags] (タグ) セクションを展開し、タグを設定します。

    • [タグの追加] [タグの追加] を選択して、以下を実行します。

      • [キー] にはキー名を入力します。

      • [] にキー値を入力します。

    • [タグの削除] タグの横にある [タグの削除] を選択します。

  13. [Update] (更新) を選択します。