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 从公开仓库中收录这些内容。

举报或申请下架