SendGridのParse Webhookを試してみた

Trigger Tips

Posted on Jan 18


こんにちは、Cloud Automator開発チームの柳瀬です。

以前のブログにも記載しておりますが、Cloud Automatorは開発チームで作成しているコア機能に加え、いくつかのWebサービスを利用して動作しております。
ジョブ実行結果のメールレポートにはSendGridを利用しておりますが、今回はSendGridのParse Webhookについてご紹介したいと思います。 この機能は、以下のようにSendGridにメールを送信すると指定したURLにHTTPのPOSTリクエストを送信出来るというものです。
SendGridはメール配信のサービスというイメージでしたが、こういったユニークな使い方も出来るようです。

環境準備

Parse Webhookは動作を確認するためのサンプルアプリケーションが提供されており、こちらのページにその手順も解説されております。今回はこれと同じようにセットアップしてみました。
SendGridからHTTPのPOSTリクエストを受けつけるWEBサーバーはEC2インスタンス(CenOS 7)にサンプルアプリケーションを起動して用意します。

Webサーバーのセットアップ

WEBサーバー側のセットアップは以下のようになります。先ほど紹介したリンクの解説では、ローカル環境のポートをインターネット上にトンネルするためにngrokを使っていますが、今回はEC2インスタンスを利用していますので、セットアップする必要はありません。

必要なパッケージのインストール

$ sudo yum install epel-release
$ sudo yum install git nodejs npm

サンプルアプリケーションのセットアップと起動

.envファイルにはSendGridのユーザー名とパスワードをセットしてください。サンプルアプリケーショを起動すると3000番ポートでWebサーバーが稼働します。

$ git clone https://github.com/scottmotte/sendgrid-parse-api-example.git
$ cd sendgrid-parse-api-example/
$ mv .env.example .env
$ vim .env
$ npm install
$ node app.js

動作確認

稼働させたWebサーバーの/inboundにHTTPのPOSTリクエストを送って、正しく応答することを確認します。

$ curl -I -X POST http://sendgrid.okochang.com:3000/inbound

SendGridの設定

SendGrid側のセットアップもこちらのページにHostnameとUrlの2つを指定するだけの、非常にシンプルなものになっています。
今回はテストでの利用となりますので、Parse Webookのデモ用ドメインであるByMail.inを使ってテストをします。ByMailを使ってテストをする場合はHostnameに「SendGridのユーザー名」.bymail.inと入力します。
Urlには、EC2インスタンスで用意したサーバーの/inboundを指定します。

動作確認

Parse Webhookの一連の動作を確認するためには、先ほどのデモ用ドメインのinboundにメールを送信するだけです。
Webサーバーのコンソールにメールの内容が表示されるので、すぐに分かると思います。サンプルアプリケーションは送信元のメールアドレスに正しく実行されたことを返すようにもなっています。

送信先メールアドレス例:inbound@okochang.bymail.in

また、サンプルアプリケーションのREADMEに書かれているようにDeploy to Herokuボタンをクリックするともっと簡単に環境を用意出来ます。

まとめ

こうしてサンプルアプリケーションが用意されていると、とても理解しやすいと思いました。
Parse Webhookを試してみたきっかけは、この機能を経由してHTTPトリガーを設定したCloud Automatorのジョブを実行出来るかテストするためでした。Cloud AutomatorのHTTPトリガーでは、HTTPのPOSTリクエストを送るときにアクセストークンをヘッダーに入れる必要があります。
SendGridの設定画面を見る限り、POSTリクエスト送信時に任意のヘッダを入れられないようなので、直接Cloud Automatorのジョブを実行させることは出来ないようでした。
とはいえ、サンプルアプリケーションのinbound.jsをカスタマイズするとユーザーは任意の処理を実行させることが出来ますので、これを利用するとメールをトリガーにしたジョブが実行出来そうです。



Search

Tags

By year

  1. 2017 (1)
  2. 2016 (30)
  3. 2015 (31)
  4. 2014 (42)