DE Trilhas

M01 — Resource Group + Storage Account

Duração: 1h Pré-requisitos: M00 concluído (CLI logado, naming definido). Objetivo: criar o container lógico (Resource Group) e o Storage Account com Hierarchical Namespace habilitado — base para o ADLS Gen2 do M02.

Conceitos antes de clicar

Resource Group (RG)

  • “Pasta” lógica que agrupa recursos relacionados.
  • Regra de ouro: 1 RG por (projeto × ambiente). Ex.: rg-de-dev-brs, rg-de-prd-brs.
  • Vantagem: deletando o RG, você deleta tudo dentro. Isso vai salvar sua conta de faturamento várias vezes.

Storage Account

  • Conta de armazenamento “raiz” — dentro dela cabem Blob, File, Queue, Table e (com HNS ligado) Data Lake Gen2.
  • Nome é global no Azure inteiro (não só na sua sub). Tem que ser único.
  • 3-24 chars, só minúsculas e números, sem hífen.

Hierarchical Namespace (HNS)

  • Flag que transforma um Blob Storage comum em ADLS Gen2.
  • Habilita: pastas reais (não só prefixos), ACLs POSIX, melhor performance para analytics.
  • Só pode ser ligado na criação. Se esquecer, tem que recriar.

SKU / Replicação

SKUReplicaçãoQuando usar
Standard_LRS3 cópias no mesmo datacenterDev/lab (mais barato)
Standard_ZRS3 cópias em 3 zonasProd sem cross-region
Standard_GRSLRS + 3 cópias em outra regiãoProd com DR
Premium_LRSSSD, ZRS opcionalWorkloads de baixa latência

Para a trilha: Standard_LRS (centavos por GB).

Parte 1 — Via Azure CLI (rápido, reprodutível)

Abra PowerShell. Defina variáveis (substitua w pelas suas iniciais):

Terminal window
$PROJ = "de"
$INIC = "w"
$AMB = "dev"
$REG = "brazilsouth"
$REGS = "brs"
$RG = "rg-$PROJ-$AMB-$REGS"
$ST = "st$PROJ$INIC$AMB$REGS" # sem hífen, max 24 chars

Confirma:

Terminal window
Write-Output "RG = $RG"
Write-Output "ST = $ST"

Se $ST passar de 24 chars, encurta as iniciais.

Passo 1.1 — Criar o Resource Group

Terminal window
az group create `
--name $RG `
--location $REG `
--tags projeto=$PROJ ambiente=$AMB owner=$INIC trilha=azure-e2e

Validar:

Terminal window
az group show -n $RG --query "{name:name, loc:location, state:properties.provisioningState}" -o table

Esperado:

Name Loc State
--------------- ------------ ---------
rg-de-dev-brs brazilsouth Succeeded

Passo 1.2 — Criar Storage Account com Gen2 ligado

A flag chave é --hns true (Hierarchical Namespace):

Terminal window
az storage account create `
--name $ST `
--resource-group $RG `
--location $REG `
--sku Standard_LRS `
--kind StorageV2 `
--hns true `
--access-tier Hot `
--min-tls-version TLS1_2 `
--allow-blob-public-access false `
--tags projeto=$PROJ ambiente=$AMB trilha=azure-e2e

Se der erro is already taken: o nome global colidiu. Acrescente data (stdewdevbrs20260516) ou suas iniciais expandidas.

Validar:

Terminal window
az storage account show -n $ST -g $RG --query "{name:name, hns:isHnsEnabled, kind:kind, sku:sku.name}" -o table

Esperado:

Name Hns Kind Sku
------------- ----- ---------- -------------
stdewdevbrs True StorageV2 Standard_LRS

Passo 1.3 — Pegar a chave (vai usar nos próximos módulos)

Terminal window
$STKEY = az storage account keys list -g $RG -n $ST --query "[0].value" -o tsv
Write-Output "Chave salva em `$STKEY (mantém só na sessão, não cola em arquivo)"

Importante: a chave dá acesso total ao storage. Nunca commite em Git, nunca cole em chat. No M03 vamos guardar em Key Vault.

Parte 2 — Verificação no portal (didática)

Só para você ver onde fica visualmente:

  1. Acesse https://portal.azure.com.
  2. Topo da tela → digite rg-de-dev-brs → abre o Resource Group.
  3. Você vê 1 recurso dentro: o Storage Account.
  4. Clique no Storage → menu esquerdo → Containers: ainda vazio. No próximo módulo (M02) vamos criar bronze/silver/gold aqui.
  5. Menu esquerdo → Configuration → procure “Hierarchical namespace”: deve estar Enabled.

Parte 3 — Custo & boas práticas

Quanto custa este módulo

  • Storage vazio: USD ~0,02/dia (essencialmente zero).
  • O custo aparece quando você grava dados (M02 em diante) e quando faz transações.

Tag everything

Note que usei --tags em ambos os comandos. Sempre marque seus recursos. Em empresas reais, billing e governança dependem de tags.

Locks (opcional, mas vale conhecer)

Para evitar deletar produção sem querer:

Terminal window
# NÃO faça isto agora, é só pra você saber que existe:
# az lock create --name no-delete --lock-type CanNotDelete --resource-group $RG

Pegadinhas

  1. Esqueci --hns true: cria como Blob comum, NÃO é ADLS Gen2. Solução: deletar e recriar. Verifique sempre isHnsEnabled: True após criação.
  2. --allow-blob-public-access true (default em contas antigas): qualquer um da internet pode acessar. Sempre false em dev/prd.
  3. --min-tls-version TLS1_0 (default em SKU velho): obsoleto. Use TLS1_2.
  4. Região errada: criei em eastus por engano. Latência para Brasil aumenta. Use sempre brazilsouth ou brazilsoutheast (Rio).
  5. Storage account “já existe”: você criou ontem e esqueceu. Liste com az storage account list -g $RG -o table.

Equivalente em Bicep (opcional — para o M07 vai ficar útil)

Se quiser já se acostumar com IaC, crie storage.bicep:

param location string = 'brazilsouth'
param storageName string
param tags object = {
projeto: 'de'
ambiente: 'dev'
trilha: 'azure-e2e'
}
resource sa 'Microsoft.Storage/storageAccounts@2023-05-01' = {
name: storageName
location: location
sku: { name: 'Standard_LRS' }
kind: 'StorageV2'
tags: tags
properties: {
isHnsEnabled: true
accessTier: 'Hot'
minimumTlsVersion: 'TLS1_2'
allowBlobPublicAccess: false
}
}

Deploy:

Terminal window
az deployment group create -g $RG --template-file storage.bicep --parameters storageName=$ST

Não obrigatório agora. Mas no M07 a gente formaliza.

Checklist de saída

  • az group show -n rg-de-dev-brs retorna Succeeded.
  • Storage Account criado com isHnsEnabled: True.
  • No portal, o storage aparece dentro do RG correto.
  • Você salvou (mentalmente ou em local seguro) o nome exato do storage — vai usar muito no M02/M03.
  • Não commitou a chave ($STKEY) em lugar nenhum.

Próximo

M02 — ADLS Gen2 + arquitetura Medallion

← Anterior
M00 Setup Conta Azure
Próximo →
M02 Adls Gen2 Medallion