AWS クラウド

【Lambdaいらず】EventBridgeの通知をユーザーライクに整形する方法

こんにちは、yassanです。
今回はEventBridgeの通知をユーザーライクに整形する方法を紹介します。

EventBridgeと言えば、リソース間で値をやり取りするためのサービスです。
フォーマットはJSONですので、リソース間でやり取りする分には非常に勝手が良いです。

しかし、EventBridgeを監視に利用し、イベント駆動でユーザーにメールで通知することを想定した場合、
JSONの形式はユーザーライクとは言いにくいです。

例えば、以下の内容のメールが飛んできます。
(読みやすくするために改行していますが、実際はまとめて下記内容が一行で表記されます。)

{
    "version":"0",
    "id":"xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
    "detail-type":"Backup Job State Change",
    "source":"aws.backup",
    "account":"xxxxxxxxxxx",
    "time":"2022-02-09T06:46:24Z",
    "region":"ap-northeast-1",
    "resources":[],
    "detail":{
        "backupJobId":"xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "backupVaultArn":"arn:aws:backup:ap-northeast-1:xxxxxxxxxxx:backup-vault:Default",
        "backupVaultName":"Default",
        "bytesTransferred":"0",
        "creationDate":"2022-02-09T05:00:00Z",
        "iamRoleArn":"arn:aws:iam::xxxxxxxxxxx:role/service-role/AWSBackupDefaultServiceRole",
        "resourceArn":"arn:aws:rds:ap-northeast-1:xxxxxxxxxxx:cluster:database-1",
        "resourceType":"Aurora",
        "state":"FAILED",
        "statusMessage":"Can't create a snapshot because the database cluster database-1 isn't currently in the available state.",
        "completionDate":"2022-02-09T06:37:56.276Z",
        "startBy":"2022-02-09T13:00:00Z",
        "percentDone":0.0,
        "createdBy":{
            "backupPlanId":"xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
            "backupPlanArn":"arn:aws:backup:ap-northeast-1:xxxxxxxxxxx:backup-plan:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
            "backupPlanVersion":"xxxxxxxxxx",
            "backupPlanRuleId":"xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx"
        }
    }
}

目を凝らしてよく読めば、何のサービスの何のイベントなのかがわかりますが、
やはりこういったことは一目で確認したいものです。

すると、このJSON形式のファイルをユーザーライクにしたいわけですが、、、

その方法として、EventBridgeとSNSの間にLambdaを挟むのが真っ先に思いつきますが、
今回紹介する方法では、Lambdaなしで整形できます。

前置きが長くなりましたが、さっそくやってみます。

EventBridgeの通知をユーザーライクに整形する方法

EvnetBrigeのコンソールから、ルールを作成します。

ターゲットの選択では、SNSトピックを選択します。
その下にある、「入力の設定」のメニューを開きます。
すると、ボタンの中に「入力トランスフォーマー」が現れますので、それを選択します。

上側の入力パスには、
送信するメール文面内で使用する変数をJSONから選択します。

記述はJSON形式で、
Keyが入力テンプレートでKeyとして使用する文字列で、
ValueがJSONから取得するValueのKeyを指定します。

入力テンプレートには、
送信するメール文面を記載します。

今回は、下記のように記載しました。

では、これで設定を完了し、実際にメールを送信してみました。
すると、下記のようなメールが届きました。

"aws.backupのイベントが2022-02-09T15:32:14Zに発生しました。"
"詳細は下記の通りです"
"type: Backup Job State Change"
"state: FAILED"

そのほかの制約

この方法を使った場合、これはどうだろうというのを試してみたので残しておきます。
(記事執筆辞典 2022/2/2時点の情報です。)

まず、入力パスに記述するものは、入力テンプレートに対して必要十分でないとならないか?という点に関しては、
特にそのような制約はありませんでした。

なので、入力テンプレートが決まってない場合は、
JSONですべての情報を出力し、すべて対応付けをしてしまうと楽かもしれません。

次に、入力テンプレートに記述するテキストはダブルクォートで囲わなければならないか?という点に関しては、
このような制約はありました。

ダブルクォートで囲わなければ、エラーになり設定を保存することができません。
また、ダブルクォート内に改行がある場合も、エラーになり設定を保存することができません。

これらの制約を無視してテキストを作成したい場合は、やはりLambdaを中継する必要がありそうです。

以上、EventBridgeの通知をユーザーライクに整形する方法 でした。

AWS学習におすすめの書籍

AWSについて、しっかりと基礎から学びたい、実践的なスキルを身につけたいと考えている方向けに、おすすめの書籍を紹介します。
これらの書籍は、実際にAWSエンジニアとして働く僕が参考にしている書籍です。

AWSエンジニア入門講座――学習ロードマップで体系的に学ぶ

AWSを使いこなすための前提となるITインフラの知識が足りない初学者にとって、どこからどのように学べばよいのかがわかりづらくなっています。そこで本書では、AWS学習サイト運営YouTuberである監修者自身が実サービスの導入で習得しながら体系化した「学習ロードマップ」に沿って、AWSのサービスとIT技術をやさしく解説していきます。

著者が作成した学習ロードマップに沿って、AWSやインフラストラクチャを体系的に学ぶことができます。
付属のロードマップの完成度が高く、学習に迷ったときや復習にも使えます。
これからAWSエンジニアを目指す方や、インフラストラクチャを基礎から学びたい方におすすめです。

Amazon Web Services 業務システム設計・移行ガイド

オンプレミス上に構築された業務システムをAWS上に移行するための「サービスの選定」「ネットワーク設計・構築」「サーバとデータの移し方」「運用・監視体制の構築」など。これまで多くの企業にAWSを導入し、コンサルティングフェーズから実際の設計・開発、運用フェーズまでの全行程に携わってきた著者陣のノウハウを凝縮して、一般的な企業にAWSを導入する際のベストプラクティスをお届けします。

実務を想定した様々なユースケースとそれに対するベストプラクティスを、設計構築から運用まで幅広くカバーして紹介しています。
タイトルからは移行に焦点を当てたように見えますが、僕としては移行に限らずエンタープライズとしてAWSを利用する上で知っておくべきことが記されていると思います。
より実践的な知識やノウハウを身に着けたい方、初学者から一皮むけたい方におすすめです。

-AWS, クラウド
-, ,