Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule opisano sposób dekompilowania szablonów usługi Azure Resource Manager (szablonów ARM) do plików Bicep. Aby uruchomić polecenia konwersji, musisz mieć zainstalowany interfejs wiersza polecenia Bicep.
Uwaga
W programie Visual Studio Code można bezpośrednio tworzyć deklaracje zasobów, importując je z istniejących zasobów. Aby uzyskać więcej informacji, zobacz polecenia programu Bicep.
Program Visual Studio Code umożliwia wklejanie kodu JSON jako Bicep. Spowoduje to automatyczne uruchomienie decompile polecenia. Aby uzyskać więcej informacji, zobacz Wklej kod JSON jako Bicep.
Dekompilowanie szablonu ARM ułatwia rozpoczęcie programowania w Bicep. Jeśli masz bibliotekę szablonów ARM i chcesz używać Bicep do przyszłego rozwoju, możesz je dekompilować do Bicep. Jednak może być konieczne zrewidowanie pliku Bicep, aby wdrożyć najlepsze praktyki.
W tym artykule pokazano, jak uruchomić decompile polecenie w interfejsie wiersza polecenia platformy Azure. Jeśli nie używasz interfejsu wiersza polecenia platformy Azure, uruchom polecenie bez az na początku polecenia. Na przykład, az bicep decompile staje się bicep decompile.
Dekompilacja z JSON do Bicep
Aby dekompilować szablon JSON ARM do Bicep, użyj:
az bicep decompile --file main.json
To polecenie tworzy plik o nazwie main.bicep w tym samym katalogu co main.json. Jeśli main. bicep istnieje w tym samym katalogu, użyj przełącznika --force, aby zastąpić istniejący plik Bicep.
Możesz również dekompilować kod JSON szablonu ARM do Bicep z poziomu programu Visual Studio Code, używając polecenia Decompile into Bicep. Aby uzyskać więcej informacji, zobacz Decompile into Bicep.
Uwaga
Podczas dekompilacji podejmowana jest próba przekształcenia pliku, ale nie ma gwarancji jednoznacznego odwzorowania szablonów ARM w formacie JSON na język Bicep. Może być konieczne naprawienie ostrzeżeń i błędów w wygenerowanych plikach Bicep. W przeciwnym razie dekompilacja może zakończyć się niepowodzeniem, jeśli dokładna konwersja nie jest możliwa. Utwórz problem , aby zgłosić wszelkie problemy lub niedokładne konwersje.
Polecenia dekompiluj i buduj tworzą szablony, które są funkcjonalnie równoważne. Jednak mogą one nie być dokładnie takie same podczas implementacji. Konwertowanie szablonu z formatu JSON na Bicep, a następnie powrót do formatu JSON może utworzyć szablon z inną składnią niż oryginalny szablon. Po wdrożeniu przekonwertowane szablony generują te same wyniki.
Rozwiązywanie problemów z konwersją
Uwaga
Identyfikatory w języku Bicep, w tym nazwy parametrów, mogą zawierać jedynie litery, cyfry i znaki podkreślenia. Okresy są obsługiwane w szablonach ARM JSON w nazwach parametrów, ale nie w Bicep. Jeśli szablon ARM używa kropek w nazwach parametrów, dekompilator zastępuje te kropki podkreśleniami. Na przykład parametr o nazwie Security.Authentication.AAD.Tenant staje się .Security_Authentication_AAD_Tenant Przejrzyj zdekompilowane nazwy parametrów i zaktualizuj wszelkie odniesienia w szablonach i plikach parametrów.
Załóżmy, że masz następujący szablon 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')]"
}
}
}
Kiedy go dekompilujesz, uzyskasz:
@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
Dekompilowany plik działa, ale ma kilka nazw, które można zmienić. Zmienna var storageAccountName_var ma nietypową konwencję nazewnictwa. Można go zmienić na:
var uniqueStorageName = 'store${uniqueString(resourceGroup().id)}'
Aby zmienić nazwę pliku, kliknij prawym przyciskiem myszy nazwę, a następnie wybierz polecenie Zmień nazwę symbolu. Możesz również użyć klawisza F2.
Zasób ma symboliczną nazwę, którą możesz zmienić.
storageAccountName Zamiast nazwy symbolicznej użyj .exampleStorage
resource exampleStorage 'Microsoft.Storage/storageAccounts@2025-06-01' = {
Kompletny plik to:
@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
Eksportowanie szablonu i konwertowanie
Uwaga
Aby wyeksportować pliki Bicep, możesz użyć witryny Azure Portal. Aby uzyskać więcej informacji, zobacz Eksportowanie pliku Bicep przy użyciu witryny Azure Portal.
Szablon dla grupy zasobów można wyeksportować, a następnie bezpośrednio przekazać do polecenia decompile. W poniższych przykładach pokazano, jak dekompilować wyeksportowany szablon:
az group export --name "your_resource_group_name" > main.json
az bicep decompile --file main.json
Widok obok siebie
Bicep Playground umożliwia wyświetlanie równoważnych szablonów ARM i plików Bicep obok siebie. Możesz wybrać pozycję Przykładowy szablon, aby wyświetlić obie wersje, lub wybrać pozycję Dekompiluj, aby przekazać własny szablon ARM i wyświetlić równoważny plik Bicep.
Następne kroki
Aby dowiedzieć się więcej o wszystkich komendach Bicep CLI, zobacz polecenia Bicep CLI.