AWS EC2のメンテナンス情報の取得


 前書き

AWSのEC2で、クラウドだといっても流石に完全無停止であるわけではないですね。インスタンスの起動しているホスト自体に計画的なメンテナンスがあったりして、計画的に停止・起動の必要が発生したります。
その、計画的なメンテナンス情報は、マネージメントコンソールのイベント情報や、メールでの通知が来たりします。
ただ、複数のアカウントをもっていたりして、全部のアカウントにログインしていなかったり、メールの受信量が多くて埋もれたりすると、意外に見逃しがちになる場合があります。

 複数の方法や能動的な方法で情報を取得

メールだと受動的な情報なので、別の方法で能動的に情報ができないか?
はい、できます。aws cli でインスタンスのステータスで取得ができます。

AWS_ACCESS_KEY_ID=xxxxxxxxxxxxxxxx AWS_SECRET_ACCESS_KEY=xxxxxxxxxxxxxxx ¥
aws ec2 describe-instance-status --instance-id i-xxxxxxxxxxxxxxxxx --query="InstanceStatuses[*].Events"

上記のコマンドでEC2のイベント情報が取得できます。
複数のアカウントを動的に切り替えるために、credentialに記録せずに、環境変数で渡すようにAWS_ACCESS_KEY_IDとAWS_SECRET_ACCESS_KEYをしようしています。

取得したメンテナンス情報

下記が、自分が管理していたEC2で取得できたイベント情報です

[
  [
    {
      "Code" : "instance-stop",
      "Description" : "The instance is running on degraded hardware",
      "NotBefore" : "2018-XX-XXTXX:00:00.000Z"
    }
  ]
]

上記のイベント情報が上がって来たら、インスタンスをSTOP・STARTしましょう。
(※OSのrebootでは、インスタンスが止まらないので起動ホストがかわりませんので、必ずインスタンスのSTOP・STARTが必要です)

 インスタンスをSTOP・STARTした後

すぐに、イベント情報が消えると思っていたのですが、違いました。

[
  [
    {
      "Code" : "instance-stop",
      "Description" : "[Completed] The instance is running on degraded hardware",
      "NotBefore" : "2018-XX-XXTXX:00:00.000Z"
    }
  ]
]

上記のように、Completedという状態の情報が出続けていました。

いつになると消えるのだろう?、もしや「NotBefore」の日付まで出続けるのか?とおもっていたら、再起動後1週間できえました(「NotBefore」の日付より前で消えました)

 後書き

もし、メールやマネージメントコンソールログイン以外でメンテ情報を取得したけれは、cronで設定してみてはどうでしょう