CloudWatch Eventsでメール通知をしてみる

## cloudwatch eventsとは？

イベントソースを定義することでリソースの変更をリアルタイムに取得し、
AWSのアクションをトリガーすることができます。
とりあえずAPIで取ってきたものに対してなにかアクションを行うようなことをします。

## 構成図

今回の構成図は以下で、シンプルです。
EC2インスタンスが停止されるとSNSでメールが来る仕組みを作りたいと思います。

![2# CloudWatch Eventsでメール通知をしてみる - diagrams.net - Go.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/451c6f3d-ce6e-f8ae-bf15-497ab61c6754.png)


## 作成

### 目次

1. EC2インスタンスの作成
2. SNSトピックの作成
3. cloudwatch eventsの作成
4. アラートの発火

### EC2インスタンスの作成

今回は省略します
作成方法は [こちら]() をごらんください

### SNSトピックの作成

- 移動

ホーム > SNS > トピック から、トピックの作成を行います。

![2021-04-08 1Simple Notification Service - Google Chrome 2021-0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/732f14cc-e74f-2d38-668b-a30ab6b163a7.png)


- トピックの作成

トピックの作成を行います。
タイプはベストエフォート型のスタンダードで、
名前・表示名ともに `cloudwatch-ec2-notification` とします。
それ以外は特に変更せずに作成を行います。

![2021-04-08 2Simple Notification Service - Google Chrome 2021-0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/bb535716-8a35-5805-1105-4a1f8ed812db.png)


- トピックの作成が完了

トピックの作成が完了しました。

![2021-04-08 3Simple Notification Service - Google Chrome 2021-0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/ba0de4b9-d6d1-5406-adb1-fecf5976453e.png)


- サブスクリプションの作成

サブスクリプションの作成を行います。
作成方法は↑の画面の下の方に `サブスクリプションの作成` のボタンがあるのでそこから進みます。

![2021-04-08 4Simple Notification Service - Google Chrome 2021-0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/433d9c0c-dfef-98e2-0ea5-d8f0b1c44cbe.png)


- サブスクリプションの詳細を設定

サブスクリプションの詳細を決めます。
こちらは、通知先を記載する箇所になります。
プロトコルはどんな方法で通知するのかの方法でEメールに、
エンドポイントは通知先のメールアドレスを記載します。
それ以外は特に記載せず作成を行います。

![2021-04-08 5Simple Notification Service - Google Chrome 2021-0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/13322f20-3d1e-3cb0-b2fc-1c6d5f456a94.png)


- サブスクリプションの作成完了

サブスクリプションが作成されました

![2021-04-08 6Simple Notification Service - Google Chrome 2021-0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/8ee42bc0-aae1-fa23-de07-85ba72d5ad35.png)


- サブスクリプションの承認

現在、サブスクリプションが保留中になっているのでメールで承認します。

![2021-04-08 7Simple Notification Service - Google Chrome 2021-0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/5951621e-931f-968e-de22-f8f87d8954d8.png)


メールに以下のように承認メールが来ているので `Confirm subscription` を押すと承認することが出来ます。

![2021-04-08 8AWS Notification - Subscription Confirmation - s13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/413f91be-5214-fba8-b59e-164d0e94ccdc.png)


承認完了画面に切り替わりました。

![2021-04-08 9https___sns.ap-northeast-1.amazonaws.com_confirmat.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/a712fa44-c5e6-d2d3-29ab-fb7870e63275.png)


SNSのサブスクリプションをリロードすると以下のように承認済みになりました。

![2021-04-08 10Simple Notification Service - Google Chrome 2021-0.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/28431dc3-b057-64b0-1773-247b28e1450b.png)


### cloudwatch eventsの作成

- 移動

ホーム > cloudwatch > イベント > ルール から ルールの作成を行います。

![2021-04-08 11CloudWatch Management Console - Google Chrome 2021.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/4b59de7a-c34d-12c1-a6e4-828b92a67ab8.png)


- ステップ 1: ルールを作成する - イベントソース

まずはイベントソースを作成します。
イベントパターンとしては、イベントが一致したときの設定です。
サービス名はEC2
イベントタイプはEC2 Instance State-change Notification
特定のインスタンスが状態はstoppedになったときに、トリガーを発火します。

![2021-04-08 12CloudWatch Management Console - Google Chrome 2021.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/da05f221-9040-12c6-6b0f-53a8744bd554.png)


- ステップ 1: ルールを作成する - ターゲット

ターゲットは先ほど作成したSNSトピックを設定とします。
こちらで設定を完了として、詳細設定に移ります。

![2021-04-08 13CloudWatch Management Console - Google Chrome 2021.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/8f078986-3d14-333c-ead0-06f7b3d974e2.png)


- ステップ 2: ルールの詳細を設定する

ルールの名前と説明を記載します。
どちらも `ec2-alart` と、ルールの作成を行います。

![2021-04-08 14CloudWatch Management Console - Google Chrome 2021.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/6f26376a-647f-2404-5535-823ae48d6347.png)


- ルールの設定完了

ルールが設定されました。

![2021-04-08 15CloudWatch Management Console - Google Chrome 2021.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/ea319664-d327-a092-cf7f-95a8159741e4.png)

### アラートの発火

- インスタンスの停止

トリガーとしてインスタンスを停止させます。
停止させました

![2021-04-08 16インスタンス _ EC2 Management Console - Google Chrome 20.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/d160e0b3-c353-94e8-adfe-a73a50b5cab2.png)


- メールの確認

メールが飛んできましたーわーい
インスタンスが停止しました的なことが見受けられます

![2021-04-08 17AWS Notification Message - s13h043@gmail.com - Gma.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/129517/d18c0c4e-909d-ee84-ac95-af63b063d362.png)


## 勉強後イメージ

やってみたほうがイメージついたかも。
cloudwatch eventsではSNSの設定はできなさそうなのねー