Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo descreve como descompilar modelos do Azure Resource Manager (modelos ARM) para arquivos Bicep. Você deve ter a CLI do Bicep instalada para executar os comandos de conversão.
Observação
No Visual Studio Code, você pode criar declarações de recurso importando de recursos existentes. Para saber mais, confira Comandos do Bicep.
O Visual Studio Code permite colar um JSON como Bicep. Ele executa automaticamente o comando decompile. Para saber mais, confira Colar um JSON como Bicep.
A descompilação de um modelo do ARM ajuda você a começar a usar o desenvolvimento no Bicep. Se você tiver uma biblioteca de modelos do ARM e quiser usar o Bicep para desenvolvimento futuro, descompile-os para Bicep. No entanto, talvez seja necessário revisar o arquivo Bicep para implementar as melhores práticas.
Este artigo mostra como executar o comando decompile na CLI do Azure. Se não estiver usando a CLI do Azure, execute o comando sem az no início. Por exemplo, az bicep decompile torna-se bicep decompile.
Descompilação de JSON para Bicep
Para descompilar um modelo JSON do ARM para Bicep, use:
az bicep decompile --file main.json
Esse comando cria um arquivo chamado main.bicep no mesmo diretório que main.json. Se main. bicep existe no mesmo diretório, use a opção --force para substituir o arquivo de Bicep existente.
Você também pode descompilar JSON do modelo ARM para Bicep no Visual Studio Code usando o comando Decompile into Bicep. Para obter mais informações, confira Descompilar no Bicep.
Cuidado
A descompilação tenta converter o arquivo, mas não há uma correspondência garantida entre os modelos ARM em JSON e o Bicep. Talvez seja necessário corrigir avisos e erros no arquivo Bicep gerado. Caso contrário, a descompilação pode falhar se uma conversão precisa não for possível. Crie um problema para relatar problemas ou conversões imprecisas.
Os comandos de descompilação e build produzem modelos que são funcionalmente equivalentes. No entanto, eles podem não ser exatamente iguais durante a implementação. Converter um template de JSON para Bicep e depois de volta para JSON pode produzir um template com sintaxe diferente do modelo original. Quando implantado, os modelos convertidos produzem os mesmos resultados.
Corrigir problemas de conversão
Observação
Identificadores Bicep, incluindo nomes de parâmetros, só podem conter letras, dígitos e sublinhados. Pontos são suportados em nomes de parâmetros JSON de modelos ARM, mas não no Bicep. Se um template ARM usa pontos nos nomes dos parâmetros, o descompilador substitui os pontos por sublinhados. Por exemplo, um parâmetro chamado Security.Authentication.AAD.Tenant torna-se Security_Authentication_AAD_Tenant. Revise os nomes dos parâmetros descompilados e atualize quaisquer referências nos seus templates e arquivos de parâmetros.
Suponha que você tenha o seguinte modelo do ARM:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountType": {
"type": "string",
"defaultValue": "Standard_LRS",
"allowedValues": [
"Standard_LRS",
"Standard_GRS",
"Standard_ZRS",
"Premium_LRS"
],
"metadata": {
"description": "Storage Account type"
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Location for all resources."
}
}
},
"variables": {
"storageAccountName": "[concat('store', uniquestring(resourceGroup().id))]"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2025-06-01",
"name": "[variables('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "[parameters('storageAccountType')]"
},
"kind": "StorageV2",
"properties": {}
}
],
"outputs": {
"storageAccountName": {
"type": "string",
"value": "[variables('storageAccountName')]"
}
}
}
Ao descompilá-lo, você obtém:
@allowed([
'Standard_LRS'
'Standard_GRS'
'Standard_ZRS'
'Premium_LRS'
])
@description('Storage Account type')
param storageAccountType string = 'Standard_LRS'
@description('Location for all resources.')
param location string = resourceGroup().location
var storageAccountName = 'store${uniqueString(resourceGroup().id)}'
resource storageAccount 'Microsoft.Storage/storageAccounts@2025-06-01' = {
name: storageAccountName
location: location
sku: {
name: storageAccountType
}
kind: 'StorageV2'
properties: {}
}
output storageAccountName string = storageAccountName
O arquivo descompilado funciona, mas tem alguns nomes que talvez você queira alterar. A variável var storageAccountName_var tem uma convenção de nomenclatura incomum. Você pode alterá-lo para:
var uniqueStorageName = 'store${uniqueString(resourceGroup().id)}'
Para renomear o arquivo, clique com o botão direito do mouse no nome e selecione Renomear símbolo. Você também pode usar a tecla de atalho F2.
O recurso tem um nome simbólico que talvez você queira alterar. Em vez de storageAccountName para o nome simbólico, use exampleStorage.
resource exampleStorage 'Microsoft.Storage/storageAccounts@2025-06-01' = {
O arquivo completo é:
@allowed([
'Standard_LRS'
'Standard_GRS'
'Standard_ZRS'
'Premium_LRS'
])
@description('Storage Account type')
param storageAccountType string = 'Standard_LRS'
@description('Location for all resources.')
param location string = resourceGroup().location
var uniqueStorageName = 'store${uniqueString(resourceGroup().id)}'
resource exampleStorage 'Microsoft.Storage/storageAccounts@2025-06-01' = {
name: uniqueStorageName
location: location
sku: {
name: storageAccountType
}
kind: 'StorageV2'
properties: {}
}
output storageAccountName string = uniqueStorageName
Exportar modelo e converter
Observação
Você pode usar o portal do Azure para exportar arquivos do Bicep. Para mais informações, consulte Como usar o portal do Azure para exportar um arquivo Bicep.
Você pode exportar o modelo de um grupo de recursos e passá-lo diretamente para o comando decompile. Os exemplos a seguir mostram como descompilar um modelo exportado:
az group export --name "your_resource_group_name" > main.json
az bicep decompile --file main.json
Visão lado a lado
Bicep Playground permite visualizar lado a lado os modelos ARM e os arquivos Bicep equivalentes. Você pode selecionar o Modelo de Exemplo para ver ambas as versões ou selecionar Descompilar para carregar seu próprio modelo do ARM e exibir o arquivo Bicep equivalente.
Próximas etapas
Para saber sobre todos os comandos CLI do Bicep, veja comandos CLI do Bicep.