Zuletzt überprüft: Mai 2026
Erstellen Sie die AWS-Dienste der DP-420-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 reinem Terraform ein Cosmos DB-Konto bereitgestellt, das für die DP-420-Prüfungsmuster konfiguriert ist – Core (SQL) API, Autoscaling-Durchsatz mit einer maximalen Obergrenze, eine Datenbank + Container mit einem durchdachten Partitionsschlüssel, eine benutzerdefinierte Indexierungsrichtlinie, die schreibintensive Pfade ausschließt, eine aktivierte Point-in-Time-Wiederherstellung und Continuous Backup. Dies ist die DP-420-Referenzgrundlage.
Fügen Sie die Snippets in eine einzelne main.tf ein, führen Sie terraform init aus und anschließend terraform apply Schritt für Schritt.
>= 1.5 oder OpenTofu >= 1.6.az login).Die Kostenfragen zur DP-420 beziehen sich auf die Cosmos DB-Kapazitätsmodi:
max_throughput = 1000).Dieses Lab verwendet Autoscale mit max. 1000 RU/s – Mindestkosten ~24 $/Monat selbst bei null Traffic (Autoscale rechnet mindestens 10 % der maximalen RU/s ab). Wechseln Sie autoscale_settings auf die serverless-Fähigkeit für 0 $ im Leerlauf. Zerstören Sie umgehend, wenn Sie nicht wechseln.
Standard Azure-Einstieg. Cosmos DB-Kontonamen müssen global eindeutig sein (als <name>.documents.azure.com im DNS veröffentlicht) – random_id vermeidet Kollisionen.
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-420"
ManagedBy = "terraform"
}
}
resource "azurerm_resource_group" "main" {
name = "certlabpro-dp-420-rg"
location = "eastus"
tags = local.tags
}DP-420 Implementieren, Verwalten und Überwachen einer Cosmos DB-Lösung testet direkt die Backup-Modi: Periodisch (Standard; 2 Backups alle 4 Stunden für 8 Tage aufbewahrt) vs. Kontinuierlich (Point-in-Time-Wiederherstellung zu jeder Sekunde innerhalb von 30 oder 7 Tagen). Kontinuierlich ist die produktionsreife Antwort; wir verwenden die 7-Tage-Stufe für das Lab, um die Kosten niedrig zu halten.
local_authentication_disabled = true erzwingt die Entra ID-Authentifizierung – die DP-420-Produktionsantwort. Das RBAC-Datenebenenmodell von Cosmos ist eines der am häufigsten getesteten Prüfungsthemen.
resource "azurerm_cosmosdb_account" "main" {
name = "cosmos-dp420-${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 — DP-420 default
consistency_policy {
consistency_level = "BoundedStaleness"
max_interval_in_seconds = 10
max_staleness_prefix = 100
}
geo_location {
location = azurerm_resource_group.main.location
failover_priority = 0
}
backup {
type = "Continuous"
tier = "Continuous7Days" # cheapest continuous-backup tier
}
local_authentication_disabled = true # Entra auth only
tags = local.tags
}Der Container ist der Bereich, dem DP-420 die meiste Prüfungszeit widmet. Wir wählen /userId als Partitionsschlüssel für das Beispiel – hohe Kardinalität (gute Verteilung), das typische Zugriffsmuster ist die Datensätze meines Benutzers abrufen, sodass wir innerhalb der Partition lesen (am schnellsten, günstigste RU/s).
Die Indexierungsrichtlinie ist der nächste große DP-420 Kostenhebel. Standardmäßig indiziert Cosmos jede Eigenschaft – schnelle Abfragen, teure Schreibvorgänge. Wir schließen /largeBlob/? (einen Pfad, der große unstrukturierte Daten enthält, die wir nie abfragen) und /_etag/? (automatisch verwaltet, kein Wert zum Indizieren) aus. Benutzerdefinierte Indexierungsrichtlinien werden explizit als Kostenoptimierungsantwort für schreibintensive Workloads getestet.
Autoscale max. 1000 RU/s – berechnet 10 % des Maximums im Leerlauf (100 RU/s = ~24 $/Monat). Für eine echte Produktionsdatenbank würden Sie die erwarteten RU/s pro Anfrage modellieren, mit der nachhaltigen QPS multiplizieren, mit 1,5x Sicherheit multiplizieren und das Maximum auf diese Zahl setzen.
resource "azurerm_cosmosdb_sql_database" "app" {
name = "appdb"
resource_group_name = azurerm_resource_group.main.name
account_name = azurerm_cosmosdb_account.main.name
autoscale_settings {
max_throughput = 1000
}
}
resource "azurerm_cosmosdb_sql_container" "user_events" {
name = "user-events"
resource_group_name = azurerm_resource_group.main.name
account_name = azurerm_cosmosdb_account.main.name
database_name = azurerm_cosmosdb_sql_database.app.name
partition_key_paths = ["/userId"]
indexing_policy {
indexing_mode = "consistent"
included_path {
path = "/*"
}
excluded_path {
path = "/largeBlob/?"
}
excluded_path {
path = "/_etag/?"
}
}
default_ttl = -1 # explicit opt-in (-1 means no auto-expiry); set to seconds for TTL
}Mit local_authentication_disabled = true aus Schritt 2 ist die einzige Möglichkeit, den Container zu lesen oder zu schreiben, über die Entra ID-Authentifizierung + Cosmos's Datenebenen-RBAC. Die integrierte Rolle Cosmos DB Built-in Data Contributor (GUID 00000000-0000-0000-0000-000000000002) gewährt volle Lese-/Schreibberechtigungen im Kontobereich.
DP-420 testet die Unterscheidung der Rollen zwischen Steuerungsebene und Datenebene: Die RBAC der Steuerungsebene (Azure RBAC) verwaltet das Konto selbst (Container erstellen, Durchsatz ändern); die RBAC der Datenebene (Cosmos-spezifisch) verwaltet Dokumente innerhalb von Containern. Es sind separate Rollenzuweisungen; die eine impliziert nicht die andere.
resource "azurerm_cosmosdb_sql_role_assignment" "me_data_contributor" {
resource_group_name = azurerm_resource_group.main.name
account_name = azurerm_cosmosdb_account.main.name
role_definition_id = "${azurerm_cosmosdb_account.main.id}/sqlRoleDefinitions/00000000-0000-0000-0000-000000000002"
principal_id = data.azurerm_client_config.current.object_id
scope = azurerm_cosmosdb_account.main.id
}terraform destroy reißt alles ab. Cosmos DB-Konten haben ein 7-Tage-Soft-Delete-Fenster – der Name bleibt während dieses Fensters reserviert. Der Autoscaling-Durchsatz wird sofort nach dem Löschen nicht mehr abgerechnet.
DP-420 deckt viele Cosmos DB-Funktionen ab, die dieses Lab nicht behandeln kann – Synapse Link für analytische Abfragen, Change Feed-Prozessor, Cosmos DB für MongoDB / Cassandra / Gremlin / Tabelle (wir verwenden nur Core SQL), Multi-Region-Schreibvorgänge (Multi-Master), private Endpunkte, vom Kunden verwaltete Schlüssel, hierarchische Partitionsschlüssel (Vorschau zum Zeitpunkt des Schreibens) und den Cosmos DB Serverless-Kapazitätsmodus im Detail.
Wir bleiben bei den Grundlagen Partitionsschlüssel + Indexierung + Autoscaling + RBAC + Continuous Backup, da dies die am häufigsten getesteten DP-420-Attribute sind. Multi-Region-Schreibvorgänge bauen auf dieser Basis über zusätzliche geo_location-Blöcke auf; private Endpunkte über azurerm_private_endpoint; Synapse Link ist ein einfacher Attribut-Toggle. Beherrschen Sie die Grundlagen; erweitern Sie diese pro Muster.
Eine dienstspezifische Abdeckung finden Sie in den Abschnitten Durchsuchen und Editorial dieser Zertifizierungsseite.