CloudWatch&SNSでメール通知

最近、仕事でCloudWatchをしっかり使うようになったので、勉強がてらCloudWatchでメール通知の設定をしてみた。

# 動画
<iframe width="560" height="315" src="https://www.youtube.com/embed/sIBraS5g4Qw" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

# 環境構築
ElasticBeanstalkというサービスを使ってサクッと環境を用意します。
このサービスを使うと、AWS側で用意してあるテンプレートに簡単な設定を加えるだけで、サーバー環境を一瞬で作成できてしまう！
「Create Application」を押下。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/558865/f38a4885-0112-cd74-a085-9e409621c2af.png)
アプリケーション名を入力後、プラットフォームを選択して「アプリケーション作成」。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/558865/3e6cf1fe-296c-7c64-1c05-8a9d77ed5345.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/558865/ecb7419a-fc22-b23d-f139-75284ee813fd.png)
以下の画面が出たら作成完了です。(5分ほどかかった気がする)
「環境に移動する」でサンプリアプリにアクセスすることができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/558865/e99a8fc0-7ffc-e82e-cd7c-20c3356435fd.png)

# SNS設定
次はメッセージ送信サービスのSNS設定です。
SNSは他サービスから通知がくると、SNSに登録してある連絡先にメッセージを一括送信します。
トピック名を入力して「次のステップ」へ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/558865/a6626977-c716-7415-bd98-b9c77f3af744.png)
表示名のみ入力し、トピック作成。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/558865/ed5d93b7-8337-0228-9e49-3a6bbbc0f82d.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/558865/b0246169-f137-8aa1-ef2f-3b81c4f91664.png)
次にサブスクリプションを作成する。ここで送信したい連絡先を登録します。
トピックに対して通知がくると、サブスクリプションにメッセージを送信する仕組みです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/558865/925c4a86-2b2d-a765-d4fe-e069f06f7a2c.png)
プロトコルとエンドポイントを入力して「サブスクリプションの作成」。
今回はメール送信なので、プロトコルは「Eメール」を選択、エンドポイントはメールアドレスを入力。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/558865/07e71f7a-0c43-5099-477d-db0c8e0a13ca.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/558865/b3fd94e8-b814-ef8b-244a-1a6c2fa1bd39.png)
サブスクリプションを作成すると、メールアドレスの認証が必要です。
認証前はステータスが「保留中の確認」になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/558865/c0e21754-e95c-2fb8-9b2a-dd835aa3c763.png)
届いたメールに記載されたURLにアクセスして認証。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/558865/502c0ba7-c26e-ff59-3df8-3410a1b125e3.png)
認証完了するとステータスが「確認済み」に変わる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/558865/e3fdb36f-b0ab-c75d-c6bb-a911e07a40e1.png)

# CloudWatch設定
次はCloudWatchのアラームの設定です。
ElasticBeanstalkで自動作成されたアラームがありますが、今回の検証には使いづらいので新しく作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/558865/2ee43594-563d-1153-9a67-223267621ab6.png)
ElasticBeanstalkの環境状態を表すメトリクスを選択。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/558865/04f82dc6-5be0-6d83-2b61-b3dfd3e28612.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/558865/2eb7c2a0-8672-6c21-d822-94812863f4ce.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/558865/35810fc2-c47e-e023-a2af-9344614c0528.png)
アラームを出しやすくするために、統計を「最大」と期間を「１分」に変更。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/558865/65776fd9-a023-c423-5dd4-8ed9a50f436c.png)
閾値を１よりも大きいにして次へ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/558865/d03c92ca-d072-29d8-14b3-f8909a76278b.png)
先ほど作成したトピックを通知の送信先に指定し次へ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/558865/c0f6fb97-53c0-bc13-2a61-e041e0b2cf6d.png)
名前と説明を入れて次へ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/558865/1162eb3e-5f5f-e5ce-113e-56839fa363a4.png)
プレビューで設定内容を確認して、アラーム作成。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/558865/2f196ee9-e194-e3f2-cb10-61b99ec81f90.png)

# 動作確認
以下のようにElasticBeanstalkで自動作成されたEC2を終了することによって、意図的にアラームを起こします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/558865/f40ee324-6272-9b5c-598e-e01c9db0274e.png)
EC2をシャットダウンすると、ElasticBeanstalkのヘルス状態が「不明」に変わる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/558865/acff18b0-9d6a-4bf0-5f5f-3e84e420049c.png)
１分後ぐらいにCloudWatchで、先ほど作成したアラームが発生する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/558865/5f3bd9c9-5d0b-800a-ad9d-5a3b187546e3.png)
アラーム通知メールが届くことを確認！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/558865/053f09a0-e97f-cabf-1255-f3e642f062bc.png)

# 終わりに
自分で検証するなかで、CloudWatchへの理解(メトリクスなど)も深まりました！
少々面倒に感じることもありますが、インフラ技術の勉強もプログラミングと同じく手を動かすと、使える知識になりますね:relaxed:

# 参考
https://xp-cloud.jp/blog/2017/11/16/1990/