关于 azure-mgmt-mongodbatlas-dotnet
面向 .NET 开发者的 Azure SDK,用于将 MongoDB Atlas 组织作为 Azure ARM 资源管理,并通过 Azure Marketplace 统一计费。它不管理集群、数据库、集合或用户角色。
主要功能
- 01创建和更新组织资源
- 02获取及列出组织
- 03修改标签和组织属性
- 04管理 Marketplace 订阅信息
适用场景
- 01在 Azure 资源组中创建 Atlas 组织
- 02查询组织的配置与预配状态
- 03更新组织管理员信息或资源标签
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ sickn33/ agentic-awesome-skills --skill azure-mgmt-mongodbatlas-dotnet安装后在 Claude Code 中输入/azure-mgmt-mongodbatlas-dotnet确认已加载。
详细介绍
Azure.ResourceManager.MongoDBAtlas SDK
通过 Azure Marketplace 统一计费,将 MongoDB Atlas 组织作为 Azure ARM 资源进行管理。
包信息
| 属性 | 值 |
|---|---|
| 包 | Azure.ResourceManager.MongoDBAtlas |
| 版本 | 1.0.0(GA) |
| API 版本 | 2025-06-01 |
| 资源类型 | MongoDB.Atlas/organizations |
| NuGet | Azure.ResourceManager.MongoDBAtlas |
安装
dotnet add package Azure.ResourceManager.MongoDBAtlas
dotnet add package Azure.Identity
dotnet add package Azure.ResourceManager
重要的范围限制
此 SDK 将 MongoDB Atlas 组织作为 Azure ARM 资源进行管理,用于 Marketplace 集成。它不会直接管理:
- Atlas 集群
- 数据库
- 集合
- 用户/角色
如需管理集群,请先创建组织,然后直接使用 MongoDB Atlas API。
身份验证
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);
核心类型
| 类型 | 用途 |
|---|---|
MongoDBAtlasOrganizationResource | 表示 Atlas 组织的 ARM 资源 |
MongoDBAtlasOrganizationCollection | 资源组中的组织集合 |
MongoDBAtlasOrganizationData | 组织资源的数据模型 |
MongoDBAtlasOrganizationProperties | 组织专属属性 |
MongoDBAtlasMarketplaceDetails | Azure Marketplace 订阅详细信息 |
MongoDBAtlasOfferDetails | Marketplace 产品/计划配置 |
MongoDBAtlasUserDetails | 组织的用户信息 |
MongoDBAtlasPartnerProperties | MongoDB 专属属性(组织名称、ID) |
工作流
在预配前,请确认租户、目标订阅/资源组、Marketplace 产品/计划/条款以及成本。示例中的专用计划标识符仅供参考,该账户可能无法使用;显示名称中包含“Free”并不代表一定免费。必须明确检查默认订阅选择。删除和管理员变更需要适用范围内的授权,以及依赖关系/恢复审查。固定 SDK 版本,并在编译前验证签名;此处不代表已进行部署。
获取组织集合
// 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: "[email protected]",
upn: "[email protected]"
)
{
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: "[email protected]",
upn: "[email protected]"
)
}
};
var updateOperation = await organization.UpdateAsync(
WaitUntil.Completed,
patch
);
删除组织
// Delete (long-running operation)
await organization.DeleteAsync(WaitUntil.Completed);
模型属性参考
MongoDBAtlasOrganizationProperties
| 属性 | 类型 | 说明 |
|---|---|---|
Marketplace | MongoDBAtlasMarketplaceDetails | 必需。Marketplace 订阅详细信息 |
User | MongoDBAtlasUserDetails | 必需。组织管理员用户 |
PartnerProperties | MongoDBAtlasPartnerProperties | MongoDB 专属属性 |
ProvisioningState | MongoDBAtlasResourceProvisioningState | 只读。当前预配状态 |
MongoDBAtlasMarketplaceDetails
| 属性 | 类型 | 说明 |
|---|---|---|
SubscriptionId | string | 必需。用于计费的 Azure 订阅 ID |
OfferDetails | MongoDBAtlasOfferDetails | 必需。Marketplace 产品配置 |
SubscriptionStatus | MarketplaceSubscriptionStatus | 只读。订阅状态 |
MongoDBAtlasOfferDetails
| 属性 | 类型 | 说明 |
|---|---|---|
PublisherId | string | 必需。发布者 ID(通常为“mongodb”) |
OfferId | string | 必需。产品 ID |
PlanId | string | 必需。计划 ID |
PlanName | string | 必需。计划的显示名称 |
TermUnit | string | 必需。计费期限单位(例如,“P1M”) |
TermId | string | 必需。期限标识符 |
MongoDBAtlasUserDetails
| 属性 | 类型 | 说明 |
|---|---|---|
EmailAddress | string | 必需。用户电子邮件地址 |
Upn | string | 必需。用户主体名称 |
FirstName | string | 可选。用户名字 |
LastName | string | 可选。用户姓氏 |
MongoDBAtlasPartnerProperties
| Property | Type | Description |
|---|---|---|
OrganizationName | string | MongoDB Atlas 组织的名称 |
OrganizationId | string | 只读。MongoDB Atlas 组织 ID |
配置状态
| State | Description |
|---|---|
Succeeded | 资源配置成功 |
Failed | 配置失败 |
Canceled | 配置已取消 |
Provisioning | 正在配置资源 |
Updating | 正在更新资源 |
Deleting | 正在删除资源 |
Accepted | 请求已接受,开始配置 |
Marketplace 订阅状态
| Status | Description |
|---|---|
PendingFulfillmentStart | 订阅等待激活 |
Subscribed | 订阅已激活 |
Suspended | 订阅已暂停 |
Unsubscribed | 订阅已取消 |
最佳实践
使用异步方法
// 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 | 组织不存在 | 验证名称和资源组 |
AuthorizationFailed | 权限不足 | 检查资源组上的 RBAC 角色 |
InvalidParameter | 缺少必需属性 | 确保设置了所有必需字段 |
MarketplaceError | Marketplace 订阅问题 | 验证套餐详情和订阅 |
相关资源
适用场景
当需要执行概述中所述的工作流或操作时,适用此技能。
限制
- 仅当任务明确符合上述范围时,才使用此技能。
- 不要将输出视为环境特定验证、测试或专家审核的替代品。
- 如果缺少必需输入、权限、安全边界或成功标准,请停止并请求澄清。
评论
支持 Markdown