📝

EC2 で StatusCheckFailed_System が発生した時に OS レベルの再起動では解決できない理由

2025/01/04に公開

結論

OS レベルの再起動では問題のある物理ホストが使用され続けるためです。

StatusCheckFailed_System とは

Amazon EC2 インスタンスのステータスチェック - Amazon Elastic Compute Cloud
EC2 インスタンスには 2 つのステータスチェック項目があります。

  • StatusCheckFailed_System
    • AWS 基盤 (ホスト) 側の問題
  • StatusCheckFailed_Instance
    • EC2 内部の問題

上記のうち、StatusCheckFailed_System が発生した場合の対応は以下の 2 つです。

  • AWS が問題を解決するのを待つ
  • EC2 インスタンスの停止/開始

ここでの注意点として、EC2 における「停止/開始」と「再起動」はイコールではない点です。
各操作については以下の API が該当します。

上記 API 名の通り、停止/開始は EC2 インスタンス自体をいったん停止 (stopped) してから開始する操作であるため、「Reboot」の再起動とは挙動が異なります。

EC2 における「停止/開始」と「再起動」の違いについては以下のドキュメントにまとまっており、StatusCheckFailed_System に関わる部分として「ホストコンピュータ」に関する挙動の違いがあります。
Amazon EC2 インスタンスの状態変更 - Amazon Elastic Compute Cloud

  • 再起動
    • インスタンスは同じホストコンピュータで保持される
  • 停止/開始
    • インスタンスは新しいホストコンピュータに移動される
    • 場合によってはインスタンスが現在のホストに残ることもある

StatusCheckFailed_System が発生する原因は EC2 の物理ホストが原因である点は上述の通りです。
OS レベルの再起動では物理ホストが同じままであるため、StatusCheckFailed_System を自力で解消することはできません。

一方、「停止/開始」であればインスタンス開始時に基本的には物理ホストが移行されるため、StatusCheckFailed_System を自力で解消することができます。

以上より、EC2 で StatusCheckFailed_System が発生した時に OS レベルの再起動ではユーザー側で解決できないため、ユーザー側で可能なアクションとしては EC2 の「停止/開始」となります。

おまけ

ステータスチェックの確認方法については以下のブログをご参照ください。
EC2 インスタンスのステータスチェックが失敗する場合の原因と確認方法 | DevelopersIO

また、StatusCheckFailed_Instance についてはテストすることもできるため、テスト方法については以下のブログをご参照ください。
[小ネタ]StatusCheckFailedのテスト方法(Windows、Linux) | DevelopersIO

前提としてテストできるのは、インスタンスステータスのチェックのみです。システムステータスのチェックはAWSシステム側のステータスなので私たちでどうやってもステータスをいじることができません。

参考資料

Discussion