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