[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-e1bc9b70-49e8-43bd-b12b-03310e12a1fd":3,"$fZkU2-KZs-WxFGUe4VGe8NGlqDYIYieY7gpaFbKi64I4":43},{"id":4,"title":5,"description":6,"categoryId":7,"moduleId":8,"tags":9,"prompt":10,"icon":11,"source":12,"sourceUrl":13,"authorId":14,"authorName":15,"isPublic":16,"stars":17,"runs":18,"createdAt":19,"updatedAt":19,"module":20,"category":27,"packages":34},"e1bc9b70-49e8-43bd-b12b-03310e12a1fd","azure-resource-manager-cosmosdb-dotnet","Azure Cosmos DB的.NET资源管理器SDK","cat_coding_devops","mod_coding","sickn33,coding","---\nname: azure-resource-manager-cosmosdb-dotnet\ndescription: Azure Resource Manager SDK for Cosmos DB in .NET.\nrisk: unknown\nsource: community\ndate_added: '2026-02-27'\n---\n\n# Azure.ResourceManager.CosmosDB (.NET)\n\nManagement plane SDK for provisioning and managing Azure Cosmos DB resources via Azure Resource Manager.\n\n> **⚠️ Management vs Data Plane**\n> - **This SDK (Azure.ResourceManager.CosmosDB)**: Create accounts, databases, containers, configure throughput, manage RBAC\n> - **Data Plane SDK (Microsoft.Azure.Cosmos)**: CRUD operations on documents, queries, stored procedures execution\n\n## Installation\n\n```bash\ndotnet add package Azure.ResourceManager.CosmosDB\ndotnet add package Azure.Identity\n```\n\n**Current Versions**: Stable v1.4.0, Preview v1.4.0-beta.13\n\n## Environment Variables\n\n```bash\nAZURE_SUBSCRIPTION_ID=\u003Cyour-subscription-id>\n# For service principal auth (optional)\nAZURE_TENANT_ID=\u003Ctenant-id>\nAZURE_CLIENT_ID=\u003Cclient-id>\nAZURE_CLIENT_SECRET=\u003Cclient-secret>\n```\n\n## Authentication\n\n```csharp\nusing Azure.Identity;\nusing Azure.ResourceManager;\nusing Azure.ResourceManager.CosmosDB;\n\n\u002F\u002F Always use DefaultAzureCredential\nvar credential = new DefaultAzureCredential();\nvar armClient = new ArmClient(credential);\n\n\u002F\u002F Get subscription\nvar subscriptionId = Environment.GetEnvironmentVariable(\"AZURE_SUBSCRIPTION_ID\");\nvar subscription = armClient.GetSubscriptionResource(\n    new ResourceIdentifier($\"\u002Fsubscriptions\u002F{subscriptionId}\"));\n```\n\n## Resource Hierarchy\n\n```\nArmClient\n└── SubscriptionResource\n    └── ResourceGroupResource\n        └── CosmosDBAccountResource\n            ├── CosmosDBSqlDatabaseResource\n            │   └── CosmosDBSqlContainerResource\n            │       ├── CosmosDBSqlStoredProcedureResource\n            │       ├── CosmosDBSqlTriggerResource\n            │       └── CosmosDBSqlUserDefinedFunctionResource\n            ├── CassandraKeyspaceResource\n            ├── GremlinDatabaseResource\n            ├── MongoDBDatabaseResource\n            └── CosmosDBTableResource\n```\n\n## Core Workflow\n\n### 1. Create Cosmos DB Account\n\n```csharp\nusing Azure.ResourceManager.CosmosDB;\nusing Azure.ResourceManager.CosmosDB.Models;\n\n\u002F\u002F Get resource group\nvar resourceGroup = await subscription\n    .GetResourceGroupAsync(\"my-resource-group\");\n\n\u002F\u002F Define account\nvar accountData = new CosmosDBAccountCreateOrUpdateContent(\n    location: AzureLocation.EastUS,\n    locations: new[]\n    {\n        new CosmosDBAccountLocation\n        {\n            LocationName = AzureLocation.EastUS,\n            FailoverPriority = 0,\n            IsZoneRedundant = false\n        }\n    })\n{\n    Kind = CosmosDBAccountKind.GlobalDocumentDB,\n    ConsistencyPolicy = new ConsistencyPolicy(DefaultConsistencyLevel.Session),\n    EnableAutomaticFailover = true\n};\n\n\u002F\u002F Create account (long-running operation)\nvar accountCollection = resourceGroup.Value.GetCosmosDBAccounts();\nvar operation = await accountCollection.CreateOrUpdateAsync(\n    WaitUntil.Completed,\n    \"my-cosmos-account\",\n    accountData);\n\nCosmosDBAccountResource account = operation.Value;\n```\n\n### 2. Create SQL Database\n\n```csharp\nvar databaseData = new CosmosDBSqlDatabaseCreateOrUpdateContent(\n    new CosmosDBSqlDatabaseResourceInfo(\"my-database\"));\n\nvar databaseCollection = account.GetCosmosDBSqlDatabases();\nvar dbOperation = await databaseCollection.CreateOrUpdateAsync(\n    WaitUntil.Completed,\n    \"my-database\",\n    databaseData);\n\nCosmosDBSqlDatabaseResource database = dbOperation.Value;\n```\n\n### 3. Create SQL Container\n\n```csharp\nvar containerData = new CosmosDBSqlContainerCreateOrUpdateContent(\n    new CosmosDBSqlContainerResourceInfo(\"my-container\")\n    {\n        PartitionKey = new CosmosDBContainerPartitionKey\n        {\n            Paths = { \"\u002FpartitionKey\" },\n            Kind = CosmosDBPartitionKind.Hash\n        },\n        IndexingPolicy = new CosmosDBIndexingPolicy\n        {\n            Automatic = true,\n            IndexingMode = CosmosDBIndexingMode.Consistent\n        },\n        DefaultTtl = 86400 \u002F\u002F 24 hours\n    });\n\nvar containerCollection = database.GetCosmosDBSqlContainers();\nvar containerOperation = await containerCollection.CreateOrUpdateAsync(\n    WaitUntil.Completed,\n    \"my-container\",\n    containerData);\n\nCosmosDBSqlContainerResource container = containerOperation.Value;\n```\n\n### 4. Configure Throughput\n\n```csharp\n\u002F\u002F Manual throughput\nvar throughputData = new ThroughputSettingsUpdateData(\n    new ThroughputSettingsResourceInfo\n    {\n        Throughput = 400\n    });\n\n\u002F\u002F Autoscale throughput\nvar autoscaleData = new ThroughputSettingsUpdateData(\n    new ThroughputSettingsResourceInfo\n    {\n        AutoscaleSettings = new AutoscaleSettingsResourceInfo\n        {\n            MaxThroughput = 4000\n        }\n    });\n\n\u002F\u002F Apply to database\nawait database.CreateOrUpdateCosmosDBSqlDatabaseThroughputAsync(\n    WaitUntil.Completed,\n    throughputData);\n```\n\n### 5. Get Connection Information\n\n```csharp\n\u002F\u002F Get keys\nvar keys = await account.GetKeysAsync();\nConsole.WriteLine($\"Primary Key: {keys.Value.PrimaryMasterKey}\");\n\n\u002F\u002F Get connection strings\nvar connectionStrings = await account.GetConnectionStringsAsync();\nforeach (var cs in connectionStrings.Value.ConnectionStrings)\n{\n    Console.WriteLine($\"{cs.Description}: {cs.ConnectionString}\");\n}\n```\n\n## Key Types Reference\n\n| Type | Purpose |\n|------|---------|\n| `ArmClient` | Entry point for all ARM operations |\n| `CosmosDBAccountResource` | Represents a Cosmos DB account |\n| `CosmosDBAccountCollection` | Collection for account CRUD |\n| `CosmosDBSqlDatabaseResource` | SQL API database |\n| `CosmosDBSqlContainerResource` | SQL API container |\n| `CosmosDBAccountCreateOrUpdateContent` | Account creation payload |\n| `CosmosDBSqlDatabaseCreateOrUpdateContent` | Database creation payload |\n| `CosmosDBSqlContainerCreateOrUpdateContent` | Container creation payload |\n| `ThroughputSettingsUpdateData` | Throughput configuration |\n\n## Best Practices\n\n1. **Use `WaitUntil.Completed`** for operations that must finish before proceeding\n2. **Use `WaitUntil.Started`** when you want to poll manually or run operations in parallel\n3. **Always use `DefaultAzureCredential`** — never hardcode keys\n4. **Handle `RequestFailedException`** for ARM API errors\n5. **Use `CreateOrUpdateAsync`** for idempotent operations\n6. **Navigate hierarchy** via `Get*` methods (e.g., `account.GetCosmosDBSqlDatabases()`)\n\n## Error Handling\n\n```csharp\nusing Azure;\n\ntry\n{\n    var operation = await accountCollection.CreateOrUpdateAsync(\n        WaitUntil.Completed, accountName, accountData);\n}\ncatch (RequestFailedException ex) when (ex.Status == 409)\n{\n    Console.WriteLine(\"Account already exists\");\n}\ncatch (RequestFailedException ex)\n{\n    Console.WriteLine($\"ARM Error: {ex.Status} - {ex.ErrorCode}: {ex.Message}\");\n}\n```\n\n## Reference Files\n\n| File | When to Read |\n|------|--------------|\n| references\u002Faccount-management.md | Account CRUD, failover, keys, connection strings, networking |\n| references\u002Fsql-resources.md | SQL databases, containers, stored procedures, triggers, UDFs |\n| references\u002Fthroughput.md | Manual\u002Fautoscale throughput, migration between modes |\n\n## Related SDKs\n\n| SDK | Purpose | Install |\n|-----|---------|---------|\n| `Microsoft.Azure.Cosmos` | Data plane (document CRUD, queries) | `dotnet add package Microsoft.Azure.Cosmos` |\n| `Azure.ResourceManager.CosmosDB` | Management plane (this SDK) | `dotnet add package Azure.ResourceManager.CosmosDB` |\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.\n","","imported","https:\u002F\u002Fgithub.com\u002Fsickn33\u002Fantigravity-awesome-skills","user_system_seed","SkillOPIC",true,64,1607,"2026-05-16 13:07:23",{"id":8,"name":21,"slug":22,"icon":23,"description":24,"sort":25,"createdAt":26},"编程开发","coding","mdi-code-braces","代码生成、调试、审查，提升开发效率",2,"2026-05-16 12:53:40",{"id":7,"name":28,"slug":29,"icon":30,"description":31,"moduleId":8,"sort":32,"skillCount":33,"createdAt":26},"DevOps","devops","mdi-cog-outline","CI\u002FCD、容器化、部署运维",3,162,[35],{"id":36,"skillId":4,"version":37,"fileName":38,"fileSize":39,"filePath":40,"fileHash":41,"manifest":42,"createdAt":19},"8aa8b638-25ab-4641-ad18-643c34faada4","1.0.0","azure-resource-manager-cosmosdb-dotnet.zip",2782,"uploads\u002Fskills\u002Fe1bc9b70-49e8-43bd-b12b-03310e12a1fd\u002Fazure-resource-manager-cosmosdb-dotnet.zip","8838ab0c8126dd7460453a24a713180c25ed63042110f7c0f90cc56f7a0d31f7","[{\"path\":\"SKILL.md\",\"isDirectory\":false,\"size\":7937}]",{"code":44,"message":45,"data":46},200,"success",{"items":47,"stats":48,"page":51},[],{"averageRating":49,"totalRatings":49,"ratingCounts":50},0,[49,49,49,49,49],{"limit":52,"offset":49,"hasMore":53,"nextOffset":52,"ratedOnly":16},15,false]