Azure 管理 Fabric Python SDK

azure-mgmt-fabric-py
分类编程
作者Agentic Awesome Skills 社区
许可MIT
评分4.50/5
使用4.8K

Azure Fabric Python 管理 SDK

通过编程方式管理 Microsoft Fabric 容量和资源。

安装

bash
pip install azure-mgmt-fabric
pip install azure-identity

环境变量

bash
AZURE_SUBSCRIPTION_ID=<your-subscription-id>
AZURE_RESOURCE_GROUP=<your-resource-group>

身份验证

python
from azure.identity import DefaultAzureCredential
from azure.mgmt.fabric import FabricMgmtClient
import os

credential = DefaultAzureCredential()
client = FabricMgmtClient(
credential=credential,
subscription_id=os.environ["AZURE_SUBSCRIPTION_ID"]
)

创建 Fabric 容量

python
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=["[email protected]"]
)
)
)
).result()

print(f"Capacity created: {capacity.name}")

获取容量详情

python
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}")

列出资源组中的容量

python
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}")

列出订阅中的所有容量

python
all_capacities = client.fabric_capacities.list_by_subscription()

for capacity in all_capacities:
print(f"Capacity: {capacity.name} in {capacity.location}")

更新容量

python
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", # 向上扩展
tier="Fabric"
),
tags={"environment": "production"}
)
).result()

print(f"Updated SKU: {updated.sku.name}")

暂停容量

暂停容量以停止计费:

python
client.fabric_capacities.begin_suspend(
    resource_group_name=resource_group,
    capacity_name=capacity_name
).result()

print("Capacity suspended")

恢复容量

恢复已暂停的容量:

python
client.fabric_capacities.begin_resume(
    resource_group_name=resource_group,
    capacity_name=capacity_name
).result()

print("Capacity resumed")


删除容量

python
client.fabric_capacities.begin_delete(
    resource_group_name=resource_group,
    capacity_name=capacity_name
).result()

print("Capacity deleted")

检查名称可用性

python
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}")

列出可用 SKU

python
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}")

客户端操作

| 操作 | 方法 |
|-----------|--------|
| client.fabric_capacities | 容量 CRUD 操作 |
| client.operations | 列出可用操作 |

Fabric SKU

| SKU | 描述 | CU (容量单位) |
|-----|-------------|-----|
| F2 | 入门级 | 2 Capacity Units |
| F4 | 小型 | 4 Capacity Units |
| F8 | 中型 | 8 Capacity Units |
| F16 | 大型 | 16 Capacity Units |
| F32 | 特大型 | 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 | 1024 Capacity Units |
| F2048 | 64X-Large | 2048 Capacity Units |

容量状态

| 状态 | 描述 |
|-------|-------------|
| Active | 容量正在运行 |
| Paused | 容量已暂停(不计费) |
| Provisioning | 正在创建 |
| Updating | 正在修改 |
| Deleting | 正在删除 |
| Failed | 操作失败 |

长期运行操作 (LRO)

所有变更操作均为长期运行操作 (LRO)。请使用 .result() 进行等待:

python
# 同步等待
capacity = client.fabric_capacities.begin_create_or_update(...).result()

或手动轮询

poller = client.fabric_capacities.begin_create_or_update(...) while not poller.done(): print(f"Status: {poller.status()}") time.sleep(5) capacity = poller.result()

最佳实践

1. 使用 DefaultAzureCredential 进行身份验证
2. 暂停不使用的容量以降低成本
3. 从较小的 SKU 开始,根据需要向上扩展
4. 使用标签 (Tags) 进行成本跟踪和组织管理
5. 在创建容量前检查名称可用性
6. 正确处理 LRO —— 不要假设操作会立即完成
7. 设置容量管理员 —— 指定可以管理工作区的用户
8. 通过 Azure Monitor 指标监控容量使用情况

适用场景

本技能适用于执行概览中所描述的工作流或操作。

局限性

  • 仅在任务与上述范围明确匹配时使用此技能。
  • 不要将输出视为针对特定环境的验证、测试或专家评审的替代方案。
  • 如果缺少必要的输入、权限、安全边界或成功标准,请停止并请求澄清。