SendGridのイベントデータをMongoDBにストアする方法
- 2015年1月30日
- by SendGrid
- Category: 技術ネタ
この記事は Use a Mongo REST Interface to Store SendGrid Event Data の抄訳です。
SendGridで最も使える機能の一つはEvent Webhookかもしれません(もちろん、メール送信機能を除いてですが)。この機能はメールの送信、開封、迷惑メール報告、クリックなどのイベントを通知してくれます。通知されたデータは、ストアして分析することで真価を発揮します。これには、Keen.ioのようなサービスを利用したり、自分自身でストア(少し手間がかかりますが)することで実現できます。
Event WebhookはJSON形式のデータを任意のURLにPOSTします。まるでMongo RESTインターフェイスのための機能みたいですね!
MongoにはいくつかのコミュニティベースのRESTfulインターフェイスとホスティングサービスがあります。今回はこのうちいくつかをご紹介しますが、Mongoにデータをストアする方法は他にもたくさんあります。
※最小限の設定ですぐにイベントデータをストアする方法についてはmLabの箇所をご覧ください。
Python(自己ホスティング)
KuleはPythonベースのMongoのRESTインターフェイス実装です。
Kuleは/{collection}(例:/sendgrid)へのPOSTリクエストを受け付けます。自身でKuleとMongoをインストールして起動したら、Event Notification(SETTINGS > Mail Settings配下で見つかります)の設定をそのMongoのコレクションURLにPOSTするよう設定変更するだけです。
基本的な設定はこれだけですが、本格的に利用する際には次のことにも気をつけてください。
- ストア先のデータベースとコレクションが作成されているか?もしくは、エラーが発生していないか?
- データベースへのアクセス制御設定は適切か? br>
Kuleの初期設定はオープン状態です。これはそのデータベースに誰でもアクセスできることを意味しています。Kuleでは簡単にアクセス制限をかけることができます。
mLab(クラウドプロバイダー)
REST APIを提供するMongoクラウドプロバイダーはmLab(2016/2/29にMongoLabはmLabになりました)だけではありませんが、Event WebhookのデータをすぐにストアできるAPIを持つプロバイダーはmLabだけです(2014年1月現在)。
mLabにデータをストアする設定手順をご紹介します。
-
mLabにサインアップしてアカウントを作成(無料)します。
-
ログインして適当な名前のデータベース(Sandboxプラン)とコレクションを作成します。
-
APIキーを確認します。
-
Event Notificationの設定を変更します。
SendGridのSETTINGS > Mail Settingsの「Event Notification」をACTIVEにして「HTTP Post URL」にmLabのコレクションURLを設定します。データベース名、コレクション名、APIキーは上記で作成・確認したものに置き換えてください。
https://api.mlab.com/api/1/databases/<データベース名>/collections/<コレクション名>?apiKey=<APIキー>
※参考※ mLab公式ドキュメント
設定したコレクションにデータがストアされていれば、設定は完了です。
まとめ
どのような方法でも構いませんが、SendGridのイベントデータをストアすることを強くお勧めします。イベントデータを分析するための最も詳細な方法だからです。今はそのデータを使うつもりがなくても、状況はいつ変化するかわかりません。コストはほとんどかからないので、そんな時に備えてデータをストアしておきましょう。
データのストアにMongoを選択した場合、mLabまたは、Heroku上で動作する任意のMongo RESTインターフェイスとMongoを組み合わせると、かなりの量のデータを無料でストアすることができます。
様々なユースケースの背景やインテグレーションの成功事例、技術概要については、Event Webhook Guide(英語)をご確認ください。
参考
以下の記事もあわせてご確認ください。
<Event Webhookの概要について>
<Event Webhookのイベントデータの保存/活用方法について>