はじめに
M5StickC with ENV Hatで遊んでいた学習していた所
つい先日、AWS ChatbotがGA!という話題が社内Slackで話されていたので、早速試してみました。
※本来AWS ChatbotはSlackに通知を行うだけでなく、対話型でCommand等も実行できるChatOpsツールです。
https://www.skyarch.net/blog/?p=18393
M5StickCで取得した部屋の温度/湿度をCloudWatch Logsに飛ばしているのですが
こちらをFilter条件でMetrics化し、Alarmを作成、SNSに通知を飛ばし、Chatbotに連携という流れです。
CloudWatch Logs ⇢ CloudWatch Metrics ⇢ CloudWatch Alarm ⇢ SNS ⇢ Chatbot
※AWS ChatbotでSlackに投稿するだけであれば、CloudWatch Logs云々は必要ありません。
連携可能なサービスはこちら
Using AWS Chatbot with other AWS services
https://docs.aws.amazon.com/chatbot/latest/adminguide/related-services.html
出来たもの
DataDog等でよく見る、素敵なグラフ付き通知がSlackに、コードレスで出来ました!
目次
手順の概要
- CloudWatch LogsのFilter条件を作成
- CloudWatch Metricsが作成された事を確認
- SNS Topicを作成
- CloudWatch Alarmを作成
- Chatbot設定を実施
手順
1. CloudWatch LogsのFilter条件を作成
1 |
{"env":{"temperture":27.2,"humidity":36.2,"pressure":100350.8}} |
定期的にCloudWatch Logsに飛んでくる、上記のようなJSON形式のログをMetrics化するため下記Filterを作成
2. CloudWatch Metricsが作成された事を確認
3. SNS Topicを作成
名前以外特に設定無し
4. CloudWatch Alarmを作成
アラーム条件として、室温が28度より大きい、湿度が40%より大きいを設定してみました
5. Chatbot設定を実施
チャットクライアントとして、Slackを選択し作成を進めると
Slack側の認証画面へ遷移し、Botインストール時と同様、アクセス許可を実施後、PostするSlackチャンネル指定を行います。
指定の必要なIAMRoleは自動生成されたもの、ChatbotがサブスクライブするSNSTopicとして 手順3で作成したTopicを指定します。
まとめ
これまではLambda等で自分でコードを書く/保守する必要がありましたが、その必要がないため気軽に利用でき素晴らしいと感じました。
連携先のサービスが増えていくとさらに使いやすい物になりそうです。