[アップデート] AWS Fargate でタスクのリタイアメントを制御するためのイベントウィンドウが利用できるようになりました
ECS on Fargate でタスクのリタイアメントを制御するためのイベントウィンドウを設定可能になりました。
EC2 のインスタンスイベントウィンドウに相当する機能が Fargate でも利用できるようになった形です。
AWS Health 経由で通知が来た際に手動で適当なタイミングに再起動している方も多いと思いますが、今後はメンテナンスウィンドウに任せることが可能になります。
仕様確認
Fargate 特有の仕様は特に無く、EC2 のイベントウィンドウと同等の制約があります。
- 週に合計 4 時間分以上のメンテナンスウィンドウが必要
- 複数のイベントウィンドウに分かれていても良いが、各枠は最低でも 2 時間ある必要がある。
- ユーザー側の操作やハードウェア起因などの重要度の高いイベント発生時には、メンテナンスウィンドウ外で再起動がかかる場合もある
Each Amazon EC2 event window must be open for at least 4 hours per week, and each time range must be at least 2 hours long. For large clusters and services we recommend configuring event windows with either long durations (8 hours or more) or more frequent time ranges that occur at least once every 3 days. You can further review considerations for Amazon EC2 event windows in the user guide AWS Fargate ensures that your tasks run for at least 3 days before they are retired, unless stopped by user-initiated actions or critical health events such as degradation of the underlying hardware.
https://docs.aws.amazon.com/AmazonECS/latest/developerguide/prepare-task-retirement.html#prepare-task-retirement-set-time
必須では無いですが、3 日に一度はメンテナンスウィンドウが存在することが推奨されます。
例えば月曜、水曜、金曜の朝などに設定すると良さそうです。
やってみる
下記ドキュメントに沿って試してみます。
アカウント設定での有効化
まず、ECS のアカウント設定で fargateEventWindows を有効化する必要があります。
2025 年 12 月 26 日時点ではマネジメントコンソール経由で設定できないようでした。

そのため、AWS CLI の put-account-setting-default で有効化します。
% aws ecs put-account-setting-default --name fargateEventWindows --value enabled
{
"setting": {
"name": "fargateEventWindows",
"value": "enabled",
"principalArn": "arn:aws:iam::xxxxxxxxxxxx:root",
"type": "user"
}
}
イベントウィンドウ作成
EC2 側の設定から、イベントウィンドウを作成します。
cron 式は UTC で定義する必要があることに注意が必要です。
今回は、日本時間の月曜日、水曜日、金曜日の 4:00~6:59 に設定してみます。
EVENT_WINDOW_ID=$(
aws ec2 create-instance-event-window \
--cron-expression "* 19-21 * * 0,2,4" \
--name fargateEventWindow \
--query 'InstanceEventWindow.InstanceEventWindowId' \
--output text
)
続いて、ECS クラスターを関連付けます。
aws ec2 associate-instance-event-window \
--instance-event-window-id $EVENT_WINDOW_ID \
--association-target "InstanceTags=[{Key=aws:ecs:clusterArn,Value=$CLUSTER_ARN}]"
aws:ecs:serviceArn タグや aws:ecs:fargateTask タグを利用すれば、ECS サービスを関連付けたり、アカウント内の全てのタスクを指定することも可能です。
ECS タスクのリタイアメントが来ないので動作確認ができていないですが、関連付けは正しくできてそうです。

リタイアメントが発生したら結果を更新します。
最後に
ECS on Fargate でも EC2 同様メンテナンスウィンドウを利用できるようになりました。
ECS タスクの自動的な更新が多くて負荷を感じていた方は是非試してみて下さい!








