Azure.ResourceManager.Fabric (.NET)
SDK du plan de gestion pour provisionner et gérer les ressources de capacité Microsoft Fabric via Azure Resource Manager.
Plan de gestion uniquement Ce SDK gère les capacités Fabric (ressources de calcul). Pour travailler avec les espaces de travail, lakehouses, entrepôts de données et éléments de données Fabric, utilisez l'API REST Microsoft Fabric ou les SDK du plan de données.
Installation
dotnet add package Azure.ResourceManager.Fabric
dotnet add package Azure.Identity
Version actuelle : 1.0.0 (GA - Septembre 2025)
Version API : 2023-11-01
Frameworks cibles : .NET 8.0, .NET Standard 2.0
Variables d'environnement
AZURE_SUBSCRIPTION_ID=<your-subscription-id>
# Pour l'authentification par principal de service (optionnel)
AZURE_TENANT_ID=<tenant-id>
AZURE_CLIENT_ID=<client-id>
AZURE_CLIENT_SECRET=<client-secret>
Authentification
using Azure.Identity;
using Azure.ResourceManager;
using Azure.ResourceManager.Fabric;
// Utilisez toujours DefaultAzureCredential
var credential = new DefaultAzureCredential();
var armClient = new ArmClient(credential);
// Obtenir l'abonnement
var subscription = await armClient.GetDefaultSubscriptionAsync();
Hiérarchie des ressources
ArmClient
└── SubscriptionResource
└── ResourceGroupResource
└── FabricCapacityResource
Flux de travail principaux
1. Créer une capacité Fabric
using Azure.ResourceManager.Fabric;
using Azure.ResourceManager.Fabric.Models;
using Azure.Core;
// Obtenir le groupe de ressources
var resourceGroup = await subscription.GetResourceGroupAsync("my-resource-group");
// Définir la configuration de la capacité
var administration = new FabricCapacityAdministration(
new[] { "admin@contoso.com" } // Administrateurs de capacité (UPN ou ID d'objet)
);
var properties = new FabricCapacityProperties(administration);
var sku = new FabricSku("F64", FabricSkuTier.Fabric);
var capacityData = new FabricCapacityData(
AzureLocation.WestUS2,
properties,
sku)
{
Tags = { ["Environment"] = "Production" }
};
// Créer la capacité (opération longue)
var capacityCollection = resourceGroup.Value.GetFabricCapacities();
var operation = await capacityCollection.CreateOrUpdateAsync(
WaitUntil.Completed,
"my-fabric-capacity",
capacityData);
FabricCapacityResource capacity = operation.Value;
Console.WriteLine($"Capacité créée : {capacity.Data.Name}");
Console.WriteLine($"État : {capacity.Data.Properties.State}");
2. Obtenir une capacité Fabric
// Obtenir une capacité existante
var capacity = await resourceGroup.Value
.GetFabricCapacityAsync("my-fabric-capacity");
Console.WriteLine($"Nom : {capacity.Value.Data.Name}");
Console.WriteLine($"Localisation : {capacity.Value.Data.Location}");
Console.WriteLine($"SKU : {capacity.Value.Data.Sku.Name}");
Console.WriteLine($"État : {capacity.Value.Data.Properties.State}");
Console.WriteLine($"État de provisionnement : {capacity.Value.Data.Properties.ProvisioningState}");
3. Mettre à jour la capacité (Redimensionner SKU ou changer les administrateurs)
var capacity = await resourceGroup.Value
.GetFabricCapacityAsync("my-fabric-capacity");
var patch = new FabricCapacityPatch
{
Sku = new FabricSku("F128", FabricSkuTier.Fabric), // Augmenter
Properties = new FabricCapacityUpdateProperties
{
Administration = new FabricCapacityAdministration(
new[] { "admin@contoso.com", "newadmin@contoso.com" }
)
}
};
var updateOperation = await capacity.Value.UpdateAsync(
WaitUntil.Completed,
patch);
Console.WriteLine($"SKU mis à jour : {updateOperation.Value.Data.Sku.Name}");
4. Suspendre et reprendre la capacité
// Suspendre la capacité (arrêter la facturation du calcul)
await capacity.Value.SuspendAsync(WaitUntil.Completed);
Console.WriteLine("Capacité suspendue");
// Reprendre la capacité
var resumeOperation = await capacity.Value.ResumeAsync(WaitUntil.Completed);
Console.WriteLine($"Capacité reprise. État : {resumeOperation.Value.Data.Properties.State}");
5. Supprimer la capacité
await capacity.Value.DeleteAsync(WaitUntil.Completed);
Console.WriteLine("Capacité supprimée");
6. Lister toutes les capacités
// Dans un groupe de ressources
await foreach (var cap in resourceGroup.Value.GetFabricCapacities())
{
Console.WriteLine($"- {cap.Data.Name} ({cap.Data.Sku.Name})");
}
// Dans un abonnement
await foreach (var cap in subscription.GetFabricCapacitiesAsync())
{
Console.WriteLine($"- {cap.Data.Name} in {cap.Data.Location}");
}
7. Vérifier la disponibilité du nom
var checkContent = new FabricNameAvailabilityContent
{
Name = "my-new-capacity",
ResourceType = "Microsoft.Fabric/capacities"
};
var result = await subscription.CheckFabricCapacityNameAvailabilityAsync(
AzureLocation.WestUS2,
checkContent);
if (result.Value.IsNameAvailable == true)
{
Console.WriteLine("Le nom est disponible !");
}
else
{
Console.WriteLine($"Nom indisponible : {result.Value.Reason} - {result.Value.Message}");
}
8. Lister les SKU disponibles
// Lister tous les SKU disponibles dans l'abonnement
await foreach (var skuDetails in subscription.GetSkusFabricCapacitiesAsync())
{
Console.WriteLine($"SKU : {skuDetails.Name}");
Console.WriteLine($" Type de ressource : {skuDetails.ResourceType}");
foreach (var location in skuDetails.Locations)
{
Console.WriteLine($" Localisation : {location}");
}
}
// Lister les SKU disponibles pour une capacité existante (pour redimensionner)
await foreach (var skuDetails in capacity.Value.GetSkusForCapacityAsync())
{
Console.WriteLine($"Peut redimensionner vers : {skuDetails.Sku.Name}");
}
Référence des SKU
| Nom du SKU | Unités de capacité (CU) | Équivalent Power BI |
|---|---|---|
| F2 | 2 | - |
| F4 | 4 | - |
| F8 | 8 | EM1/A1 |
| F16 | 16 | EM2/A2 |
| F32 | 32 | EM3/A3 |
| F64 | 64 | P1/A4 |
| F128 | 128 | P2/A5 |
| F256 | 256 | P3/A6 |
| F512 | 512 | P4/A7 |
| F1024 | 1024 | P5/A8 |
| F2048 | 2048 | - |
Référence des types clés
| Type | Objectif |
|---|---|
ArmClient |
Point d'entrée pour toutes les opérations ARM |
FabricCapacityResource |
Représente une instance de capacité Fabric |
FabricCapacityCollection |
Collection pour les opérations CRUD de capacité |
FabricCapacityData |
Modèle de données pour la création/lecture de capacité |
FabricCapacityPatch |
Charge utile de mise à jour de capacité |
FabricCapacityProperties |
Propriétés de la capacité (administration, état) |
FabricCapacityAdministration |
Configuration des membres administrateur |
FabricSku |
Configuration du SKU (nom et niveau) |
FabricSkuTier |
Niveau tarifaire (actuellement « Fabric » uniquement) |
FabricProvisioningState |
États de provisionnement (Succeeded, Failed, etc.) |
FabricResourceState |
États de la ressource (Active, Suspended, etc.) |
FabricNameAvailabilityContent |
Requête de vérification de disponibilité du nom |
FabricNameAvailabilityResult |
Réponse de vérification de disponibilité du nom |
États de provisionnement et de ressource
États de provisionnement (FabricProvisioningState)
Succeeded- Opération terminée avec succèsFailed- Opération échouéeCanceled- Opération annuléeDeleting- La capacité est en cours de suppressionProvisioning- Provisionnement initial en coursUpdating- Opération de mise à jour en cours
États de ressource (FabricResourceState)
Active- La capacité est active et disponibleProvisioning- En cours de provisionnementFailed- En état d'échecUpdating- En cours de mise à jourDeleting- En cours de suppressionSuspending- Transition vers suspenduSuspended- Suspendu (pas de facturation du calcul)Pausing- Transition vers en pausePaused- En pauseResuming- Reprise depuis suspendu/en pauseScaling- Redimensionnement vers un autre SKUPreparing- Préparation des ressources
Bonnes pratiques
- Utilisez
WaitUntil.Completedpour les opérations qui doivent se terminer avant de continuer - Utilisez
WaitUntil.Startedquand vous voulez interroger manuellement ou exécuter des opérations en parallèle - Utilisez toujours
DefaultAzureCredential— ne codez jamais les identifiants en dur - Gérez
RequestFailedExceptionpour les erreurs d'API ARM - Utilisez
CreateOrUpdateAsyncpour les opérations idempotentes - Suspendez quand non utilisé — Les capacités Fabric sont facturées pour le calcul même au repos
- Vérifiez l'état de provisionnement avant d'effectuer des opérations sur une capacité
- Utilisez le SKU approprié — Commencez petit (F2/F4) pour le développement/test, augmentez pour la production
Gestion des erreurs
using Azure;
try
{
var operation = await capacityCollection.CreateOrUpdateAsync(
WaitUntil.Completed, capacityName, capacityData);
}
catch (RequestFailedException ex) when (ex.Status == 409)
{
Console.WriteLine("La capacité existe déjà ou conflit");
}
catch (RequestFailedException ex) when (ex.Status == 400)
{
Console.WriteLine($"Configuration invalide : {ex.Message}");
}
catch (RequestFailedException ex) when (ex.Status == 403)
{
Console.WriteLine("Permissions insuffisantes ou quota dépassé");
}
catch (RequestFailedException ex)
{
Console.WriteLine($"Erreur ARM : {ex.Status} - {ex.ErrorCode}: {ex.Message}");
}
Pièges courants
- Les noms de capacité doivent être mondialement uniques — Les noms de capacité Fabric doivent être uniques dans tous les abonnements Azure
- Suspendre ne supprime pas — Les capacités suspendues existent toujours mais ne sont pas facturées pour le calcul
- Les changements de SKU peuvent nécessiter un arrêt — Les opérations de redimensionnement peuvent prendre plusieurs minutes
- Les UPN administrateur doivent être valides — Les administrateurs de capacité doivent être des utilisateurs Azure AD valides
- Contraintes de localisation — Tous les SKU ne sont pas disponibles dans toutes les régions ; utilisez
GetSkusFabricCapacitiesAsyncpour vérifier - Temps de provisionnement longs — La création de capacité peut prendre 5 à 15 minutes
SDK connexes
| SDK | Objectif | Installer |
|---|---|---|
Azure.ResourceManager.Fabric |
Plan de gestion (ce SDK) | dotnet add package Azure.ResourceManager.Fabric |
Microsoft.Fabric.Api |
Opérations du plan de données (bêta) | dotnet add package Microsoft.Fabric.Api --prerelease |
Azure.ResourceManager |
SDK ARM principal | dotnet add package Azure.ResourceManager |
Azure.Identity |
Authentification | dotnet add package Azure.Identity |