Azure Resource Manager Durabletask Dotnet

作者 microsoft354361d83247MIT收錄於 2026年10月8日更新於 2026年10月8日

Azure Resource Manager SDK for Durable Task Scheduler in .NET. Use for MANAGEMENT PLANE operations: creating/managing Durable Task Schedulers, Task Hubs, and retention policies via Azure Resource Manager. Triggers: "Durable Task Scheduler", "create scheduler", "task hub", "DurableTaskSchedulerResource", "provision Durable Task", "orchestration scheduler".

精選僅含說明DevOps & Cloud
AI 產生的概覽

說明如何透過 Azure Resource Manager SDK 在 .NET 中佈建 Azure Durable Task Scheduler 資源。

功能
此技能說明如何使用 Azure.ResourceManager.DurableTask .NET SDK 進行管理平面操作。內容示範如何建立、列出、更新與刪除 Durable Task Scheduler、Task Hub 及保留原則,涵蓋 SKU 選擇、IP 允許清單與錯誤處理。產出為 C# 程式碼片段與設定指引,而非檔案或指令碼。
適用情境
適用於在 .NET 程式碼中佈建或管理 Azure Durable Task Scheduler 基礎設施的情境。適合建立排程器或 Task Hub、調整容量、設定保留原則等工作。不適用於啟動協調流程或查詢執行個體,那屬於資料平面 SDK。
執行需求
需要 .NET SDK,以及 Azure.ResourceManager.DurableTask、Azure.ResourceManager 與 Azure.Identity 套件,並需要 Azure 認證與對 Azure Resource Manager 的網路存取。需要訂用帳戶 ID 與資源群組的環境變數;服務主體驗證另需租用戶、用戶端 ID 與密鑰。此技能未隨附指令碼。

Azure.ResourceManager.DurableTask (.NET)

Management plane SDK for provisioning and managing Azure Durable Task Scheduler resources via Azure Resource Manager.

⚠️ Management vs Data Plane

  • This SDK (Azure.ResourceManager.DurableTask): Create schedulers, task hubs, configure retention policies
  • Data Plane SDK (Microsoft.DurableTask.Client.AzureManaged): Start orchestrations, query instances, send events

Installation

bash
dotnet add package Azure.ResourceManager.DurableTaskdotnet add package Azure.Identity

Current Versions: Stable v1.0.0 (2025-11-03), Preview v1.0.0-beta.1 (2025-04-24) API Version: 2025-11-01

Environment Variables

bash
AZURE_SUBSCRIPTION_ID=<your-subscription-id> # Required: Azure subscription IDAZURE_RESOURCE_GROUP=<your-resource-group> # Required: Azure resource group nameAZURE_TOKEN_CREDENTIALS=prod  # Required only if DefaultAzureCredential is used in productionAZURE_TENANT_ID=<tenant-id> # For service principal auth (optional)AZURE_CLIENT_ID=<client-id> # For service principal auth (optional)AZURE_CLIENT_SECRET=<client-secret> # For service principal auth (optional)

Authentication

csharp
using Azure.Identity;using Azure.ResourceManager;using Azure.ResourceManager.DurableTask;
// Local dev: DefaultAzureCredential. Production: set AZURE_TOKEN_CREDENTIALS=prod or AZURE_TOKEN_CREDENTIALS=<specific_credential>var credential = new DefaultAzureCredential(    DefaultAzureCredential.DefaultEnvironmentVariableName);// Or use a specific credential directly in production:// See https://learn.microsoft.com/dotnet/api/overview/azure/identity-readme?view=azure-dotnet#credential-classes// var credential = new ManagedIdentityCredential();var armClient = new ArmClient(credential);
// Get subscriptionvar subscriptionId = Environment.GetEnvironmentVariable("AZURE_SUBSCRIPTION_ID");var subscription = armClient.GetSubscriptionResource(    new ResourceIdentifier($"/subscriptions/{subscriptionId}"));

Resource Hierarchy

ArmClient└── SubscriptionResource    └── ResourceGroupResource        └── DurableTaskSchedulerResource            ├── DurableTaskHubResource            └── DurableTaskRetentionPolicyResource

Core Workflow

1. Create Durable Task Scheduler

csharp
using Azure.ResourceManager.DurableTask;using Azure.ResourceManager.DurableTask.Models;
// Get resource groupvar resourceGroup = await subscription    .GetResourceGroupAsync("my-resource-group");
// Define scheduler with Dedicated SKUvar schedulerData = new DurableTaskSchedulerData(AzureLocation.EastUS){    Properties = new DurableTaskSchedulerProperties    {        Sku = new DurableTaskSchedulerSku(DurableTaskSchedulerSkuName.Dedicated)        {            Capacity = 1  // Number of instances        },        // Optional: IP allowlist for network security        IPAllowlist = { "10.0.0.0/24", "192.168.1.0/24" }    }};
// Create scheduler (long-running operation)var schedulerCollection = resourceGroup.Value.GetDurableTaskSchedulers();var operation = await schedulerCollection.CreateOrUpdateAsync(    WaitUntil.Completed,    "my-scheduler",    schedulerData);
DurableTaskSchedulerResource scheduler = operation.Value;Console.WriteLine($"Scheduler created: {scheduler.Data.Name}");Console.WriteLine($"Endpoint: {scheduler.Data.Properties.Endpoint}");

