本文へ移動
cccskills
無料GitHub で公開

azure-mgmt-mongodbatlas-dotnet

Manage MongoDB Atlas Organizations as Azure ARM resources using Azure.ResourceManager.MongoDBAtlas SDK. Use when creating, updating, listing, or deleting MongoDB Atlas organizations through Azure Marketplace integration. This SDK manages the Azure-side organization resource, not Atlas clusters/databases directly.

インストール方法を見る

含まれるファイル(1)

  • SKILL.md11.6 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Azure.ResourceManager.MongoDBAtlas SDK

Manage MongoDB Atlas Organizations as Azure ARM resources with unified billing through Azure Marketplace.

Package Information

PropertyValue
PackageAzure.ResourceManager.MongoDBAtlas
Version1.0.0 (GA)
API Version2025-06-01
Resource TypeMongoDB.Atlas/organizations
NuGetAzure.ResourceManager.MongoDBAtlas

Installation

dotnet add package Azure.ResourceManager.MongoDBAtlas
dotnet add package Azure.Identity
dotnet add package Azure.ResourceManager

Important Scope Limitation

This SDK manages MongoDB Atlas Organizations as Azure ARM resources for marketplace integration. It does NOT directly manage:

  • Atlas clusters
  • Databases
  • Collections
  • Users/roles

For cluster management, use the MongoDB Atlas API directly after creating the organization.

Environment Variables

AZURE_SUBSCRIPTION_ID=<your-subscription-id> # Required: Azure subscription ID
AZURE_RESOURCE_GROUP=<your-resource-group> # Required: Azure resource group name
AZURE_TOKEN_CREDENTIALS=prod  # Required only if DefaultAzureCredential is used in production
AZURE_TENANT_ID=<your-tenant-id> # For service principal auth (optional)
AZURE_CLIENT_ID=<your-client-id> # For service principal auth (optional)
AZURE_CLIENT_SECRET=<your-client-secret> # For service principal auth (optional)

Authentication

using Azure.Identity;
using Azure.ResourceManager;
using Azure.ResourceManager.MongoDBAtlas;
using Azure.ResourceManager.MongoDBAtlas.Models;

// 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);

Core Types

TypePurpose
MongoDBAtlasOrganizationResourceARM resource representing an Atlas organization
MongoDBAtlasOrganizationCollectionCollection of organizations in a resource group
MongoDBAtlasOrganizationDataData model for organization resource
MongoDBAtlasOrganizationPropertiesOrganization-specific properties
MongoDBAtlasMarketplaceDetailsAzure Marketplace subscription details
MongoDBAtlasOfferDetailsMarketplace offer configuration
MongoDBAtlasUserDetailsUser information for the organization
MongoDBAtlasPartnerPropertiesMongoDB-specific properties (org name, ID)

Workflows

Get Organization Collection

// Get resource group
var subscription = await armClient.GetDefaultSubscriptionAsync();
var resourceGroup = await subscription.GetResourceGroupAsync("my-resource-group");

// Get organizations collection
MongoDBAtlasOrganizationCollection organizations = 
    resourceGroup.Value.GetMongoDBAtlasOrganizations();

Create Organization

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}");

Get Existing Organization

// 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 Organizations

// 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}");
}

Update Tags

// 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");

Update Organization Properties

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 Organization

// Delete (long-running operation)
await organization.DeleteAsync(WaitUntil.Completed);

Model Properties Reference

MongoDBAtlasOrganizationProperties

PropertyTypeDescription
MarketplaceMongoDBAtlasMarketplaceDetailsRequired. Marketplace subscription details
UserMongoDBAtlasUserDetailsRequired. Organization admin user
PartnerPropertiesMongoDBAtlasPartnerPropertiesMongoDB-specific properties
ProvisioningStateMongoDBAtlasResourceProvisioningStateRead-only. Current provisioning state

MongoDBAtlasMarketplaceDetails

PropertyTypeDescription
SubscriptionIdstringRequired. Azure subscription ID for billing
OfferDetailsMongoDBAtlasOfferDetailsRequired. Marketplace offer configuration
SubscriptionStatusMarketplaceSubscriptionStatusRead-only. Subscription status

MongoDBAtlasOfferDetails

PropertyTypeDescription
PublisherIdstringRequired. Publisher ID (typically "mongodb")
OfferIdstringRequired. Offer ID
PlanIdstringRequired. Plan ID
PlanNamestringRequired. Display name of the plan
TermUnitstringRequired. Billing term unit (e.g., "P1M")
TermIdstringRequired. Term identifier

MongoDBAtlasUserDetails

PropertyTypeDescription
EmailAddressstringRequired. User email address
UpnstringRequired. User principal name
FirstNamestringOptional. User first name
LastNamestringOptional. User last name

MongoDBAtlasPartnerProperties

PropertyTypeDescription
OrganizationNamestringName of the MongoDB Atlas organization
OrganizationIdstringRead-only. MongoDB Atlas organization ID

Provisioning States

StateDescription
SucceededResource provisioned successfully
FailedProvisioning failed
CanceledProvisioning was canceled
ProvisioningResource is being provisioned
UpdatingResource is being updated
DeletingResource is being deleted
AcceptedRequest accepted, provisioning starting

