前回 Datadog から SNS 経由で Lambda Function を起動を行いました。
別の方法を探してみた所、Webhook Integration が使えそうだったので試してみました。
1) API Gateway と Lambda Function を作成
API Gateway を trigger として Lambda Function を作成します。APIへは AccessKey認証 とします。
今回使用した Lambda Function は、受け取った内容をそのまま Slack へポストするだけの物です。
2) CloudFront Distribution 作成
API Gateway の Endpoint をそのまま叩けば良いかと考えたのですが、Datadog の Webhook が SSLv3 を使用しているようで以下のようなエラーが発生します。
Datadog 側での設定変更は無いようだったので、CloudFront を挟む事で回避させます。
Origin Domain Name へ API Gateway の Invoke URL を入力します。 (Origin Path、Origin ID は自動的に入力されます。)
また、AccessKey認証のため WhiteList Headers に x-api-key を設定します。
3) Datadog Webhook Integration 設定
Integration → Webhooks → Configuration に CloudFrontのエンドポイントと API Gateway の API Key を設定します。
正常に登録できていれば、Monitor の Nortify 設定で Webhook: 〜 が選択できるようになります。
実行例
Datadogのアラート発行をトリガーに、Lambda Function が起動した事を確認できます。
- Lambda Function Log
- Slack
CloudFront を介す必要がありますが、 メッセージのカスタマイズもある程度可能なため、 SNSでの通知より柔軟に処理設定できるのではないでしょうか。
- 参考URL