SNSのイベント通知メールをEventBridgeで日本語にしてみた
はじめに
こんにちは、 岩崎 です。
以前にS3のイベント通知をSNSを使用してEメールに通知を送信してみました。
しかし、メールを確認してみると本文は全て英語で、何のイベントの通知が来たのか、パッと見て判断できませんでした。
本記事では、EventBridgeを使用して、日本語で任意のメールで通知するようにします。
やってみた
S3バケットの作成と設定
はじめにS3バケットを作成します。
作成後、プロパティのAmazon EventBridgeの編集をクリックします。
このバケット内のすべてのイベントについて Amazon EventBridge に通知を送信するをオンにし、変更を保存します。
SNSの作成と設定
SNSトピックを作成します。 タイプを「スタンダード」にします。 名前を入力します。
その他はすべてデフォルトのまま、トピックを作成します。
作成されたトピックを選択し、サブスクリプションを作成します。 トピックARNで先ほど作成したトピックを選択します。 プロトコルはEメールを選択し、通知したいEメールアドレスを入力します。
設定が終わったら、サブスクリプションの作成します。
EventBridge の作成と設定
EventBridge のルールを作成をクリックします。 名前を入力し、ルールタイプを「イベントパターン」を選択します。
イベントパターンのイベントソースを「AWSサービス」にします。 AWS のサービスを「S3」にします。
イベントタイプを「Amazon S3 イベント通知」にします。
イベントタイプの下にイベントタイプの仕様があるので、「特定のイベント」と「特定のバケット」にします。
特定のイベントは、今回「Object Created」と「Object Deleted」を選択します。 特定のバケットには先ほど作成したバケット名を入力します。 設定すると画像のようになります。
次にターゲットの選択です
ターゲットタイプをAWSのサービス
ターゲットの選択でSNSトピック、トピックは先ほど作成したトピック名を選択します。
追加の設定を行います
ターゲット入力設定を「入力トランスフォーマー」
入力トランスフォーマーを設定をクリックします。
下にスクロールすると、ターゲット入力トランスフォーマーがあるので、下記を入力します。
{"bucketName":"$.detail.bucket.name","eventName":"$.detail-type","objectKey":"$.detail.object.key"}
テンプレートには下記を入力します。
"S3オブジェクト通知"
"<eventName>が発生しました"
"バケット: <bucketName>"
"オブジェクト: <objectKey>"
入力ができたら、確認をクリックします。
その他はデフォルトのままで良いので、次へをクリックしルールを作成します。
確認してみる
実際にバケットにファイルをアップロードしてみます。
無事メールが届きました。
削除した通知もしっかりと届きました。
SNSのみの通知メールからかなり見やすくなったかと思います。
まとめ
本記事では、Amazon S3のイベント通知を従来のSNSを利用した英語のメール通知から、Amazon EventBridgeを活用して日本語でカスタマイズされたメール通知に改善する方法を紹介しました。
EventBridgeと入力トランスフォーマーを組み合わせることで、S3のイベント通知をより見やすく、理解しやすい日本語のメール形式で受け取ることが可能となりました。 これにより、通知内容の把握が容易になり、運用効率の向上が期待できます。
参考になりましたら幸いです。
参考資料
アノテーション株式会社について
アノテーション株式会社はクラスメソッドグループのオペレーション専門特化企業です。サポート・運用・開発保守・情シス・バックオフィスの専門チームが、最新 IT テクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。当社は様々な職種でメンバーを募集しています。「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイトをぜひご覧ください。