Azure Functions の機能である Durable Functions を使用して、サーバーレス環境でステートフル関数を記述します。 Durable Functions が便利なシナリオには、マイクロサービスとワークフローの調整、ファンアウト/ファンインなどのステートフル パターン、実行時間の長いタスクなどがあります。
Durable Task Scheduler を Durable Functions のバックエンドとして使用して、オーケストレーションとエンティティのランタイム状態を格納できます。
このクイック スタートでは次の作業を行います。
- Durable Task Scheduler を使用するように既存の Durable Functions アプリを構成します。
- ローカル開発用に Durable Task エミュレーターを設定します。
- Visual Studio Code を使用して App Service プランでアプリを Azure にデプロイします。
- Durable Task Scheduler ダッシュボードで、アプリとタスク ハブの状態を監視します。
注
Durable Task Scheduler では現在、 Functions Premium プランと App Service プランで実行されている Durable Functions のみがサポートされています。
[前提条件]
このクイック スタートでは、以下のものと一緒にローカル コンピューターに Azure Functions プロジェクトが既に存在することを前提としています。
- 次のような Durable Functions がプロジェクトに追加されました。
- オーケストレーター関数。
- Durable Functions アプリをトリガーする クライアント関数 。
- ローカル デバッグ用に構成されたプロジェクト。
これらの前提条件を満たしていない場合は、次のいずれかのクイックスタートから始め、ローカル Functions プロジェクトを設定することをお勧めします。
以下も必要です。
- Durable Task Scheduler エミュレーターを実行するためにインストールされた Docker。
- Azurite がインストールされています。
- データをセキュリティで保護する HTTP テスト ツール 。
Durable Task Scheduler パッケージを追加する
dotnet add package コマンドを使用して、Microsoft.Azure.Functions.Worker.Extensions.DurableTask.AzureManaged パッケージの最新バージョンをインストールします。
dotnet add package Microsoft.Azure.Functions.Worker.Extensions.DurableTask.AzureManaged --prerelease
注
Durable Task Scheduler 拡張機能には、 Microsoft.Azure.Functions.Worker.Extensions.DurableTask バージョン 1.2.2
以降が必要です。
host.jsonで、Durable Task Scheduler パッケージを含むプレビュー バージョンを使用するように、 extensionBundle
プロパティを更新します。
{
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle.Preview",
"version": "[4.29.0, 5.0.0)"
}
}
host.json を更新する
バックエンドとして Durable Task Scheduler を使用するように、host.json を次のように更新します。
{
"extensions": {
"durableTask": {
"hubName": "%TASKHUB_NAME%",
"storageProvider": {
"type": "azureManaged",
"connectionStringName": "DURABLE_TASK_SCHEDULER_CONNECTION_STRING"
}
}
}
}
local.settings.json の設定
ローカル開発用の接続情報を追加します。
{
"IsEncrypted": false,
"Values": {
"FUNCTIONS_WORKER_RUNTIME": "<DEPENDENT ON YOUR PROGRAMMING LANGUAGE>",
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"DURABLE_TASK_SCHEDULER_CONNECTION_STRING": "Endpoint=http://localhost:8080;Authentication=None",
"TASKHUB_NAME": "default"
}
}
Durable Task エミュレーターを設定する
エミュレーターを含む Docker イメージをプルします。
docker pull mcr.microsoft.com/dts/dts-emulator:latest
エミュレーターを実行します。
docker run -d -p 8080:8080 -p 8082:8082 mcr.microsoft.com/dts/dts-emulator:latest
次の出力は、エミュレーターが正常に開始されたことを示しています。
Docker デスクトップで公開されているポートをメモしておきます。 スケジューラは、さまざまな目的で複数のポートを公開します。
-
8080
: アプリがスケジューラに接続できるようにする gRPC エンドポイント -
8082
: Durable Task Scheduler ダッシュボードのエンドポイント
-
ローカルでテストする
アプリのルート ディレクトリに移動し、Azurite を起動します。
azurite start
アプリケーションを実行します。
func start
アプリに関数の一覧が表示されます。 Durable Functions のクイックスタートのいずれかに従ってアプリを作成した場合、次のような出力が表示されます。
選択した HTTP
POST
を使用して、URL エンドポイントに HTTP 要求を送信して、オーケストレーション インスタンスを開始します。statusQueryGetUri
の URL 値をコピーし、ブラウザーのアドレス バーに貼り付けます。 オーケストレーション インスタンスの状態が表示されます。{ "name": "DurableFunctionsOrchestrationCSharp1", "instanceId": "b50f8b723f2f44149ab9fd2e3790a0e8", "runtimeStatus": "Completed", "input": null, "customStatus": null, "output": [ "Hello Tokyo!", "Hello Seattle!", "Hello London!" ], "createdTime": "2025-02-21T21:09:59Z", "lastUpdatedTime": "2025-02-21T21:10:00Z" }
オーケストレーション インスタンスの詳細を表示するには、Durable Task Scheduler ダッシュボード http://localhost:8082/ アクセスする方法に関するページを参照してください。
既定のタスク ハブをクリックすると、そのダッシュボードが表示されます。
注
Durable Task Scheduler ダッシュボードの詳細を確認します。
Durable Task Scheduler エミュレーターは、オーケストレーション データをメモリに格納します。つまり、シャットダウン時にすべてのデータが失われます。
テストで問題が発生しましたか? トラブルシューティング ガイドを参照してください。
Azure でアプリを実行する
必要なリソースを作成する
関数アプリ統合作成フローに従って、Durable Task Scheduler インスタンスと Azure Functions アプリを Azure 上に作成します。 このエクスペリエンスでは、ID ベースのアクセスが自動的に設定され、スケジューラにアクセスするためにアプリに必要な環境変数が構成されます。
[関数アプリの作成] ブレードに移動し、ホスティング オプションとして [Functions Premium ] または [App Service ] を選択します。
[ 関数アプリの作成 (App Service)] ブレードで、[ 基本 ] タブの情報を入力します。
フィールド 説明 サブスクリプション Azure のサブスクリプションを選択します。 リソース グループ 既存のリソース グループを選択するか、[ 新規作成 ] をクリックして新しいリソース グループを作成します。 関数アプリ名 関数アプリの一意の名前を作成します。 コードまたはコンテナー イメージをデプロイしますか? [コード] オプションをオンのままにします。 ランタイム スタック (実行時スタック) このクイック スタートで使用しているランタイムを選択します。 バージョン ランタイム スタックのバージョンを選択します。 リージョン サポートされているリージョンのいずれかを選択します。 オペレーティング システム オペレーティング システムを選択します。 [ Durable Functions ] タブを選択します。
永続的な関数のバックエンド プロバイダーとして Durable Task Scheduler を選択します。
スケジューラ リソースを作成します。 このアクションにより、タスク ハブが自動的に作成されます。
フィールド 説明 ストレージ バックエンド Durable Task Scheduler を選択します。 リージョン スケジューラと関数アプリのリージョンは同じである必要があります。 耐久性のあるタスクスケジューラ 提供されているスケジューラ名を使用するか、[ 新規作成 ] をクリックしてカスタム名を作成します。 計画 現時点では 専用 のみ利用可能です。 容量ユニット 現時点では、オプションとして選択できる容量ユニットは 1 つだけです。 [ 確認と作成 ] をクリックして、リソースの作成を確認します。
必要なロールベースのアクセス制御 (RBAC) アクセス許可を持つユーザー割り当てマネージド ID が自動的に作成され、関数アプリに追加されます。 次のようなマネージド ID リソースに関連する概要ビュー情報を確認できます。
割り当てられたロール (永続タスク データ共同作成者)
タスク ハブ レベルにスコープが設定された割り当て
検証に合格したら、[ 作成 ] をクリックします。
リソースのデプロイには約 15 ~ 20 分かかる場合があります。 完了したら、アプリを Azure にデプロイできます。
関数アプリを Azure にデプロイする
重要
既存の関数アプリにデプロイすると、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 ダッシュボードで、オーケストレーション インスタンスの状態とアクティビティの詳細を確認します。 ダッシュボードにアクセスするには、ログインする必要があります。
注
次の手順は、特定のタスク ハブを対象としたロールの割り当てを示しています。 スケジューラ 内のすべての タスク ハブにアクセスする必要がある場合は、スケジューラ レベルで割り当てを実行します。
ポータルで持続的タスク スケジューラ リソースに移動します。
タスク ハブ名をクリックします。
左側のメニューで [アクセス制御 (IAM)] を選択します。
[ 追加] をクリックしてロールの割り当てを追加します。
[永続タスク データ共同作成者] を検索して選択します。 [次へ] をクリックします。
[ メンバー ] タブの [ アクセスの割り当て] で、[ ユーザー、グループ、またはサービス プリンシパル] を選択します。
[メンバー] の場合は、[+ メンバーの選択] をクリックします。
[ メンバーの選択 ] ウィンドウで、自分の名前または電子メールを検索します。
メールを選び、[ 選択 ] ボタンをクリックします。
[ 確認と割り当て ] をクリックしてロールの割り当てを完了します。
ロールが割り当てられたら、タスク ハブ リソースの左側のメニューで [ 概要 ] をクリックし、上部の [要点 ] セクションにあるダッシュボードの URL に移動します。
リソースをクリーンアップする
クイックスタートを完了するために作成したリソースが不要になった場合は、Azure サブスクリプションで関連コストが発生するのを避けるため、リソース グループは削除し、関連するすべてのリソースも削除してください。
次のステップ
- Durable Task Scheduler ダッシュボードの詳細を確認します。
- Durable Task Scheduler の使用中に発生する可能性があるエラーのトラブルシューティングを行います。