mcpField
A
azure-mgmt-fabric-dotnet

azure-mgmt-fabric-dotnet

github.com/sickn33云与 DevOps48.7k53 次安装今天更新
代码仓库

关于 azure-mgmt-fabric-dotnet

面向 .NET 开发者的 Azure.ResourceManager.Fabric 管理 SDK 指南,用于通过 Azure Resource Manager 配置和管理 Fabric 容量;不管理工作区或数据项。

主要功能

  1. 01创建和查询 Fabric 容量
  2. 02调整 SKU 与管理员
  3. 03暂停、恢复或删除容量
  4. 04检查名称与可用 SKU

适用场景

  1. 01为环境配置 Fabric 容量
  2. 02按需调整容量 SKU
  3. 03闲置时暂停容量
  4. 04确认区域可用的 SKU

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/sickn33/agentic-awesome-skills --skill azure-mgmt-fabric-dotnet

安装后在 Claude Code 中输入/azure-mgmt-fabric-dotnet确认已加载。

详细介绍

Azure.ResourceManager.Fabric (.NET)

用于通过 Azure Resource Manager 预配和管理 Microsoft Fabric 容量资源的管理平面 SDK。

仅限管理平面 此 SDK 用于管理 Fabric 容量(计算资源)。如需使用 Fabric 工作区、湖仓、数据仓库和数据项,请使用 Microsoft Fabric REST API 或数据平面 SDK。

安装

dotnet add package Azure.ResourceManager.Fabric
dotnet add package Azure.Identity

当前版本:1.0.0(GA - September 2025)
API 版本:2023-11-01
目标框架:.NET 8.0、.NET Standard 2.0

环境变量

AZURE_SUBSCRIPTION_ID=<your-subscription-id>
# For service principal auth (optional)
AZURE_TENANT_ID=<tenant-id>
AZURE_CLIENT_ID=<client-id>
AZURE_CLIENT_SECRET=<client-secret>

身份验证

using Azure.Identity;
using Azure.ResourceManager;
using Azure.ResourceManager.Fabric;

// Always use DefaultAzureCredential
var credential = new DefaultAzureCredential();
var armClient = new ArmClient(credential);

// Get subscription
var subscription = await armClient.GetDefaultSubscriptionAsync();

资源层次结构

ArmClient
└── SubscriptionResource
    └── ResourceGroupResource
        └── FabricCapacityResource

核心工作流

执行写入操作前,请确认凭据租户和准确的订阅 ID;仅仅列出 AZURE_SUBSCRIPTION_ID 并不会让 GetDefaultSubscriptionAsync 选择该订阅。预配、扩缩和恢复会产生费用;暂停和删除会影响可用性。请将授权范围限定为实际的资源、SKU 和操作。示例面向文档中所述的 API,并非经过测试的部署;请在 Microsoft API 参考 中验证软件包签名。容量名称只能使用小写字母和数字,不能包含连字符。

1. 创建 Fabric 容量
using Azure.ResourceManager.Fabric;
using Azure.ResourceManager.Fabric.Models;
using Azure.Core;

// Get resource group
var resourceGroup = await subscription.GetResourceGroupAsync("my-resource-group");

// Define capacity configuration
var administration = new FabricCapacityAdministration(
    new[] { "[email protected]" }  // Capacity administrators (UPNs or object IDs)
);

var properties = new FabricCapacityProperties(administration);

var sku = new FabricSku("F64", FabricSkuTier.Fabric);

var capacityData = new FabricCapacityData(
    AzureLocation.WestUS2,
    properties,
    sku)
{
    Tags = { ["Environment"] = "Production" }
};

// Create capacity (long-running operation)
var capacityCollection = resourceGroup.Value.GetFabricCapacities();
var operation = await capacityCollection.CreateOrUpdateAsync(
    WaitUntil.Completed,
    "myfabriccapacity",
    capacityData);

