クイック スタート: Durable Task Scheduler を使用するようにDurable Functions アプリを構成する

Durable Task SchedulerDurable 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 以降が必要です。

  1. 関数アプリをビルドして起動します。

    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)"
  }
}
  1. 関数アプリを起動します。

    func start
    
  1. 関数アプリをビルドして起動します。

    mvn clean package
    mvn azure-functions:run
    
  1. 別のターミナルで、オーケストレーションをトリガーします。

    $response = Invoke-RestMethod -Method POST -Uri http://localhost:7071/api/DurableFunctionsOrchestrationCSharp1_HttpStart
    $response
    
  1. 別のターミナルで、オーケストレーションをトリガーします。

    $response = Invoke-RestMethod -Method POST -Uri http://localhost:7071/api/StartChaining
    $response
    
  1. 応答には、オーケストレーション インスタンスの状態 URL が含まれています。 statusQueryGetUriにクエリを実行して結果を確認します。

    Invoke-RestMethod -Uri $response.statusQueryGetUri
    

    オーケストレーションの runtimeStatusCompletedされると、出力にはあいさつの結果が含まれます。 runtimeStatusまたはRunningPending表示される場合は、しばらく待ってから、もう一度クエリを実行します。

  2. オーケストレーション インスタンスの詳細については、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 ベースのアクセスが自動的に設定され、スケジューラにアクセスするためにアプリに必要な環境変数が構成されます。

  1. [関数アプリの作成] ブレードに移動します。

    関数アプリのホスティング オプションのスクリーンショット。

  2. [ 関数アプリの作成 (Flex Consumption)] ブレードで、[ 基本 ] タブの情報を入力します。

    Flex 従量課金プラン関数アプリを作成するための [基本] タブのスクリーンショット。

    フィールド 説明
    Subscription Azure のサブスクリプションを選択します。
    リソース グループ 既存のリソース グループを選択するか、[ 新規作成 ] をクリックして新しいリソース グループを作成します。
    関数アプリ名 関数アプリの一意の名前を作成します。
    コードまたはコンテナー イメージをデプロイしますか? [コード] オプションをオンのままにします。
    リージョン サポートされているリージョンのいずれかを選択します
    ランタイム スタック このクイック スタートで使用しているランタイムを選択します。
    バージョン ランタイム スタックのバージョンを選択します。
    インスタンスのサイズ インスタンス サイズを選択するか、既定の選択を使用します。 インスタンス サイズの詳細を確認します。
    ゾーン冗長 既定の [無効] 設定のままにします。
  3. Durable Functions タブを選択します。

  4. Durable Functionsのバックエンド プロバイダーとしてAzureマネージド: Durable Task Scheduler を選択します。

  5. スケジューラ リソースを作成します。 このアクションにより、タスク ハブが自動的に作成されます。

    Flex Consumption 関数アプリの作成のスクリーンショット。

    フィールド 説明
    ストレージ バックエンド Azure managed: Durable Task Scheduler を選択します。
    リージョン スケジューラと関数アプリのリージョンが同じであることを確認します。
    耐久性のあるタスクスケジューラ 提供されているスケジューラ名を使用するか、[ 新規作成 ] をクリックしてカスタム名を作成します。
    Plan プロジェクトに最適な 価格プラン を選択します。 運用環境で使用するのに最適なプランを決定するには、「 オーケストレーション フレームワークの選択 」ガイドを確認してください。
    容量ユニット "専用" 価格プランが選択されている場合にのみ適用されます。 最大 3 つの容量ユニットを選択できます。
  6. [ 確認と作成 ] をクリックして、リソースの作成を確認します。

    必要なロールベースのアクセス制御 (RBAC) アクセス許可を持つユーザー割り当てマネージド ID が自動的に作成され、関数アプリに追加されます。 次のようなマネージド ID リソースに関連する概要ビュー情報を確認できます。

    • 割り当てられたロール (永続タスク データ共同作成者)

    • タスク ハブ レベルにスコープが設定された割り当て

      [確認と作成] タブで選択され、レビュー中のフィールドとプロパティのスクリーンショット。

  7. 検証に合格したら、[ 作成 ] をクリックします。

リソースのデプロイには約 15 ~ 20 分かかる場合があります。 完了したら、アプリをAzureにデプロイできます。

関数アプリを Azure にデプロイする

Important

既存の関数アプリにデプロイすると、Azure にあるそのアプリの内容が常に上書きされます。

  1. コマンド パレットで、入力して [Azure Functions: 関数アプリにデプロイする] を選択します。

  2. 作成したばかりの関数アプリを選びます。 前のデプロイの上書きを求められたら、[デプロイ] を選択して、関数コードを新しい関数アプリ リソースにデプロイします。

  3. デプロイの完了後、[出力の表示] を選択すると、作成済みの 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 ダッシュボードで、オーケストレーション インスタンスの状態とアクティビティの詳細を確認します。 ダッシュボードにアクセスするには、ログインする必要があります。

次の手順は、特定のタスク ハブを対象としたロールの割り当てを示しています。 スケジューラ 内のすべての タスク ハブにアクセスする必要がある場合は、スケジューラ レベルで割り当てを実行します。

  1. ポータルで Durable Task Scheduler リソースに移動します。

  2. タスク ハブ名をクリックします。

  3. 左側のメニューで [アクセス制御 (IAM)] を選択します。

  4. [ 追加] をクリックしてロールの割り当てを追加します。

    ポータルのAccess Control ペインにロールの割り当てを追加する画面。

  5. [永続タスク データ共同作成者] を検索して選択します。 [次へ] をクリックします。

    ポータルで Durable Task Data Contributor ロールの割り当てを選択するスクリーンショット。

  6. [ メンバー ] タブの [ アクセスの割り当て] で、[ ユーザー、グループ、またはサービス プリンシパル] を選択します。

  7. [メンバー] の場合は、[+ メンバーの選択] をクリックします。

  8. [ メンバーの選択 ] ウィンドウで、自分の名前または電子メールを検索します。

    ポータルでユーザー割り当てマネージド ID の種類を選択するスクリーンショット。

  9. メールを選び、[ 選択 ] ボタンをクリックします。

  10. [ 確認と割り当て ] をクリックしてロールの割り当てを完了します。

  11. ロールが割り当てられたら、タスク ハブ リソースの左側のメニューで [ 概要 ] をクリックし、上部の [要点 ] セクションにあるダッシュボードの URL に移動します。

リソースをクリーンアップする

クイック スタートを完了するために作成したリソースが不要になった場合は、Azure サブスクリプションの関連コストを回避するために、リソース グループおよびすべての関連リソースを削除します。

次のステップ