Kit de gestion Azure Fabric pour Python
Gérez les capacités et ressources Microsoft Fabric par programmation.
Installation
pip install azure-mgmt-fabric
pip install azure-identity
Variables d'environnement
AZURE_SUBSCRIPTION_ID=<your-subscription-id> # Required for all auth methods
AZURE_RESOURCE_GROUP=<your-resource-group> # Required for all auth methods
AZURE_TOKEN_CREDENTIALS=prod # Required only if DefaultAzureCredential is used in production
Authentification
from azure.identity import DefaultAzureCredential, ManagedIdentityCredential
from azure.mgmt.fabric import FabricMgmtClient
import os
# Local dev: DefaultAzureCredential. Production: set AZURE_TOKEN_CREDENTIALS=prod or AZURE_TOKEN_CREDENTIALS=<specific_credential>
credential = DefaultAzureCredential(require_envvar=True)
# Or use a specific credential directly in production:
# See https://learn.microsoft.com/python/api/overview/azure/identity-readme?view=azure-python#credential-classes
# credential = ManagedIdentityCredential()
client = FabricMgmtClient(
credential=credential,
subscription_id=os.environ["AZURE_SUBSCRIPTION_ID"]
)
Créer une capacité Fabric
from azure.mgmt.fabric import FabricMgmtClient
from azure.mgmt.fabric.models import FabricCapacity, FabricCapacityProperties, CapacitySku
from azure.identity import DefaultAzureCredential
import os
credential = DefaultAzureCredential()
client = FabricMgmtClient(
credential=credential,
subscription_id=os.environ["AZURE_SUBSCRIPTION_ID"]
)
resource_group = os.environ["AZURE_RESOURCE_GROUP"]
capacity_name = "myfabriccapacity"
capacity = client.fabric_capacities.begin_create_or_update(
resource_group_name=resource_group,
capacity_name=capacity_name,
resource=FabricCapacity(
location="eastus",
sku=CapacitySku(
name="F2", # Fabric SKU
tier="Fabric"
),
properties=FabricCapacityProperties(
administration=FabricCapacityAdministration(
members=["user@contoso.com"]
)
)
)
).result()
print(f"Capacity created: {capacity.name}")
Obtenir les détails de la capacité
capacity = client.fabric_capacities.get(
resource_group_name=resource_group,
capacity_name=capacity_name
)
print(f"Capacity: {capacity.name}")
print(f"SKU: {capacity.sku.name}")
print(f"State: {capacity.properties.state}")
print(f"Location: {capacity.location}")
Lister les capacités d'un groupe de ressources
capacities = client.fabric_capacities.list_by_resource_group(
resource_group_name=resource_group
)
for capacity in capacities:
print(f"Capacity: {capacity.name} - SKU: {capacity.sku.name}")
Lister toutes les capacités de l'abonnement
all_capacities = client.fabric_capacities.list_by_subscription()
for capacity in all_capacities:
print(f"Capacity: {capacity.name} in {capacity.location}")
Mettre à jour la capacité
from azure.mgmt.fabric.models import FabricCapacityUpdate, CapacitySku
updated = client.fabric_capacities.begin_update(
resource_group_name=resource_group,
capacity_name=capacity_name,
properties=FabricCapacityUpdate(
sku=CapacitySku(
name="F4", # Scale up
tier="Fabric"
),
tags={"environment": "production"}
)
).result()
print(f"Updated SKU: {updated.sku.name}")
Suspendre la capacité
Pause la capacité pour arrêter la facturation :
client.fabric_capacities.begin_suspend(
resource_group_name=resource_group,
capacity_name=capacity_name
).result()
print("Capacity suspended")
Reprendre la capacité
Reprendre une capacité en pause :
client.fabric_capacities.begin_resume(
resource_group_name=resource_group,
capacity_name=capacity_name
).result()
print("Capacity resumed")
Supprimer la capacité
client.fabric_capacities.begin_delete(
resource_group_name=resource_group,
capacity_name=capacity_name
).result()
print("Capacity deleted")
Vérifier la disponibilité du nom
from azure.mgmt.fabric.models import CheckNameAvailabilityRequest
result = client.fabric_capacities.check_name_availability(
location="eastus",
body=CheckNameAvailabilityRequest(
name="my-new-capacity",
type="Microsoft.Fabric/capacities"
)
)
if result.name_available:
print("Name is available")
else:
print(f"Name not available: {result.reason}")
Lister les SKU disponibles
skus = client.fabric_capacities.list_skus(
resource_group_name=resource_group,
capacity_name=capacity_name
)
for sku in skus:
print(f"SKU: {sku.name} - Tier: {sku.tier}")
Opérations du client
| Opération | Méthode |
|---|---|
client.fabric_capacities |
Opérations CRUD de capacité |
client.operations |
Lister les opérations disponibles |
SKU Fabric
| SKU | Description | CUs |
|---|---|---|
F2 |
Entrée de gamme | 2 Capacity Units |
F4 |
Petit | 4 Capacity Units |
F8 |
Moyen | 8 Capacity Units |
F16 |
Grand | 16 Capacity Units |
F32 |
Très grand | 32 Capacity Units |
F64 |
2X-Large | 64 Capacity Units |
F128 |
4X-Large | 128 Capacity Units |
F256 |
8X-Large | 256 Capacity Units |
F512 |
16X-Large | 512 Capacity Units |
F1024 |
32X-Large | 1 024 Capacity Units |
F2048 |
64X-Large | 2 048 Capacity Units |
États de la capacité
| État | Description |
|---|---|
Active |
La capacité est en cours d'exécution |
Paused |
La capacité est suspendue (pas de facturation) |
Provisioning |
En cours de création |
Updating |
En cours de modification |
Deleting |
En cours de suppression |
Failed |
L'opération a échoué |
Opérations longues durée
Toutes les opérations de mutation sont des opérations longues durée (LRO). Utilisez .result() pour attendre :
# Attente synchrone
capacity = client.fabric_capacities.begin_create_or_update(...).result()
# Ou interroger manuellement
poller = client.fabric_capacities.begin_create_or_update(...)
while not poller.done():
print(f"Status: {poller.status()}")
time.sleep(5)
capacity = poller.result()
Bonnes pratiques
- Utiliser DefaultAzureCredential pour l'authentification
- Suspendre les capacités inutilisées pour réduire les coûts
- Commencer par des SKU plus petits et augmenter la taille selon les besoins
- Utiliser les tags pour le suivi des coûts et l'organisation
- Vérifier la disponibilité du nom avant de créer des capacités
- Gérer correctement les LRO — ne pas supposer une completion immédiate
- Configurer les administrateurs de capacité — spécifier les utilisateurs qui peuvent gérer les espaces de travail
- Surveiller l'utilisation de la capacité via les métriques Azure Monitor