Webhookサポートを積極的に拡大中です。新機能: 指数バックオフを使用した自動再試行 — 失敗した配信は30分以内に最大5回再試行されます。近日公開予定:
- チーム全体のデフォルトWebhook URL
- ペイロード検証のための暗号署名
概要
Webhooksは、長時間実行される操作が完了したときに、リアルタイムのHTTP POST通知をサーバーに送信します。ステータスをポーリングする代わりに、アプリケーションは即座に更新を受け取ります。使用例
非同期処理
バッチやクロールが完了したときに通知を受け取ることでポーリングを避ける
パイプライントリガー
データが準備できたときに自動的に下流処理をトリガーする
アラート
完了時にSlack、メール、その他のシステムにアラートを送信する
データ同期
Olostepの結果とデータベースを同期させる
サポートされているイベント
batch.completed
batch.completed
バッチの処理が終了したときに発生します(すべてのアイテムが完了または失敗した場合)。
crawl.completed
crawl.completed
クロールが終了し、発見されたすべてのページが処理されたときに発生します。
Webhooksの設定
リソースを作成する際にwebhookを渡します。このURLが完了通知を受け取ります。
パラメータ名: 標準のパラメータは
webhookです。後方互換性のために、webhook_urlもエイリアスとして受け入れられます。Webhookペイロード
すべてのWebhookペイロードは統一されたエンベロープ構造に従います:エンベロープフィールド
再試行の動作
失敗したWebhook配信は、30分間のウィンドウで指数バックオフを使用して自動的に再試行されます:
合計再試行ウィンドウ: 30分
リクエストごとのタイムアウト: 30秒
成功と見なされる条件
エンドポイントは30秒以内に2xxステータスコードを返す必要があります。それ以外の応答は再試行をトリガーします。
ベストプラクティス
迅速に応答し、非同期で処理する
迅速に応答し、非同期で処理する
200 OKを即座に返し、Webhookを非同期で処理します。処理が30秒以上かかる場合、再試行が行われ、重複配信が発生します。冪等性のあるハンドラーを実装する
冪等性のあるハンドラーを実装する
idフィールドを使用して重複を排除します。処理済みのイベントIDを保存し、重複をスキップします。Webhookの受信をログに記録する
Webhookの受信をログに記録する
デバッグのためにすべてのWebhook受信をログに記録します。イベントID、タイムスタンプ、処理結果を含めます。
HTTPSエンドポイントを使用する
HTTPSエンドポイントを使用する
Webhookエンドポイントには常にHTTPSを使用してください。HTTPエンドポイントは盗聴や中間者攻撃に対して脆弱です。
トラブルシューティング
Webhookを受信していない
Webhookを受信していない
- リクエストに
webhookパラメータが含まれていることを確認する - エンドポイントが公開アクセス可能であることを確認する(localhostではない)
- サーバーログで受信リクエストを確認する
2xxステータスコードを返していることを確認する
重複したWebhookを受信している
重複したWebhookを受信している
これは再試行中に予想される動作です。
idフィールドを使用して冪等性のある処理を実装してください:Webhookがタイムアウトしている
Webhookがタイムアウトしている
エンドポイントは30秒以内に応答する必要があります。Webhookを非同期で処理してください:
近日公開予定
チームデフォルトURL
アカウント設定でデフォルトのWebhook URLを設定します。すべてのリクエストはこのURLを使用しますが、上書きすることも可能です。
署名検証
OlostepからのWebhookペイロードを検証するための暗号署名(HMAC-SHA256)。
これらの機能への早期アクセスをご希望ですか? info@olostep.com までご連絡いただくか、Slackコミュニティに参加してください。