こんにちは、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を利用する上で知っておくべきことが記されていると思います。
より実践的な知識やノウハウを身に着けたい方、初学者から一皮むけたい方におすすめです。