最終確認: 2026年5月
DP-600 試験の対象となる AWS サービスを、プレーンな Terraform を使用して構築します。1 ブロックずつ、それぞれ試験ドメインに関連付けられています。同じコードが OpenTofu でも動作します。
このラボの終わりまでに、プレーンなTerraformを使用して、すべてのFabricワークロードの基盤となるMicrosoft Fabric容量 — 開発用にサイジングされたF-SKU容量(F2)、OneLakeショートカットターゲット用のADLS Gen2ストレージアカウント、容量診断用のLog Analyticsワークスペース、そしてそれらすべてをTerraformプリンシパルに接続するロール割り当て — がプロビジョニングされます。Fabricワークスペース(レイクハウス、ウェアハウス、ノートブック)は、FabricポータルまたはREST APIを介して容量内に作成されます。これは今日のTerraformのスコープ外です。
これらのスニペットを単一の main.tf にドロップし、terraform init を実行し、その後 terraform apply をステップバイステップで実行してください。
>= 1.5 または OpenTofu >= 1.6。az login)。Fabric容量は、このラボで最大のコスト要因です:
terraform destroy またはポータル経由) — これにより課金が停止します。DP-600のコストアンチパターンに関する質問で常に挙がるのは、「誰も使っていないのにFabricの請求が$262なのはなぜか?」というものです — これは、容量が一時停止されない限り24時間365日課金されるためです。積極的に使用していないときは、常に破棄または一時停止してください。
標準的なAzureの導入部です。Fabric容量はリージョンに紐付けられています — クロスリージョン転送料金を避けるため、データソースがあるリージョンを選択してください(FabricはOneLakeから読み取りますが、OneLakeは物理的に容量のあるリージョンに存在します)。
terraform {
required_version = ">= 1.5"
required_providers {
azurerm = { source = "hashicorp/azurerm", version = "~> 4.0" }
random = { source = "hashicorp/random", version = "~> 3.6" }
}
}
provider "azurerm" {
features {}
}
resource "random_id" "suffix" {
byte_length = 3
}
data "azurerm_client_config" "current" {}
locals {
tags = {
Project = "certlabpro-dp-600"
ManagedBy = "terraform"
}
}
resource "azurerm_resource_group" "main" {
name = "certlabpro-dp-600-rg"
location = "eastus"
tags = local.tags
}Microsoft FabricのOneLake機能は、Fabricワークスペース全体にわたる統合されたデータレイクを提供します。Fabricアイテム(レイクハウス、ウェアハウス)は物理的にOneLakeにデータを保存しますが、Fabricは外部ストレージ(ADLS Gen2、S3、GCS、Dataverse)のデータをまるでOneLakeにあるかのように参照するショートカットもサポートしています。このショートカットパターンは、データ分析ソリューションの実装と管理におけるDP-600のホットトピックです — コピーせずにフェデレートします。
ここでは、階層型ネームスペースが有効になっているADLS Gen2アカウントをプロビジョニングします(OneLakeショートカットに必要な設定です)。このアカウントが存在すれば、Fabricポータル内でこのアカウントを指す実際のショートカットを作成できます。
resource "azurerm_storage_account" "lake" {
name = "dp600lake${random_id.suffix.hex}"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
account_tier = "Standard"
account_replication_type = "LRS"
account_kind = "StorageV2"
is_hns_enabled = true # required for OneLake shortcuts
https_traffic_only_enabled = true
min_tls_version = "TLS1_2"
allow_nested_items_to_be_public = false
tags = local.tags
}
resource "azurerm_storage_container" "bronze" {
name = "bronze"
storage_account_id = azurerm_storage_account.lake.id
container_access_type = "private"
}
resource "azurerm_storage_container" "silver" {
name = "silver"
storage_account_id = azurerm_storage_account.lake.id
container_access_type = "private"
}
resource "azurerm_storage_container" "gold" {
name = "gold"
storage_account_id = azurerm_storage_account.lake.id
container_access_type = "private"
}Fabric容量は、すべてのFabricワークロードの課金単位です。Fabricポータルのワークスペースは容量に関連付けられ、それによって価格とクォータが決まります。
ここでは、最小のプロダクショングレード容量(F2)をプロビジョニングします。administration_members リストは、Fabric管理ポータルで容量を管理できるユーザーを指定します — このラボでは、現在のTerraformプリンシパルを使用します。管理者ロールはワークスペースレベルの権限とは別であり、容量管理者は課金、容量全体の一般的な設定、およびどのワークスペースがそれを使用できるかを制御します。
DP-600は、コスト最適化のテーマとして容量サイジングをテストします。ワークロードのRU/s要件を満たす最小のSKUを選択し、ピーク時にはスケールアップし、オフピーク時にはスケールダウンまたは一時停止します。F-SKUは従量課金制(時間単位の課金)であり、Power BI Premiumの古いP-SKUは予約容量(年間契約)です。
resource "azurerm_fabric_capacity" "main" {
name = "fab-dp600-${random_id.suffix.hex}"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
administration_members = [
data.azurerm_client_config.current.object_id,
]
sku {
name = "F2" # smallest Fabric SKU; F-series is pay-as-you-go
tier = "Fabric"
}
tags = local.tags
}DP-600の分析ソリューションの維持と最適化ドメインでは、容量ヘルス監視を主要な診断サーフェスとしてテストします — 容量スロットリング、クエリ期間の急増、更新失敗はすべてLog Analyticsシグナルとして表示されます。ここでは、ワークスペースと、すべてのメトリックおよびログカテゴリを容量に送信するFabric容量上の診断設定をプロビジョニングします。
この最後のピースで、Fabricの基盤は完成です。ワークロードに合わせてサイジングされた容量、ショートカットターゲットとして準備されたADLS Gen2、Log Analyticsに流れる容量診断。Fabricワークスペース、レイクハウス、ウェアハウス、セマンティックモデル、ノートブックはすべて、FabricポータルまたはREST APIを介して容量内に作成されます — これは、このラボではTerraformで行わないアプリケーション層です。
resource "azurerm_log_analytics_workspace" "main" {
name = "log-dp600"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
sku = "PerGB2018"
retention_in_days = 30
tags = local.tags
}
resource "azurerm_monitor_diagnostic_setting" "fabric" {
name = "diag"
target_resource_id = azurerm_fabric_capacity.main.id
log_analytics_workspace_id = azurerm_log_analytics_workspace.main.id
metric {
category = "AllMetrics"
enabled = true
}
}terraform destroy を実行するとすべてが削除されます。重要なリマインダー: Fabric容量は24時間365日課金されます — F2を1日稼働させただけでも約$8.70かかります。速やかに破棄してください。代替案: 容量はAzureポータルを介した一時停止/再開操作をサポートしており、リソースを破棄せずに課金を停止できます — ラボを残しておきたいが、アクティブに使用しているときだけ課金されたい場合に便利です。
DP-600は、このラボではプレーンなTerraformでは扱えない多くのFabricワークロードをカバーしています — レイクハウス(Fabricによって管理され、azurerm を介してプロビジョニング不可)、ウェアハウス、KQLデータベース(イベントハウス)、ノートブック、データパイプライン(Fabric内のData Factory)、セマンティックモデル(Power BI)、データフローGen2、およびワークスペース作成のためのMicrosoft Fabric REST APIなどです。
現在、Fabric Workspace APIは fabric Terraformプロバイダー(azurerm とは別)に導入され始めていますが、まだ成熟段階にあります。DP-600ラボの目的では、上記の容量プロビジョニングにより、Fabricポータルを開き、この容量にバインドされたワークスペースを作成し、その中にレイクハウス、ノートブック、ウェアハウスを構築できる段階に到達できます — これはすべてのDP-600受験者が練習する方法と同じです。
サービスごとのカバレッジについては、この認定試験ページの閲覧およびEditorialセクションを参照してください。