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

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

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

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

コンソールを使用する際には、以下の点を考慮してください。

サービスを一時的に停止したい場合は、[必要なタスク]を 0 に設定します。次に、サービスを開始する準備ができたら、サービスを元の [必要なタスク] 数で更新します。

コンソールを使用する際には、以下の点を考慮してください。

  • 次のいずれかのパラメータを使用するサービスを更新するには、AWS Command Line Interface を使用する必要があります。

    • Blue/Green デプロイ

    • サービス検出 – サービス検出では、設定内容のみを表示できます。

    • カスタムメトリクスによるトラッキングポリシー

    • サービスを更新awsvpc のネットワーク設定とヘルスチェックの猶予期間は更新できません。

    AWS CLI を使用してサービスを更新する方法の詳細については、「AWS Command Line Interface リファレンス」の「update-service」を参照してください。

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

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

  • サービスでロードバランサーを使用する場合、コンソールを使用してサービスの作成時に定義したロードバランサー設定は変更できません。代わりに AWS CLI または SDK を使用して、ロードバランサーの設定を変更します。設定の変更方法の詳細については、「Amazon Elastic Containers サービス API リファレンス」の「UpdateService」を参照してください。

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

実行中のサービスを更新することで、サービスが維持するタスク数、タスクがどのタスク定義を使用するか、また、タスクで 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 信号は送信されません。サービススケジューラは、最小ヘルス率と最大ヘルス率の設定で定義されているとおりに、タスクを開始および停止します。

また、コンテナのヘルスチェックまたはロードバランサーのターゲットグループのヘルスチェックが失敗すると、サービススケジューラーによって、異常であると判断されたタスクが置き換えられます。この置き換え動作は、maximumPercent および desiredCount のサービス定義パラメータによって異なります。タスクが異常とマークされた場合、サービススケジューラーによってまず置き換えタスクが開始されます。次に以下が発生します。

  • 置き換えタスクのヘルスステータスが HEALTHY になると、サービススケジューラーが異常のあるタスクを停止します。

  • 置き換えタスクのヘルスステータスが UNHEALTHY の場合、スケジューラーは異常のある置き換えタスクまたは既存の異常タスクのいずれかを停止して、タスク総数が desiredCount と等しくなるようにします。

maximumPercent パラメーターによって、置き換えタスクを先に開始できないようにスケジューラーが制限されている場合、スケジューラーは異常のあるタスクをランダムに 1 つずつ停止して容量を解放してから置き換えタスクを開始します。異常のあるタスクがすべて正常なタスクに置き換えられるまで、起動と停止のプロセスが続きます。異常なタスクがすべて置き換えられ、正常なタスクだけが実行中になると、合計タスク数が desiredCount を超える場合、タスク数が desiredCount になるまで、正常なタスクが無作為に停止されます。maximumPercent および desiredCount の詳細については、「サービス定義パラメータ」を参照してください。