FabricCapacityResource capacity = operation.Value;
Console.WriteLine($"Created capacity: {capacity.Data.Name}");
Console.WriteLine($"State: {capacity.Data.Properties.State}");
2. 获取 Fabric 容量
// Get existing capacity
var capacity = await resourceGroup.Value
    .GetFabricCapacityAsync("myfabriccapacity");

Console.WriteLine($"Name: {capacity.Value.Data.Name}");
Console.WriteLine($"Location: {capacity.Value.Data.Location}");
Console.WriteLine($"SKU: {capacity.Value.Data.Sku.Name}");
Console.WriteLine($"State: {capacity.Value.Data.Properties.State}");
Console.WriteLine($"Provisioning State: {capacity.Value.Data.Properties.ProvisioningState}");
3. 更新容量(扩缩 SKU 或更改管理员)
var capacity = await resourceGroup.Value
    .GetFabricCapacityAsync("myfabriccapacity");

var patch = new FabricCapacityPatch
{
    Sku = new FabricSku("F128", FabricSkuTier.Fabric),  // Scale up
    Properties = new FabricCapacityUpdateProperties
    {
        Administration = new FabricCapacityAdministration(
            new[] { "[email protected]", "[email protected]" }
        )
    }
};

var updateOperation = await capacity.Value.UpdateAsync(
    WaitUntil.Completed,
    patch);

Console.WriteLine($"Updated SKU: {updateOperation.Value.Data.Sku.Name}");
4. 暂停和恢复容量
// Suspend capacity (stop billing for compute)
await capacity.Value.SuspendAsync(WaitUntil.Completed);
Console.WriteLine("Capacity suspended");

// Resume capacity
await capacity.Value.ResumeAsync(WaitUntil.Completed);
var resumedCapacity = await capacity.Value.GetAsync();
Console.WriteLine($"Capacity resumed. State: {resumedCapacity.Value.Data.Properties.State}");
5. 删除容量
await capacity.Value.DeleteAsync(WaitUntil.Completed);
Console.WriteLine("Capacity deleted");
6. 列出所有容量
// In a resource group
await foreach (var cap in resourceGroup.Value.GetFabricCapacities())
{
    Console.WriteLine($"- {cap.Data.Name} ({cap.Data.Sku.Name})");
}

// In a subscription
await foreach (var cap in subscription.GetFabricCapacitiesAsync())
{
    Console.WriteLine($"- {cap.Data.Name} in {cap.Data.Location}");
}
7. 检查名称是否可用
var checkContent = new FabricNameAvailabilityContent
{
    Name = "mynewcapacity",
    ResourceType = "Microsoft.Fabric/capacities"
};

var result = await subscription.CheckFabricCapacityNameAvailabilityAsync(
    AzureLocation.WestUS2,
    checkContent);

if (result.Value.IsNameAvailable == true)
{
    Console.WriteLine("Name is available!");
}
else
{
    Console.WriteLine($"Name unavailable: {result.Value.Reason} - {result.Value.Message}");
}
8. 列出可用 SKU
// List all SKUs available in subscription
await foreach (var skuDetails in subscription.GetSkusFabricCapacitiesAsync())
{
    Console.WriteLine($"SKU: {skuDetails.Name}");
    Console.WriteLine($"  Resource Type: {skuDetails.ResourceType}");
    foreach (var location in skuDetails.Locations)
    {
        Console.WriteLine($"  Location: {location}");
    }
}

// List SKUs available for an existing capacity (for scaling)
await foreach (var skuDetails in capacity.Value.GetSkusForCapacityAsync())
{
    Console.WriteLine($"Can scale to: {skuDetails.Sku.Name}");
}

SKU 参考

SKU 名称容量单位(CU)Power BI 对应项
F22-
F44-
F88EM1/A1
F1616EM2/A2
F3232EM3/A3
F6464P1/A4
F128128P2/A5
F256256P3/A6
F512512P4/A7
F10241024P5/A8
F20482048-

关键类型参考

