Durable Task Scheduler をDurable Functions アプリのバックエンドとして使用して、オーケストレーションとエンティティのランタイム状態を格納します。 このクイック スタートでは、Durable Task Scheduler を使用するように既に構成されている Hello Cities サンプルを複製し、エミュレーターでローカルに実行してから、Azureにデプロイします。
- Durable Task Scheduler 用に事前構成された Hello Cities サンプルを複製します。
- ローカル開発用に Durable Task Scheduler エミュレーターを設定します。
- サンプルを実行し、オーケストレーションの出力を確認します。
- アプリをAzureにデプロイし、Durable Task Scheduler ダッシュボードを使用して監視します。
前提条件
ヒント
エミュレーターが実行されたら、 http://localhost:8082 の Durable Task Scheduler ダッシュボードにアクセスしてオーケストレーションを監視できます。
クイック スタート サンプルを実行する
最新バージョンのMicrosoft.Azure.Functions.Worker.Extensions.DurableTask.AzureManagedパッケージをdotnet add packageコマンドを使用してインストールします。
dotnet add package Microsoft.Azure.Functions.Worker.Extensions.DurableTask.AzureManaged --prerelease
注
Durable Task Scheduler 拡張機能には、 Microsoft.Azure.Functions.Worker.Extensions.DurableTask バージョン 1.2.2 以降が必要です。
関数アプリをビルドして起動します。
dotnet build func start
host.jsonで、Durable Task Scheduler のサポートを含むバージョン 4.32.0 以降を使用するように、 extensionBundle プロパティを更新します。
{
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.32.0, 5.0.0)"
}
}
関数アプリを起動します。
func start
関数アプリをビルドして起動します。
mvn clean package mvn azure-functions:run
別のターミナルで、オーケストレーションをトリガーします。
$response = Invoke-RestMethod -Method POST -Uri http://localhost:7071/api/DurableFunctionsOrchestrationCSharp1_HttpStart $response
別のターミナルで、オーケストレーションをトリガーします。
$response = Invoke-RestMethod -Method POST -Uri http://localhost:7071/api/StartChaining $response
応答には、オーケストレーション インスタンスの状態 URL が含まれています。
statusQueryGetUriにクエリを実行して結果を確認します。Invoke-RestMethod -Uri $response.statusQueryGetUriオーケストレーションの
runtimeStatusがCompletedされると、出力にはあいさつの結果が含まれます。runtimeStatusまたはRunningPending表示される場合は、しばらく待ってから、もう一度クエリを実行します。オーケストレーション インスタンスの詳細については、
http://localhost:8082を参照してください。
Durable Task Scheduler の構成について
これらのサンプルで Durable Task Scheduler を使用する主な構成は、2 つのファイル内にあります。
host.json
storageProvider セクションでは、既定のAzure Storage バックエンドではなく Durable Task Scheduler (azureManaged) を使用するようにDurable Functionsに指示します。
{
"extensions": {
"durableTask": {
"hubName": "default",
"storageProvider": {
"type": "azureManaged",
"connectionStringName": "DURABLE_TASK_SCHEDULER_CONNECTION_STRING"
}
}
}
}
local.settings.json
接続文字列は、開発用のローカル エミュレーターを指しています。
{
"Values": {
"DURABLE_TASK_SCHEDULER_CONNECTION_STRING": "Endpoint=http://localhost:8080;TaskHub=default;Authentication=None"
}
}
注
既存のDurable Functions アプリを移行するには、これら 2 つのファイルを更新し、言語に適した拡張パッケージを追加します。 .NET の場合は、NuGet パッケージ Microsoft.Azure.Functions.Worker.Extensions.DurableTask.AzureManaged をインストールします。 他の言語の場合は、 host.json の拡張機能バンドルをバージョン [4.32.0, 5.0.0)に更新します。
Azureでアプリを実行する
必要なリソースを作成する
関数アプリ統合作成フローに従って、Durable Task Scheduler インスタンスと Azure Functions アプリを Azure 上に作成します。 このエクスペリエンスでは、ID ベースのアクセスが自動的に設定され、スケジューラにアクセスするためにアプリに必要な環境変数が構成されます。
[関数アプリの作成] ブレードに移動します。
[ 関数アプリの作成 (Flex Consumption)] ブレードで、[ 基本 ] タブの情報を入力します。
フィールド 説明 Subscription Azure のサブスクリプションを選択します。 リソース グループ 既存のリソース グループを選択するか、[ 新規作成 ] をクリックして新しいリソース グループを作成します。 関数アプリ名 関数アプリの一意の名前を作成します。 コードまたはコンテナー イメージをデプロイしますか? [コード] オプションをオンのままにします。 リージョン サポートされているリージョンのいずれかを選択します。 ランタイム スタック このクイック スタートで使用しているランタイムを選択します。 バージョン ランタイム スタックのバージョンを選択します。 インスタンスのサイズ インスタンス サイズを選択するか、既定の選択を使用します。 インスタンス サイズの詳細を確認します。 ゾーン冗長 既定の [無効] 設定のままにします。 Durable Functions タブを選択します。
Durable Functionsのバックエンド プロバイダーとしてAzureマネージド: Durable Task Scheduler を選択します。
スケジューラ リソースを作成します。 このアクションにより、タスク ハブが自動的に作成されます。
フィールド 説明 ストレージ バックエンド Azure managed: Durable Task Scheduler を選択します。 リージョン スケジューラと関数アプリのリージョンが同じであることを確認します。 耐久性のあるタスクスケジューラ 提供されているスケジューラ名を使用するか、[ 新規作成 ] をクリックしてカスタム名を作成します。 Plan プロジェクトに最適な 価格プラン を選択します。 運用環境で使用するのに最適なプランを決定するには、「 オーケストレーション フレームワークの選択 」ガイドを確認してください。 容量ユニット "専用" 価格プランが選択されている場合にのみ適用されます。 最大 3 つの容量ユニットを選択できます。 [ 確認と作成 ] をクリックして、リソースの作成を確認します。
必要なロールベースのアクセス制御 (RBAC) アクセス許可を持つユーザー割り当てマネージド ID が自動的に作成され、関数アプリに追加されます。 次のようなマネージド ID リソースに関連する概要ビュー情報を確認できます。
割り当てられたロール (永続タスク データ共同作成者)
タスク ハブ レベルにスコープが設定された割り当て
検証に合格したら、[ 作成 ] をクリックします。
リソースのデプロイには約 15 ~ 20 分かかる場合があります。 完了したら、アプリをAzureにデプロイできます。
関数アプリを Azure にデプロイする
Important
既存の関数アプリにデプロイすると、Azure にあるそのアプリの内容が常に上書きされます。
コマンド パレットで、入力して [Azure Functions: 関数アプリにデプロイする] を選択します。
作成したばかりの関数アプリを選びます。 前のデプロイの上書きを求められたら、[デプロイ] を選択して、関数コードを新しい関数アプリ リソースにデプロイします。
デプロイの完了後、[出力の表示] を選択すると、作成済みの Azure リソースなど、作成とデプロイの結果が表示されます。 通知を見逃した場合は、右下隅にあるベル アイコンを選択して、再度確認します。
Functions Premium プラン上のアプリ
アプリが Functions Premium プランで実行されている場合は、デプロイ後に ランタイム スケール監視 設定をオンにして、読み込みに基づいてアプリが自動スケーリングされるようにします。
az resource update -g <resource_group> -n <function_app_name>/config/web --set properties.functionsRuntimeScaleMonitoringEnabled=1 --resource-type Microsoft.Web/sites
関数アプリをテストする
次のコマンドを実行して、関数の URL を取得します。
az functionapp function list --resource-group <RESOURCE_GROUP_NAME> --name <FUNCTION_APP_NAME> --query '[].{Function:name, URL:invokeUrlTemplate}' --output json
オーケストレーションの状態を確認する
Durable Task Scheduler ダッシュボードで、オーケストレーション インスタンスの状態とアクティビティの詳細を確認します。 ダッシュボードにアクセスするには、ログインする必要があります。
注
次の手順は、特定のタスク ハブを対象としたロールの割り当てを示しています。 スケジューラ 内のすべての タスク ハブにアクセスする必要がある場合は、スケジューラ レベルで割り当てを実行します。
ポータルで Durable Task Scheduler リソースに移動します。
タスク ハブ名をクリックします。
左側のメニューで [アクセス制御 (IAM)] を選択します。
[ 追加] をクリックしてロールの割り当てを追加します。
[永続タスク データ共同作成者] を検索して選択します。 [次へ] をクリックします。
[ メンバー ] タブの [ アクセスの割り当て] で、[ ユーザー、グループ、またはサービス プリンシパル] を選択します。
[メンバー] の場合は、[+ メンバーの選択] をクリックします。
[ メンバーの選択 ] ウィンドウで、自分の名前または電子メールを検索します。
メールを選び、[ 選択 ] ボタンをクリックします。
[ 確認と割り当て ] をクリックしてロールの割り当てを完了します。
ロールが割り当てられたら、タスク ハブ リソースの左側のメニューで [ 概要 ] をクリックし、上部の [要点 ] セクションにあるダッシュボードの URL に移動します。
リソースをクリーンアップする
クイック スタートを完了するために作成したリソースが不要になった場合は、Azure サブスクリプションの関連コストを回避するために、リソース グループおよびすべての関連リソースを削除します。
次のステップ
- Durable Task Scheduler ダッシュボードの詳細を確認します。
- Durable Task Scheduler の使用中に発生する可能性があるエラーのトラブルシューティングを行います。