【AWS】EC2において、AWS側のホスト問題に対処する方法

<h1>はじめに</h1>
<p>
EC2において、AWS基盤側(仮想サーバーホスト、ハードウェア等)の問題が発生した際に、皆さんは対処してますか。<br>
例え対処しなくても、AWS側が最終的には仮想サーバーホスト再振り分けをするみたいです。
ただ、サービスのダウンタイムを減らすためにも利用者側で先に対処するべきです。
</p>
<h1>今回のゴール</h1>
<p>
AWS基盤側の問題を検知し、利用者側で対処することです。<br>
具体的には、あるCloudWatchのメトリクスをトリガー起点に、CloudWatchアラームのアクションを実行させることです。
</p>

<h1>作業手順</h1>
<p>
これから行う流れとしては、下記のとおりです。<br>
「EC2構築」 → 「CloudWatchアラーム作成」 → 「確認」<br>
</p>

入力あるいはクリック箇所は<b>赤枠</b>でできる限り示します。

EC2コンソールから、Launch instances選択
![2022-10-27 20_14_48-Instances _ EC2 Management Console.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2949977/b620d275-9d75-9629-9f8f-cd85b486b838.jpeg)
Nameを入力
![2022-10-27 20_18_09-EC2 Management Console.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2949977/d4afa2e7-74d1-017f-4645-88b9ea284a96.jpeg)
KeyPairは必要に応じて選択
![2022-10-27 20_18_31-EC2 Management Console.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2949977/a20dd404-d028-9e50-48b2-7464d3313e17.jpeg)
Network設定も必要に応じて設定
![2022-10-27 20_18_38-EC2 Management Console.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2949977/ab0bc1bd-6322-ff1f-9bed-ac3ec899d586.jpeg)
後は、そのままデフォルトでLaunch instance選択
![2022-10-27 20_18_41-EC2 Management Console.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2949977/3c1ebe89-5ea8-1241-1cff-a2da0cf071aa.png)
Pending
![2022-10-27 20_18_57-EC2 Management Console.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2949977/7172cd01-5d20-706a-0b2c-17d0d822dd7e.png)
Running
![2022-10-27 20_19_15-EC2 Management Console.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2949977/02900da3-2d5e-5004-16c2-9f1e07e70064.png)

ここまでがEC2構築です。次からは、CloudWatchアラーム作成方法です。
該当EC2選択 → Status checks選択 → Actions選択 → Create status check alarm選択
![2022-10-27 20_19_34-EC2 Management Console.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2949977/023a0c07-63fc-8b39-0985-c9dd12c011e3.jpeg)
Alarm notificationはオフ(通知が必要な場合は設定おすすめ) → Alarm actionはオン → Recoverを選択
![2022-10-27 20_20_01-Manage CloudWatch alarms _ EC2 Management Console.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2949977/61158095-5540-6a25-7914-ff1f69900347.jpeg)
Alarm thresholds項目はStatus check failed:systemを選択
(上記のメトリクスがAWS基盤側の問題発生したもの)
![2022-10-27 20_20_12-Manage CloudWatch alarms _ EC2 Management Console.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2949977/343bdb35-7d52-08b8-69ad-6281a90cc182.jpeg)
Create選択
![2022-10-27 20_20_27-Manage CloudWatch alarms _ EC2 Management Console.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2949977/722cc1e6-a088-bc23-25f4-1c6961ad3736.jpeg)
CloudWatchコンソールより、該当アラーム確認
![2022-10-27 20_21_28-CloudWatch Management Console.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2949977/be109d22-cb3e-a1e0-0d61-17935f9621f9.jpeg)

ここまでがCloudWatchアラーム作成方法です。次からは、確認です。

下記コマンドで、該当アラーム状態を「ALARM」状態

![2022-10-27 20_25_50-AWS CloudShell.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2949977/b5eea251-454f-352e-b780-751ffa15f61e.jpeg)
~~~
aws cloudwatch set-alarm-state --alarm-name awsec2-i-0e341a4a47976b353-GreaterThanOrEqualToThreshold-StatusCheckFailed_System --state-value ALARM --state-reason TestforAWS
~~~
コマンド実行後
![2022-10-27 20_25_56-AWS CloudShell.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2949977/f45b67f7-ad29-1b21-df32-f85e454b5b5a.png)
EC2コンソールより、該当EC2のAlarm statusがアラーム確認
![2022-10-27 20_26_27-Instances _ EC2 Management Console.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2949977/b7f1fe4d-2fb0-1aa6-7267-433b8cbe306b.jpeg)
CloudWatchコンソールより、該当アラームを確認
(ALARM状態表示後、OK状態)
![2022-10-27 20_49_42-CloudWatch Management Console.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2949977/113fbd0b-fd76-d9ce-2c02-598dd6ae2c9a.png)
Historyを見ると、Type列にActionが実行されていることが確認
![2022-10-27 20_50_06-CloudWatch Management Console.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2949977/1dad7b25-3b46-36d9-02a4-0456b3d9aabc.png)

<h1>まとめ</h1>
<p>EC2において、AWS基盤側の問題発生した際に対処する方法を示しました。まだ、対処していない方はぜひ検討してみてはいかがでしょうか。
</p>