Como criar um Storage Account no Azure com Bicep
Um Storage Account é a base de quase tudo o que se faz com dados na Azure: guardar ficheiros, blobs, tabelas e filas. Criar um Storage Account no Azure com Bicep permite descrever essa infraestrutura como código, guardá-la no Git e recriá-la sempre igual em qualquer ambiente, sem cliques manuais no portal. Este guia mostra como fazer isso, passo a passo, com o Azure CLI.
Pré-requisitos
- Uma subscrição Azure ativa e permissões para criar recursos.
- O Azure CLI instalado — o Bicep já vem incluído.
- Um editor de texto; o VS Code com a extensão Bicep ajuda com sugestões e validação.
- O nome de um resource group onde vais criar o Storage Account.
Passo 1: Confirmar que o Bicep está disponível
Antes de escrever código, confirma que o Azure CLI e o Bicep estão prontos. Abre um terminal e corre estes dois comandos:
az version
az bicep version
Se o segundo devolver um número de versão, está tudo pronto. Caso contrário, instala o Bicep com az bicep install e volta a tentar.
Passo 2: Criar o ficheiro Bicep
Cria um ficheiro chamado storage.bicep. Começa pelos parâmetros — os valores que podes mudar sem tocar no resto do template, o que torna o ficheiro reutilizável:
@description('Nome único do Storage Account (3-24 caracteres, só minúsculas e números)')
param storageAccountName string
@description('Localização dos recursos')
param location string = resourceGroup().location
@allowed([
'Standard_LRS'
'Standard_GRS'
'Standard_ZRS'
])
param sku string = 'Standard_LRS'
O parâmetro location usa por omissão a localização do resource group, e sku só aceita os valores da lista, evitando erros de escrita.
O nome do Storage Account tem de ser único em toda a Azure e não pode conter maiúsculas nem símbolos. Um prefixo curto (ex.: st) mais o nome do projeto costuma resultar bem.
Passo 3: Definir o recurso Storage Account
Agora acrescenta o recurso ao mesmo ficheiro. A palavra storage logo a seguir a resource é apenas um nome simbólico para te referires ao recurso dentro do Bicep:
resource storage 'Microsoft.Storage/storageAccounts@2023-01-01' = {
name: storageAccountName
location: location
sku: {
name: sku
}
kind: 'StorageV2'
properties: {
minimumTlsVersion: 'TLS1_2'
allowBlobPublicAccess: false
supportsHttpsTrafficOnly: true
}
}
output primaryBlobEndpoint string = storage.properties.primaryEndpoints.blob
Escolhemos kind igual a StorageV2, o tipo mais comum, e reforçámos a segurança: TLS 1.2 no mínimo, sem acesso público a blobs e só tráfego HTTPS. O output no fim devolve o endereço do serviço de blobs assim que o deploy terminar.
Passo 4: Pré-visualizar com what-if
Antes de criar seja o que for, vê o que vai acontecer. O modo what-if compara o template com o que já existe na Azure e mostra-te as diferenças:
az deployment group what-if --resource-group rg-tutorial --template-file storage.bicep --parameters storageAccountName=stbconceptsdemo01
Deves ver uma linha com o sinal + a indicar que um recurso novo vai ser criado. Se aparecer um erro de nome já em uso, escolhe outro nome mais único.
Passo 5: Fazer o deploy
Se a pré-visualização estiver como esperavas, executa o deploy real com o mesmo comando, trocando apenas what-if por create:
az deployment group create --resource-group rg-tutorial --template-file storage.bicep --parameters storageAccountName=stbconceptsdemo01
Ao fim de alguns segundos o comando termina e mostra os outputs definidos, incluindo o primaryBlobEndpoint.
Verificar o resultado
Para confirmar que o Storage Account ficou mesmo ativo, pergunta o estado do aprovisionamento:
az storage account show --name stbconceptsdemo01 --resource-group rg-tutorial --query "provisioningState" -o tsv
Se a resposta for Succeeded, o recurso está criado. Também o podes ver no portal da Azure, dentro do resource group que indicaste.
Conclusão
Com poucas linhas de Bicep criaste um Storage Account seguro e repetível, pronto a guardar no Git e a reutilizar noutros ambientes. O próximo passo natural é transformar este template num módulo e chamá-lo a partir de outros ficheiros, ou acrescentar um contentor de blobs no mesmo deploy. Que outro recurso gostarias de descrever como código a seguir?