最后审核时间:2026年5月
使用原生 Terraform 构建 DP-600 考试中的 AWS 服务——每次构建一个代码块,并紧扣考试领域。相同的代码可在 OpenTofu 上运行。
到本实验结束时,你将使用纯 Terraform 预置 Microsoft Fabric 容量,该容量支撑着所有 Fabric 工作负载——一个用于开发的 F-SKU 容量(F2)、一个用于 OneLake 快捷方式目标的 ADLS Gen2 存储账户、一个用于容量诊断的 Log Analytics 工作区,以及将所有这些连接到你的 Terraform 主体的角色分配。Fabric 工作区(Lakehouses、Warehouses、Notebooks)通过 Fabric 门户或 REST API 在容量内部创建——这目前不在 Terraform 的范围之内。
将代码片段放入一个 main.tf 文件中,然后逐步运行 terraform init 和 terraform apply。
>= 1.5 或 OpenTofu >= 1.6。az login)。Fabric 容量是本实验中最大的成本项目:
terraform destroy 或通过门户)。DP-600 成本反模式问题 100% 涉及“为什么我的 Fabric 账单是 262 美元,即使没人使用它?”——因为容量除非暂停,否则会 24/7 全天候计费。不使用时务必销毁或暂停。
标准 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 项目(Lakehouses、Warehouses)将数据物理存储在 OneLake 中,但 Fabric 还支持快捷方式,可以引用外部存储(ADLS Gen2、S3、GCS、Dataverse)中的数据,就像它存在于 OneLake 中一样。快捷方式模式是 DP-600 中“实现和管理数据分析解决方案”的热点话题——无需复制即可进行联邦。
我们在此处预置了一个启用分层命名空间(OneLake 快捷方式所需设置)的 ADLS Gen2 账户。一旦此账户存在,你就可以在 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 工作区、Lakehouses、Warehouses、语义模型和笔记本都是通过 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/7 全天候计费——即使 F2 运行一天也会产生约 8.70 美元的费用。请及时销毁。替代方案:容量支持通过 Azure 门户进行暂停/恢复操作,这会停止计费而无需销毁资源——如果你想保留实验环境但只在使用时付费,这将非常有用。
DP-600 涵盖了许多本实验无法通过纯 Terraform 实现的 Fabric 工作负载——Lakehouses(由 Fabric 管理,无法通过 azurerm 预置)、Warehouses、KQL 数据库 (Eventhouses)、笔记本、数据管道(Fabric 内部的数据工厂)、语义模型(Power BI)、数据流 Gen2 以及用于工作区创建的 Microsoft Fabric REST API。
Fabric Workspace API 正在进入 fabric Terraform 提供程序(与 azurerm 分离),但仍在成熟中。对于 DP-600 实验目的,上述容量预置让你能够打开 Fabric 门户,创建绑定到此容量的工作区,并在其中构建 Lakehouses + 笔记本 + Warehouses——所有 DP-600 考生都是这样练习的。
有关逐个服务的覆盖范围,请参阅此证书页面的 浏览 和 Editorial 部分。