अंतिम समीक्षा: मई 2026
साधारण Terraform के साथ AZ-204 परीक्षा के AWS संसाधनों को बनाएं — एक समय में एक ब्लॉक, प्रत्येक परीक्षा डोमेन से जुड़ा हुआ। यही कोड OpenTofu पर भी काम करता है।
इस लैब के अंत तक, आपने प्लेन टेराफ़ॉर्म के साथ, कैननिकल एज़्योर PaaS वेब ऐप — प्रबंधित पहचान के साथ एक ऐप सर्विस प्लान + लिनक्स वेब ऐप, स्थिति के लिए एक Cosmos DB खाता, टेलीमेट्री के लिए एक Application Insights वर्कस्पेस, और एक स्टोरेज खाता जिसे ऐप ब्लब/फ़ाइल कार्य के लिए उपयोग कर सकता है, प्रदान किया होगा। पाँच ब्लॉक; AZ-204 संदर्भ आर्किटेक्चर।
स्निपेट्स को एक ही main.tf में डालें, terraform init चलाएँ, फिर terraform apply चरण-दर-चरण चलाएँ।
>= 1.5 या OpenTofu >= 1.6।az login)।az webapp deploy)। यह लैब इन्फ्रास्ट्रक्चर शेल प्रदान करती है — कोड डिप्लॉयमेंट AZ-204 Implement DevOps डोमेन का हिस्सा है और टेराफ़ॉर्म के दायरे से बाहर है।पूरा स्टैक B1 प्लान के साथ निष्क्रिय होने पर लगभग $13/माह खर्च करता है। मुफ्त परीक्षण के लिए F1 पर स्विच करें (स्टेप 3 में प्रबंधित पहचान हटा दें) या तुरंत नष्ट कर दें।
मानक एज़्योर ओपनर। ऐप सर्विस वेब ऐप के नाम विश्व स्तर पर अद्वितीय होने चाहिए (DNS-प्रकाशित <name>.azurewebsites.net के रूप में) — 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
}
locals {
tags = {
Project = "certlabpro-az-204"
ManagedBy = "terraform"
}
}
resource "azurerm_resource_group" "main" {
name = "certlabpro-az-204-rg"
location = "eastus"
tags = local.tags
}AZ-204 आपसे Cosmos DB का उपयोग करने की अपेक्षा करता है जब भी प्रश्न बड़े पैमाने पर एकल-अंक-मिलीसेकंड, विश्व स्तर पर वितरित, या SQL-जैसे क्वेरीइंग के साथ NoSQL कहता है। सर्वरलेस क्षमता मोड लागत-अनुकूलन का डिफ़ॉल्ट है — प्रति-RU भुगतान, $0 निष्क्रिय, कम-मात्रा/देव वातावरण के लिए सही विकल्प के रूप में परीक्षा में परीक्षण किया गया।
हम खाता, उसके तहत एक डेटाबेस और एक कंटेनर को विभाजन कुंजी के साथ बनाते हैं। विभाजन कुंजी का चुनाव (यहां /userId) AZ-204 का सबसे अधिक परीक्षण किया गया Cosmos प्रश्न है — खराब विभाजन कुंजियाँ हॉट विभाजन का कारण बनती हैं; अच्छे विभाजन लोड को समान रूप से वितरित करते हैं। परीक्षा इस पैटर्न को कार्डिनैलिटी परिदृश्यों के साथ परीक्षण करती है।
resource "azurerm_cosmosdb_account" "main" {
name = "certlabpro-az-204-${random_id.suffix.hex}"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
offer_type = "Standard"
kind = "GlobalDocumentDB"
capabilities {
name = "EnableServerless"
}
consistency_policy {
consistency_level = "Session"
}
geo_location {
location = azurerm_resource_group.main.location
failover_priority = 0
}
tags = local.tags
}
resource "azurerm_cosmosdb_sql_database" "app" {
name = "appdb"
resource_group_name = azurerm_resource_group.main.name
account_name = azurerm_cosmosdb_account.main.name
}
resource "azurerm_cosmosdb_sql_container" "users" {
name = "users"
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"]
}AZ-204 के एज़्योर सुरक्षा लागू करें और मॉनिटर, समस्या निवारण और अनुकूलित करें डोमेन दोनों Application Insights पर निर्भर करते हैं — वितरित ट्रेसेस, निर्भरता ट्रैकिंग, अपवाद कैप्चर और लाइव मेट्रिक्स के लिए APM सेवा। आधुनिक ऐप इनसाइट्स इंस्टेंस को अपने डेटा बैकएंड के रूप में एक लॉग एनालिटिक्स वर्कस्पेस की आवश्यकता होती है (वर्कस्पेस-आधारित मोड; क्लासिक मोड हटा दिया गया है)।
हम दोनों को बनाते हैं और इंस्ट्रुमेंटेशन कुंजी + कनेक्शन स्ट्रिंग ऐप इनसाइट्स एट्रिब्यूट के रूप में आती हैं — जो स्टेप 4 में ऐप सेटिंग्स के माध्यम से ऐप सर्विस में जोड़ी जाती हैं।
resource "azurerm_log_analytics_workspace" "main" {
name = "certlabpro-az-204-logs"
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_application_insights" "main" {
name = "certlabpro-az-204-appi"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
workspace_id = azurerm_log_analytics_workspace.main.id
application_type = "web"
tags = local.tags
}ऐप सर्विस AZ-204 PaaS वेब-होस्ट का पसंदीदा विकल्प है। ऐप सर्विस प्लान कंप्यूट कंटेनर है (एब्स्ट्रैक्शन के तहत EC2 सोचें); इसके अंदर के वेब ऐप प्लान की कंप्यूट क्षमता साझा करते हैं। हम एक लिनक्स B1 प्लान और Node.js 20 रनटाइम के साथ एक सिंगल वेब ऐप का उपयोग करते हैं — अपने स्टैक से मेल खाने के लिए python, dotnet, java, या php पर स्विच करें।
सिस्टम-असाइन प्रबंधित पहचान ऐप के अन्य एज़्योर सेवाओं (Key Vault, स्टोरेज, Cosmos DB) तक पहुँचने के लिए AZ-204 का पासवर्ड-रहित-क्रेडेंशियल उत्तर है। एक बार उन रिसोर्सेज़ पर RBAC भूमिकाएँ प्रदान करने के बाद, ऐप सर्विस उन्हें एंट्रा-जारी टोकन के साथ कॉल करती है — ऐप सेटिंग्स में कोई कनेक्शन स्ट्रिंग नहीं होती है।
app_settings ब्लॉक पर्यावरण वेरिएबल इंजेक्ट करता है: ऐप इनसाइट्स कनेक्शन स्ट्रिंग, Cosmos एंडपॉइंट और एक फ्लैग। वेब ऐप एक खाली शेल के रूप में शुरू होता है — कोड अलग से तैनात होता है। लैब इन्फ्रास्ट्रक्चर को सही बनाने के बारे में है।
resource "azurerm_service_plan" "main" {
name = "certlabpro-az-204-plan"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
os_type = "Linux"
sku_name = "B1"
tags = local.tags
}
resource "azurerm_linux_web_app" "main" {
name = "certlabpro-az-204-${random_id.suffix.hex}"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_service_plan.main.location
service_plan_id = azurerm_service_plan.main.id
https_only = true
site_config {
always_on = true
application_stack {
node_version = "20-lts"
}
}
identity {
type = "SystemAssigned"
}
app_settings = {
APPLICATIONINSIGHTS_CONNECTION_STRING = azurerm_application_insights.main.connection_string
COSMOS_ENDPOINT = azurerm_cosmosdb_account.main.endpoint
WEBSITES_ENABLE_APP_SERVICE_STORAGE = "false"
}
tags = local.tags
}
# Grant the web app's managed identity Cosmos DB data-plane access
# (Cosmos DB Built-in Data Contributor — the AZ-204 password-less pattern).
resource "azurerm_cosmosdb_sql_role_assignment" "webapp" {
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 = azurerm_linux_web_app.main.identity[0].principal_id
scope = azurerm_cosmosdb_account.main.id
}प्रत्येक एज़्योर PaaS वेब ऐप को अंततः ब्लब/फ़ाइल स्टोरेज की आवश्यकता होती है — अपलोड की गई फ़ाइलें, उपयोगकर्ता अवतार, जेनरेट किए गए पीडीएफ, संसाधित चित्र। हम मानक सुरक्षित डिफ़ॉल्ट के साथ खाता प्रदान करते हैं और ऐप की प्रबंधित पहचान को Storage Blob Data Contributor प्रदान करते हैं ताकि ऐप कनेक्शन स्ट्रिंग के बिना ब्लब को पढ़/लिख सके।
यह AZ-204 एज़्योर कंप्यूट सॉल्यूशंस विकसित करें लूप को बंद करता है: ऐप + स्थिति (Cosmos) + टेलीमेट्री (App Insights) + ब्लब स्टोरेज, सभी सीक्रेट्स के बजाय प्रबंधित पहचान के माध्यम से जुड़े हुए हैं। प्रत्येक अतिरिक्त AZ-204 पैटर्न (Service Bus क्यू, Event Grid टॉपिक, Key Vault सीक्रेट्स, Logic App एकीकरण) उसी तरह से जुड़ता है — प्रबंधित पहचान को सही दायरे में सही भूमिका दें।
resource "azurerm_storage_account" "app_blobs" {
name = "az204app${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"
https_traffic_only_enabled = true
min_tls_version = "TLS1_2"
allow_nested_items_to_be_public = false
tags = local.tags
}
resource "azurerm_role_assignment" "webapp_blobs" {
scope = azurerm_storage_account.app_blobs.id
role_definition_name = "Storage Blob Data Contributor"
principal_id = azurerm_linux_web_app.main.identity[0].principal_id
}terraform destroy सब कुछ हटा देता है। ऐप सर्विस प्लान B1 24/7 बिलिंग वाला आइटम है (लगभग $13/माह)। यदि आप गलत तरीके से स्केल-इन करते हैं तो वेब ऐप हटाने के बाद भी प्लान RG में रहता है — terraform destroy दोनों को हटा देता है। Cosmos DB सर्वरलेस और App Insights नष्ट करने पर तुरंत बिलिंग बंद कर देते हैं।
AZ-204 में और भी डेवलपर सेवाएँ शामिल हैं जो इस लैब में फिट नहीं हो सकतीं — Azure Functions (इवेंट-ड्रिवन सर्वरलेस), कंटेनर ऐप्स, AKS, Service Bus, Event Grid, Event Hubs, Logic Apps, Durable Functions, API Management, Front Door, CDN, Notification Hubs, SignalR, और सीक्रेट स्टोरेज के लिए Azure Key Vault (प्रबंधित पहचान के बाद एक सामान्य AZ-204 फॉलो-अप)।
हम ऐप सर्विस + Cosmos + App Insights + स्टोरेज बेसलाइन पर टिके रहते हैं क्योंकि यह परीक्षा में सबसे अधिक परीक्षण किया जाने वाला PaaS वेब-ऐप आकार है — और प्रत्येक अन्य AZ-204 पैटर्न (Functions, Service Bus, Key Vault) प्रबंधित पहचान + RBAC के माध्यम से इस बेस से जुड़ता है।
उपरोक्त सतहों के लिए, इस प्रमाणपत्र पृष्ठ के ब्राउज़, मार्गदर्शिका, और Editorial अनुभाग देखें।