Последняя проверка: май 2026 г.
Разверните сервисы AWS для экзамена DP-900 с помощью чистого Terraform: пошаговое руководство с привязкой каждого блока к разделам экзамена. Код также совместим с OpenTofu.
К концу этой лабораторной работы вы настроите, используя обычный Terraform, три типа платформ данных, которые тестируются в DP-900: учетную запись Azure Storage для данных BLOB/аналитики с политикой жизненного цикла, реляционную Azure SQL Database на сервере базового уровня и бессерверную учетную запись Cosmos DB для нереляционных данных JSON. Один стек, три основы, каждая из которых связана с доменом DP-900.
Каждый ресурс — это чистый Terraform. Поместите фрагменты кода в один файл main.tf, запустите terraform init, затем terraform apply шаг за шагом.
>= 1.5 или OpenTofu >= 1.6.az login).Смешанный результат — два дешевых, один с реальным счетом:
Вся связка обходится примерно в 5–8 долларов США в месяц во время работы. Удалите немедленно по завершении — Azure SQL Database является единственной позицией, которая оплачивается 24/7, независимо от того, используете вы ее или нет.
Стандартный заголовок Azure, объединенный в один блок: прикрепляем azurerm ~> 4.0, регистрируем провайдеры random и random_password (мы будем использовать оба — random_id для уникального именования ресурсов, random_password для пароля администратора SQL) и создаем группу ресурсов.
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 = 2
}
locals {
tags = {
Project = "certlabpro-dp-900"
ManagedBy = "terraform"
}
}
resource "azurerm_resource_group" "main" {
name = "certlabpro-dp-900-rg"
location = "eastus"
tags = local.tags
}Azure Storage — это основа для аналитических данных, которую предполагает каждый вопрос DP-900 (многоуровневое хранение Hot / Cool / Archive, политика жизненного цикла, которая автоматически переводит холодные данные). Мы включаем иерархическое пространство имен (is_hns_enabled = true), что преобразует учетную запись в Azure Data Lake Storage Gen2 — версию, которую Azure Synapse, Databricks и Fabric ожидают для аналитических рабочих нагрузок.
Политика жизненного цикла — это наиболее часто тестируемый механизм оптимизации затрат в DP-900: уровень Hot для активных данных, Cool через 30 дней, Archive через 90 дней. Три уровня, три окна хранения — экзамен будет указывать эти числа в сценариях.
resource "azurerm_storage_account" "analytics" {
name = "dp900data${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 # Data Lake Storage Gen2
https_traffic_only_enabled = true
min_tls_version = "TLS1_2"
allow_nested_items_to_be_public = false
tags = local.tags
}
resource "azurerm_storage_management_policy" "analytics" {
storage_account_id = azurerm_storage_account.analytics.id
rule {
name = "tier-cold-data"
enabled = true
filters {
blob_types = ["blockBlob"]
prefix_match = ["raw/"]
}
actions {
base_blob {
tier_to_cool_after_days_since_modification_greater_than = 30
tier_to_archive_after_days_since_modification_greater_than = 90
}
}
}
}Реляционные данные в Azure означают Azure SQL Database (PaaS, полностью управляемая). DP-900 проверяет различие между SQL Database (одна база данных, бессерверная или на основе DTU, PaaS) и SQL Managed Instance (почти 100% совместимость с SQL Server, крупномасштабная PaaS) и SQL Server на VM (IaaS, полный контроль).
Мы разворачиваем логический контейнер SQL Server (конечная точка строки подключения) плюс одну базу данных под ним на уровне Basic — самом дешевом платном SKU. Принудительно применяется шифрование при передаче (TLS 1.2). Правило брандмауэра разрешает службам Azure подключаться (типичный вопрос DP-900: «как мой App Service взаимодействует с моим SQL?» — это правило является ответом).
resource "random_password" "sql_admin" {
length = 24
special = true
min_upper = 2
min_lower = 2
min_numeric = 2
}
resource "azurerm_mssql_server" "main" {
name = "certlabpro-dp-900-${random_id.suffix.hex}"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
version = "12.0"
administrator_login = "sqladmin"
administrator_login_password = random_password.sql_admin.result
minimum_tls_version = "1.2"
public_network_access_enabled = true
tags = local.tags
}
resource "azurerm_mssql_database" "main" {
name = "certlabpro-dp-900-db"
server_id = azurerm_mssql_server.main.id
sku_name = "Basic"
max_size_gb = 2
zone_redundant = false
tags = local.tags
}
resource "azurerm_mssql_firewall_rule" "allow_azure_services" {
name = "AllowAzureServices"
server_id = azurerm_mssql_server.main.id
start_ip_address = "0.0.0.0"
end_ip_address = "0.0.0.0" # 0.0.0.0/0.0.0.0 = "allow Azure services" sentinel
}Нереляционные данные в Azure означают Azure Cosmos DB, глобально распределенную базу данных с поддержкой нескольких API. DP-900 специально проверяет различие API — NoSQL (Core / SQL API, наиболее распространенный), MongoDB, Cassandra, Gremlin и Table. Мы используем Core SQL API + бессерверный режим емкости (оплата за запрос, отсутствие счетов за простой — вопрос DP-900 об анти-паттерне затрат для бессерверного режима против предоставленного).
consistency_level = "Session" — это значение по умолчанию для Cosmos DB и наиболее часто тестируемый уровень согласованности на DP-900: линейная согласованность на уровне сессии с низкой задержкой. Остальные четыре — Strong, Bounded staleness, Eventual, Consistent prefix — являются концептуальными темами экзамена.
С тремя основами данных (blob в Шаге 2, SQL в Шаге 3, Cosmos в Шаге 4), домен DP-900 «Основные концепции данных» приобретает осязаемую форму: «какая служба Azure для какой формы данных» — на этот вопрос отвечают эти три ресурса.
resource "azurerm_cosmosdb_account" "main" {
name = "certlabpro-dp-900-${random_id.suffix.hex}"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
offer_type = "Standard"
kind = "GlobalDocumentDB" # Core (SQL) API
capabilities {
name = "EnableServerless"
}
consistency_policy {
consistency_level = "Session"
}
geo_location {
location = azurerm_resource_group.main.location
failover_priority = 0
}
tags = local.tags
}Стандартная команда terraform destroy удаляет все ресурсы, созданные в этой лабораторной работе. Два примечания:
random_password и хранится в состоянии Terraform. Если вы фиксируете состояние в Git, вы фиксируете и пароль. Используйте удаленный бэкенд состояния (Azure Storage с управлением версиями + мягкое удаление) в любой нетривиальной конфигурации.DP-900 охватывает множество служб данных, которые не могут быть включены в эту лабораторную работу — Azure Synapse Analytics (рассматривается в DP-600/DP-700), Azure Databricks, Azure Data Factory, Microsoft Fabric, Azure Stream Analytics, Event Hubs, Azure SQL Managed Instance, Azure Database for PostgreSQL / MySQL / MariaDB, Power BI и аналитические службы Azure, которые дорого оплачиваются в простое (выделенные пулы SQL Synapse, выделенные пулы Spark).
Мы придерживаемся трех основных форм данных (blob/аналитические, реляционные, нереляционные), потому что DP-900 — это, по сути, экзамен какая-служба-для-какой-формы. Как только вы усвоите три основы, которые предоставляет эта лабораторная работа, любой другой вопрос DP-900 станет вопросом наслаивания поверх них.
Для подробного обзора услуг см. разделы Просмотр, Справочник и Editorial этой страницы сертификации.