最后审核时间:2026年5月
使用原生 Terraform 构建 DP-700 考试中的 AWS 服务——每次构建一个代码块,并紧扣考试领域。相同的代码可在 OpenTofu 上运行。
到本实验结束时,您将使用纯 Terraform 预配 Microsoft Fabric 数据工程师所需的数据流摄取基础 — 一个 Event Hubs 命名空间 + 一个事件中心作为数据流源,一个带有铜/银/金分级容器的 ADLS Gen2 存储账户,一个用于 Fabric 工作区的 Fabric F2 容量,以及用于可观测性的 Log Analytics。Fabric Event Streams + Lakehouses 是通过 Fabric 门户在工作区内创建的,它们指向这个基础架构。
将这些代码片段放入一个 main.tf 文件中,运行 terraform init,然后逐步运行 terraform apply。
>= 1.5 或 OpenTofu >= 1.6。az login)。Fabric + Event Hubs 组合运行时每月约 275 美元。DP-600 中相同的反模式也适用于此 — 容量会 24/7 计费;请及时销毁或暂停。
标准 Azure 开场白。
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-700"
ManagedBy = "terraform"
}
}
resource "azurerm_resource_group" "main" {
name = "certlabpro-dp-700-rg"
location = "eastus"
tags = local.tags
}Event Hubs 是 Azure 的高吞吐量事件摄取服务 — 它是将数据流式传输到 Fabric Event Streams 的规范源。DP-700 的“实施和管理数据摄取”领域直接测试了这种组合:实时事件进入 Event Hubs,Fabric Event Streams 订阅并将它们路由到 Lakehouse 或 KQL 数据库,下游查询在几秒钟内就能看到数据。
我们使用基本层(最便宜,单个吞吐量单位)和 1 天的保留期。考试中关于“标准 vs 高级”的权衡问题是关于捕获到存储功能(捕获自动将事件写入 ADLS)和更长的保留期 — 基本层没有这些功能,但它是实验室的廉价选择。
resource "azurerm_eventhub_namespace" "main" {
name = "ehns-dp700-${random_id.suffix.hex}"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
sku = "Basic"
capacity = 1
tags = local.tags
}
resource "azurerm_eventhub" "stream" {
name = "ingest"
namespace_id = azurerm_eventhub_namespace.main.id
partition_count = 2
message_retention = 1
}奖章架构(bronze / silver / gold)是 DP-700 的“实施和管理分析解决方案”参考数据建模模式:原始摄取数据存储在 bronze/ 中,经过清理和验证的数据存储在 silver/ 中,经过业务聚合的数据存储在 gold/ 中。Fabric Lakehouse 表就基于这种精确的布局。
我们预配了一个 ADLS Gen2 存储账户(启用分层命名空间,Delta Lake 表所需)和三个容器层。Fabric Lakehouse 快捷方式可以直接指向此存储账户,因此 Fabric 在此处进行读写,而无需将数据复制到 OneLake 中。
resource "azurerm_storage_account" "lake" {
name = "dp700lake${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
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"
}与 DP-600 相同的 Fabric 容量基元 — F2 SKU 是最小的、对开发人员友好的大小。然而,DP-700 的侧重点不同:DP-600 侧重于分析建模工作负载,而 DP-700 侧重于数据摄取侧。事件流、Spark 笔记本和数据管道都在此容量内运行。
Log Analytics 接收 Fabric 容量诊断(限流、查询持续时间)— DP-700 的“维护和优化”领域依赖此功能,以便在数据流管道开始丢弃事件时进行事件响应。
容量就绪后,完整的 DP-700 流式传输基础架构就形成了:Event Hubs → Fabric Event Stream → ADLS Gen2 存储账户上的 Lakehouse 表。应用程序工作(创建 Event Stream、定义 Lakehouse、编写转换)在 Fabric 门户中进行。
resource "azurerm_fabric_capacity" "main" {
name = "fab-dp700-${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"
tier = "Fabric"
}
tags = local.tags
}
resource "azurerm_log_analytics_workspace" "main" {
name = "log-dp700"
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
}
}
resource "azurerm_monitor_diagnostic_setting" "event_hubs" {
name = "diag"
target_resource_id = azurerm_eventhub_namespace.main.id
log_analytics_workspace_id = azurerm_log_analytics_workspace.main.id
enabled_log {
category_group = "allLogs"
}
metric {
category = "AllMetrics"
enabled = true
}
}terraform destroy 会销毁所有资源。Fabric F2 容量是主要开销(约每月 262 美元)。如果您想保留资源但停止计费,可以通过 Azure 门户暂停。Event Hubs Basic 约为每月 11 美元 — 如果您想保留 Fabric,可以单独销毁。
DP-700 涵盖了本实验无法容纳的更多流式处理和批处理表面 — Fabric Event Streams 本身(目前不支持 Terraform;通过 Fabric 门户创建)、KQL 数据库/事件库、数据管道(Fabric 内部的 Data Factory)、Spark 笔记本、实时智能仪表板以及 Power BI 语义模型集成。
我们专注于 Fabric Eventstreams + Lakehouses 所连接的基础架构 — Event Hubs 作为源,ADLS Gen2 作为目标,Fabric 容量作为计算资源。一旦您预配了这个基础,每个 DP-700 工作负载(流 → Lakehouse、流 → KQL、管道 → 数据仓库)都将是基于这个 Terraform 外壳的 Fabric 门户练习。
有关逐个服务的覆盖范围,请参阅此认证页面的 浏览 和 Editorial 部分。