azure-mgmt-mongodbatlas-dotnet

Gérez les organisations MongoDB Atlas en tant que ressources Azure ARM à l'aide du SDK Azure.ResourceManager.MongoDBAtlas. À utiliser pour créer, mettre à jour, lister ou supprimer des organisations MongoDB Atlas via l'intégration Azure Marketplace. Ce SDK gère la ressource d'organisation côté Azure, et non les clusters/bases de données Atlas directement.

npx skills add https://github.com/microsoft/skills --skill azure-mgmt-mongodbatlas-dotnet

SDK Azure.ResourceManager.MongoDBAtlas

Gérez les organisations MongoDB Atlas en tant que ressources ARM Azure avec facturation unifiée via Azure Marketplace.

Informations sur le package

Propriété Valeur
Package Azure.ResourceManager.MongoDBAtlas
Version 1.0.0 (GA)
Version API 2025-06-01
Type de ressource MongoDB.Atlas/organizations
NuGet Azure.ResourceManager.MongoDBAtlas

Installation

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

Limitation de portée importante

Ce SDK gère les organisations MongoDB Atlas en tant que ressources ARM Azure pour l'intégration marketplace. Il ne gère PAS directement :

  • Les clusters Atlas
  • Les bases de données
  • Les collections
  • Les utilisateurs/rôles

Pour la gestion des clusters, utilisez l'API MongoDB Atlas directement après avoir créé l'organisation.

Authentification

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

// Créer le client ARM avec DefaultAzureCredential
var credential = new DefaultAzureCredential();
var armClient = new ArmClient(credential);

Types principaux

Type Objectif
MongoDBAtlasOrganizationResource Ressource ARM représentant une organisation Atlas
MongoDBAtlasOrganizationCollection Collection d'organisations dans un groupe de ressources
MongoDBAtlasOrganizationData Modèle de données pour la ressource organisation
MongoDBAtlasOrganizationProperties Propriétés spécifiques à l'organisation
MongoDBAtlasMarketplaceDetails Détails de l'abonnement Azure Marketplace
MongoDBAtlasOfferDetails Configuration de l'offre Marketplace
MongoDBAtlasUserDetails Informations utilisateur pour l'organisation
MongoDBAtlasPartnerProperties Propriétés spécifiques à MongoDB (nom org, ID)

Flux de travail

Obtenir la collection d'organisations

// Obtenir le groupe de ressources
var subscription = await armClient.GetDefaultSubscriptionAsync();
var resourceGroup = await subscription.GetResourceGroupAsync("my-resource-group");

// Obtenir la collection d'organisations
MongoDBAtlasOrganizationCollection organizations = 
    resourceGroup.Value.GetMongoDBAtlasOrganizations();

Créer une organisation

var organizationName = "my-atlas-org";
var location = AzureLocation.EastUS2;

// Construire les données d'organisation
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" }
};

// Créer l'organisation (opération longue)
var operation = await organizations.CreateOrUpdateAsync(
    WaitUntil.Completed,
    organizationName,
    organizationData
);

MongoDBAtlasOrganizationResource organization = operation.Value;
Console.WriteLine($"Created: {organization.Id}");

Obtenir une organisation existante

// Option 1 : depuis la collection
MongoDBAtlasOrganizationResource org = 
    await organizations.GetAsync("my-atlas-org");

// Option 2 : depuis un identifiant de ressource
var resourceId = MongoDBAtlasOrganizationResource.CreateResourceIdentifier(
    subscriptionId: "subscription-id",
    resourceGroupName: "my-resource-group",
    organizationName: "my-atlas-org"
);
MongoDBAtlasOrganizationResource org2 = 
    armClient.GetMongoDBAtlasOrganizationResource(resourceId);
await org2.GetAsync(); // Récupérer les données

Lister les organisations

// Lister dans le groupe de ressources
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}");
}

// Lister dans l'abonnement
await foreach (var org in subscription.GetMongoDBAtlasOrganizationsAsync())
{
    Console.WriteLine($"Org: {org.Data.Name} in {org.Data.Id}");
}

Mettre à jour les balises

// Ajouter une balise
await organization.AddTagAsync("CostCenter", "12345");

// Remplacer toutes les balises
await organization.SetTagsAsync(new Dictionary<string, string>
{
    ["Environment"] = "Production",
    ["Team"] = "Platform"
});

// Supprimer une balise
await organization.RemoveTagAsync("OldTag");

Mettre à jour les propriétés de l'organisation