重要

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

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

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

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

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

  3. クラスターの詳細ページの [サービス] セクションで、サービスの横にあるチェックボックスを選択し、[更新] を選択します。

  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 デプロイサーキットブレーカーを使用する) を選択します。

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

    2. アプリケーションメトリクスに基づいてデプロイを停止するには、[CloudWatch アラームを使用する] を選択します。次に、[CloudWatch アラーム名] からアラームを選択します。新しいアラームを作成するには、CloudWatch コンソールに移動します。

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

  10. 計算オプションを変更するには、[コンピュート構成] を展開してから以下の操作を実行します。

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

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

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

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

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

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

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

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

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

    4. ポリシータイプを選択します。[スケーリングポリシータイプ] で、次のいずれかのオプションを選択します。

      使用するポリシータイプ この操作を行います

      ターゲット追跡

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

      2. [Policy Name] (ポリシー名) にこのポリシーの名前を入力します。

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

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

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

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

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

      5. [スケールアウトのクールダウン期間] には、スケールインアクティビティが完了してから別のスケールアウトアクティビティが開始されるまでの時間 (秒) を入力します。

      6. [スケールインのクールダウン期間] には、スケールインアクティビティが完了してから別のスケールインアクティビティが開始されるまでの時間 (秒) を入力します。

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

      8. • (オプション) トラフィックの増加に合わせてスケーリングポリシーをスケールアウトさせたいが、トラフィックが減少してもスケールインする必要がない場合は、[スケールインをオフにする] を選択します。

      ステップスケーリング
      1. [スケーリングポリシータイプ] で [ステップスケーリング] を選択します。

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

      3. [アラーム名] に、アラームの一意の名前を入力します。

      4. [Amazon ECS サービスメトリクス] で、アラームに使用するサービスメトリクスを選択します。

      5. [統計] で、アラーム統計を選択します。

      6. [期間] で、アラームの期間を選択します。

      7. [アラーム条件] で、選択したメトリクスを定義されたしきい値と比較する方法を選択します。

      8. [メトリクスを比較するためのしきい値][アラームを開始する評価期間] に、アラームに使用するしきい値としきい値を評価する期間を入力します。

      9. [スケーリングアクション]で、次の手順を実行します。

        • [アクション] には、サービスに対してタスクを追加する、削除する、または特定の必要数を設定するかを選択します。

        • タスクの追加または削除を選択した場合は、スケーリングアクションの開始時に追加または削除するタスクの数 (または既存のタスクの割合) を [値] に入力します。希望の数を設定することを選択した場合は、タスクの数を入力します。[タイプ] で、[値] が整数であるか、既存の必要なカウントのパーセント値であるかを選択します。

        • [下限] と [上限] に、ステップスケーリング調整の下限と上限を入力します。デフォルトでは、[ポリシーを追加] の下限はアラームしきい値であり、上限は正 (+) の無限大です。デフォルトでは、[ポリシーを削除] の上限はアラームしきい値であり、下限は負 (-) の無限大です。

        • (オプション) さらにスケーリングオプションを追加します。[新しいスケーリングアクションの追加] を選択し、[アクションのスケーリング] の手順を繰り返します。

        • [クールダウン期間] には、前回のスケーリングアクティビティが有効になるまで待機する時間を秒単位で入力します。追加ポリシーの場合、スケールアウトアクティビティの終了後、スケーリングポリシーによってスケールインアクティビティがブロックされ、一度にスケールアウトできるタスクの数が制限されます。削除ポリシーの場合、これはスケールインアクティビティの後、別のスケールインアクティビティが開始されるまでに経過する必要がある時間です。

  12. (オプション) Service Connect を使用するには、[Turn on Service Connect] (Service Connect をオンにする) を選択し、以下を指定します。

    1. [Service Connect configuration] (Service Connect 設定) で、クライアントモードを指定します。

      • サービスが名前空間内の他のサービスへの接続のみを必要とするネットワーククライアントアプリケーションを実行している場合は、[Client side only] (クライアント側のみ) を選択します。

      • サービスがネットワークまたは Web サービスアプリケーションを実行していて、このサービスにエンドポイントを提供し、名前空間内の他のサービスに接続する必要がある場合は、[Client and server] (クライアントとサーバー) を選択します。

    2. デフォルトのクラスター名前空間ではない名前空間を使用するには、[Namespace] (名前空間) でサービス名前空間を選択します。

  13. デプロイ時の設定と互換性のあるデータボリュームをタスクで使用する場合は、[ボリューム] を拡張してボリュームを設定できます。

    ボリューム名とボリュームタイプはタスク定義リビジョンを作成するときに設定され、サービスの更新時には変更できません。ボリューム名とタイプを更新するには、新しいタスク定義リビジョンを作成し、新しいリビジョンを使用してサービスを更新する必要があります。

    このボリュームタイプを設定するには この操作を行います

    Amazon EBS

    1. [EBS ボリュームタイプ] には、タスクにアタッチする EBS ボリュームのタイプを選択します。

    2. [サイズ (GiB)] には、ボリュームサイズの有効な値をギビバイト (GiB) 単位で入力します。最小で 1 GiB、最大で 16,384 GiB のボリュームサイズを指定できます。スナップショット ID を指定しない限り、この値は必須です。

    3. [IOPS] には、ボリュームが提供する入力/出力オペレーションの数 (IOPS) の最大数を入力します。この値は io1io2、および gp3 ボリュームタイプでのみ設定できます。

    4. [スループット (MiB/秒)] には、ボリュームが提供すべきスループットをメビバイト/秒 (MiBps または MiB/s) で入力します。この値は gp3 ボリュームタイプでのみ設定できます。

    5. [スナップショット ID] には、既存の Amazon EBS ボリュームスナップショットを選択するか、スナップショットからボリュームを作成する場合はスナップショットの ARN を入力します。新しい空のボリュームは、スナップショット ID を選択または入力しないで作成できます。

    6. [ファイルシステムのタイプ] では、ボリューム上のデータストレージおよび取得に使用するファイルシステムの種類を選択します。オペレーティングシステムのデフォルトまたは特定のファイルシステムタイプのいずれかを選択できます。Linux のデフォルトは XFS です。スナップショットから作成されたボリュームでは、スナップショットの作成時にボリュームが使用していたのと同じファイルシステムタイプを指定する必要があります。ファイルシステムのタイプが一致しない場合、タスクは開始できません。

    7. [インフラストラクチャロール] には、Amazon ECS がタスクの Amazon EBS ボリュームを管理できるようにするために必要な権限を持つ IAM ロールを選択します。AmazonECSInfrastructureRolePolicyForVolumes 管理ポリシーをロールにアタッチすることも、このポリシーをガイドとして使用して、特定のニーズを満たすアクセス権限を持つ独自のポリシーを作成してアタッチすることもできます。必要なアクセス権限の詳細については、「Amazon ECS インフラストラクチャ IAM ロール」を参照してください。

    8. デフォルト設定で Amazon EBS 暗号化を使用する場合は、[暗号化][デフォルト] を選択します。アカウントにデフォルトで暗号化が設定されている場合、ボリュームは設定で指定されている AWS Key Management Service (AWS KMS) キーで暗号化されます。[デフォルト] を選択し、Amazon EBS のデフォルト暗号化がオンになっていない場合、ボリュームは暗号化されません。

      [カスタム] を選択した場合は、ボリューム暗号化に任意の AWS KMS key を指定できます。

      [なし] を選択すると、デフォルトで暗号化が設定されている場合や、暗号化されたスナップショットからボリュームを作成した場合を除き、ボリュームは暗号化されません。

    9. [暗号化][カスタム] を選択した場合は、使用する AWS KMS key を指定する必要があります。[KMS キー] には、AWS KMS key を選択するか、キーの ARN を入力します。対称型のカスタマー管理キーを使用してボリュームを暗号化する場合は、AWS KMS key ポリシーに適切な権限が定義されていることを確認してください。詳細については、「Amazon EBS ボリュームのデータ暗号化」を参照してください。

    10. (オプション) [タグ] では、タスク定義またはサービスからタグを伝達するか、独自のタグを指定することで、Amazon EBS ボリュームにタグを追加できます。

      タスク定義からタグを伝達する場合は、[タグの伝播元][タスク定義] を選択します。サービスからタグを伝達する場合は、[タグの伝播元][サービス] を選択します。[伝播しない] を選択した場合、または値を選択しなかった場合、タグは伝播されません。

      独自のタグを指定する場合は、[タグの追加] を選択し、追加する各タグのキーと値を指定します。

      Amazon EBS ボリュームのタグ付けの詳細については、「Amazon EBS ボリュームのタグ付け」を参照してください。

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

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

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

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

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

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