Azure Resource Manager Cosmosdb Dotnet

by microsoft354361d83247MITListed Oct 8, 2026Updated Oct 8, 2026

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".

FeaturedInstructions onlyDevOps & Cloud
AI-generated overview

Guides .NET developers through Azure Resource Manager management-plane operations for provisioning and managing Cosmos DB resources.

What it does
This skill provides .NET code patterns for using the Azure.ResourceManager.CosmosDB SDK to perform management-plane operations on Azure Cosmos DB. It covers creating and managing accounts, SQL databases, containers, throughput settings, and RBAC through Azure Resource Manager. It produces C# code snippets and workflow guidance, and includes reference files for account management, SQL resources, and throughput configuration.
When to use it
Use this skill when you need to provision or manage Azure Cosmos DB resources programmatically from .NET, such as creating accounts, databases, or containers, or configuring throughput. It is intended for management-plane tasks, not for data-plane operations like document CRUD or queries.
Requirements
Requires .NET with the Azure.ResourceManager.CosmosDB and Azure.Identity NuGet packages. Needs an Azure subscription ID and appropriate credentials, such as DefaultAzureCredential or a service principal. Ships no scripts; it is instructions and reference documentation only.

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

Source and attribution

Source:microsoft/skillsin.github/plugins/azure-sdk-dotnet/skills/azure-resource-manager-cosmosdb-dotnetat commit354361d

License: MIT

Content belongs to its original authors. SourceWeft indexes it from a public repository.

Report or request removal