var patch = new MongoDBAtlasOrganizationPatch
{
    Tags = { ["UpdatedAt"] = DateTime.UtcNow.ToString("o") },
    Properties = new MongoDBAtlasOrganizationUpdateProperties
    {
        // Mettre à jour les détails utilisateur si nécessaire
        User = new MongoDBAtlasUserDetails(
            emailAddress: "newadmin@example.com",
            upn: "newadmin@example.com"
        )
    }
};

var updateOperation = await organization.UpdateAsync(
    WaitUntil.Completed,
    patch
);

Supprimer une organisation

// Supprimer (opération longue)
await organization.DeleteAsync(WaitUntil.Completed);

Référence des propriétés du modèle

MongoDBAtlasOrganizationProperties

Propriété Type Description
Marketplace MongoDBAtlasMarketplaceDetails Obligatoire. Détails de l'abonnement Marketplace
User MongoDBAtlasUserDetails Obligatoire. Utilisateur administrateur de l'organisation
PartnerProperties MongoDBAtlasPartnerProperties Propriétés spécifiques à MongoDB
ProvisioningState MongoDBAtlasResourceProvisioningState Lecture seule. État de provisionnement actuel

MongoDBAtlasMarketplaceDetails

Propriété Type Description
SubscriptionId string Obligatoire. ID d'abonnement Azure pour la facturation
OfferDetails MongoDBAtlasOfferDetails Obligatoire. Configuration de l'offre Marketplace
SubscriptionStatus MarketplaceSubscriptionStatus Lecture seule. Statut de l'abonnement

MongoDBAtlasOfferDetails

Propriété Type Description
PublisherId string Obligatoire. ID de l'éditeur (généralement « mongodb »)
OfferId string Obligatoire. ID de l'offre
PlanId string Obligatoire. ID du plan
PlanName string Obligatoire. Nom d'affichage du plan
TermUnit string Obligatoire. Unité de terme de facturation (ex. « P1M »)
TermId string Obligatoire. Identifiant du terme

MongoDBAtlasUserDetails

Propriété Type Description
EmailAddress string Obligatoire. Adresse email de l'utilisateur
Upn string Obligatoire. Nom principal de l'utilisateur
FirstName string Optionnel. Prénom de l'utilisateur
LastName string Optionnel. Nom de famille de l'utilisateur

MongoDBAtlasPartnerProperties

Propriété Type Description
OrganizationName string Nom de l'organisation MongoDB Atlas
OrganizationId string Lecture seule. ID de l'organisation MongoDB Atlas

États de provisionnement

État Description
Succeeded Ressource provisionnée avec succès
Failed Provisionnement échoué
Canceled Provisionnement annulé
Provisioning Ressource en cours de provisionnement
Updating Ressource en cours de mise à jour
Deleting Ressource en cours de suppression
Accepted Demande acceptée, provisionnement en cours de démarrage

Statut d'abonnement Marketplace

Statut Description
PendingFulfillmentStart Abonnement en attente d'activation
Subscribed Abonnement actif
Suspended Abonnement suspendu
Unsubscribed Abonnement annulé

Bonnes pratiques

Utiliser les méthodes asynchrones

// Préférer async pour toutes les opérations
var org = await organizations.GetAsync("my-org");
await org.Value.AddTagAsync("key", "value");

Gérer les opérations longues

// Attendre l'exécution
var operation = await organizations.CreateOrUpdateAsync(
    WaitUntil.Completed,  // Bloque jusqu'à la fin
    name,
    data
);

// Ou démarrer et sonder plus tard
var operation = await organizations.CreateOrUpdateAsync(
    WaitUntil.Started,  // Retour immédiat
    name,
    data
);

// Sonder la fin
while (!operation.HasCompleted)
{
    await Task.Delay(TimeSpan.FromSeconds(5));
    await operation.UpdateStatusAsync();
}

Vérifier l'état de provisionnement

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

Utiliser les identifiants de ressource

// Créer un identifiant sans appel API
var resourceId = MongoDBAtlasOrganizationResource.CreateResourceIdentifier(
    subscriptionId,
    resourceGroupName,
    organizationName
);

// Obtenir la référence de ressource (sans données)
var orgResource = armClient.GetMongoDBAtlasOrganizationResource(resourceId);

// Récupérer les données si nécessaire
var response = await orgResource.GetAsync();

Erreurs courantes

Erreur Cause Solution
ResourceNotFound L'organisation n'existe pas Vérifier le nom et le groupe de ressources
AuthorizationFailed Permissions insuffisantes Vérifier les rôles RBAC sur le groupe de ressources
InvalidParameter Propriétés requises manquantes S'assurer que tous les champs obligatoires sont définis
MarketplaceError Problème avec l'abonnement Marketplace Vérifier les détails de l'offre et l'abonnement

Ressources associées

Skills similaires