Functions+SNSを使って、通知内容をいい感じの日本語メールにして通知してみました。SNSおつまみ2023.01.25この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。日本語でメール通知してほしいこんにちは!AWS事業本部のおつまみです。みなさん、特定のセキュリティグループが変更されたことを検知して、メール通知してほしいなぁと思ったことはありますか?私はあります。以下のようなメール通知です。いい感じの方法がないかなぁと探していると、AWSナレッジセンターと弊社ブログにどんぴしゃな記事を見つけました。以下のご要望がある方は、下記記事をご参考ください。今回構築する構成です。EventBridge:セキュリティグループの変更イベントを検知。EventBridgeの入力トランスフォーマーで、メールの件名と本文を設定。呼び出し、件名と本文を指定して通知。※SNSをEventBridgeのターゲットに直接指定するとメール件名の指定ができません。SNS:指定したアドレス宛にメール通知。前提として、CloudTrailが既に有効化されている環境で構築します。CloudFormationテンプレートを準備まずは通知元となるセキュリティグループやその他リソースののテンプレートを用意します。SecurityGroupテンプレート作成時のポイント通知用のテンプレートでセキュリティグループを指定できるようにOutputセクションで値を出力しています。続いて、今回のメインとなる通知用のテンプレートです。変更されたことを検知しました。\n詳細は次のとおりです。\nEC2コンソール画面の左メニュータグより「セキュリティグループ」を選択します。\n検索ウィンドウで「セキュリティグループID」を入力し、セキュリティグループが正しいことを確認してください。\nCloudTrailコンソール画面の左メニュータグより「イベント履歴」を選択します。\n検索ウィンドウで[イベントID]を選択し、「CloudTrailイベントID」入力します。イベント詳細が確認できます。PublishRole.Arnテンプレート作成時のポイントEventBridgeのルールのEventPatternで監視対象のリソースとイベント内容を指定しています。RevokeSecurityGroupEgressを指定しています。(114〜128行目)EventBridgeのルールのInputTransformerでメールに通知する値の取得、およびメール件名・メッセージを設定しています。InputPathsMapではメールに通知する値を取得するために、EventBridgeに送られてきたJSONログイベントから特定の値を変数として抽出します。セキュリティグループの変更では以下のようなJSONログイベントが送られてきます。"true"}今回はメール通知に含めたい項目として以下を入力パスに指定しました。"$.detail"InputTemplateではメール件名およびメッセージを設定しています。Functionsを挟むと、テンプレートの文字列に\nを入れることで改行ができます。※EventBridgeのターゲットにSNSを直接指定した場合は改行されません。変更されたことを検知しました。\n詳細は次のとおりです。\nEC2コンソール画面の左メニュータグより「セキュリティグループ」を選択します。\n検索ウィンドウで「セキュリティグループID」を入力し、セキュリティグループが正しいことを確認してください。\nCloudTrailコンソール画面の左メニュータグより「イベント履歴」を選択します。\n検索ウィンドウで[イベントID]を選択し、「CloudTrailイベントID」入力します。イベント詳細が確認できます。呼び出すステートマシンを設定します。ParametersでSNSトピック、メール件名、本文を指定します。CloudFromationでデプロイCloudFormationで用意したテンプレートをデプロイします。subscriptionで承認します。設定したセキュリティグループのインバウンドルールを編集してみます。見事メール通知が届きました!おまけとして、メールに記載されているCloudTrailイベントIDをコンソールで検索してみます。ここからより詳細な情報が確認できますね。最後に今回は特定のセキュリティグループが変更されたことを検知して、メール通知させる方法をご紹介しました。EventBridgeに連携できるAPIであれば、色々なサービスと連携して通知が出来そうですね!夢が広がります。どなたかのお役に立てれば幸いです。