by sickn33
此技能提供使用 Azure .NET SDK 将 MongoDB Atlas 组织作为 Azure ARM 资源进行管理的文档和代码示例。它使开发人员能够将 MongoDB Atlas 与 Azure Marketplace 集成,实现统一计费。
1. 打开 Claude 聊天界面
2. 点击下方 "📋 复制" 按钮
3. 粘贴到 Claude 聊天框中并发送
4. 输入 "使用 azure-mgmt-mongodbatlas-dotnet 技能" 开始使用
=== azure-mgmt-mongodbatlas-dotnet 技能 === 作者: sickn33 描述: 此技能提供使用 Azure .NET SDK 将 MongoDB Atlas 组织作为 Azure ARM 资源进行管理的文档和代码示例。它使开发人员能够将 MongoDB Atlas 与 Azure Marketplace 集成,实现统一计费。 使用方法: 1. 调用技能: "使用 azure-mgmt-mongodbatlas-dotnet 技能" 2. 提供相关信息: 根据技能要求提供必要参数 3. 查看结果: 技能会返回处理结果 示例: "使用 azure-mgmt-mongodbatlas-dotnet 技能,帮我分析一下这段代码"
这种方法适用于所有 Claude 用户,不需要安装额外工具。
productivity
safe
Manage MongoDB Atlas Organizations as Azure ARM resources with unified billing through Azure Marketplace.
| Property | Value |
|---|---|
| Package | Azure.ResourceManager.MongoDBAtlas |
| Version | 1.0.0 (GA) |
| API Version | 2025-06-01 |
| Resource Type | MongoDB.Atlas/organizations |
| NuGet | Azure.ResourceManager.MongoDBAtlas |
dotnet add package Azure.ResourceManager.MongoDBAtlas
dotnet add package Azure.Identity
dotnet add package Azure.ResourceManager
This SDK manages MongoDB Atlas Organizations as Azure ARM resources for marketplace integration. It does NOT directly manage:
For cluster management, use the MongoDB Atlas API directly after creating the organization.
using Azure.Identity;
using Azure.ResourceManager;
using Azure.ResourceManager.MongoDBAtlas;
using Azure.ResourceManager.MongoDBAtlas.Models;
// Create ARM client with DefaultAzureCredential
var credential = new DefaultAzureCredential();
var armClient = new ArmClient(credential);
| Type | Purpose |
|---|---|
MongoDBAtlasOrganizationResource | ARM resource representing an Atlas organization |
MongoDBAtlasOrganizationCollection | Collection of organizations in a resource group |
MongoDBAtlasOrganizationData | Data model for organization resource |
MongoDBAtlasOrganizationProperties | Organization-specific properties |
MongoDBAtlasMarketplaceDetails | Azure Marketplace subscription details |
MongoDBAtlasOfferDetails | Marketplace offer configuration |
MongoDBAtlasUserDetails | User information for the organization |
MongoDBAtlasPartnerProperties | MongoDB-specific properties (org name, ID) |
// Get resource group
var subscription = await armClient.GetDefaultSubscriptionAsync();
var resourceGroup = await subscription.GetResourceGroupAsync("my-resource-group");
// Get organizations collection
MongoDBAtlasOrganizationCollection organizations =
resourceGroup.Value.GetMongoDBAtlasOrganizations();
var organizationName = "my-atlas-org";
var location = AzureLocation.EastUS2;
// Build organization data
var organizationData = new MongoDBAtlasOrganizationData(location)
{
Properties = new MongoDBAtlasOrganizationProperties(
marketplace: new MongoDBAtlasMarketplaceDetails(
subscriptionId: "your-azure-subscription-id",
offerDetails: new MongoDBAtlasOfferDetails(
publisherId: "mongodb",
offerId: "mongodb_atlas_azure_native_prod",
planId: "private_plan",
planName: "Pay as You Go (Free) (Private)",
termUnit: "P1M",
termId: "gmz7xq9ge3py"
)
),
user: new MongoDBAtlasUserDetails(
emailAddress: "admin@example.com",
upn: "admin@example.com"
)
{
FirstName = "Admin",
LastName = "User"
}
)
{
PartnerProperties = new MongoDBAtlasPartnerProperties
{
OrganizationName = organizationName
}
},
Tags = { ["Environment"] = "Production" }
};
// Create the organization (long-running operation)
var operation = await organizations.CreateOrUpdateAsync(
WaitUntil.Completed,
organizationName,
organizationData
);
MongoDBAtlasOrganizationResource organization = operation.Value;
Console.WriteLine($"Created: {organization.Id}");
// Option 1: From collection
MongoDBAtlasOrganizationResource org =
await organizations.GetAsync("my-atlas-org");
// Option 2: From resource identifier
var resourceId = MongoDBAtlasOrganizationResource.CreateResourceIdentifier(
subscriptionId: "subscription-id",
resourceGroupName: "my-resource-group",
organizationName: "my-atlas-org"
);
MongoDBAtlasOrganizationResource org2 =
armClient.GetMongoDBAtlasOrganizationResource(resourceId);
await org2.GetAsync(); // Fetch data
// List in resource group
await foreach (var org in organizations.GetAllAsync())
{
Console.WriteLine($"Org: {org.Data.Name}");
Console.WriteLine($" Location: {org.Data.Location}");
Console.WriteLine($" State: {org.Data.Properties?.ProvisioningState}");
}
// List across subscription
await foreach (var org in subscription.GetMongoDBAtlasOrganizationsAsync())
{
Console.WriteLine($"Org: {org.Data.Name} in {org.Data.Id}");
}
// Add a single tag
await organization.AddTagAsync("CostCenter", "12345");
// Replace all tags
await organization.SetTagsAsync(new Dictionary<string, string>
{
["Environment"] = "Production",
["Team"] = "Platform"
});
// Remove a tag
await organization.RemoveTagAsync("OldTag");
var patch = new MongoDBAtlasOrganizationPatch
{
Tags = { ["UpdatedAt"] = DateTime.UtcNow.ToString("o") },
Properties = new MongoDBAtlasOrganizationUpdateProperties
{
// Update user details if needed
User = new MongoDBAtlasUserDetails(
emailAddress: "newadmin@example.com",
upn: "newadmin@example.com"
)
}
};
var updateOperation = await organization.UpdateAsync(
WaitUntil.Completed,
patch
);
// Delete (long-running operation)
await organization.DeleteAsync(WaitUntil.Completed);
| Property | Type | Description |
|---|---|---|
Marketplace | MongoDBAtlasMarketplaceDetails | Required. Marketplace subscription details |
User | MongoDBAtlasUserDetails | Required. Organization admin user |
PartnerProperties | MongoDBAtlasPartnerProperties | MongoDB-specific properties |
ProvisioningState | MongoDBAtlasResourceProvisioningState | Read-only. Current provisioning state |
| Property | Type | Description |
|---|---|---|
SubscriptionId | string | Required. Azure subscription ID for billing |
OfferDetails | MongoDBAtlasOfferDetails | Required. Marketplace offer configuration |
SubscriptionStatus | MarketplaceSubscriptionStatus | Read-only. Subscription status |
| Property | Type | Description |
|---|---|---|
PublisherId | string | Required. Publisher ID (typically "mongodb") |
OfferId | string | Required. Offer ID |
PlanId | string | Required. Plan ID |
PlanName | string | Required. Display name of the plan |
TermUnit | string | Required. Billing term unit (e.g., "P1M") |
TermId | string | Required. Term identifier |
| Property | Type | Description |
|---|---|---|
EmailAddress | string | Required. User email address |
Upn | string | Required. User principal name |
FirstName | string | Optional. User first name |
LastName | string | Optional. User last name |
| Property | Type | Description |
|---|---|---|
OrganizationName | string | Name of the MongoDB Atlas organization |
OrganizationId | string | Read-only. MongoDB Atlas organization ID |
| State | Description |
|---|---|
Succeeded | Resource provisioned successfully |
Failed | Provisioning failed |
Canceled | Provisioning was canceled |
Provisioning | Resource is being provisioned |
Updating | Resource is being updated |
Deleting | Resource is being deleted |
Accepted | Request accepted, provisioning starting |
| Status | Description |
|---|---|
PendingFulfillmentStart | Subscription pending activation |
Subscribed | Active subscription |
Suspended | Subscription suspended |
Unsubscribed | Subscription canceled |
// Prefer async for all operations
var org = await organizations.GetAsync("my-org");
await org.Value.AddTagAsync("key", "value");
// Wait for completion
var operation = await organizations.CreateOrUpdateAsync(
WaitUntil.Completed, // Blocks until done
name,
data
);
// Or start and poll later
var operation = await organizations.CreateOrUpdateAsync(
WaitUntil.Started, // Returns immediately
name,
data
);
// Poll for completion
while (!operation.HasCompleted)
{
await Task.Delay(TimeSpan.FromSeconds(5));
await operation.UpdateStatusAsync();
}
var org = await organizations.GetAsync("my-org");
if (org.Value.Data.Properties?.ProvisioningState ==
MongoDBAtlasResourceProvisioningState.Succeeded)
{
Console.WriteLine("Organization is ready");
}
// Create identifier without API call
var resourceId = MongoDBAtlasOrganizationResource.CreateResourceIdentifier(
subscriptionId,
resourceGroupName,
organizationName
);
// Get resource handle (no data yet)
var orgResource = armClient.GetMongoDBAtlasOrganizationResource(resourceId);
// Fetch data when needed
var response = await orgResource.GetAsync();
| Error | Cause | Solution |
|---|---|---|
ResourceNotFound | Organization doesn't exist | Verify name and resource group |
AuthorizationFailed | Insufficient permissions | Check RBAC roles on resource group |
InvalidParameter | Missing required properties | Ensure all required fields are set |
MarketplaceError | Marketplace subscription issue | Verify offer details and subscription |
View Count
0
Download Count
0
Favorite Count
0
Quality Score
73