Azure Resource Manager Cosmosdb Dotnet

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

Azure Resource Manager SDK for Cosmos DB in .NET. Use for MANAGEMENT PLANE operations: creating/managing Cosmos DB accounts, databases, containers, throughput settings, and RBAC via Azure Resource Manager. NOT for data plane operations (CRUD on documents) - use Microsoft.Azure.Cosmos for that. Triggers: "Cosmos DB account", "create Cosmos account", "manage Cosmos resources", "ARM Cosmos", "CosmosDBAccountResource", "provision Cosmos DB".

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

引導 .NET 開發人員透過 Azure Resource Manager 管理平面作業來佈建與管理 Cosmos DB 資源。

功能
此技能提供使用 Azure.ResourceManager.CosmosDB SDK 對 Azure Cosmos DB 執行管理平面作業的 .NET 程式碼模式。涵蓋透過 Azure Resource Manager 建立與管理帳戶、SQL 資料庫、容器、輸送量設定與 RBAC。它產出 C# 程式碼片段與工作流程指引,並包含帳戶管理、SQL 資源與輸送量設定的參考檔案。
適用情境
當你需要從 .NET 以程式設計方式佈建或管理 Azure Cosmos DB 資源時使用此技能,例如建立帳戶、資料庫或容器,或設定輸送量。它適用於管理平面工作,而非文件 CRUD 或查詢等資料平面作業。
執行需求
需要 .NET 以及 Azure.ResourceManager.CosmosDB 與 Azure.Identity NuGet 套件。需要 Azure 訂用帳戶 ID 與適當的認證,例如 DefaultAzureCredential 或服務主體。不隨附指令碼;僅為指示與參考文件。

Azure.ResourceManager.CosmosDB (.NET)

Management plane SDK for provisioning and managing Azure Cosmos DB resources via Azure Resource Manager.

⚠️ Management vs Data Plane

  • This SDK (Azure.ResourceManager.CosmosDB): Create accounts, databases, containers, configure throughput, manage RBAC
  • Data Plane SDK (Microsoft.Azure.Cosmos): CRUD operations on documents, queries, stored procedures execution

Installation

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

Current Versions: Stable v1.4.0, Preview v1.4.0-beta.13

Environment Variables

bash
AZURE_SUBSCRIPTION_ID=<your-subscription-id> # Required: Azure subscription IDAZURE_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.CosmosDB;
// 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        └── CosmosDBAccountResource            ├── CosmosDBSqlDatabaseResource            │   └── CosmosDBSqlContainerResource            │       ├── CosmosDBSqlStoredProcedureResource            │       ├── CosmosDBSqlTriggerResource            │       └── CosmosDBSqlUserDefinedFunctionResource            ├── CassandraKeyspaceResource            ├── GremlinDatabaseResource            ├── MongoDBDatabaseResource            └── CosmosDBTableResource

Core Workflow

1. Create Cosmos DB Account

csharp
using Azure.ResourceManager.CosmosDB;using Azure.ResourceManager.CosmosDB.Models;
// Get resource groupvar resourceGroup = await subscription    .GetResourceGroupAsync("my-resource-group");
// Define accountvar accountData = new CosmosDBAccountCreateOrUpdateContent(    location: AzureLocation.EastUS,    locations: new[]    {        new CosmosDBAccountLocation        {            LocationName = AzureLocation.EastUS,            FailoverPriority = 0,            IsZoneRedundant = false        }    }){    Kind = CosmosDBAccountKind.GlobalDocumentDB,    ConsistencyPolicy = new ConsistencyPolicy(DefaultConsistencyLevel.Session),    EnableAutomaticFailover = true};
// Create account (long-running operation)var accountCollection = resourceGroup.Value.GetCosmosDBAccounts();var operation = await accountCollection.CreateOrUpdateAsync(    WaitUntil.Completed,    "my-cosmos-account",    accountData);
CosmosDBAccountResource account = operation.Value;

2. Create SQL Database

