Durable Functions拡張機能は、orchestrations、entities、および task hubs で管理タスクを実行できる一連の組み込み HTTP API を公開します。 これらの HTTP API は、Azure Functions ホストが承認する機能拡張 Webhook ですが、Durable Functions拡張機能は直接処理します。
これらの HTTP API を使用する前に、次の点を確認してください。
- Durable Task プログラミング モデルの概念 (オーケストレーター、アクティビティ、エンティティ) の基本的な理解
- 構成されたバインディングで初期化された Durable Functions プロジェクト
- 関数アプリのベース URL、タスク ハブ名、接続設定、承認キーへのアクセス
ベース URL と共通パラメーター
すべての HTTP API は、関数アプリと同じベース URL を共有します。
Azure Functions Core Tools を使用してローカルで開発する場合、通常、ベース URL は http://localhost:7071 です。 Azure Functionsホステッド サービスでは、通常、ベース URL は https://{appName}.azurewebsites.net です。 この拡張機能では、App Service アプリで構成されている場合は、カスタム ホスト名もサポートされます。
拡張機能によって実装されるすべての HTTP API には、次のパラメーターが必要です。 すべてのパラメーターのデータ型が 。
| パラメーター | パラメーターの型 | [説明] |
|---|---|---|
taskHub |
クエリ文字列 | タスク ハブの名前。 指定しない場合、現在の関数アプリのタスク ハブ名が想定されます。 |
connection |
クエリ文字列 | バックエンド ストレージ プロバイダーの接続アプリ設定の 名前 。 指定しない場合、関数アプリの既定の接続構成が想定されます。 |
systemKey |
クエリ文字列 | API を呼び出すために必要な承認キー。 |
パラメーター値を取得する方法
オーケストレーション クライアント バインドの使用 (推奨):オーケストレーション クライアント バインド API を使用して完全な URL を自動的に生成します。
- .NET:
CreateCheckStatusResponse()、CreateHttpManagementPayload() - JavaScript: 、
URL の手動構築:
: ファイルから取得されます。
- v2.x:
- v1.x:
- 構文を使用してアプリ設定を使用して構成することもできます
: ストレージ接続を含むアプリ設定の名前。 から取得されます。
- v2.x: (指定されていない場合、既定値は )
- v1.x: (指定されていない場合は既定で )
- 接続文字列または identity ベースの接続 (Microsoft Entra 認証) を使用できます。
: Durable Task API の拡張機能固有の承認キー。 Azure ポータルから取得されます。
- 関数アプリを開く
- 左側のメニューで [Functions → アプリ キー ] を選択します
- [ システム キー ] セクションで、キーを見つけます (通常は拡張機能用に自動生成されます)。
- キー値をコピーする
️ Security note : システム キーは、すべてのDurable Functions HTTP API へのアクセスを許可します。 パブリックに共有したり、クライアント側のコードに含めたりしないでください。
各 HTTP API は、一貫性のある一連の要求/応答パターンをサポートします。 次のセクションでは、各操作の情報を提供します。
一般的な API ワークフロー
一般的なオーケストレーション ライフサイクルは、次の順序に従います。
- オーケストレーションを開始 → → インスタンス ID と状態 URL を返します
- 進行状況の監視→ →状態を確認する
- イベントの送信 (省略可能) → →外部シグナルの送信
- 消去履歴→ →クリーンアップ (省略可能)
操作の詳細と要求/応答の例については、以下のリファレンスを参照してください。
オーケストレーションを開始する
指定したオーケストレーター関数の新しいインスタンスの実行を開始します。
リクエスト
Important
URL 形式は、Functions ランタイムのバージョンによって異なります。 環境に一致する形式を選択します。
Functions ランタイム 2.x (推奨):
POST /runtime/webhooks/durabletask/orchestrators/{functionName}/{instanceId?}
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
Functions ランタイム 1.x (レガシ):
POST /admin/extensions/DurableTaskExtension/orchestrators/{functionName}/{instanceId?}
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
この API の要求パラメーターには、前述の既定のセットと、次の一意のパラメーターが含まれます。
| Field | パラメーターのタイプ | [説明] |
|---|---|---|
functionName |
URL | 開始するオーケストレーター関数の名前。 |
instanceId |
URL | 省略可能なパラメーターです。 オーケストレーション インスタンスの ID。 指定しない場合、オーケストレーター関数はランダムなインスタンス ID で始まります。 |
{content} |
コンテンツを要求する | このフィールドは省略可能です。 JSON 形式のオーケストレーター関数の入力。 |
[応答]
いくつかの状態コード値を返すことができます。
- HTTP 202 (受け入れ済み):指定されたオーケストレーター関数の実行開始がスケジュールされました。 応答ヘッダーには、オーケストレーションの状態をポーリングするための URL が含まれています。
- HTTP 400 (無効な要求):指定されたオーケストレーター関数が存在しない、指定されたインスタンス ID が有効でない、または要求コンテンツが有効な JSON ではありません。
オーケストレーター関数を開始し、JSON オブジェクト ペイロードを含む要求の例を次に示します。
POST /runtime/webhooks/durabletask/orchestrators/RestartVMs?code=XXX
Content-Type: application/json
Content-Length: 83
{
"resourceGroup": "myRG",
"subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e"
}
HTTP 202 ケースの応答ペイロードは、次のフィールドを持つ JSON オブジェクトです。
| Field | [説明] |
|---|---|
id |
オーケストレーション インスタンスの ID。 |
statusQueryGetUri |
オーケストレーションインスタンスの状態URL。 |
sendEventPostUri |
オーケストレーション インスタンスの「raise event」URL。 |
terminatePostUri |
オーケストレーション インスタンスの "終了" URL。 |
purgeHistoryDeleteUri |
オーケストレーション インスタンスの "消去履歴" URL。 |
rewindPostUri |
(プレビュー)オーケストレーション インスタンスの "巻き戻し" URL。 |
suspendPostUri |
オーケストレーション インスタンスの "中断" URL。 |
resumePostUri |
オーケストレーション インスタンスの "resume" URL。 |
すべてのフィールドのデータ型が 。
ID として を持つオーケストレーション インスタンスの応答ペイロードの例を次に示します (読みやすくするために書式設定されています)。
{
"id": "abc123",
"purgeHistoryDeleteUri": "http://localhost:7071/runtime/webhooks/durabletask/instances/abc123?code=XXX",
"sendEventPostUri": "http://localhost:7071/runtime/webhooks/durabletask/instances/abc123/raiseEvent/{eventName}?code=XXX",
"statusQueryGetUri": "http://localhost:7071/runtime/webhooks/durabletask/instances/abc123?code=XXX",
"terminatePostUri": "http://localhost:7071/runtime/webhooks/durabletask/instances/abc123/terminate?reason={text}&code=XXX",
"suspendPostUri": "http://localhost:7071/runtime/webhooks/durabletask/instances/abc123/suspend?reason={text}&code=XXX",
"resumePostUri": "http://localhost:7071/runtime/webhooks/durabletask/instances/abc123/resume?reason={text}&code=XXX"
}
HTTP 応答は、 ポーリング コンシューマー パターンとの互換性を持つものです。 また、次の注目すべき応答ヘッダーも含まれています。
- 場所: フィールドと同じ値を含む状態エンドポイントの URL。
- Retry-After: ポーリング操作の間に待機する秒数。 既定値は です。
非同期 HTTP ポーリング パターンの詳細については、 HTTP 非同期操作の追跡 に関するドキュメントを参照してください。
インスタンスの状態を取得する
指定したオーケストレーション インスタンスの状態を取得します。 これを使用して、オーケストレーションの進行状況を監視し、結果を取得します。
リクエスト
Functions ランタイム 2.x (推奨):
GET /runtime/webhooks/durabletask/instances/{instanceId}
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
&showHistory=[true|false]
&showHistoryOutput=[true|false]
&showInput=[true|false]
&returnInternalServerErrorOnFailure=[true|false]
Functions ランタイム 1.x (レガシ):
GET /admin/extensions/DurableTaskExtension/instances/{instanceId}
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
&showHistory=[true|false]
&showHistoryOutput=[true|false]
&showInput=[true|false]
&returnInternalServerErrorOnFailure=[true|false]
この API の要求パラメーターには、前述の既定のセットと、次の一意のパラメーターが含まれます。
| Field | パラメーターのタイプ | [説明] |
|---|---|---|
instanceId |
URL | オーケストレーション インスタンスの ID。 |
showInput |
クエリ文字列 | 省略可能なパラメーターです。 に設定すると、関数の入力は応答ペイロードに含まれません。 |
showHistory |
クエリ文字列 | 省略可能なパラメーターです。 に設定すると、オーケストレーションの実行履歴が応答ペイロードに含まれます。 |
showHistoryOutput |
クエリ文字列 | 省略可能なパラメーターです。 に設定すると、関数の出力はオーケストレーションの実行履歴に含まれます。 |
createdTimeFrom |
クエリ文字列 | 省略可能なパラメーターです。 指定した場合は、指定されたISO8601タイムスタンプ以降に作成された、返されたインスタンスの一覧をフィルター処理します。 |
createdTimeTo |
クエリ文字列 | 省略可能なパラメーターです。 指定した場合は、指定されたISO8601タイムスタンプの前に作成された、返されたインスタンスの一覧をフィルター処理します。 |
runtimeStatus |
クエリ文字列 | 省略可能なパラメーターです。 指定すると、返されるインスタンスの一覧がランタイムの状態に基づいてフィルター処理されます。 使用可能なランタイム状態値の一覧については、インスタンスの クエリに関する記事を 参照してください。 |
returnInternalServerErrorOnFailure |
クエリ文字列 | 省略可能なパラメーターです。 に設定すると、インスタンスがエラー状態の場合、この API は 200 ではなく HTTP 500 応答を返します。 このパラメーターは、自動状態ポーリング シナリオを対象としています。 |
[応答]
いくつかの状態コード値を返すことができます。
- HTTP 200 (OK):指定されたインスタンスが完了または失敗の状態です。
- HTTP 202 (受け入れ済み):指定されたインスタンスが進行中です。
- HTTP 400 (無効な要求):指定されたインスタンスが失敗したか、終了されました。
- HTTP 404 (見つかりません): 指定されたインスタンスが存在しないか、実行が開始されていません。
- HTTP 500 (内部サーバー エラー):がに設定され、指定されたインスタンスがハンドルされない例外で失敗した場合にのみ返されます。
HTTP 200 および HTTP 202 ケースの応答ペイロードは、次のフィールドを持つ JSON オブジェクトです。
| Field | データの種類 | [説明] |
|---|---|---|
runtimeStatus |
文字列 | インスタンスのランタイムの状態。 値には、 Running、 Pending、 Failed、 Canceled、 Terminated、 Completed、 Suspended などがあります。 |
input |
JSON | インスタンスの初期化に使用される JSON データ。 このフィールドはであり、クエリ文字列パラメーターがに設定されている場合。 |
customStatus |
JSON | カスタム オーケストレーションの状態に使用される JSON データ。 このフィールドは、設定されていない場合は されます。 |
output |
JSON | インスタンスの JSON 出力。 このフィールドは、インスタンスが完了状態でない場合に されます。 |
createdTime |
文字列 | インスタンスが作成された時刻。 ISO 8601 拡張表記を使用します。 |
lastUpdatedTime |
文字列 | インスタンスが最後に永続化された時刻。 ISO 8601 拡張表記を使用します。 |
historyEvents |
JSON | オーケストレーションの実行履歴を含む JSON 配列。 クエリ文字列パラメーターが に設定されていない限り、このフィールドはされます。 |
オーケストレーションの実行履歴とアクティビティ出力 (読みやすくするために書式設定) を含む応答ペイロードの例を次に示します。
{
"createdTime": "2018-02-28T05:18:49Z",
"historyEvents": [
{
"EventType": "ExecutionStarted",
"FunctionName": "E1_HelloSequence",
"Timestamp": "2018-02-28T05:18:49.3452372Z"
},
{
"EventType": "TaskCompleted",
"FunctionName": "E1_SayHello",
"Result": "Hello Tokyo!",
"ScheduledTime": "2018-02-28T05:18:51.3939873Z",
"Timestamp": "2018-02-28T05:18:52.2895622Z"
},
{
"EventType": "TaskCompleted",
"FunctionName": "E1_SayHello",
"Result": "Hello Seattle!",
"ScheduledTime": "2018-02-28T05:18:52.8755705Z",
"Timestamp": "2018-02-28T05:18:53.1765771Z"
},
{
"EventType": "TaskCompleted",
"FunctionName": "E1_SayHello",
"Result": "Hello London!",
"ScheduledTime": "2018-02-28T05:18:53.5170791Z",
"Timestamp": "2018-02-28T05:18:53.891081Z"
},
{
"EventType": "ExecutionCompleted",
"OrchestrationStatus": "Completed",
"Result": [
"Hello Tokyo!",
"Hello Seattle!",
"Hello London!"
],
"Timestamp": "2018-02-28T05:18:54.3660895Z"
}
],
"input": null,
"customStatus": { "nextActions": ["A", "B", "C"], "foo": 2 },
"lastUpdatedTime": "2018-02-28T05:18:54Z",
"output": [
"Hello Tokyo!",
"Hello Seattle!",
"Hello London!"
],
"runtimeStatus": "Completed"
}
HTTP 202 応答には、前に説明した フィールドと同じ URL を参照する 応答ヘッダーも含まれています。
すべてのインスタンスの状態を取得する
複数のオーケストレーション インスタンスの状態を一度にクエリします。 状態、作成時刻、インスタンス ID プレフィックスで結果をフィルター処理できます。 この操作を使用して、アクティブなすべてのオーケストレーションを監視したり、特定のインスタンスを見つけたりします。
リクエスト
Functions ランタイム 2.x (推奨):
GET /runtime/webhooks/durabletask/instances?
taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
&createdTimeFrom={timestamp}
&createdTimeTo={timestamp}
&runtimeStatus={runtimeStatus1,runtimeStatus2,...}
&instanceIdPrefix={prefix}
&showInput=[true|false]
&top={integer}
Functions ランタイム 1.x (レガシ):
GET /admin/extensions/DurableTaskExtension/instances
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
&createdTimeFrom={timestamp}
&createdTimeTo={timestamp}
&runtimeStatus={runtimeStatus1,runtimeStatus2,...}
&instanceIdPrefix={prefix}
&showInput=[true|false]
&top={integer}
この API の要求パラメーターには、前述の既定のセットと、次の一意のパラメーターが含まれます。
| Field | パラメーターのタイプ | [説明] |
|---|---|---|
showInput |
クエリ文字列 | 省略可能なパラメーターです。 に設定すると、関数の入力は応答ペイロードに含まれません。 |
showHistoryOutput |
クエリ文字列 | 省略可能なパラメーターです。 に設定されている場合は、オーケストレーションの実行履歴に関数の出力を含めます。 |
createdTimeFrom |
クエリ文字列 | 省略可能なパラメーターです。 指定した場合は、指定されたISO8601タイムスタンプ以降に作成された、返されたインスタンスの一覧をフィルター処理します。 |
createdTimeTo |
クエリ文字列 | 省略可能なパラメーターです。 指定した場合は、指定されたISO8601タイムスタンプの前に作成された、返されたインスタンスの一覧をフィルター処理します。 |
runtimeStatus |
クエリ文字列 | 省略可能なパラメーターです。 指定すると、返されるインスタンスの一覧がランタイムの状態に基づいてフィルター処理されます。 使用可能なランタイム状態値の一覧については、インスタンスの クエリに関する記事を 参照してください。 |
instanceIdPrefix |
クエリ文字列 | 省略可能なパラメーターです。 指定した場合、返されるインスタンスの一覧をフィルター処理して、インスタンス ID が指定したプレフィックス文字列で始まるインスタンスのみを含めます。 拡張機能の version 2.7.2 以降で使用できます。 |
top |
クエリ文字列 | 省略可能なパラメーターです。 指定した場合、クエリによって返されるインスタンスの数を制限します。 |
[応答]
オーケストレーションの状態 (読みやすくするために書式設定) を含む応答ペイロードの例を次に示します。
[
{
"instanceId": "7af46ff000564c65aafbfe99d07c32a5",
"runtimeStatus": "Completed",
"input": null,
"customStatus": null,
"output": [
"Hello Tokyo!",
"Hello Seattle!",
"Hello London!"
],
"createdTime": "2018-06-04T10:46:39Z",
"lastUpdatedTime": "2018-06-04T10:46:47Z"
},
{
"instanceId": "80eb7dd5c22f4eeba9f42b062794321e",
"runtimeStatus": "Running",
"input": null,
"customStatus": null,
"output": null,
"createdTime": "2018-06-04T15:18:28Z",
"lastUpdatedTime": "2018-06-04T15:18:38Z"
},
{
"instanceId": "9124518926db408ab8dfe84822aba2b1",
"runtimeStatus": "Completed",
"input": null,
"customStatus": null,
"output": [
"Hello Tokyo!",
"Hello Seattle!",
"Hello London!"
],
"createdTime": "2018-06-04T10:46:54Z",
"lastUpdatedTime": "2018-06-04T10:47:03Z"
},
{
"instanceId": "d100b90b903c4009ba1a90868331b11b",
"runtimeStatus": "Pending",
"input": null,
"customStatus": null,
"output": null,
"createdTime": "2018-06-04T15:18:39Z",
"lastUpdatedTime": "2018-06-04T15:18:39Z"
}
]
注
この操作は、Azure Storage プロバイダーを使用していて、Instances テーブルに多数の行がある場合、Azure Storage I/O の点でコストがかかる可能性があります。 Instances テーブルの詳細については、Azure Storage プロバイダードキュメントを参照してください。
さらに多くの結果が存在する場合は、応答ヘッダーに継続トークンが返されます。 ヘッダーの名前は 。
注意事項
クエリ結果は、 で指定された制限よりも少ない項目を返す場合があります。 結果を受け取ったら、 継続 トークンがあるかどうかを常に確認する必要があります。
次の要求ヘッダーで継続トークンの値を設定すると、結果の次のページを取得できます。 要求ヘッダーの名前も 。
単一インスタンスの履歴を消去する
指定したオーケストレーション インスタンスの履歴と関連する成果物を削除します。 この操作により、ストレージ リソースが解放され、元に戻すことはできません。
リクエスト
Functions ランタイム 2.x (推奨):
DELETE /runtime/webhooks/durabletask/instances/{instanceId}
?taskHub={taskHub}
&connection={connection}
&code={systemKey}
Functions ランタイム 1.x (レガシ):
DELETE /admin/extensions/DurableTaskExtension/instances/{instanceId}
?taskHub={taskHub}
&connection={connection}
&code={systemKey}
この API の要求パラメーターには、前述の既定のセットと、次の一意のパラメーターが含まれます。
| Field | パラメーターのタイプ | [説明] |
|---|---|---|
instanceId |
URL | オーケストレーション インスタンスの ID。 |
[応答]
次の HTTP 状態コード値を返すことができます。
- HTTP 200 (OK):インスタンス履歴が正常に消去されました。
- HTTP 404 (見つかりません):指定されたインスタンスが存在しません。
HTTP 200 ケースの応答ペイロードは、次のフィールドを持つ JSON オブジェクトです。
| Field | データの種類 | [説明] |
|---|---|---|
instancesDeleted |
整数 | 削除されたインスタンスの数。 単一インスタンスの場合、この値は常に する必要があります。 |
応答ペイロードの例を次に示します (読みやすくするために書式設定されています)。
{
"instancesDeleted": 1
}
複数のインスタンス履歴を消去する
状態、作成時刻、またはインスタンス ID プレフィックスでフィルター処理された、複数のインスタンスの履歴と成果物を一度に削除します。 これを使用して、古いインスタンスを一括クリーンアップし、ストレージ コストを管理します。
リクエスト
Functions ランタイム 2.x (推奨):
DELETE /runtime/webhooks/durabletask/instances
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
&createdTimeFrom={timestamp}
&createdTimeTo={timestamp}
&runtimeStatus={runtimeStatus1,runtimeStatus2,...}
Functions ランタイム 1.x (レガシ):
DELETE /admin/extensions/DurableTaskExtension/instances
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
&createdTimeFrom={timestamp}
&createdTimeTo={timestamp}
&runtimeStatus={runtimeStatus1,runtimeStatus2,...}
この API の要求パラメーターには、前述の既定のセットと、次の一意のパラメーターが含まれます。
| Field | パラメーターのタイプ | [説明] |
|---|---|---|
createdTimeFrom |
クエリ文字列 | 指定したISO8601タイムスタンプの後に作成された消去されたインスタンスの一覧をフィルター処理します。 |
createdTimeTo |
クエリ文字列 | 省略可能なパラメーターです。 指定した場合は、指定されたISO8601タイムスタンプの前に作成された消去されたインスタンスの一覧をフィルター処理します。 |
runtimeStatus |
クエリ文字列 | 省略可能なパラメーターです。 指定すると、削除されたインスタンスの一覧がランタイムの状態に基づいてフィルター処理されます。 使用可能なランタイム状態値の一覧については、インスタンスの クエリに関する記事を 参照してください。 |
注
この操作は、
[応答]
次の HTTP 状態コード値を返すことができます。
- HTTP 200 (OK):インスタンス履歴が正常に消去されました。
- HTTP 404 (見つかりません): フィルター式に一致するインスタンスが見つかりませんでした。
HTTP 200 ケースの応答ペイロードは、次のフィールドを持つ JSON オブジェクトです。
| Field | データの種類 | [説明] |
|---|---|---|
instancesDeleted |
整数 | 削除されたインスタンスの数。 |
応答ペイロードの例を次に示します (読みやすくするために書式設定されています)。
{
"instancesDeleted": 250
}
イベントを発生させる
実行中のオーケストレーション インスタンスにイベント通知メッセージを送信します。 オーケストレーションは、 または を使用して、名前によってこのイベントを待機している必要があります。
リクエスト
Functions ランタイム 2.x (推奨):
POST /runtime/webhooks/durabletask/instances/{instanceId}/raiseEvent/{eventName}
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
Functions ランタイム 1.x (レガシ):
POST /admin/extensions/DurableTaskExtension/instances/{instanceId}/raiseEvent/{eventName}
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
この API の要求パラメーターには、前述の既定のセットと、次の一意のパラメーターが含まれます。
| Field | パラメーターのタイプ | [説明] |
|---|---|---|
instanceId |
URL | オーケストレーション インスタンスの ID。 |
eventName |
URL | ターゲット オーケストレーション インスタンスが待機しているイベントの名前。 |
{content} |
コンテンツを要求する | JSON 形式のイベント ペイロード。 |
[応答]
いくつかの状態コード値を返すことができます。
- HTTP 202 (受け入れ済み):発生したイベントは処理のために受け入れられました。
- HTTP 400 (無効な要求):要求の内容が の種類ではないか、有効な JSON ではありませんでした。
- HTTP 404 (見つかりません):指定されたインスタンスが見つかりませんでした。
- HTTP 410 (Gone): 指定されたインスタンスが完了または失敗し、発生したイベントを処理できません。
操作のイベントを待機しているインスタンスに JSON 文字列を送信する要求の例を次に示します。
POST /admin/extensions/DurableTaskExtension/instances/bcf6fb5067b046fbb021b52ba7deae5a/raiseEvent/operation?taskHub=DurableFunctionsHub&connection=Storage&code=XXX
Content-Type: application/json
Content-Length: 6
"incr"
この API の応答には、コンテンツは含まれません。
インスタンスの終了
実行中のオーケストレーション インスタンスを終了します。
リクエスト
Functions ランタイム 2.x (推奨):
POST /runtime/webhooks/durabletask/instances/{instanceId}/terminate
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
&reason={text}
Functions ランタイム 1.x (レガシ):
POST /admin/extensions/DurableTaskExtension/instances/{instanceId}/terminate
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
&reason={text}
この API の要求パラメーターには、前に説明した既定のセットと、次の一意のパラメーターが含まれます。
| Field | パラメーターの型 | [説明] |
|---|---|---|
instanceId |
URL | オーケストレーション インスタンスの ID。 |
reason |
クエリ文字列 | このフィールドは省略可能です。 オーケストレーション インスタンスを終了する理由。 |
[応答]
いくつかの状態コード値を返すことができます。
- HTTP 202 (受け入れ済み):終了要求が処理のために受け入れられました。
- HTTP 404 (見つかりません):指定されたインスタンスが見つかりませんでした。
- HTTP 410 (Gone): 指定されたインスタンスが完了したか失敗しました。
実行中のインスタンスを終了し、 バグのある理由を指定する要求の例を次に示します。
POST /admin/extensions/DurableTaskExtension/instances/bcf6fb5067b046fbb021b52ba7deae5a/terminate?reason=buggy&taskHub=DurableFunctionsHub&connection=Storage&code=XXX
この API の応答には、コンテンツは含まれません。
インスタンスを中断する
実行中のオーケストレーション インスタンスを終了せずに一時停止します。 インスタンスは、 操作を使用して後で再開できます。
リクエスト
Functions ランタイムのバージョン 2.x では、要求は次のように書式設定されます (わかりやすくするために複数行が表示されます)。
POST /runtime/webhooks/durabletask/instances/{instanceId}/suspend
?reason={text}
&taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
| Field | パラメーターの型 | [説明] |
|---|---|---|
instanceId |
URL | オーケストレーション インスタンスの ID。 |
reason |
クエリ文字列 | このフィールドは省略可能です。 オーケストレーション インスタンスを中断する理由。 |
[応答]
いくつかの状態コード値を返すことができます。
- HTTP 202 (受け入れ済み):中断要求が処理のために受け入れられました。 応答本文は返されません。
- HTTP 404 (見つかりません):指定されたインスタンスが見つかりませんでした。
- HTTP 410 (Gone): 指定されたインスタンスが完了、失敗、または終了したため、中断できません。
検証: HTTP 202 を受信した後、 を使用してインスタンスの状態を照会し、 が に変更されたことを確認します。
インスタンスの再開
以前に中断されたオーケストレーション インスタンスの実行を再開します。
リクエスト
Functions ランタイムのバージョン 2.x では、要求は次のように書式設定されます (わかりやすくするために複数行が表示されます)。
POST /runtime/webhooks/durabletask/instances/{instanceId}/resume
?reason={text}
&taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
| Field | パラメーターの型 | [説明] |
|---|---|---|
instanceId |
URL | オーケストレーション インスタンスの ID。 |
reason |
クエリ文字列 | このフィールドは省略可能です。 オーケストレーション インスタンスを再開する理由。 |
[応答]
いくつかの状態コード値を返すことができます。
- HTTP 202 (受け入れ済み):再開要求が処理のために受け入れられました。 応答本文は返されません。
- HTTP 404 (見つかりません):指定されたインスタンスが見つかりませんでした。
- HTTP 410 (Gone): 指定されたインスタンスが完了、失敗、または終了し、再開できません。
検証: HTTP 202 を受信した後、 を使用してインスタンスの状態を照会し、 が に変更されたことを確認します。
インスタンスの巻き戻し (プレビュー)
失敗したオーケストレーション インスタンスを最新の失敗した操作を再生して、実行中の状態に復元します。 この機能を使用すると、手動操作なしで一時的な障害から復旧できます。
リクエスト
Functions ランタイム 2.x (推奨):
POST /runtime/webhooks/durabletask/instances/{instanceId}/rewind
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
&reason={text}
Functions ランタイム 1.x (レガシ):
POST /admin/extensions/DurableTaskExtension/instances/{instanceId}/rewind
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
&reason={text}
この API の要求パラメーターには、前に説明した既定のセットと、次の一意のパラメーターが含まれます。
| Field | パラメーターの型 | [説明] |
|---|---|---|
instanceId |
URL | オーケストレーション インスタンスの ID。 |
reason |
クエリ文字列 | このフィールドは省略可能です。 オーケストレーション インスタンスを rewind する理由。 |
[応答]
いくつかの状態コード値を返すことができます。
- HTTP 202 (受け入れ済み):巻き戻し要求が処理のために受け入れられました。
- HTTP 404 (見つかりません):指定されたインスタンスが見つかりませんでした。
- HTTP 410 (Gone): 指定されたインスタンスが完了したか終了しました。
失敗したインスタンスを巻き戻し、 固定の理由を指定する要求の例を次に示します。
POST /admin/extensions/DurableTaskExtension/instances/bcf6fb5067b046fbb021b52ba7deae5a/rewind?reason=fixed&taskHub=DurableFunctionsHub&connection=Storage&code=XXX
この API の応答には、コンテンツは含まれません。
信号エンティティ
一方向の操作メッセージを Durable Entity に送信します。 エンティティが存在しない場合は、自動的に作成されます。 エンティティ操作は、順番に永続的に処理されます。
注
非消耗品エンティティは、Durable Functions 2.0 以降で使用できます。
リクエスト
HTTP 要求は次のように書式設定されます (わかりやすくするために複数の行が表示されます)。
POST /runtime/webhooks/durabletask/entities/{entityName}/{entityKey}
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
&op={operationName}
この API の要求パラメーターには、前述の既定のセットと、次の一意のパラメーターが含まれます。
| Field | パラメーターのタイプ | [説明] |
|---|---|---|
entityName |
URL | エンティティの名前 (型)。 |
entityKey |
URL | エンティティのキー (一意の ID)。 |
op |
クエリ文字列 | このフィールドは省略可能です。 呼び出すユーザー定義操作の名前。 |
{content} |
コンテンツを要求する | JSON 形式のイベント ペイロード。 |
ユーザー定義の "追加" メッセージを という名前の エンティティに送信する要求の例を次に示します。 メッセージの内容は、 値です。 エンティティがまだ存在しない場合、この要求によって作成されます。
POST /runtime/webhooks/durabletask/entities/Counter/steps?op=Add
Content-Type: application/json
5
注
既定では、.NET の
[応答]
この操作には、いくつかの応答が考えられます。
- HTTP 202 (受け入れ済み):シグナル操作は非同期処理で受け入れられました。
- HTTP 400 (無効な要求):要求の内容が の種類ではなく、有効な JSON でなかったか、無効な 値を持っていました。
- HTTP 404 (見つかりません): 指定された が見つかりませんでした。
成功した HTTP 要求には、応答にコンテンツが含まれません。 失敗した HTTP 要求には、応答コンテンツに JSON 形式のエラー情報が含まれている可能性があります。
エンティティを取得する
指定したエンティティの状態を取得します。
リクエスト
HTTP 要求は次のように書式設定されます (わかりやすくするために複数の行が表示されます)。
GET /runtime/webhooks/durabletask/entities/{entityName}/{entityKey}
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
[応答]
この操作には、次の 2 つの応答が考えられます。
- HTTP 200 (OK):指定されたエンティティが存在します。
- HTTP 404 (見つかりません):指定されたエンティティが見つかりませんでした。
成功した応答には、エンティティの JSON シリアル化された状態がコンテンツとして含まれます。
例
という名前の既存の エンティティの状態を取得するには:
GET /runtime/webhooks/durabletask/entities/Counter/steps
エンティティに フィールドに保存された手順が多数含まれている場合、応答コンテンツは次のようになります (読みやすくするために書式設定されます)。
{
"currentValue": 5
}
エンティティの一覧表示
エンティティ名または最後の操作日で、複数のエンティティを照会できます。
リクエスト
HTTP 要求は次のように書式設定されます (わかりやすくするために複数の行が表示されます)。
GET /runtime/webhooks/durabletask/entities/{entityName}
?taskHub={taskHub}
&connection={connectionName}
&code={systemKey}
&lastOperationTimeFrom={timestamp}
&lastOperationTimeTo={timestamp}
&fetchState=[true|false]
&top={integer}
この API の要求パラメーターには、前述の既定のセットと、次の一意のパラメーターが含まれます。
| Field | パラメーターのタイプ | [説明] |
|---|---|---|
entityName |
URL | このフィールドは省略可能です。 指定すると、返されたエンティティの一覧をエンティティ名でフィルター処理します (大文字と小文字は区別されません)。 |
fetchState |
クエリ文字列 | 省略可能なパラメーターです。 に設定すると、エンティティの状態が応答ペイロードに含まれます。 |
lastOperationTimeFrom |
クエリ文字列 | 省略可能なパラメーターです。 指定した場合、指定したISO8601タイムスタンプの後に操作を処理した返されたエンティティの一覧をフィルター処理します。 |
lastOperationTimeTo |
クエリ文字列 | 省略可能なパラメーターです。 指定した場合、指定されたISO8601タイムスタンプの前に操作を処理した返されたエンティティの一覧をフィルター処理します。 |
top |
クエリ文字列 | 省略可能なパラメーターです。 指定した場合、クエリによって返されるエンティティの数を制限します。 |
[応答]
成功した HTTP 200 応答には、エンティティの JSON シリアル化された配列と、必要に応じて各エンティティの状態が含まれます。
既定では、操作はクエリ条件に一致する最初の 100 個のエンティティを返します。 呼び出し元は、異なる最大数の結果を返す のクエリ文字列パラメーター値を指定できます。 返される結果を超える結果が存在する場合は、応答ヘッダーにも継続トークンが返されます。 ヘッダーの名前は 。
次の要求ヘッダーで継続トークンの値を設定すると、結果の次のページを取得できます。 要求ヘッダーの名前も 。
例 - すべてのエンティティを一覧表示する
タスク ハブ内のすべてのエンティティを一覧表示するには:
GET /runtime/webhooks/durabletask/entities
応答 JSON は次のようになります (読みやすくするために書式設定されています)。
[
{
"entityId": { "key": "cats", "name": "counter" },
"lastOperationTime": "2019-12-18T21:45:44.6326361Z",
},
{
"entityId": { "key": "dogs", "name": "counter" },
"lastOperationTime": "2019-12-18T21:46:01.9477382Z"
},
{
"entityId": { "key": "mice", "name": "counter" },
"lastOperationTime": "2019-12-18T21:46:15.4626159Z"
},
{
"entityId": { "key": "radio", "name": "device" },
"lastOperationTime": "2019-12-18T21:46:18.2616154Z"
},
]
例 - エンティティの一覧をフィルター処理する
最初の 2 つの エンティティを一覧表示し、その状態をフェッチするには:
GET /runtime/webhooks/durabletask/entities/counter?top=2&fetchState=true
応答 JSON は次のようになります (読みやすくするために書式設定されています)。
[
{
"entityId": { "key": "cats", "name": "counter" },
"lastOperationTime": "2019-12-18T21:45:44.6326361Z",
"state": { "value": 9 }
},
{
"entityId": { "key": "dogs", "name": "counter" },
"lastOperationTime": "2019-12-18T21:46:01.9477382Z",
"state": { "value": 10 }
}
]
完全なワークフローの例
この例では、 コマンドを使用した完全なオーケストレーション ライフサイクルを示します。 Postman、Thunder Client、または任意の HTTP クライアントを使用することもできます。
1. オーケストレーションを開始する
入力データを使用した新しい オーケストレーションの開始:
curl -X POST "http://localhost:7071/runtime/webhooks/durabletask/orchestrators/ProcessOrder" \
-H "Content-Type: application/json" \
-d '{
"orderId": "ORD-12345",
"customerId": "CUST-789",
"amount": 150.00
}'
応答 (HTTP 202):
{
"id": "abc123def456",
"statusQueryGetUri": "http://localhost:7071/runtime/webhooks/durabletask/instances/abc123def456?code=XXX",
"sendEventPostUri": "http://localhost:7071/runtime/webhooks/durabletask/instances/abc123def456/raiseEvent/{eventName}?code=XXX",
"terminatePostUri": "http://localhost:7071/runtime/webhooks/durabletask/instances/abc123def456/terminate?reason={text}&code=XXX"
}
インスタンス ID を保存します。
2. 状態をポーリングする
オーケストレーションの進行状況を確認します。
curl "http://localhost:7071/runtime/webhooks/durabletask/instances/abc123def456?code=XXX"
実行中の応答 (HTTP 202):
{
"runtimeStatus": "Running",
"input": { "orderId": "ORD-12345", "customerId": "CUST-789", "amount": 150.00 },
"output": null,
"createdTime": "2026-01-23T10:30:00Z",
"lastUpdatedTime": "2026-01-23T10:30:05Z"
}
完了時の応答 (HTTP 200):
{
"runtimeStatus": "Completed",
"input": { "orderId": "ORD-12345", "customerId": "CUST-789", "amount": 150.00 },
"output": { "status": "shipped", "trackingNumber": "TRK-98765" },
"createdTime": "2026-01-23T10:30:00Z",
"lastUpdatedTime": "2026-01-23T10:30:15Z"
}
3. 外部イベントを送信する (省略可能)
オーケストレーションが承認を待機している場合は、承認イベントを送信します。
curl -X POST "http://localhost:7071/runtime/webhooks/durabletask/instances/abc123def456/raiseEvent/ApprovalReceived?code=XXX" \
-H "Content-Type: application/json" \
-d '{ "approved": true, "reviewer": "manager@contoso.com" }'
応答: HTTP 202 (承認済み)
4. 履歴のクリーンアップ (省略可能)
オーケストレーションが完了したら、その履歴を消去します。
curl -X DELETE "http://localhost:7071/runtime/webhooks/durabletask/instances/abc123def456?code=XXX"
応答 (HTTP 200):
{
"instancesDeleted": 1
}
次のステップ
Application Insights を使用して永続的な関数を監視する方法について説明します