

# AWS Fargate on Amazon ECS のタスクの廃止とメンテナンス
<a name="task-maintenance"></a>

AWS は、AWS Fargate の基盤インフラストラクチャを維持する責任を負います。AWS は、プラットフォームバージョンのリビジョンを、インフラストラクチャ用の新しいリビジョンに置き換える必要があるタイミングを決定します。これはタスクの廃止と呼ばれます。プラットフォームバージョンのリビジョンが廃止されると、AWS からタスクの廃止通知が送信されます。サポート対象のプラットフォームバージョンを定期的に更新して、Fargate ランタイムソフトウェアと、オペレーティングシステムやコンテナランタイムなどの内在的な依存関係の更新を含む新しいリビジョンを導入しています。新しいリビジョンが利用可能になった後、すべてのお客様のワークロードが Fargate プラットフォームバージョンの最新リビジョンで実行されるように、古いリビジョンを廃止します。リビジョンが廃止されると、そのリビジョンで実行されていたすべてのタスクが停止します。

Amazon ECS タスクは、サービスタスクまたはスタンドアロンタスクのどちらかに分類されます。サービスタスクは、Amazon ECS サービスの一部としてデプロイされ、Amazon ECS スケジュールによって制御されます。詳細については、「[Amazon ECS サービス](ecs_services.md)」を参照してください。スタンドアロンタスクとは、Amazon ECS `RunTask` API によって開始されるタスクであり、直接または、Amazon EventBridge によって開始されるスケジュールされたタスク、AWS Batch、AWS Step Functions などの外部スケジューラにより開始されます。Amazon ECS スケジューラはタスクを自動的に置き換えるため、サービスタスクのタスク廃止への対応のために措置を講じる必要はありません。

