azure-mgmt-fabric-dotnet

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

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ès
  • Failed - Opération échouée
  • Canceled - Opération annulée
  • Deleting - La capacité est en cours de suppression
  • Provisioning - Provisionnement initial en cours
  • Updating - Opération de mise à jour en cours

États de ressource (FabricResourceState)

  • Active - La capacité est active et disponible
  • Provisioning - En cours de provisionnement
  • Failed - En état d'échec
  • Updating - En cours de mise à jour
  • Deleting - En cours de suppression
  • Suspending - Transition vers suspendu
  • Suspended - Suspendu (pas de facturation du calcul)
  • Pausing - Transition vers en pause
  • Paused - En pause
  • Resuming - Reprise depuis suspendu/en pause
  • Scaling - Redimensionnement vers un autre SKU
  • Preparing - Préparation des ressources

Bonnes pratiques

  1. Utilisez WaitUntil.Completed pour les opérations qui doivent se terminer avant de continuer
  2. Utilisez WaitUntil.Started quand vous voulez interroger manuellement ou exécuter des opérations en parallèle
  3. Utilisez toujours DefaultAzureCredential — ne codez jamais les identifiants en dur
  4. Gérez RequestFailedException pour les erreurs d'API ARM
  5. Utilisez CreateOrUpdateAsync pour les opérations idempotentes
  6. Suspendez quand non utilisé — Les capacités Fabric sont facturées pour le calcul même au repos
  7. Vérifiez l'état de provisionnement avant d'effectuer des opérations sur une capacité
  8. 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

  1. Les noms de capacité doivent être mondialement uniques — Les noms de capacité Fabric doivent être uniques dans tous les abonnements Azure
  2. Suspendre ne supprime pas — Les capacités suspendues existent toujours mais ne sont pas facturées pour le calcul
  3. Les changements de SKU peuvent nécessiter un arrêt — Les opérations de redimensionnement peuvent prendre plusieurs minutes
  4. Les UPN administrateur doivent être valides — Les administrateurs de capacité doivent être des utilisateurs Azure AD valides
  5. Contraintes de localisation — Tous les SKU ne sont pas disponibles dans toutes les régions ; utilisez GetSkusFabricCapacitiesAsync pour vérifier
  6. 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

Références

Skills similaires