インプットトランスフォーマーを使ってSNS通知を読みやすくする

はじめに

CloudWatchルールからのSNS通知は、なにも設定しない場合、 JSONで通知されてきます。

JSONだと読み辛いのでインプットトランスフォーマーを設定してみました。

今回はEC2インスタンスがrunnningになったときに リージョンとインスタンスIDだけを通知してくれるよう設定しました。

手順

CloudWatchルールの設定

イベントソース

以下を設定しました。

サービス名 : EC2
イベントタイプ : EC2 Instance State-change Notification
特定の状態 : running

f:id:lovebeerbear:20200709233028p:plain

ターゲット

SNSトピックを選んでインプットトランスフォーマーは以下を設定しました。

■入力パス

{
  "region": "$.region",
  "instance-id": "$.detail.instance-id"
}

■入力テンプレート

"■お知らせ"
"リージョン<region>のインスタンス<instance-id>が起動しました。"

f:id:lovebeerbear:20200709233047p:plain

EC2インスタンスの起動&SNSのメールを確認

EC2インスタンスを起動するとSNSから以下のようなメールが送信されてきました。 ちゃんと人が読める形になってます。

"■お知らせ"
"リージョンap-northeast-1のインスタンスi-0868c4f305564051aが起動しました。"

終わりに

JSONから人の読みやすい形に変えて通知できました。

参考サイト

特定の AWS サービスのイベントタイプがトリガーされた時にカスタム SNS 通知を送信するには、GuardDuty の CloudWatch Events ルールをどのように設定すればよいですか? https://aws.amazon.com/jp/premiumsupport/knowledge-center/guardduty-cloudwatch-sns-rule/

[新機能] Amazon CloudWatch EventsのInput Transformerを試してみた https://dev.classmethod.jp/articles/cloudwatch-events-inputtransfer/