Fargateタスクのメンテナンス通知がきたときの対応
AWSから標題の通知を受け取ったときの対応について記しておきたいと思います。
参考とした情報源は記事の下部に記載しています。
何をすればよいか
AWSから届いたメール、もしくは対象のAWSアカウントのPHD (Personal Health Dashbord) に書かれている通りなのですが、タスクの置き換えが必要です。メンテナンス期限日より前に利用者側で置き換えるのがよさそうです。
Fargateにはスタンドアロンのタスクとサービスタスクの二種類がありますが、どちらの場合もタスクを置き換える必要がある、という点は変わりません。サービスタスクの場合は、新しいデプロイを強制してサービスを更新する形でタスクの置き換えを行うよう推奨されています。
気をつけること
タスクの種類による注意すべき違いは、メンテナンスの対応をAWSに任せた場合、つまり期限日までに利用者側で事前対応を行わなかった場合に何が起きるか、という点だと思います。
スタンドアロンの場合、期限日になると対象のタスクがAWSによって停止されます。ドキュメントを読む限り、停止後に新しいタスクを起動してくれるとは書いてありません。EC2のリタイアメント通知を放置してしまうケースと似ています。
サービスタスクの場合、期限日になると対象のタスクがAWSによって停止されますが、サービスがタスクの必要数を維持しようとするため、新しいタスクが立ち上がってきます。タスク置き換え時の挙動はサービスのデプロイ設定におけるタスクの最小率と最大率の設定に従うため、最小率が100%に設定されていれば、タスクが0台になることはありません。
対象がサービスタスクの場合は、放置しておいても致命的な問題は発生しないかもしれません。しかし、スタンドアロンのタスク数が一台で、その一台がメンテナンスの対象となる場合は問題でしょうから、対応し忘れないようにしないといけません。
対象がサービスタスクの場合であっても、やはり事前に対応した方が安全と思います。というのは、AWSからの案内に記載されているメンテナンス期限日には、何年何月何日とは書いてあるものの、何時とは記載されていなかったからです。不幸にも、デプロイのタイミングとAWS側のメンテナンスが重なるとデプロイが失敗する可能性も考えられます。AWS側のタイミングでタスクの置き換えが行われると困るケースが考えられるのであれば、事前に対応した方がよいでしょう。
以上、Fargateタスクのメンテナンス通知を受け取ったときに必要な対応について記しました。
以下、実際に対応してみて私が気になった点を書いておきます。
なぜメンテナンスが必要なのか
Fargateのサービスタスクに対してメンテナンス通知が来るのは、タスクが実行されている基盤となるホスト、またはプラットフォームのバージョンにセキュリティの問題がある場合、とドキュメントに書かれています。メール、PHDの案内には基盤側のソフトウェアアップデートが継続的に行われるため、という趣旨が書かれています。
なお、基盤側の劣化によってタスクの置き換えが必要になるケースでは、対象がスタンドアロンのタスクの場合は事前に通知がされますが、サービスタスクの場合は通知はありません。
プラットフォームバージョンは上がるのか
すぐ上で、メンテナンスはFargateのプラットフォームバージョンの更新を行うためだと書いたので、新しいデプロイを強制してサービスを更新したら、Fargateのプラットフォームバージョンは上がるんだろうか、と気になりました。
私が見ている範囲では、2022/1/11(火)を期限とするタスクのメンテナンスの対応で更新したサービスのプラットフォームバージョンは1.4.0から上がっていません。少なくともマネジメントコンソール上では変化しませんでした。
ドキュメントには次のように記載があります。
内部的にはパッチを当てているかと思うのですが、今回私が経験したメンテナンス対応のケースではプラットフォームバージョンが上がったのか分かりませんでした。
メンテナンスが完了したかどうか、知る方法はあるか
指示通りにタスクを置き換えたら対応完了としてよいのか、知りたいものですね。PHDの通知が消えるか、更新されることを期待しましたが、PHDに変化はありませんでした。メンテナンス期限日を過ぎた翌日、PHDから対象の通知が消えていました。メンテナンス期限日よりも前に、メンテナンスが完了したかどうか知る手立てはなさそうです。
以上です。読んでいただきありがとうございました。
なお、本記事の情報源は、AWSからのメール内容と以下の公式ドキュメントです。
https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/userguide/task-maintenance.html
https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/userguide/update-service.html
この記事が気に入ったらサポートをしてみませんか?