俺イケ!!!

俺よりイケてないエンジニアはいない

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

AWS slack

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

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

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

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

やりたかったのはメールヘッダに[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

18 Sep 2015 #blog