Zuletzt überprüft: Mai 2026
Erstellen Sie die AWS-Dienste der DP-900-Prüfung mit reinem Terraform — ein Block nach dem anderen, jeweils abgestimmt auf eine Prüfungsdomäne. Derselbe Code funktioniert auch mit OpenTofu.
Am Ende dieses Labs haben Sie mit einfachem Terraform die drei von DP-900 geprüften Datenplattform-Formen bereitgestellt – ein Azure Storage-Konto für Blob-/Analyse-Daten mit einer Lebenszyklusrichtlinie, eine relationale Azure SQL-Datenbank auf einem Server der Basic-Stufe und ein serverloses Cosmos DB-Konto für nicht-relationale JSON-Daten. Ein Stack, drei Substrate, jedes an eine DP-900-Domäne gebunden.
Jede Ressource ist einfaches Terraform. Legen Sie die Snippets in eine einzige main.tf-Datei, führen Sie terraform init aus und anschließend terraform apply Schritt für Schritt.
>= 1.5 oder OpenTofu >= 1.6.az login).Gemischte Kosten – zwei günstig, eine mit echter Abrechnung:
Der gesamte Stack kostet im Betrieb ca. 5–8 $/Monat. Nach Abschluss sofort löschen – die SQL DB ist der einzige Posten, der rund um die Uhr abgerechnet wird, unabhängig davon, ob Sie sie nutzen.
Standardmäßiger Azure-Einstieg in einem Block zusammengefasst: azurerm ~> 4.0 festlegen, die Provider random und random_password registrieren (wir werden beide verwenden — random_id für eindeutige Ressourcennamen, random_password für das SQL-Administratorpasswort) und die Ressourcengruppe erstellen.
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 ist das Substrat für analytische Daten, das jede DP-900-Frage voraussetzt (Hot / Cool / Archive Tiering, die Lebenszyklusrichtlinie, die kalte Daten automatisch überführt). Wir aktivieren den hierarchischen Namespace (is_hns_enabled = true), wodurch das Konto in Azure Data Lake Storage Gen2 umgewandelt wird – die Version, die Azure Synapse, Databricks und Fabric alle für analytische Workloads erwarten.
Die Lebenszyklusrichtlinie ist der am häufigsten getestete DP-900-Mechanismus zur Kostenoptimierung: Hot-Tier für aktive Daten, Cool nach 30 Tagen, Archive nach 90 Tagen. Drei Tiers, drei Aufbewahrungsfenster – die Prüfung wird diese Zahlen in Szenarien benennen.
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
}
}
}
}Relationale Daten in Azure bedeuten Azure SQL-Datenbank (PaaS, vollständig verwaltet). DP-900 testet die Unterscheidung zwischen SQL-Datenbank (einzelne Datenbank, serverlos oder DTU-basiert, PaaS) vs. SQL Managed Instance (nahezu 100 % SQL Server-Kompatibilität, große Instanz PaaS) vs. SQL Server auf VM (IaaS, volle Kontrolle).
Wir stellen einen logischen SQL Server-Container (den Connection-String-Endpunkt) plus eine Datenbank darunter auf der Basic-Stufe bereit – der günstigsten kostenpflichtigen SKU. Immer verschlüsselte Übertragung (TLS 1.2) wird erzwungen. Die Firewall-Regel erlaubt Azure-Diensten die Verbindung (die typische DP-900-Frage „wie spricht mein App Service mit meinem SQL?“ – diese Regel ist die Antwort).
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
}Nicht-relationale Daten in Azure bedeuten Azure Cosmos DB, eine global verteilte Multi-API-Datenbank. DP-900 testet spezifisch die API-Unterscheidung — NoSQL (Core / SQL API, die häufigste), MongoDB, Cassandra, Gremlin und Table. Wir verwenden die Core SQL API + den serverlosen Kapazitätsmodus (Pay-per-Request, keine Abrechnung im Leerlauf – die DP-900-Frage zum Kosten-Anti-Muster für serverlos vs. bereitgestellt).
Das consistency_level = "Session" ist der Cosmos DB-Standard und der am häufigsten getestete Konsistenzgrad bei DP-900: per-Session-Linearisierbarkeit mit ausgezeichneter Latenz. Die anderen vier – Strong, Bounded Staleness, Eventual, Consistent Prefix – sind konzeptionelle Prüfungsthemen.
Mit den drei Daten-Substraten (Blob in Schritt 2, SQL in Schritt 3, Cosmos in Schritt 4) erhält die DP-900-Domäne Core Data Concepts eine greifbare Form: „welcher Azure-Dienst für welche Datenform“ wird durch diese drei Ressourcen beantwortet.
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
}Ein standardmäßiger terraform destroy-Befehl entfernt alles in diesem Lab. Zwei Hinweise:
random_password generiert – es wird im Terraform-Status gespeichert. Wenn Sie den Status an Git committen, haben Sie das Passwort mitcommittet. Verwenden Sie in jedem nicht-trivialen Setup ein Remote-State-Backend (Azure Storage mit Versionierung + Soft-Delete).DP-900 behandelt viele Datendienste, die dieses Lab nicht abdecken kann – Azure Synapse Analytics (abgedeckt in 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 und die Azure-Analysedienste, die im Leerlauf teuer abrechnen (dedizierte Synapse SQL-Pools, dedizierte Spark-Pools).
Wir konzentrieren uns auf die drei Kerndatenformen (Blob/analytisch, relational, nicht-relational), da DP-900 im Grunde eine Prüfung nach dem Prinzip welcher Dienst für welche Form ist. Sobald Sie die drei Substrate, die dieses Lab bereitstellt, verinnerlicht haben, wird jede andere DP-900-Frage zu einer Schichtungsfrage, die darauf aufbaut.
Eine dienstspezifische Abdeckung finden Sie in den Abschnitten Durchsuchen, Handbuch und Editorial dieser Zertifizierungsseite.