mcpField
A
azure-mgmt-mongodbatlas-dotnet

azure-mgmt-mongodbatlas-dotnet

github.com/sickn33云与 DevOps48.7k60 次安装今天更新
代码仓库

关于 azure-mgmt-mongodbatlas-dotnet

面向 .NET 开发者的 Azure SDK,用于将 MongoDB Atlas 组织作为 Azure ARM 资源管理,并通过 Azure Marketplace 统一计费。它不管理集群、数据库、集合或用户角色。

主要功能

  1. 01创建和更新组织资源
  2. 02获取及列出组织
  3. 03修改标签和组织属性
  4. 04管理 Marketplace 订阅信息

适用场景

  1. 01在 Azure 资源组中创建 Atlas 组织
  2. 02查询组织的配置与预配状态
  3. 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
NuGetAzure.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组织专属属性
MongoDBAtlasMarketplaceDetailsAzure Marketplace 订阅详细信息
MongoDBAtlasOfferDetailsMarketplace 产品/计划配置
MongoDBAtlasUserDetails组织的用户信息
MongoDBAtlasPartnerPropertiesMongoDB 专属属性(组织名称、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
属性类型说明
MarketplaceMongoDBAtlasMarketplaceDetails必需。Marketplace 订阅详细信息
UserMongoDBAtlasUserDetails必需。组织管理员用户
PartnerPropertiesMongoDBAtlasPartnerPropertiesMongoDB 专属属性
ProvisioningStateMongoDBAtlasResourceProvisioningState只读。当前预配状态
MongoDBAtlasMarketplaceDetails
属性类型说明
SubscriptionIdstring必需。用于计费的 Azure 订阅 ID
OfferDetailsMongoDBAtlasOfferDetails必需。Marketplace 产品配置
SubscriptionStatusMarketplaceSubscriptionStatus只读。订阅状态
MongoDBAtlasOfferDetails
属性类型说明
PublisherIdstring必需。发布者 ID(通常为“mongodb”)
OfferIdstring必需。产品 ID
PlanIdstring必需。计划 ID
PlanNamestring必需。计划的显示名称
TermUnitstring必需。计费期限单位(例如,“P1M”)
TermIdstring必需。期限标识符
MongoDBAtlasUserDetails
属性类型说明
EmailAddressstring必需。用户电子邮件地址
Upnstring必需。用户主体名称
FirstNamestring可选。用户名字
LastNamestring可选。用户姓氏
MongoDBAtlasPartnerProperties
PropertyTypeDescription
OrganizationNamestringMongoDB Atlas 组织的名称
OrganizationIdstring只读。MongoDB Atlas 组织 ID

配置状态

StateDescription
Succeeded资源配置成功
Failed配置失败
Canceled配置已取消
Provisioning正在配置资源
Updating正在更新资源
Deleting正在删除资源
Accepted请求已接受,开始配置

Marketplace 订阅状态

StatusDescription
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();

常见错误

ErrorCauseSolution
ResourceNotFound组织不存在验证名称和资源组
AuthorizationFailed权限不足检查资源组上的 RBAC 角色
InvalidParameter缺少必需属性确保设置了所有必需字段
MarketplaceErrorMarketplace 订阅问题验证套餐详情和订阅

相关资源

适用场景

当需要执行概述中所述的工作流或操作时,适用此技能。

限制

  • 仅当任务明确符合上述范围时,才使用此技能。
  • 不要将输出视为环境特定验证、测试或专家审核的替代品。
  • 如果缺少必需输入、权限、安全边界或成功标准,请停止并请求澄清。

评论

支持 Markdown