Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo descrive come decompilare i modelli di Azure Resource Manager (modelli di ARM) in file Bicep. Per eseguire i comandi di conversione, è necessario che sia installata l'interfaccia della riga di comando di Bicep.
Nota
Da Visual Studio Code è possibile creare direttamente dichiarazioni di risorse importando da risorse esistenti. Per ulteriori informazioni, vedere Comandi Bicep.
Visual Studio Code consente di incollare JSON come Bicep. Esegue automaticamente il decompile comando . Per ulteriori informazioni, vedi Paste JSON as Bicep.
La decompilazione di un modello di ARM consente di iniziare a sviluppare Bicep. Se si dispone di una libreria di modelli ARM e si vuole usare Bicep per lo sviluppo futuro, è possibile decompilarli in Bicep. Tuttavia, potresti dover rivedere il file Bicep per implementare le migliori pratiche.
Questo articolo illustra come eseguire i decompile comandi nell'interfaccia della riga di comando di Azure. Se non si usa l'interfaccia della riga di comando di Azure, eseguire il comando senza az all'avvio del comando. Ad esempio, az bicep decompile diventa bicep decompile.
Decompilare da JSON a Bicep
Per decompilare un modello ARM JSON in Bicep, usa:
az bicep decompile --file main.json
Questo comando crea un file denominato main.bicep nella stessa directory di main.json. Se main. bicep esiste nella stessa directory, usare l'opzione --force per sovrascrivere il file di Bicep esistente.
È anche possibile decompilare il codice JSON del modello ARM in Bicep da Visual Studio Code usando il Decompile into Bicep comando in Visual Studio Code. Per altre informazioni, vedere Decompile in Bicep.
Attenzione
La decompilazione tenta di convertire il file, ma non c'è una mappatura garantita dai template JSON ARM a Bicep. Potrebbe essere necessario correggere gli avvisi e gli errori nel file Bicep generato. Altrimenti, la decompilazione può fallire se non è possibile una conversione accurata. Creare un problema per segnalare eventuali problemi o conversioni imprecise.
I comandi di decompilazione e compilazione producono modelli equivalenti a livello funzionale. Tuttavia, potrebbero non essere esattamente uguali durante l'implementazione. Convertire un template da JSON a Bicep e poi di nuovo a JSON può produrre un template con una sintassi diversa da quella originale. Quando vengono distribuiti, i modelli convertiti producono gli stessi risultati.
Risolvere i problemi di conversione
Nota
Gli identificatori Bicep, inclusi i nomi dei parametri, possono contenere solo lettere, cifre e sottoline. I punti sono supportati nei nomi dei parametri JSON del template ARM ma non in Bicep. Se un template ARM utilizza punti nei nomi dei parametri, il decompilatore sostituisce i punti con caratteri di sottolineatura. Ad esempio, un parametro chiamato Security.Authentication.AAD.Tenant diventa Security_Authentication_AAD_Tenant. Rivedi i nomi dei parametri decompilati e aggiorna eventuali riferimenti nei tuoi template e file di parametri.
Si supponga di avere il modello ARM seguente:
{
"$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')]"
}
}
}
Quando si decompila, si ottiene:
@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
Il file decompilato funziona, ma contiene alcuni nomi che è possibile modificare. La variabile var storageAccountName_var ha una convenzione di denominazione insolita. È possibile modificarlo in:
var uniqueStorageName = 'store${uniqueString(resourceGroup().id)}'
Per rinominare il file, fare clic con il pulsante destro del mouse sul nome e quindi scegliere Rinomina simbolo. È anche possibile usare il tasto di scelta rapida F2.
La risorsa ha un nome simbolico che potrebbe essere necessario modificare. Anziché storageAccountName per il nome simbolico, usare exampleStorage.
resource exampleStorage 'Microsoft.Storage/storageAccounts@2025-06-01' = {
Il file 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
Esportare il modello e convertirlo
Nota
Puoi usare il portale Azure per esportare i file Bicep. Per maggiori informazioni, consulta Usa il portale Azure per esportare un file Bicep.
È possibile esportare il modello per un gruppo di risorse e quindi passarlo direttamente al decompile comando . Gli esempi seguenti illustrano come decompilare un modello esportato:
az group export --name "your_resource_group_name" > main.json
az bicep decompile --file main.json
Visualizzazione affiancata
Bicep Playground consente di visualizzare i modelli ARM equivalenti e i file Bicep uno accanto all’altro. È possibile selezionare Modello di esempio per visualizzare entrambe le versioni oppure selezionare Decompile per caricare il proprio modello arm e visualizzare il file Bicep equivalente.
Passaggi successivi
Per conoscere tutti i comandi Bicep CLI, consulta Bicep CLI commands.