AWS からのメールをいい感じに slack に通知するやつ

社内とある一言から話は始まった。

弊社の場合、AWS のアカウントを親アカウント+各プロジェクト毎のアカウント(常時 50 以上はある)といった形で運用しているので AWS SNS を各アカウントに設定するのしんどいのと深淵なる理由により Gmail で受信した AWS のメールを from でフィルタして転送というのもうまくいかなかったので GoogleAppsScript を書いた。

これにトリガーを 1 分周期で回しておくといい感じに slack へメールを投げてくれる。
あとは slack 側で通知させたいチャンネルに Email の通知を流せるように設定しておけば OK。簡単。

こんな感じで通知がきます。

やりたかったのはメールヘッダに[X-AMAZON-MAIL-RELAY-TYPE: notification]っていう丁度いい感じのカスタムヘッダがあったのでこれが来たら slack に投げるってのをやってます。
あといいやり方かどうかわからないですが 1 度転送したメールの判別を考慮するのが面倒だったので Inbox に入ったメールを転送してその後ラベリングとアーカイブしちゃって次見に行った時には Inbox に存在しないようにして複数回メールを投げるのを防いでます。
ちなみに Gmail のフィルタでカスタムヘッダが条件に入れれるようになればこの Script は不要です。

社内が Slack になってからコミュニケーションツールであーだこーだすることが増えた気がしますが、作業環境が改善されていくのを体感できるのはけっこう楽しいのですね!

[追記]
筆者の環境だと Gmail API の叩きすぎで「1 日にサービス gmail を実行した回数が多すぎます。」というエラーが発生しました。
Inbox 内のメールはほとんどない状態で運用していたので制限にひっかからないと思っていたのですがダメだったようなのでお使いの環境ではこの方法は適さない場合があるのでご注意ください。

ここの容量制限には[Gmail の読み取りと書き込み(送信以外)]で 50,000 個/日って書いてるけど、どこでひっかかってるんだ…
https://docs.google.com/macros/dashboard

Built with Hugo
Theme Stack designed by Jimmy