נבדק לאחרונה: מאי 2026
בנו את שירותי AWS של בחינת DP-420 עם Terraform פשוט — בלוק אחד בכל פעם, כאשר כל אחד מהם מקושר בחזרה לתחום במבחן. אותו הקוד עובד גם ב-OpenTofu.
עד סוף מעבדה זו תגדיר, באמצעות Terraform פשוט, חשבון Cosmos DB המוגדר לדפוסי בחינת DP-420 — Core (SQL) API, תפוקת קנה מידה אוטומטי (autoscale throughput) עם קיבולת מרבית, מסד נתונים + מכולה עם מפתח מחיצה מחושב היטב, מדיניות אינדקס מותאמת אישית שמוציאה נתיבים עתירי כתיבה, שחזור לנקודת זמן מופעל, וגיבוי רציף (Continuous backup). זהו קו הבסיס הייחוס של DP-420.
השלך את המקטעים לקובץ main.tf יחיד, הפעל terraform init, ולאחר מכן terraform apply צעד אחר צעד.
>= 1.5 או OpenTofu >= 1.6.az login).שאלות על עלות ב-DP-420 נוגעות למצבי הקיבולת של Cosmos DB:
max_throughput = 1000).מעבדה זו משתמשת ב-autoscale עם מקסימום 1000 RU/שנייה — חיוב מינימלי של כ-24$ לחודש גם ללא תעבורה (autoscale מחייב במינימום 10% ממקסימום RU/שנייה). שנה את autoscale_settings ליכולת serverless עבור $0 במצב סרק. הרס במהירות אם אינך מחליף.
פתח Azure סטנדרטי. שמות חשבונות Cosmos DB חייבים להיות ייחודיים גלובלית (מפורסמים ב-DNS כ-<name>.documents.azure.com) — random_id מונע התנגשויות.
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 הטמעה, ניהול וניטור פתרון Cosmos DB בוחן ישירות מצבי גיבוי: תקופתי (ברירת מחדל; 2 גיבויים כל 4 שעות נשמרים למשך 8 ימים) לעומת רציף (שחזור לנקודת זמן כלשהי בתוך 30 או 7 ימים). רציף הוא הפתרון ברמת הייצור; אנו משתמשים בשכבת 7 הימים עבור המעבדה כדי לשמור על עלות נמוכה.
local_authentication_disabled = true מאלץ אימות באמצעות Entra ID — פתרון הייצור של DP-420. מודל ה-RBAC של מישור הנתונים (data-plane) של Cosmos הוא אחד מנושאי הבחינה הנבחנים ביותר.
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
}המכולה היא המקום שבו DP-420 מקדיש את מרבית זמן הבחינה. אנו בוחרים ב-/userId כמפתח המחיצה לדוגמה — קרדינליות גבוהה (הפצה טובה), תבנית הגישה הטיפוסית היא קבל את רשומות המשתמש שלי, ולכן אנו קוראים בתוך המחיצה (הכי מהיר, הכי זול ב-RU/שנייה).
מדיניות האינדקס היא מנוף העלות הגדול הבא ב-DP-420. כברירת מחדל, Cosmos מאנדקס כל מאפיין — שאילתות מהירות, כתיבות יקרות. אנו מוציאים את /largeBlob/? (נתיב שמחזיק נתונים לא מובנים כבדים שאנו אף פעם לא מבצעים עליהם שאילתות) ואת /_etag/? (מנוהל אוטומטית, ללא ערך לאינדקס). מדיניות אינדקס מותאמת אישית נבחנת במפורש כתשובת אופטימיזציית עלויות עבור עומסי עבודה עתירי כתיבה.
קנה מידה אוטומטי מקסימום 1000 RU/שנייה — מחייב 10% מהמקסימום במינימום במצב סרק (100 RU/שנייה = כ-24$ לחודש). עבור מסד נתונים אמיתי בייצור הייתם ממדלים את ה-RU/שנייה הצפוי לבקשה, מכפילים ב-QPS מתמשך, מכפילים ב-1.5x בטיחות, ומגדירים את המקסימום למספר זה.
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
}עם local_authentication_disabled = true משלב 2, הדרך היחידה לקרוא או לכתוב למכולה היא באמצעות אימות Entra ID + RBAC של מישור הנתונים של Cosmos. התפקיד המובנה Cosmos DB Built-in Data Contributor (GUID 00000000-0000-0000-0000-000000000002) מעניק הרשאות קריאה/כתיבה מלאות בהיקף החשבון.
DP-420 בוחן את ההבחנה בין תפקידי מישור בקרה למישור נתונים: RBAC של מישור הבקרה (Azure RBAC) מנהל את החשבון עצמו (יצירת מכולה, שינוי תפוקה); RBAC של מישור הנתונים (ספציפי ל-Cosmos) מנהל מסמכים בתוך מכולות. אלו הן הקצאות תפקידים נפרדות; האחת אינה מרמזת על השנייה.
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 מפרק הכל. לחשבונות Cosmos DB יש חלון מחיקה רכה של 7 ימים — השם נשאר שמור במהלך חלון זה. תפוקת הקנה מידה האוטומטי מפסיקה חיובים מיד עם ההריסה.
DP-420 מכסה תכונות רבות של Cosmos DB שמעבדה זו אינה יכולה להכיל — Synapse Link לשאילתות אנליטיות, מעבד פיד שינויים, Cosmos DB עבור MongoDB / Cassandra / Gremlin / Table (אנו משתמשים רק ב-Core SQL), כתיבות מרובות אזורים (multi-master), נקודות קצה פרטיות, מפתחות מנוהלים על ידי לקוח, מפתחות מחיצה היררכיים (בתצוגה מקדימה בעת כתיבה), ומצב קיבולת ה-serverless של Cosmos DB לעומק.
אנו נצמדים לפרימיטיבים של מפתח מחיצה + אינדקס + קנה מידה אוטומטי (autoscale) + RBAC + גיבוי רציף (Continuous backup) מכיוון שהם התכונות הנבחנות ביותר ב-DP-420. כתיבות מרובות אזורים נבנות על בסיס זה באמצעות בלוקי geo_location נוספים; נקודות קצה פרטיות נבנות באמצעות azurerm_private_endpoint; Synapse Link הוא מתג תכונה יחיד. הגדר את הבסיס נכון; התקן לפי תבנית.
לכיסוי שירות-אחר-שירות, עיין במקטעי עיון ו-Editorial בדף אישור זה.