Última revisão: maio de 2026
Construa os serviços da AWS do exame DP-100 com Terraform puro — um bloco de cada vez, cada um vinculado a um domínio do exame. O mesmo código funciona no OpenTofu.
Ao final deste laboratório, você terá provisionado, com Terraform simples, o plano de controle do espaço de trabalho do Azure Machine Learning — o próprio espaço de trabalho, as três dependências necessárias (Storage Account, Key Vault, Application Insights) e um cluster de computação do Azure ML escalado para zero-quando-ocioso para que o laboratório não gere custos desnecessários. Esta é a configuração de espaço de trabalho de referência do DP-100; trabalhos de treinamento e implantações de modelo se conectam a ele.
Cole os trechos em um único main.tf, execute terraform init, depois terraform apply passo a passo.
>= 1.5 ou OpenTofu >= 1.6.az login).Plano de controle ocioso custa perto de $0:
A armadilha de custo do DP-100 é deixar o min_node_count > 0 do cluster de computação — mesmo um nó ocioso custa mais de $200/mês. Definimos min_node_count = 0 e scale_down_nodes_after_idle_duration = PT15M (reduzir escala 15 minutos após ocioso). Verifique antes de executar. Destrua quando terminar.
Abertura padrão do Azure. Os espaços de trabalho do Azure ML são regionais — escolha uma região com ampla disponibilidade de SKU de GPU se você for além do laboratório (eastus, westus, westeurope são as escolhas seguras).
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-dp-100"
ManagedBy = "terraform"
}
}
resource "azurerm_resource_group" "main" {
name = "certlabpro-dp-100-rg"
location = "eastus"
tags = local.tags
}Os espaços de trabalho do Azure ML exigem três recursos pré-existentes para serem anexados: uma Storage Account (para conjuntos de dados, modelos, logs), um Key Vault (para credenciais) e uma instância do Application Insights (para telemetria de execução). O DP-100 testa este trio repetidamente — "por que não consigo criar o espaço de trabalho?" é quase sempre a falta de um desses.
A conta de armazenamento aqui obtém as configurações seguras padrão; o Key Vault usa autorização RBAC (o padrão moderno).
resource "azurerm_storage_account" "ml" {
name = "dp100ml${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_key_vault" "ml" {
name = "kv-dp100-${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_application_insights" "ml" {
name = "appi-dp100-${random_id.suffix.hex}"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
application_type = "web"
tags = local.tags
}O espaço de trabalho conecta as três dependências e recebe uma identidade gerenciada atribuída ao sistema que os destinos de computação, conjuntos de dados e endpoints downstream usarão para ler as dependências. O domínio Gerenciar recursos do Azure para ML do DP-100 testa esta forma exata — espaço de trabalho + identidade + atribuições de função.
Definimos public_network_access_enabled = true para manter o laboratório simples; espaços de trabalho de produção geralmente usam endpoints privados (o domínio Projetar e preparar uma solução de aprendizado de máquina do DP-100 testa variantes de private-link).
resource "azurerm_machine_learning_workspace" "main" {
name = "mlw-dp100-${random_id.suffix.hex}"
resource_group_name = azurerm_resource_group.main.name
location = azurerm_resource_group.main.location
application_insights_id = azurerm_application_insights.ml.id
key_vault_id = azurerm_key_vault.ml.id
storage_account_id = azurerm_storage_account.ml.id
public_network_access_enabled = true
identity {
type = "SystemAssigned"
}
tags = local.tags
}Trabalhos de treinamento precisam de computação. Clusters de computação do Azure ML são pools de VM gerenciados que escalam com base na profundidade da fila de trabalho. min_node_count = 0 é a configuração obrigatória de otimização de custo do DP-100 para espaços de trabalho de laboratório/desenvolvimento — quando nenhum trabalho está na fila, o cluster escala para zero nós e custa $0 (apenas metadados).
Standard_DS3_v2 (4 vCPU, 14 GB RAM, $0,30/hora) é o padrão típico do laboratório — grande o suficiente para executar trabalhos de treinamento sklearn ou pequenos trabalhos PyTorch, pequeno o suficiente para ser barato. Clusters de treinamento de produção usam SKUs de GPU (família Standard_NC6s_v3).
O scale_down_nodes_after_idle_duration = "PT15M" (duração ISO 8601 para 15 minutos) é a pergunta de custo recorrente do DP-100: definir isso por muito tempo deixa nós caros em execução; muito curto causa instabilidade. 15 minutos é o padrão documentado do Azure.
resource "azurerm_machine_learning_compute_cluster" "main" {
name = "cpu-cluster"
location = azurerm_resource_group.main.location
vm_priority = "Dedicated"
vm_size = "Standard_DS3_v2"
machine_learning_workspace_id = azurerm_machine_learning_workspace.main.id
scale_settings {
min_node_count = 0
max_node_count = 2
scale_down_nodes_after_idle_duration = "PT15M"
}
identity {
type = "SystemAssigned"
}
tags = local.tags
}terraform destroy derruba tudo. Notas importantes:
purge_soft_delete_on_destroy = true nos recursos do provedor faz com que a destruição do Key Vault realmente purgue. A exclusão suave do espaço de trabalho é configurável no portal, mas terraform destroy funciona de qualquer forma.O DP-100 abrange mais superfícies de ML no Azure que este laboratório não pode incluir — Compute Instances (VMs IDE de usuário único, muito caras quando ociosas), Online Endpoints (inferência gerenciada em tempo real), Batch Endpoints (inferência em lote gerenciada), trabalhos de AutoML, Designer (editor visual de pipeline), integração de rastreamento MLflow, ParallelRunStep, fluxos de trabalho de promoção de registro de modelo e todo o catálogo de ativos de dados/armazenamento de dados.
Nós nos concentramos no plano de controle do espaço de trabalho porque é o substrato ao qual cada padrão DP-100 se conecta. Endpoints se conectam ao espaço de trabalho. Trabalhos são executados no cluster de computação. Modelos são registrados no rastreamento MLflow do espaço de trabalho. Conjuntos de dados são armazenados na conta de armazenamento.
Para as superfícies acima, consulte as seções Navegar e Editorial desta página de certificação. Os domínios Treinar modelos de ML e Implantar e operacionalizar soluções de ML do DP-100 são melhor aprendidos executando trabalhos neste espaço de trabalho — o laboratório fornece o substrato; o SDK Python faz o treinamento e a implantação reais.