Webhook dyno イベント
最終更新日 2023年03月10日(金)
Table of Contents
dyno イベントは、Heroku アプリ内の dyno に関するイベントの完全なライフサイクルを公開します。dyno イベントを使用すると、次の分析情報を得ることができます。
- フォーメーションの変更への応答として dyno が作成された日時
- One-off dyno が作成された日時
- イベントのオートスケールへの応答として dyno がスケーリングされた日時
- dyno がアプリの再起動に関与した日時
これらのイベントは、購読することができる Webhook 通知として使用できます。アプリの Webhook を設定する方法については、「アプリの Webhook」の記事およびデモチュートリアルを参照してください。
このデモチュートリアルを完了した場合は、dyno イベントに関する既知のバグを回避するために、既存の Heroku アプリに Webhook サブスクリプションを追加するか、または作成されたアプリにコミットをプッシュしてください。
dyno イベント通知の購読
次のコマンドを使用して、dyno イベントに関する Webhook 通知を購読します。
$ heroku webhooks:add -i dyno -l notify -u https://example.com/hooks
Adding webhook to ⬢ app ... done
=== Webhooks Signing Secret
475beb0bf7de962fb89878a767c22f7de22154dae1e6996b6b33299e7a0f
通知のテスト
dyno イベント通知を正常に受信しているかどうかは、次のいずれかを実行することによって簡単に確認できます。
- アプリの dyno の数をスケールアップまたはスケールダウンします。
- 少なくとも 1 つの実行中の dyno でアプリを再起動します。
heroku run
コマンドを使用して、新しい One-off dyno を作成します。
dyno イベントの形式
dyno イベントのリクエスト本体の形式は次のとおりです。これは、Platform API の dyno エンドポイントに非常に似ています。
{
"id": "cb6efa95-32a3-46af-8275-cb1350f684c2",
"data": {
"id": "6b8f4aa5-f329-44a1-bbab-09421ecc7b68",
"app": {
"id": "8e8f7f7e-bc0d-41db-a3c1-4d8a49719e47",
"name": "secret-dawn-52107"
},
"name": "run.9359",
"size": "Eco",
"state": "starting",
"command": "bash",
"release": {
"id": "b2e4ed3e-fce4-4df5-93ab-829b49ad6435",
"version": 5
},
"management": "run:attached",
"exit_status": null
},
"created_at": "2017-10-18T20:13:23Z",
"webhook_metadata": {
"event": {
"id": "cb6efa95-32a3-46af-8275-cb1350f684c2",
"include": "dyno"
},
"attempt": {
"id": "501cf85e-dcfd-4bef-9272-c87f4b86fe9a"
},
"webhook": {
"id": "457e230a-4ed0-4840-8863-3b8c635c0128"
},
"delivery": {
"id": "d6767a62-4cef-4c46-ab81-6a6e15e28353"
}
}
}
このリクエスト本体で使用できるが、dyno エンドポイントでは提供されない属性として、次の 2 つがあります。
exit_status
属性は、このイベントが関連しているコマンドの終了ステータスを提供します。management
属性は、dyno が作成されたときのメソッドを示します。これは、次のうちのいずれかです。run:detached
formation
run:attached
既知の問題
このパブリックベータ期間中の Webhook dyno イベントに関する既知の問題を次に示します。
One-off dyno
Common Runtime dyno の場合、
heroku run
を使用して作成された One-off dyno は、コマンドが正常に終了した場合でも、最後の状態が常にdown
(タイムアウトの場合) またはcrashed
になります。常に、通知リクエスト本体のexit_status
属性を確認して、コマンドが実際に正常だったかどうかを判定してください。期限切れ One-off dyno の dyno イベントの
exit_status
は、Common Runtime と Private Spaces で異なります。 その原因は、time_to_live
を超過した One-off dyno を終了する方法が、この 2 つのランタイムで異なっていることです。- Common Runtime dyno では、
exit_status
は 143 (SIGTERM) になります。 - Private Spaces dyno では、
exit_status
は 0 になります。
- Common Runtime dyno では、
重複した dyno イベント
- Private Spaces dyno では、dyno 状態
up
とcomplete
に関して、重複した dyno イベントを Webhook で受信する場合があります。