Amazon ECS での AWS Fargate タスク廃止に備える - Amazon Elastic Container Service

Amazon ECS での AWS Fargate タスク廃止に備える

タスク廃止への準備を行うには、以下の手順を実行します。

  1. タスク廃止の待機期間を設定します。

  2. タスク廃止通知をキャプチャして、チームメンバーに通知します。

  3. タスク廃止の正確なタイミングを制御することはできませんが、force-deployment オプションを使用してサービスを更新することで、タスクの置き換えを制御することができます。

ステップ 1: タスクの待機時間を設定する

Fargate がタスク廃止を開始する時間を設定できます。アップデートをすぐに適用する必要があるワークロードの場合は、即時設定 (0) を選択します。特定の時間帯にしかタスクを停止できない場合など、詳細な制御が必要な場合は、7 日 (7) または 14 日 (14) のオプションを設定します。

新しいプラットフォームバージョンのリビジョンを早く取得できるように、待機時間を短くすることをお勧めします。

待機時間を設定するには、ルートユーザーまたは管理者ユーザーで put-account-setting-default または put-account-setting を実行します。fargateTaskRetirementWaitPeriod オプションを name に使用し、value オプションを次のいずれかの値に設定します。

  • 0 - AWS から通知が送信され、影響を受けたタスクが直ちに廃止されます。

  • 7 - AWS から通知が送信され、7 日間待機してから、影響を受けたタスクの廃止が開始されます。

  • 14 - AWS から通知が送信され、14 日間待機してから、影響を受けたタスクの廃止が開始されます。

デフォルトは 7 日間です。

詳細については、「Amazon Elastic Container Service API リファレンス」の「put-account-setting-default」と「put-account-setting」を参照してください。

ステップ 2: タスク廃止通知をキャプチャしてチームに警告し、措置を講じる

近日実施されるタスク廃止があるときは、AWS が AWS Health ダッシュボード、および AWS アカウント の主要 E メール連絡先にタスク廃止通知を送信します。AWS Health ダッシュボードは、Amazon EventBridge を含めた他の AWS サービスとの統合を多数提供しています。EventBridge を使用して、ChatOps ツールにメッセージを転送して次回の廃止の視認性を高めるなど、タスク廃止通知からオートメーションを構築することができます。AWS HealthAware は、AWS Health ダッシュボードの能力と、組織全体に通知を配布する方法を説明するリソースです。タスク廃止通知は、Slack などのチャットアプリケーションに転送できます。

以下の図は、このソリューションの概要です。

Fargate のタスク廃止通知をキャプチャする Fargate ソリューションを示す図。

以下は、ソリューションの詳細情報です。

  • Fargate がタスク廃止通知を AWS Health ダッシュボードに送信します。

  • AWS Health ダッシュボードが AWS アカウント の主要 E メール連絡先に E メールを送信し、EventBridge に通知します。

  • EventBridge には、廃止通知をキャプチャするルールがあります。

    このルールは、イベント詳細タイプが "AWS Health Event" and the Event Detail Type Code: "AWS_ECS_TASK_PATCHING_RETIREMENT" のイベントを探します。

  • ルールが、Slack Incoming Webhook を使用して情報を Slack に転送する Lambda 関数をトリガーします。詳細については、「Incoming Webhooks」を参照してください。

コード例については、Github で「Capturing AWS Fargate Task Retirement Notifications」を参照してください。

ステップ 3: タスクの置き換えを制御する

タスク廃止の正確なタイミングを制御することはできませんが、待機時間を定義することは可能です。独自のスケジュールに従ってタスクの置き換えを制御する場合は、タスク廃止通知をキャプチャして、タスク廃止の日付を把握することから始めます。その後、サービスを再度デプロイして代替タスクを起動することができます。スタンドアロンタスクも同様に置き換えます。ローリングデプロイを使用するサービスの場合は、廃止の開始時刻の前に、force-deployment オプションがある update-service を使用してサービスを更新します。

次の update-service 例では、force-deployment オプションを使用しています。

aws ecs update-service —-service service_name \ --cluster cluster_name \ --force-new-deployment

ブルー/グリーンデプロイを使用するサービスの場合は、AWS CodeDeploy で新しいデプロイメントを作成する必要があります。デプロイを作成する方法については、AWS Command Line Interface リファレンスの「create-deployment」を参照してください。