スタンドアロンタスクについては、タスク廃止への対応として追加の処理を実行する必要が生じる場合があります。詳細については、「[Amazon ECS はスタンドアロンタスクを自動的に処理できますか?](#task-retirement-standalone-tasks)」を参照してください。

サービスタスクについては、AWS よりも前にこれらのタスクを置き換える場合を除き、タスク廃止に対する措置を講じる必要はありません。Amazon ECS スケジューラーはタスクを停止すると、`maximumPercent` を使用して新しいタスクを起動し、サービスに必要な数を維持しようとします。ベストプラクティスに従って、タスクの廃止の影響を最小限に抑えます。REPLICA サービススケジューラを使用するサービスのデフォルトの `maximumPercent` 値は 200% です。そのため、AWS Fargate が廃止タスクを開始すると、Amazon ECS はまず新しいタスクをスケジュールし、それが実行されるのを待ってから、古いタスクを廃止します。`maximumPercent` 値を 100% に設定すると、Amazon ECS は最初にタスクを停止し、次にタスクを置き換えます。

スタンドアロンタスクの廃止では、AWS タスク廃止日およびそれ以降のタスクを停止します。タスクが停止したとき、Amazon ECS は代替のタスクを起動しません。これらのタスクを継続して実行する必要がある場合は、通知で示された時間より前に、実行中のタスクを停止し、代替タスクを起動する必要があります。そのためユーザーには、スタンドアロンタスクの状態をモニタリングすることと、必要に応じて停止したタスクを置き換えるロジックの実装が推奨されます。

タスクが停止したシナリオに関係なく、`describe-tasks` を実行することができます。レスポンス内の `stoppedReason` は `ECS is performing maintenance on the underlying infrastructure hosting the task` です。

タスクのメンテナンスは、新しいプラットフォームバージョンのリビジョンを新しいリビジョンで置き換える必要があるときに適用されます。内在する Fargate ホストに問題がある場合、Amazon ECS はタスク終了通知を行わず、ホストを交換します。

## タスク廃止通知の概要
<a name="task-retirement-notice"></a>

AWS がプラットフォームバージョンリビジョンを要廃止としてマークすると、そのプラットフォームバージョンリビジョンで実行されているすべてのタスクがすべてのリージョンで特定されます。

以下の図は、新しいリビジョンの起動からプラットフォームリビジョンの廃止までの、Fargate プラットフォームバージョンリビジョンのライフサイクルを示しています。

![\[Fargate のタスク廃止ライフサイクルを示す図。\]](http://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/images/fargate-task-retirement.png)


以下は、ライフサイクルの詳細情報です。
+ 新しいプラットフォームバージョンリビジョンが起動されたら、新しいタスクのすべてがこのリビジョンでスケジュールされます。
+ 実行されているスケジュール済みの既存のタスクは、タスクの期間が終わるまで元々設定されていたリビジョンに残り、新しいリビジョンには移行されません。
+ 新しいタスク (サービスの更新や Fargate のタスク廃止の一環として行われるタスクなど) は、起動時に利用可能な最新のプラットフォームバージョンリビジョンに設定されます。

タスク廃止通知は、AWS Health ダッシュボード、および登録された E メールアドレスへの E メールを通じて送信され、以下の情報が含まれています。
+ タスクの廃止日 - タスクは、この日またはそれ以降に停止されます。
+ タスクの ID (スタンドアロンタスクの場合)。
+ サービスが実行されるクラスターの ID とサービスの ID (サービスタスクの場合)。
+ 次に実行する必要があるステップ。

通常、AWS リージョン のサービスタスクとスタンドアロンのタスクについて、それぞれ 1 件の通知が送信されます。ただし、場合によっては、タスクタイプごとに複数のイベントを受け取ることがあります。たとえば、廃止するタスクが多すぎて通知メカニズムの制限を超える場合などです。

廃止がスケジュールされているタスクは次の方法で識別できます。
+ Health Dashboard 

  AWS Health 通知は Amazon EventBridge 経由で Amazon Simple Storage Service などのアーカイブストレージに送信すること、AWS Lambda 関数の実行などの自動化されたアクションを取ること、または Amazon Simple Notification Service などのその他の通知システムに送信することができます。詳細については「[Amazon EventBridge による AWS Health イベントのモニタリング](https://docs.aws.amazon.com/health/latest/ug/cloudwatch-events-health.html)」を参照してください。Amazon Chime、Slack、または Microsoft Teams に通知を送信するための設定例については、GitHub の「[AWS Health Aware](https://github.com/aws-samples/aws-health-aware)」リポジトリを参照してください。

  EventBridge イベントの例を次に示します。

  ```
  {
      "version": "0",
      "id": "3c268027-f43c-0171-7425-1d799EXAMPLE",
      "detail-type": "AWS Health Event",
      "source": "aws.health",
      "account": "123456789012",
      "time": "2023-08-16T23:18:51Z",
      "region": "us-east-1",
      "resources": [
          "cluster|service",
          "cluster|service"
      ],
      "detail": {
          "eventArn": "arn:aws:health:us-east-1::event/ECS/AWS_ECS_TASK_PATCHING_RETIREMENT/AWS_ECS_TASK_PATCHING_RETIREMENT_test1",
          "service": "ECS",
          "eventScopeCode": "ACCOUNT_SPECIFIC",
          "communicationId": "7988399e2e6fb0b905ddc88e0e2de1fd17e4c9fa60349577446d95a18EXAMPLE",
          "lastUpdatedTime": "Wed, 16 Aug 2023 23:18:52 GMT",
          "eventRegion": "us-east-1",
          "eventTypeCode": "AWS_ECS_TASK_PATCHING_RETIREMENT",
          "eventTypeCategory": "scheduledChange",
          "startTime": "Wed, 16 Aug 2023 23:18:51 GMT",
          "endTime": "Fri, 18 Aug 2023 23:18:51 GMT",
          "eventDescription": [
              {
                  "language": "en_US",
                  "latestDescription": "\\nA software update has been deployed to Fargate which includes CVE patches or other critical patches. No action is required on your part. All new tasks launched automatically uses the latest software version. For existing tasks, your tasks need to be restarted in order for these updates to apply. Your tasks running as part of the following ECS Services will be automatically updated beginning Wed, 16 Aug 2023 23:18:51 GMT.\\n\\nAfter Wed, 16 Aug 2023 23:18:51 GMT, the ECS scheduler will gradually replace these tasks, respecting the deployment settings for your service. Typically, services should see little to no interruption during the update and no action is required. When AWS stops tasks, AWS uses the minimum healthy percent (1) and launches a new task in an attempt to maintain the desired count for the service. By default, the minimum healthy percent of a service is 100 percent, so a new task is started first before a task is stopped. Service tasks are routinely replaced in the same way when you scale the service or deploy configuration changes or deploy task definition revisions. If you would like to control the timing of this restart you can update the service before Wed, 16 Aug 2023 23:18:51 GMT, by running the update-service command from the ECS command-line interface specifying force-new-deployment for services using Rolling update deployment type. For example:\\n\\n$ aws ecs update-service -service service_name \\\n--cluster cluster_name -force-new-deployment\\n\\nFor services using Blue/Green deployment type with AWS CodeDeploy:\\nPlease refer to create-deployment document (2) and create new deployment using same task definition revision.\\n\\nFor further details on ECS deployment types, please refer to ECS Deployment Developer Guide (1).\\nFor further details on Fargate's update process, please refer to the AWS Fargate User Guide (3).\\nIf you have any questions or concerns, please contact AWS Support (4).\\n\\n(1) https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-types.html\\n(2) https://docs.aws.amazon.com/cli/latest/reference/deploy/create-deployment.html\\n(3) https://docs.aws.amazon.com/AmazonECS/latest/userguide/task-maintenance.html\\n(4) https://aws.amazon.com/support\\n\\nA list of your affected resources(s) can be found in the 'Affected resources' tab in the 'Cluster/ Service' format in the AWS Health Dashboard. \\n\\n"
              }
          ],
        "affectedEntities": [
                  {
                      "entityValue": "arn:aws:ecs:eu-west-1:111222333444:task/examplecluster/00805ce1d81940b5a37398e5a2c23333"
                  },
                  {
                      "entityValue": "arn:aws:ecs:eu-west-1:111222333444:task/examplecluster/00805ce1d81940b5a37398e5a2c25555"
                  }
              }
          ]
      }
  }
  ```
+ E メール

  AWS アカウント ID に対して登録された E メールアドレスに E メールが送信されます。

タスク廃止の準備を行う方法については、「[Amazon ECS での AWS Fargate タスク廃止に備える](prepare-task-retirement.md)」を参照してください。

## タスク廃止をオプトアウトすることはできますか?
<a name="task-retirement-opt-out"></a>

いいえ。AWS の責任共有モデルの一環として、AWS は AWS Fargate の基盤となるインフラストラクチャの管理と維持に対する責任を担います。これには、セキュリティと安定性を確保するための定期的なプラットフォーム更新の実施が含まれます。これらの更新は AWS が自動的に適用するため、お客様がオプトアウトすることはできません。これは、EC2 インスタンスでワークロードを実行する代わりに AWS Fargate を使用するときの主なメリットであり、基盤となるプラットフォームを維持する責任は AWS が担います。このモデルは、インフラストラクチャのメンテナンスではなく、アプリケーションに集中することを可能にします。AWS は、これらのプラットフォーム更新を自動的に適用することによって、お客様からのアクションを必要とすることなく、Fargate 環境を最新かつセキュアに保つことができます。これは、Fargate でワークロードを実行するための、セキュアで信頼性が高いコンテナ化された環境の提供に役立ちます。

## 他の AWS サービスを通じてタスク終了通知を受け取ることはできますか?
<a name="task-retirement-event"></a>

AWS は、タスク終了通知を、Health Dashboard および AWS アカウント の主要メール連絡先に送信します。Health Dashboard は、EventBridge を含む他の AWS サービスとのさまざまな統合を提供します。EventBridge を使用して、通知の可視性を自動化できます（たとえば、メッセージを ChatOps ツールに転送するなど）。詳細については、「[ソリューションの概要: タスク廃止通知の取得](https://aws.amazon.com/blogs/containers/improving-operational-visibility-with-aws-fargate-task-retirement-notifications/)」を参照してください。

## タスクの廃止はスケジュールされた後に変更できますか?
<a name="task-retirement-change"></a>

 いいえ。スケジュールはタスク廃止の待機時間 (デフォルトで 7 日間) に基づいています。さらに時間が必要な場合は、待機期間を 14 日間に設定することもできます。詳細については、「[ステップ 2: タスク廃止通知をキャプチャしてチームに警告し、措置を講じる](prepare-task-retirement.md#prepare-task-retirement-capture-task-events)」を参照してください。

2025 年 12 月 18 日より、Amazon ECS で Fargate タスク向けの [Amazon EC2 イベントウィンドウ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/event-windows.html)を設定できるようになりました。業務時間中の中断を避けるためにタスク廃止を週末にスケジュールするなど、廃止のタイミングを正確に制御する必要がある場合は、タスク、サービス、またはクラスターに Amazon EC2 イベントウィンドウを設定できます。「[ステップ 1: タスクの待機時間を設定、または Amazon EC2 イベントウィンドウを使用する](prepare-task-retirement.md#prepare-task-retirement-set-time)」を参照してください。この設定の変更は、今後スケジュールされる廃止に適用されます。現在予定されている廃止には影響しません。また、Fargate タスクに Amazon EC2 イベントウィンドウを設定するときは、このウィンドウがタスク廃止の待機時間設定に優先します。ご不明な点がある場合は、サポート までお問い合わせください。

## Amazon ECS はサービスの一部であるタスクをどのように処理しますか?
<a name="task-retirement-service-works"></a>

サービスタスクについては、AWS よりも前にこれらのタスクを置き換える場合を除き、タスク廃止に対応するための措置を講じる必要はありません。Amazon ECS スケジューラは、タスクを停止する際、最小正常稼働率を使用して新しいタスクを起動し、サービスに必要とされる数を維持しようとします。Fargate のタスク廃止による影響を最小限に抑えるには、Amazon ECS のベストプラクティスに従ってワークロードをデプロイする必要があります。例えば、ウェブまたは API サーバーなど、Amazon ECS サービスとしてステートレスアプリケーションをデプロイする場合、お客様は複数のタスクレプリカをデプロイして、minimumHealthyPercent を 100% に設定する必要があります。サービスの最小ヘルス率はデフォルトで 100% です。そのため、Fargate が廃止タスクを開始すると、Amazon ECS はまず新しいタスクをスケジュールし、それが実行されるのを待ってから、古いタスクを廃止します。サービスタスクは、サービスをスケールする、設定変更をデプロイする、またはタスク定義リビジョンをデプロイするときと同じ方法で、タスク廃止の一環として定期的に置き換えられます。タスク廃止プロセスへの準備を行うには、「[Amazon ECS での AWS Fargate タスク廃止に備える](prepare-task-retirement.md)」を参照してください。

## Amazon ECS はスタンドアロンタスクを自動的に処理できますか?
<a name="task-retirement-standalone-tasks"></a>

 いいえ。AWS は、`RunTask` が開始したスタンドアロンタスク、スケジュールされたタスク (EventBridge Scheduler の使用など)、AWS Batch、AWS Step Functions に対する交換タスクを作成できません。Amazon ECS はサービスの一部であるタスクのみを管理します。

## タスク廃止中のサービス可用性のトラブルシューティング
<a name="task-retirement-service-availability"></a>

タスクの廃止中に Amazon ECS が代替タスクを開始できない場合、サービスの可用性に影響が出る可能性があります。これは、次のような誤ったユーザー設定が原因で発生する可能性があります。
+ IAM ロールが欠落しているか、正しく設定されていない
+ ターゲットサブネットの容量不足
+ セキュリティグループの設定ミス
+ タスク定義エラー

Amazon ECS が代替タスクを起動できない場合、廃止されたタスクは代替されずに停止され、その結果、サービスの使用可能な容量が減少し、サービスの中断を引き起こす可能性があります。サービスのタスク数と Amazon CloudWatch メトリクスをモニタリングして、廃止イベント中に代替タスクが正常に起動されることを確認します。

# Amazon ECS での AWS Fargate タスク廃止に備える
<a name="prepare-task-retirement"></a>

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

1. タスク廃止の待機期間を設定するか、Amazon EC2 イベントウィンドウを使用します。

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

1. 強制デプロイオプションでサービスを更新することにより、すべてのサービスのタスクが最新のプラットフォームリビジョンで実行されるようにすることができます。この手順は省略可能です。

## ステップ 1: タスクの待機時間を設定、または Amazon EC2 イベントウィンドウを使用する
<a name="prepare-task-retirement-set-time"></a>

 Fargate がタスク廃止を開始する時刻の設定には、`fargateTaskRetirementWaitPeriod` と `fargateEventWindows` の 2 つのアカウント設定オプションがあります。

**fargateTaskRetirementWaitPeriod アカウント設定の使用**

Fargate がタスク廃止を開始する時間を設定できます。デフォルトの待機時間は 7 日間です。アップデートをすぐに適用する必要があるワークロードの場合は、即時設定 (`0`) を選択します。これより長い時間が必要な場合は、`7` 日または `14` 日オプションを設定します。

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

待機時間を設定するには、ルートユーザーまたは管理者ユーザーで `put-account-setting-default` または `put-account-setting` を実行します。`fargateTaskRetirementWaitPeriod` オプションを `name` に使用し、`value` オプションを次のいずれかの値に設定します。
+ `0` - AWS から通知が送信され、影響を受けたタスクが直ちに廃止されます。
+ `7` - AWS から通知が送信され、7 日間待機してから、影響を受けたタスクの廃止が開始されます。これがデフォルトです。
+ `14` - AWS から通知が送信され、14 日間待機してから、影響を受けたタスクの廃止が開始されます。

詳細については、「Amazon Elastic Container Service API リファレンス」の「[put-account-setting-default](https://docs.aws.amazon.com/cli/latest/reference/ecs/put-account-setting-default.html)」と「[put-account-setting](https://docs.aws.amazon.com/cli/latest/reference/ecs/put-account-setting.html)」を参照してください。

**fargateEventWindows アカウント設定の使用**

2025 年 12 月 18 日より、Amazon ECS で Fargate タスク向けの [Amazon EC2 イベントウィンドウ](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/event-windows.html)を設定できるようになりました。業務時間中の中断を避けるためにタスク廃止を週末にスケジュールするなど、廃止のタイミングを正確に制御する必要がある場合は、タスク、サービス、またはクラスターに Amazon EC2 イベントウィンドウを設定できます。

イベントウィンドウを使用する場合、Fargate は、ユーザーが開始したアクション、または基盤ハードウェアの劣化などの重大な正常性イベントによってタスクが停止された場合を除き、タスクが次に使用可能なウィンドウ内で少なくとも 3 日間実行されてから廃止されるようにします。

`fargateEventWindows` アカウント設定を `enabled` に設定します。`put-account-setting-default` API または `put-account-setting` API のいずれかをルートユーザーまたは管理者ユーザーとして使用できます。

 各 Amazon EC2 イベントウィンドウの時間枠は少なくとも週に 4 時間 (各時間範囲は少なくとも 2 時間) にする必要があります。大規模なクラスターやサービスの場合は、長時間 (8 時間以上) のイベントウィンドウ、または時間範囲がより頻繁に実施される (少なくとも 3 日に 1 度) イベントウィンドウを設定することが推奨されます。Amazon EC2 イベントウィンドウの考慮事項については、[ユーザーガイド](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/event-windows.html#event-windows-considerations)で詳細を確認できます。AWS Fargate は、ユーザーが開始したアクション、または基盤ハードウェアの劣化などの重大な正常性イベントによってタスクが停止された場合を除き、タスクが少なくとも 3 日間実行されてから廃止されるようにします。

**重要**  
イベントウィンドウ内でのタスクの置き換えはベストエフォートです。イベントウィンドウ外でタスクが廃止されていることに気付いた場合は、時間を延長する (8 時間以上) か、頻度を増やす (少なくとも 3 日に 1 度) ことを検討してください。

Amazon EC2 イベントウィンドウを Fargate タスクの廃止に適用する:
+ `fargateEventWindows` アカウント設定を `enabled` に設定します。`put-account-setting-default` API または `put-account-setting` API のいずれかをルートユーザーまたは管理者ユーザーとして使用できます。これは、Fargate タスクに Amazon EC2 イベントウィンドウ機能を使用するための 1 回限りの有効化であることに注意してください。
+ AWS コンソールまたは AWS CLI を使用して Amazon EC2 イベントウィンドウを作成します。CLI を使用してイベントウィンドウを作成するには、時間範囲または cron 式を設定した EC2 `create-instance-event-window` API を使用します。レスポンス内の `InstanceEventWindowId` を記録しておきます。

  ```
  aws ec2 create-instance-event-window \
                      --time-range StartWeekDay=monday,StartHour=2,EndWeekDay=wednesday,EndHour=8 \
                      --tag-specifications "ResourceType=instance-event-window,Tags=[{Key=K1,Value=V1" \
                      --name myEventWindowName
  ```

  また、EC2 イベントウィンドウの作成時には、cron 式を使用することも可能です。

  ```
  aws ec2 create-instance-event-window \
                      --cron-expression "* 21-23 * * 2,3" \
                      --tag-specifications "ResourceType=instance-event-window,Tags=[{Key=K1,Value=V1" \
                      --name myEventWindowName
  ```
+ その後、EC2 `associate-instance-event-window` API を使用して、アカウント内の特定のサービス、クラスター、またはすべてのタスクにイベントウィンドウを関連付けることができます。
  + ECS サービスタスクの場合

    ```
    aws ec2 associate-instance-event-window \
    --instance-event-window-id iew-0abcdef1234567890 \
    --association-target "InstanceTags=[{Key=aws:ecs:serviceArn,Value=your-service-arn}]"
    ```
  + ECS クラスターの場合

    ```
    aws ec2 associate-instance-event-window \
    --instance-event-window-id iew-0abcdef1234567890 \
    --association-target "InstanceTags=[{Key=aws:ecs:clusterArn,Value=your-cluster-arn}]"
    ```
  + イベントウィンドウをアカウント内のすべてのタスクに関連付ける

    ```
    aws ec2 associate-instance-event-window \
    --instance-event-window-id iew-0abcdef1234567890 \
    --association-target "InstanceTags=[{Key=aws:ecs:fargateTask,Value=true}]"
    ```

キーと値のペアを複数使用して、イベントウィンドウを複数のサービスまたはクラスターに関連付けることができます。

Fargate は、各タスクのイベントウィンドウを次の順序で選択します。
+ タスクのサービスに関連付けられたイベントウィンドウがある場合は、そのウィンドウが使用されます。これは、スタンドアロンタスクまたはアンマネージドタスクには適用されません。
+ タスクのクラスターに関連付けられたイベントウィンドウがある場合は、そのウィンドウが使用されます。
+ すべての Fargate タスクに設定されたイベントウィンドウがある場合は、そのウィンドウが使用されます。
+ `fargateTaskRetirementWaitPeriod` 設定は、タスクに一致するイベントウィンドウがない場合に使用されます。

**Fargate タスクのメンテナンス用イベントウィンドウの設定**

異なる可用性要件を持つ複数の ECS サービスが Fargate で実行されている状況を考えてみましょう。こうした状況では、タスクの廃止を正確に制御する必要があります。次のように複数のイベントウィンドウを設定できます。
+ **すべての Fargate タスク向けのデフォルトメンテナンス**: オフピーク時間 (毎日午前 12 時から午前 4 時) に定期的なメンテナンス用のイベントウィンドウを作成し、` aws:ecs:fargateTask` タグを使用してすべての Fargate タスクに関連付けます。
+ **開発クラスター向けの週末限定メンテナンス**: 週末の中断に対応できるサービスが含まれる開発クラスターには、24 時間の週末ウィンドウ (土曜日と日曜日の終日) を作成し、`aws:ecs:clusterArn` タグとクラスター ARN を使用してクラスターに関連付けます。
+ **ミッションクリティカルなサービス向けの制限付きウィンドウ**: 平日に高いアップタイムを維持する必要があるミッションクリティカルな決済処理サービスの場合は、メンテナンスを週末の早朝時間 (土曜日と日曜日の午前12 時から午前 4 時) に制限し、`aws:ecs:serviceArn` タグとサービス ARN を使用して特定のサービスに関連付けます。

この設定では、決済サービスが特定の週末限定ウィンドウ、開発クラスターのサービスとタスクが週末の 24 時間ウィンドウ、他のすべての Fargate タスクがデフォルトの日次メンテナンスウィンドウを使用します。

詳細については、「Amazon Elastic Container Service API リファレンス」の「[put-account-setting-default](https://docs.aws.amazon.com/cli/latest/reference/ecs/put-account-setting-default.html)」と「[put-account-setting](https://docs.aws.amazon.com/cli/latest/reference/ecs/put-account-setting.html)」を参照してください。

## ステップ 2: タスク廃止通知をキャプチャしてチームに警告し、措置を講じる
<a name="prepare-task-retirement-capture-task-events"></a>

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

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

![\[Fargate のタスク廃止通知をキャプチャする Fargate ソリューションを示す図。\]](http://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/images/fargate-task-retirement-solution.png)


以下は、ソリューションの詳細情報です。
+ 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](https://slack.com/marketplace/A0F7XDUAZ-incoming-webhooks)」を参照してください。

コード例については、Github で「[Capturing AWS Fargate Task Retirement Notifications](https://github.com/aws-samples/capturing-aws-fargate-task-retirement-notifications/tree/main)」を参照してください。

## ステップ 3: タスクの置き換えを制御する
<a name="prepare-task-retirement-change-time"></a>

タスク廃止の正確なタイミングを制御することはできませんが、待機時間を定義することは可能です。独自のスケジュールに従ってタスクの置き換えを制御する場合は、タスク廃止通知をキャプチャして、タスク廃止の日付を把握することから始めます。その後、サービスを再度デプロイして代替タスクを起動することができます。スタンドアロンタスクも同様に置き換えます。ローリングデプロイを使用するサービスの場合は、廃止の開始時刻の前に、`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](https://docs.aws.amazon.com/cli/latest/reference/deploy/create-deployment.html)」を参照してください。