类型用途
ArmClient所有 ARM 操作的入口
FabricCapacityResource表示一个 Fabric 容量实例
FabricCapacityCollection用于容量 CRUD 操作的集合
FabricCapacityData容量创建/读取数据模型
FabricCapacityPatch容量更新负载
FabricCapacityProperties容量属性(管理、状态)
FabricCapacityAdministration管理员成员配置
FabricSkuSKU 配置(名称和层级)
FabricSkuTier定价层级(目前仅有 "Fabric")
FabricProvisioningState预配状态(Succeeded、Failed 等)
FabricResourceState资源状态(Active、Suspended 等)
FabricNameAvailabilityContent名称可用性检查请求
FabricNameAvailabilityResult名称可用性检查响应

预配和资源状态

预配状态(FabricProvisioningState)
  • Succeeded - 操作已成功完成
  • Failed - 操作失败
  • Canceled - 操作已取消
  • Deleting - 正在删除容量
  • Provisioning - 正在进行初始预配
  • Updating - 正在进行更新操作
资源状态(FabricResourceState)
  • Active - 容量正在运行且可用
  • Provisioning - 正在预配
  • Failed - 处于失败状态
  • Updating - 正在更新
  • Deleting - 正在删除
  • Suspending - 正在转换为暂停状态
  • Suspended - 已暂停(不再为计算计费)
  • Pausing - 正在转换为暂停状态
  • Paused - 已暂停
  • Resuming - 正在从暂停/停用状态恢复
  • Scaling - 正在扩缩到不同的 SKU
  • Preparing - 正在准备资源

最佳实践

  1. 使用 WaitUntil.Completed,确保操作完成后再继续
  2. 在需要手动轮询或并行运行操作时,使用 WaitUntil.Started
  3. 始终使用 DefaultAzureCredential——切勿硬编码凭据
  4. 处理 RequestFailedException,以应对 ARM API 错误
  5. 对幂等操作使用 CreateOrUpdateAsync
  6. 不使用时暂停——即使处于空闲状态,Fabric 容量仍会产生计算费用
  7. 对容量执行操作前,检查其预配状态
  8. 使用合适的 SKU——开发/测试从较小规格(F2/F4)开始,生产环境则按需扩展

错误处理

using Azure;

try
{
    var operation = await capacityCollection.CreateOrUpdateAsync(
        WaitUntil.Completed, capacityName, capacityData);
}
catch (RequestFailedException ex) when (ex.Status == 409)
{
    Console.WriteLine("Capacity already exists or conflict");
}
catch (RequestFailedException ex) when (ex.Status == 400)
{
    Console.WriteLine($"Invalid configuration: {ex.Message}");
}
catch (RequestFailedException ex) when (ex.Status == 403)
{
    Console.WriteLine("Insufficient permissions or quota exceeded");
}
catch (RequestFailedException ex)
{
    Console.WriteLine($"ARM Error: {ex.Status} - {ex.ErrorCode}: {ex.Message}");
}

常见问题

  1. 容量名称必须全局唯一——Fabric 容量名称在所有 Azure 订阅中都必须唯一
  2. 暂停不会删除容量——暂停的容量仍然存在,但不会产生计算费用
  3. 更改 SKU 可能需要停机——扩缩操作可能需要几分钟
  4. 管理员 UPN 必须有效——容量管理员必须是有效的 Azure AD 用户
  5. 区域限制——并非所有 SKU 在所有区域都可用;使用 GetSkusFabricCapacitiesAsync 进行检查
  6. 预配时间较长——创建容量可能需要 5-15 分钟

相关 SDK

SDK用途安装
Azure.ResourceManager.Fabric管理平面(此 SDK)dotnet add package Azure.ResourceManager.Fabric
Microsoft.Fabric.Api数据平面操作(测试版)dotnet add package Microsoft.Fabric.Api --prerelease
Azure.ResourceManager核心 ARM SDKdotnet add package Azure.ResourceManager
Azure.Identity身份验证dotnet add package Azure.Identity

参考资料

适用场景

当需要执行概述中描述的工作流或操作时,可使用此技能。

限制

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

评论

支持 Markdown