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. 01Fabric 容量の作成と参照
  2. 02SKU と管理者の変更
  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 - 2025 年 9 月)
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 を確認してください。GetDefaultSubscriptionAsync は、上記に AZURE_SUBSCRIPTION_ID を記載しただけでは、そのサブスクリプションを選択しません。プロビジョニング、スケーリング、再開にはコストが発生し、一時停止や削除は可用性に影響します。実際のリソース、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 操作のエントリポイント
FabricCapacityResourceFabric 容量インスタンスを表します
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. ARM API エラーを処理するには、RequestFailedExceptionを処理します
  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

参考資料

使用する場面

このスキルは、概要で説明されているワークフローやアクションを実行する場合に適用できます。

制限事項

  • このスキルは、タスクが上記の説明範囲に明確に該当する場合にのみ使用してください。
  • 出力を、環境固有の検証、テスト、または専門家によるレビューの代わりとして扱わないでください。
  • 必要な入力、権限、安全上の境界、または成功基準が不足している場合は、作業を中断して確認を求めてください。

コメント