AWS SESのバウンスメールをchatworkに通知する

  • このエントリーをはてなブックマークに追加
  • Pocket

SESでバウンスメールが発生した際にメール通知でもいいけど、最近はめっきりチャットサービスに流すのが人気っぽい。

そこで SES -> SNS -> Lambda -> chatwork の流れでやってみたまとめ。

あと、あんまり関係ないけどチャットワーク値上げしてきたね。

使うものと前提

使うもの

  • AWS SES
  • AWS SNS
  • AWS Lambda
  • Chatwork API

前提

  • SESにドメインが設定済み
  • chatwork APIは既に持っていること

設定の流れ

  1. SNSにバウンスを受けるトピックを作成
  2. SESのNotificationsにさっきのトピックを設定
  3. SNSの受け取りをフックしてAPIを叩くLambdaを作成

2と3はどっちからでもOK.

SNSにトピックを作成

まず、SESのバウンスメールを受け取るトピックを作成する。

特に注意点等はないが、SESを作成したリージョンと合わせないとイクナイ(?(うろ覚え)

“us-west-2(オレゴン)” に “hogehoge” トピックを作成。

aws-sns-topic

aws-sns-topic02

トピックはこれでOK.

SESのNotificationsにトピックを設定

続いてSESのDomainsのNotificationsにトピックを設定する。
以下の項目に対して先ほど作ったhogehogeトピックを割り当てる。

  • Bounce Notifications SNS Topic
  • Complaint Notifications SNS Topic

aws-ses-notifications

以下のように指定する。

aws-ses-notifications-edit

Notificationsの「Current notification configuration:」が更新される。

aws-ses-notifications02

SESの設定はこれでOK.

chatworkに通知するLambdaを作成

これからLambda関数を作っていく。
今回はNode.jsで作成。

Node_modulesを使いたい場合は一緒にデプロイしないとアカンので先にプログラムから作成。

chatworkに通知するプログラム

requestモジュールを使うのでインストール。

処理を書いていく。

index.js

とりいそぎ準備完了。
ディレクトリはこうなってる。

これらをzipにしてLambdaにアップロードするのでまずはアーカイブ化する。
この時に親ディレクトリごとzipにしてしまうとnode_modulesが読み込めなくなるっぽい。

しっかりファイルを指定して圧縮する。

Lambdaを作成

プログラムもできたのでLambdaを作成していく。

Step 1

今回はこのStepは不要なのでSkipする。

aws-lamdba-create01

Step 2

関数の名前など必須項目を入力する。

先ほど作成したzipファイルをここでアップロードするが、index.jsの名前を変更している場合はHandlerを変更する必要があるので注意。

例)
index.js => index.handler
app.js => app.handler

aws-lamdba-create02

Step 3

確認画面なので問題なければ [Create function]を押して完了。

バウンスメールをテストする

バウンスメールのテスト用にAmazonがメールアドレスを用意してくれてる。
https://docs.aws.amazon.com/ja_jp/ses/latest/DeveloperGuide/mailbox-simulator.html

SES – [Domains] – [Send a Test Email] を選択してテストメールを送信してみる。

aws-sendtestemail

送信すると程なくしてchatworkに通知される。

aws-lamdba-chatwork

enjoy!

  • このエントリーをはてなブックマークに追加
  • Pocket

SNSでもご購読できます。

コメントを残す

*