Marketplace Subscription Status

StatusDescription
PendingFulfillmentStartSubscription pending activation
SubscribedActive subscription
SuspendedSubscription suspended
UnsubscribedSubscription canceled

Best Practices

Use Async Methods

// Prefer async for all operations
var org = await organizations.GetAsync("my-org");
await org.Value.AddTagAsync("key", "value");

Handle Long-Running Operations

// 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();
}

Check Provisioning State

var org = await organizations.GetAsync("my-org");
if (org.Value.Data.Properties?.ProvisioningState == 
    MongoDBAtlasResourceProvisioningState.Succeeded)
{
    Console.WriteLine("Organization is ready");
}

Use Resource Identifiers

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

Common Errors

ErrorCauseSolution
ResourceNotFoundOrganization doesn't existVerify name and resource group
AuthorizationFailedInsufficient permissionsCheck RBAC roles on resource group
InvalidParameterMissing required propertiesEnsure all required fields are set
MarketplaceErrorMarketplace subscription issueVerify offer details and subscription

Related Resources

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Build Azure AI Foundry agents using the Microsoft Agent Framework Python SDK (agent-framework-azure-ai). Use when creating persistent agents with AzureAIAgentsProvider, using hosted tools (code interpreter, file search, web search), integrating MCP servers, managing conversation threads, or implementing streaming responses. Covers function tools, structured outputs, and multi-tool agents.

日本語の概要は準備中です。原文の説明を表示しています。

microsoft/skills3,1052026年10月10日 更新

Set up AI Runway on AKS — from bare cluster to running model. Covers cluster verification, controller install, GPU assessment, provider setup, and first deployment. WHEN: "setup AI Runway", "onboard AKS cluster", "install AI Runway", "airunway setup", "deploy model to AKS", "GPU inference on AKS", "KAITO setup on AKS", "run LLM on AKS", "vLLM on AKS", "set up model serving on AKS", "AI Runway controller".

日本語の概要は準備中です。原文の説明を表示しています。

microsoft/skills3,1052026年10月10日 更新

Diagnose Day-2 AKS GPU and KAITO incidents using profile-aware, read-only evidence. WHEN: 'Insufficient nvidia.com/gpu', GPU pod Pending, model-load OOM, DCGM/VRAM, KAITO Workspace not ready, or GPU autoscaling. DO NOT USE FOR: setup (airunway-aks-setup), non-GPU incidents (aks-troubleshooting), standalone VM quota (azure-quotas), or generic cost (cost-analysis or cost-optimization from the optional azure-cost plugin).

日本語の概要は準備中です。原文の説明を表示しています。

microsoft/skills3,1052026年10月10日 更新

Lookup documented AKS fixes only when the prompt includes an exact catalog signature and all of its qualifiers: VMCannotFitEphemeralOSDisk; NodePoolMcVersionIncompatible; 'NodeImageVersion is not accepted'; AKS SkuNotAvailable with size, location, and zone; ZonalAllocationFailed with insufficient zone capacity; OverconstrainedAllocationRequest with listed constraints; nested AKS vmssCSE/CSE VMExtensionError_OutboundConnFail, VMExtensionError_K8SAPIServerConnFail, or VMExtensionError_K8SAPIServerDNSLookupFail; or AllocationFailed with the full cataloged internal-error or insufficient-regional-capacity message. Never use for quota errors, code-only or bare wrappers, generic symptoms, incomplete signatures, or failures outside AKS; use aks-troubleshooting or azure-diagnostics.

日本語の概要は準備中です。原文の説明を表示しています。

microsoft/skills3,1052026年10月10日 更新

Collects bounded packet captures from AKS nodes and Azure network configuration for wire-level evidence. WHEN: "capture packets on an AKS node", "take a pcap", "run tcpdump on AKS", "prove where packets drop". Use for explicit packet-capture intent after read-only diagnostics, not general AKS connectivity or ingress troubleshooting.

日本語の概要は準備中です。原文の説明を表示しています。

microsoft/skills3,1052026年10月10日 更新

Debug live Azure Kubernetes Service (AKS) incidents with a read-only, evidence-first investigation. WHEN: pod crashes or Pending, CrashLoopBackOff, OOMKilled, ImagePullBackOff, node NotReady, DNS or ingress failure, connectivity timeout, network policy, SNAT exhaustion, node-pool scaling blocked by QuotaExceeded or InsufficientVCPUQuota, upgrade stuck, spot or zone disruption, a bare VMExtensionProvisioningError or AllocationFailed wrapper, an uncataloged capacity symptom, or 'investigate my AKS cluster'. DO NOT USE FOR: packet capture (use aks-network-capture); GPU or model-serving issues (use aks-gpu-inference); cluster creation or provisioning (use azure-kubernetes); cost (use cost-analysis from the optional azure-cost plugin); pod rightsizing (use azure-kubernetes); a fully qualified documented AKS signature with every required nested qualifier (use aks-known-issues); standalone failures on non-AKS Azure resources (use azure-diagnostics). Unqualified errors and open-ended incidents stay here only for AKS.

日本語の概要は準備中です。原文の説明を表示しています。

microsoft/skills3,1052026年10月10日 更新

microsoft のスキルをすべて見る

このスキルの問題を報告する