Zuletzt überprüft: Mai 2026
Erstellen Sie die AWS-Dienste der AI-102-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 werden Sie mit einfachem Terraform das Substrat einer Azure KI-Anwendung im RAG-Stil bereitgestellt haben – ein Azure OpenAI-Konto mit einer Chat-Modellbereitstellung der Claude-/GPT-Klasse, einen Azure KI Search-Dienst für den Abrufindex, ein Speicherkonto für Quelldokumente und einen Key Vault, der die API-Schlüssel enthält. Fünf Blöcke; die AI-102-Referenzarchitektur.
Fügen Sie die Snippets in eine einzelne main.tf ein, führen Sie terraform init aus, und dann terraform apply Schritt für Schritt.
>= 1.5 oder OpenTofu >= 1.6.az login).azurerm_cognitive_account erfordert dies einmalig).Azure KI Search Basic ist die Hauptkostenposition mit 75 $/Monat. Wechseln Sie zum Free-Tarif (sku = "free"), wenn Sie kostensensitiv sind; das Lab demonstriert dennoch die Architektur.
Standard Azure-Einstieg. AI-102 erwartet, dass Sie eastus oder westus für die Verfügbarkeit der neuesten Azure OpenAI-Modelle verwenden – ältere Regionen erhalten die GPT-4-Familie nicht so schnell.
terraform {
required_version = ">= 1.5"
required_providers {
azurerm = { source = "hashicorp/azurerm", version = "~> 4.0" }
random = { source = "hashicorp/random", version = "~> 3.6" }
}
}
provider "azurerm" {
features {
key_vault {
purge_soft_delete_on_destroy = true
}
}
}
resource "random_id" "suffix" {
byte_length = 3
}
data "azurerm_client_config" "current" {}
locals {
tags = {
Project = "certlabpro-ai-102"
ManagedBy = "terraform"
}
}
resource "azurerm_resource_group" "main" {
name = "certlabpro-ai-102-rg"
location = "eastus"
tags = local.tags
}Azure OpenAI ist die GenAI-Produktionsengine für AI-102. Wir erstellen das Konto (kind = "OpenAI") und stellen gpt-4o-mini als Chat-Modell bereit – das zum Zeitpunkt des Schreibens günstigste Modell der GPT-4-Klasse und die empfohlene AI-102-Lab-Standardeinstellung. Die Bereitstellung ist die benannte Bindung einer spezifischen Modellversion an eine Kontingentzuweisung; Sie rufen sie über den Namen aus dem Anwendungscode auf.
Die model.version = "2024-07-18" ist das Veröffentlichungsdatum von gpt-4o-mini – AI-102 testet die Modellversionsstabilität als wiederkehrendes Anliegen (Sperren auf eine bestimmte Version vs. automatische Aktualisierung). Die Prüfung bevorzugt explizite Festlegung für Produktionszuverlässigkeit.
resource "azurerm_cognitive_account" "openai" {
name = "openai-ai102-${random_id.suffix.hex}"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
kind = "OpenAI"
sku_name = "S0"
custom_subdomain_name = "openai-ai102-${random_id.suffix.hex}"
identity {
type = "SystemAssigned"
}
tags = local.tags
}
resource "azurerm_cognitive_deployment" "chat" {
name = "gpt-4o-mini"
cognitive_account_id = azurerm_cognitive_account.openai.id
model {
format = "OpenAI"
name = "gpt-4o-mini"
version = "2024-07-18"
}
sku {
name = "Standard"
capacity = 10 # TPM in thousands; 10 = 10K tokens-per-minute quota
}
}Azure KI Search (das umbenannte Cognitive Search) ist die AI-102-Abruf-Engine für RAG-Muster. Wir stellen einen Dienst im Basic-Tarif bereit – dieser unterstützt systemzugewiesene verwaltete Identitäten, die erforderlich sind, damit AI Search Azure OpenAI sicher für die Funktion der integrierten Vektorisierung aufrufen kann (wobei AI Search während der Indizierung Embeddings-Modelle in Ihrem Namen aufruft).
Die Einstellung local_authentication_enabled = false ist die AI-102-Best-Practice-Antwort für die Produktion – erzwingen Sie die Entra ID-Authentifizierung, keine Admin-Schlüssel, die herumfliegen. Der systemzugewiesenen verwalteten Identität wird im nächsten Schritt Zugriff auf Azure OpenAI gewährt.
resource "azurerm_search_service" "main" {
name = "search-ai102-${random_id.suffix.hex}"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
sku = "basic"
replica_count = 1
partition_count = 1
local_authentication_enabled = false # Entra auth only
public_network_access_enabled = true
identity {
type = "SystemAssigned"
}
tags = local.tags
}
# Grant AI Search's managed identity Cognitive Services OpenAI User on the
// account — required for integrated vectorization (AI Search → OpenAI embeddings).
resource "azurerm_role_assignment" "search_to_openai" {
scope = azurerm_cognitive_account.openai.id
role_definition_name = "Cognitive Services OpenAI User"
principal_id = azurerm_search_service.main.identity[0].principal_id
}Quelldokumente für RAG befinden sich in Azure Storage. AI Search-Indexer ziehen Daten aus dem Blob-Container, durchlaufen das OpenAI Embeddings-Modell zur Vektorisierung und füllen den Suchindex. Das Gewähren der verwalteten Identität von AI Search als Storage Blob Data Reader für das Speicherkonto ist das AI-102-Passwort-freie Abrufmuster.
Mit Storage + AI Search + OpenAI, die alle über verwaltete Identität verbunden sind, ist das RAG-Substrat vorhanden. Die Anwendungsschicht (der Chat-Orchestrator, der Benutzeranfragen entgegennimmt, AI Search aufruft und dann OpenAI mit dem abgerufenen Kontext aufruft) ist der Code, den Sie schreiben – Terraform hilft hier nicht; es richtet die Infrastruktur korrekt ein.
resource "azurerm_storage_account" "docs" {
name = "ai102docs${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_storage_container" "source" {
name = "source"
storage_account_id = azurerm_storage_account.docs.id
container_access_type = "private"
}
resource "azurerm_role_assignment" "search_to_storage" {
scope = azurerm_storage_account.docs.id
role_definition_name = "Storage Blob Data Reader"
principal_id = azurerm_search_service.main.identity[0].principal_id
}AI-102 erwartet, dass Produktionsanwendungen Endpunkte und Schlüssel aus Key Vault lesen, nicht aus Umgebungsvariablen oder Konfigurationsdateien. Wir stellen einen Key Vault bereit und speichern den OpenAI-Endpunkt, den Bereitstellungsnamen und den AI Search-Endpunkt als Geheimnisse. In der Produktion hätte die verwaltete Identität der App beim Start Key Vault Secrets User auf diesem Tresor, um sie zu lesen.
Dies schließt den AI-102-Loop Implementieren und Integrieren: Jeder Endpunkt, jeder Schlüssel, jede Dienst-URL geht durch Key Vault – ein einziger Punkt für die Schlüsselrotation, ein einziger Punkt für die Überwachung. Jedes zusätzliche AI-102-Muster (Document Intelligence, Translator, Custom Vision, Speech) wird auf die gleiche Weise verbunden.
resource "azurerm_key_vault" "main" {
name = "kv-ai102-${random_id.suffix.hex}"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
tenant_id = data.azurerm_client_config.current.tenant_id
sku_name = "standard"
enable_rbac_authorization = true
soft_delete_retention_days = 7
tags = local.tags
}
resource "azurerm_role_assignment" "kv_admin_self" {
scope = azurerm_key_vault.main.id
role_definition_name = "Key Vault Administrator"
principal_id = data.azurerm_client_config.current.object_id
}
resource "azurerm_key_vault_secret" "openai_endpoint" {
name = "openai-endpoint"
value = azurerm_cognitive_account.openai.endpoint
key_vault_id = azurerm_key_vault.main.id
depends_on = [azurerm_role_assignment.kv_admin_self]
}
resource "azurerm_key_vault_secret" "openai_deployment" {
name = "openai-deployment"
value = azurerm_cognitive_deployment.chat.name
key_vault_id = azurerm_key_vault.main.id
depends_on = [azurerm_role_assignment.kv_admin_self]
}
resource "azurerm_key_vault_secret" "search_endpoint" {
name = "search-endpoint"
value = "https://${azurerm_search_service.main.name}.search.windows.net"
key_vault_id = azurerm_key_vault.main.id
depends_on = [azurerm_role_assignment.kv_admin_self]
}terraform destroy reißt alles ab. Hinweise:
purge_soft_delete_on_destroy = true in den Provider-Funktionen bewirkt, dass destroy tatsächlich gelöscht wird.AI-102 deckt weitere Dienste ab, die dieses Lab nicht umfassen kann – Azure AI Document Intelligence (Formularerkennung, benutzerdefinierte Extraktionsmodelle), Azure AI Vision (benutzerdefinierte Bildklassifizierung + Objekterkennung), Azure AI Language (CLU + benutzerdefinierte QnA), Azure AI Speech (benutzerdefinierte Spracherkennung, neuronale Stimmen, Sprachübersetzung), Azure AI Bot Service, Azure AI Content Safety und die gesamte Designoberfläche des Azure AI Studio Prompt-Flows.
Wir konzentrieren uns auf das Azure OpenAI + KI Search + Storage + Key Vault RAG-Substrat, da dies die am häufigsten getestete AI-102-Architektur ist und diejenige, auf der alle anderen AI-102-Muster aufbauen. Document Intelligence speist RAG. Vision extrahiert Inhalte aus Bildern, die in RAG eingebettet werden. Bot Service ist ein Frontend auf diesem Stack.
Für die oben genannten Oberflächen, sehen Sie die Bereiche Durchsuchen und Editorial dieser Zertifikatsseite.