やりたいこと
Stackdriverで検知したアラートをSQSにつっこんで、その後ごにょごにょしたい。
つかったもの
- Stackdriver
- アラート内容をWebhookで投げる。
- AWS API Gateway
- JSONを受け取ってSQSにつっこむ。
- AWS SQS
- つっこまれる。
やりかた
AWS IAM
AWS SQS
今回はFIFOタイプを選択しました。
__コンテンツに基づく重複排除__はチェックONにします。
そのほかはデフォルトで作りました。
AWS API Gateway
__パス上書き(省略可能)__はSQSの__URL__後半(012345678901/sqs_queue_name)を設定。
__実行ロール__は先ほど作成したIAMロールのarnを設定。
__メソッドリクエスト__と__統合リクエスト__を設定します。
__メソッドリクエスト__は、こんな感じで設定しました。
実際はAPIキーを設定した方がよいかと思います。
下部にスクロールして、__HTTPヘッダー__と__マッピングテンプレート__を設定します。
HTTPヘッダー
名前 | マッピング元 | キャッシュ |
---|---|---|
Content-Type | 'application/x-www-form-urlencoded' | OFF |
マッピングテンプレート
リクエスト本文のパススルー | Content-Type | テンプレート |
---|---|---|
なし | application/json | Action=SendMessage&MessageGroupId=hoge&MessageBody=$input.body |
Stackdriver
Webhookの設定
Webhookの設定を作ります。
__ENDPOINT URL__は、先ほど控えたURLにメソッド(/messages)を追加して記載します。
アラートの作成
今回はGCEインスタンスのUptime監視データが欠損したらアラートを飛ばすように設定しました。
__Notifications__に先ほど作成したWebhookを設定します。
うごかしてみる
ログをみてみる
初めてAPIGateway使ったので、色々ハマりましてログが役立ちました。
ちなみにcurlでテストする際は下記コマンドでテストできました。
curl -H "Content-Type: application/json" -D - -X POST -d '{"hogehoge": "fugafuga"}' https://hogehoge.execute-api.ap-northeast-1.amazonaws.com/stackdrivertest/messages
参考
下記記事を参考にさせて頂きました。
ありがとうございます。
API Gateway 経由で SQS へメッセージを送る
https://qiita.com/itooww/items/df5efc6df64fae386e4c