2. Create Scheduler with Consumption SKU

csharp
// Consumption SKU (serverless)var consumptionSchedulerData = new DurableTaskSchedulerData(AzureLocation.EastUS){    Properties = new DurableTaskSchedulerProperties    {        Sku = new DurableTaskSchedulerSku(DurableTaskSchedulerSkuName.Consumption)        // No capacity needed for consumption    }};
var operation = await schedulerCollection.CreateOrUpdateAsync(    WaitUntil.Completed,    "my-serverless-scheduler",    consumptionSchedulerData);

3. Create Task Hub

csharp
// Task hubs are created under a schedulervar taskHubData = new DurableTaskHubData{    // Properties are optional for basic task hub};
var taskHubCollection = scheduler.GetDurableTaskHubs();var hubOperation = await taskHubCollection.CreateOrUpdateAsync(    WaitUntil.Completed,    "my-taskhub",    taskHubData);
DurableTaskHubResource taskHub = hubOperation.Value;Console.WriteLine($"Task Hub created: {taskHub.Data.Name}");

4. List Schedulers

csharp
// List all schedulers in subscriptionawait foreach (var sched in subscription.GetDurableTaskSchedulersAsync()){    Console.WriteLine($"Scheduler: {sched.Data.Name}");    Console.WriteLine($"  Location: {sched.Data.Location}");    Console.WriteLine($"  SKU: {sched.Data.Properties.Sku?.Name}");    Console.WriteLine($"  Endpoint: {sched.Data.Properties.Endpoint}");}
// List schedulers in resource groupvar schedulers = resourceGroup.Value.GetDurableTaskSchedulers();await foreach (var sched in schedulers.GetAllAsync()){    Console.WriteLine($"Scheduler: {sched.Data.Name}");}

5. Get Scheduler by Name

csharp
// Get existing schedulervar existingScheduler = await schedulerCollection.GetAsync("my-scheduler");Console.WriteLine($"Found: {existingScheduler.Value.Data.Name}");
// Or use extension methodvar schedulerResource = armClient.GetDurableTaskSchedulerResource(    DurableTaskSchedulerResource.CreateResourceIdentifier(        subscriptionId,        "my-resource-group",        "my-scheduler"));var scheduler = await schedulerResource.GetAsync();

6. Update Scheduler

csharp
// Get current schedulervar scheduler = await schedulerCollection.GetAsync("my-scheduler");
// Update with new configurationvar updateData = new DurableTaskSchedulerData(scheduler.Value.Data.Location){    Properties = new DurableTaskSchedulerProperties    {        Sku = new DurableTaskSchedulerSku(DurableTaskSchedulerSkuName.Dedicated)        {            Capacity = 2  // Scale up        },        IPAllowlist = { "10.0.0.0/16" }  // Update IP allowlist    }};
var updateOperation = await schedulerCollection.CreateOrUpdateAsync(    WaitUntil.Completed,    "my-scheduler",    updateData);

7. Delete Resources

csharp
// Delete task hub firstvar taskHub = await scheduler.GetDurableTaskHubs().GetAsync("my-taskhub");await taskHub.Value.DeleteAsync(WaitUntil.Completed);
// Then delete schedulerawait scheduler.DeleteAsync(WaitUntil.Completed);

8. Manage Retention Policies