csharp
var databaseData = new CosmosDBSqlDatabaseCreateOrUpdateContent(    new CosmosDBSqlDatabaseResourceInfo("my-database"));
var databaseCollection = account.GetCosmosDBSqlDatabases();var dbOperation = await databaseCollection.CreateOrUpdateAsync(    WaitUntil.Completed,    "my-database",    databaseData);
CosmosDBSqlDatabaseResource database = dbOperation.Value;

3. Create SQL Container

csharp
var containerData = new CosmosDBSqlContainerCreateOrUpdateContent(    new CosmosDBSqlContainerResourceInfo("my-container")    {        PartitionKey = new CosmosDBContainerPartitionKey        {            Paths = { "/partitionKey" },            Kind = CosmosDBPartitionKind.Hash        },        IndexingPolicy = new CosmosDBIndexingPolicy        {            Automatic = true,            IndexingMode = CosmosDBIndexingMode.Consistent        },        DefaultTtl = 86400 // 24 hours    });
var containerCollection = database.GetCosmosDBSqlContainers();var containerOperation = await containerCollection.CreateOrUpdateAsync(    WaitUntil.Completed,    "my-container",    containerData);
CosmosDBSqlContainerResource container = containerOperation.Value;

4. Configure Throughput

csharp
// Manual throughputvar throughputData = new ThroughputSettingsUpdateData(    new ThroughputSettingsResourceInfo    {        Throughput = 400    });
// Autoscale throughputvar autoscaleData = new ThroughputSettingsUpdateData(    new ThroughputSettingsResourceInfo    {        AutoscaleSettings = new AutoscaleSettingsResourceInfo        {            MaxThroughput = 4000        }    });
// Apply to databaseawait database.CreateOrUpdateCosmosDBSqlDatabaseThroughputAsync(    WaitUntil.Completed,    throughputData);

5. Get Connection Information

csharp
// Get keysvar keys = await account.GetKeysAsync();Console.WriteLine($"Primary Key: {keys.Value.PrimaryMasterKey}");
// Get connection stringsvar connectionStrings = await account.GetConnectionStringsAsync();foreach (var cs in connectionStrings.Value.ConnectionStrings){    Console.WriteLine($"{cs.Description}: {cs.ConnectionString}");}

Key Types Reference

TypePurpose
ArmClientEntry point for all ARM operations
CosmosDBAccountResourceRepresents a Cosmos DB account
CosmosDBAccountCollectionCollection for account CRUD
CosmosDBSqlDatabaseResourceSQL API database
CosmosDBSqlContainerResourceSQL API container
CosmosDBAccountCreateOrUpdateContentAccount creation payload
CosmosDBSqlDatabaseCreateOrUpdateContentDatabase creation payload
CosmosDBSqlContainerCreateOrUpdateContentContainer creation payload
ThroughputSettingsUpdateDataThroughput configuration

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. Navigate hierarchy via Get* methods (e.g., account.GetCosmosDBSqlDatabases())

Error Handling

csharp
using Azure;
try{    var operation = await accountCollection.CreateOrUpdateAsync(        WaitUntil.Completed, accountName, accountData);}catch (RequestFailedException ex) when (ex.Status == 409){    Console.WriteLine("Account already exists");}catch (RequestFailedException ex){    Console.WriteLine($"ARM Error: {ex.Status} - {ex.ErrorCode}: {ex.Message}");}

Reference Files

FileWhen to Read
references/account-management.md [blocked]Account CRUD, failover, keys, connection strings, networking
references/sql-resources.md [blocked]SQL databases, containers, stored procedures, triggers, UDFs
references/throughput.md [blocked]Manual/autoscale throughput, migration between modes

Related SDKs

SDKPurposeInstall
Microsoft.Azure.CosmosData plane (document CRUD, queries)dotnet add package Microsoft.Azure.Cosmos
Azure.ResourceManager.CosmosDBManagement plane (this SDK)dotnet add package Azure.ResourceManager.CosmosDB

來源與署名

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

授權條款: MIT

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

檢舉或申請下架