csharp
// Get retention policy collectionvar retentionPolicies = scheduler.GetDurableTaskRetentionPolicies();
// Create or update retention policyvar retentionData = new DurableTaskRetentionPolicyData{    Properties = new DurableTaskRetentionPolicyProperties    {        // Configure retention settings    }};
var retentionOperation = await retentionPolicies.CreateOrUpdateAsync(    WaitUntil.Completed,    "default",  // Policy name    retentionData);

Key Types Reference

TypePurpose
ArmClientEntry point for all ARM operations
DurableTaskSchedulerResourceRepresents a Durable Task Scheduler
DurableTaskSchedulerCollectionCollection for scheduler CRUD
DurableTaskSchedulerDataScheduler creation/update payload
DurableTaskSchedulerPropertiesScheduler configuration (SKU, IPAllowlist)
DurableTaskSchedulerSkuSKU configuration (Name, Capacity, RedundancyState)
DurableTaskSchedulerSkuNameSKU options: Dedicated, Consumption
DurableTaskHubResourceRepresents a Task Hub
DurableTaskHubCollectionCollection for task hub CRUD
DurableTaskHubDataTask hub creation payload
DurableTaskRetentionPolicyResourceRetention policy management
DurableTaskRetentionPolicyDataRetention policy configuration
DurableTaskExtensionsExtension methods for ARM client

SKU Options

SKUDescriptionUse Case
DedicatedFixed capacity with configurable instancesProduction workloads, predictable performance
ConsumptionServerless, auto-scalingDevelopment, variable workloads

Extension Methods

The SDK provides extension methods on SubscriptionResource and ResourceGroupResource:

csharp
// On SubscriptionResourcesubscription.GetDurableTaskSchedulers();           // List all in subscriptionsubscription.GetDurableTaskSchedulersAsync();      // Async enumerable
// On ResourceGroupResource  resourceGroup.GetDurableTaskSchedulers();          // Get collectionresourceGroup.GetDurableTaskSchedulerAsync(name);  // Get by name
// On ArmClientarmClient.GetDurableTaskSchedulerResource(id);     // Get by resource IDarmClient.GetDurableTaskHubResource(id);           // Get task hub by ID

Best Practices

  1. Use WaitUntil.Completed for operations that must finish before proceeding
  2. Use WaitUntil.Started when you want to poll manually or run operations in parallel
  3. Use DefaultAzureCredential — never hardcode keys
  4. Handle RequestFailedException for ARM API errors
  5. Use CreateOrUpdateAsync for idempotent operations
  6. Delete task hubs before schedulers — schedulers with task hubs cannot be deleted
  7. Use IP allowlists for network security in production

Error Handling

csharp
using Azure;
try{    var operation = await schedulerCollection.CreateOrUpdateAsync(        WaitUntil.Completed, schedulerName, schedulerData);}catch (RequestFailedException ex) when (ex.Status == 409){    Console.WriteLine("Scheduler already exists");}catch (RequestFailedException ex) when (ex.Status == 404){    Console.WriteLine("Resource group not found");}catch (RequestFailedException ex){    Console.WriteLine($"ARM Error: {ex.Status} - {ex.ErrorCode}: {ex.Message}");}

Complete Example

csharp
using Azure;using Azure.Identity;using Azure.ResourceManager;using Azure.ResourceManager.DurableTask;using Azure.ResourceManager.DurableTask.Models;using Azure.ResourceManager.Resources;
// Setupvar credential = new DefaultAzureCredential();var armClient = new ArmClient(credential);
var subscriptionId = Environment.GetEnvironmentVariable("AZURE_SUBSCRIPTION_ID")!;var resourceGroupName = Environment.GetEnvironmentVariable("AZURE_RESOURCE_GROUP")!;
var subscription = armClient.GetSubscriptionResource(    new ResourceIdentifier($"/subscriptions/{subscriptionId}"));var resourceGroup = await subscription.GetResourceGroupAsync(resourceGroupName);
// Create schedulervar schedulerData = new DurableTaskSchedulerData(AzureLocation.EastUS){    Properties = new DurableTaskSchedulerProperties    {        Sku = new DurableTaskSchedulerSku(DurableTaskSchedulerSkuName.Dedicated)        {            Capacity = 1        }    }};
var schedulerCollection = resourceGroup.Value.GetDurableTaskSchedulers();var schedulerOp = await schedulerCollection.CreateOrUpdateAsync(    WaitUntil.Completed, "my-scheduler", schedulerData);var scheduler = schedulerOp.Value;
Console.WriteLine($"Scheduler endpoint: {scheduler.Data.Properties.Endpoint}");
// Create task hubvar taskHubData = new DurableTaskHubData();var taskHubOp = await scheduler.GetDurableTaskHubs().CreateOrUpdateAsync(    WaitUntil.Completed, "my-taskhub", taskHubData);var taskHub = taskHubOp.Value;
Console.WriteLine($"Task Hub: {taskHub.Data.Name}");
// Cleanupawait taskHub.DeleteAsync(WaitUntil.Completed);await scheduler.DeleteAsync(WaitUntil.Completed);

Related SDKs

SDKPurposeInstall
Azure.ResourceManager.DurableTaskManagement plane (this SDK)dotnet add package Azure.ResourceManager.DurableTask
Microsoft.DurableTask.Client.AzureManagedData plane (orchestrations, activities)dotnet add package Microsoft.DurableTask.Client.AzureManaged
Microsoft.DurableTask.Worker.AzureManagedWorker for running orchestrationsdotnet add package Microsoft.DurableTask.Worker.AzureManaged
Azure.IdentityAuthenticationdotnet add package Azure.Identity
Azure.ResourceManagerBase ARM SDKdotnet add package Azure.ResourceManager

Source Reference

來源與署名

來源:microsoft/skills位於.github/plugins/azure-sdk-dotnet/skills/azure-resource-manager-durabletask-dotnet提交354361d

授權條款: MIT

內容歸原作者所有。SourceWeft 從公開儲存庫中收錄這些內容。

檢舉或申請下架