Szybki start: rozwiązywanie problemów z wdrożeniami JSON szablonu usługi ARM

W tym przewodniku Szybki start opisano, jak rozwiązywać problemy z błędami wdrażania JSON szablonu usługi Azure Resource Manager (szablon usługi ARM). Skonfigurujesz szablon z błędami i dowiesz się, jak naprawić błędy.

Szablon usługi Azure Resource Manager to plik JavaScript Object Notation (JSON), który definiuje infrastrukturę i konfigurację projektu. W szablonie używana jest składnia deklaratywna. Możesz opisać zamierzone wdrożenie bez konieczności pisania sekwencji poleceń programowania w celu utworzenia wdrożenia.

Istnieją trzy rodzaje błędów związanych z wdrażaniem:

  • Błędy walidacji występują przed rozpoczęciem wdrażania i są spowodowane błędami składni w pliku. Edytor kodu, taki jak Visual Studio Code, może identyfikować te błędy.
  • Błędy weryfikacji wstępnej występują, gdy polecenie wdrożenia jest uruchamiane, ale zasoby nie są wdrażane. Te błędy można znaleźć bez uruchamiania wdrożenia. Jeśli na przykład wartość parametru jest niepoprawna, zostanie znaleziony błąd podczas weryfikacji wstępnej.
  • Błędy wdrażania występują podczas procesu wdrażania i można je znaleźć tylko przez ocenę postępu wdrożenia w środowisku platformy Azure.

Wszystkie rodzaje błędów zwracają kod błędu, którego należy użyć do rozwiązania problemów z wdrożeniem. Błędy weryfikacji i weryfikacji wstępnej są wyświetlane w dzienniku aktywności, ale nie pojawiają się w historii wdrażania.

Wymagania wstępne

Do ukończenia tego przewodnika Szybki start potrzebne są następujące elementy:

Tworzenie szablonu z błędami

Skopiuj poniższy szablon i zapisz go lokalnie. Ten plik służy do rozwiązywania problemów z błędem walidacji, błędem wstępnym i błędem wdrożenia. W tym przewodniku Szybki start założono, że nazwa pliku została nazwana troubleshoot.json , ale możesz użyć dowolnej nazwy.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameterss": {
    "storageAccountType": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Standard_LRS",
        "Standard_GRS",
        "Standard_ZRS",
        "Premium_LRS"
      ]
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    },
    "prefixName": {
      "type": "string"
    }
  },
  "variables": {
    "storageAccountName": "[concat(parameters('prefixName'), uniquestring(resourceGroup().id))]"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-04-01",
      "name": "[variables('storageAccountName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('storageAccountType')]"
      },
      "kind": "StorageV2",
      "properties": {}
    }
  ],
  "outputs": {
    "storageAccountName": {
      "type": "string",
      "value": "[variables('storageAccountName')]"
    },
    "vnetResult": {
      "type": "object",
      "value": "[reference(resourceId('Microsoft.Network/virtualNetworks', 'doesnotexist'), '2021-03-01', 'Full')]"
    }
  }
}

Naprawianie błędu sprawdzania poprawności

Otwórz plik w programie Visual Studio Code. Falisty wiersz poniżej parameterss: wskazuje błąd. Aby wyświetlić błąd weryfikacji, umieść wskaźnik myszy na błędzie.

Screenshot of Visual Studio Code highlighting a template validation error with a red wavy line under the misspelled 'parameterss:' in the code.

Zauważysz, że variables błędy resources dotyczące niezdefiniowanego odwołania do parametrów. Aby wyświetlić błędy walidacji szablonu, wybierz pozycję Wyświetl>problemy.

Screenshot of Visual Studio Code showing the Problems tab listing undefined parameter reference errors for 'variables' and 'resources' sections.

Wszystkie błędy są spowodowane nieprawidłową pisownią nazwy elementu.

"parameterss": {

Komunikat o błędzie stwierdza , że weryfikacja szablonu nie powiodła się: nie można odnaleźć elementu członkowskiego "parameterss" dla obiektu typu "Template". Ścieżka "parameterss", wiersz 4, pozycja 16.

Składnia szablonu usługi ARM dla parametrów pokazuje, że parameters jest to poprawna nazwa elementu.

Aby naprawić błąd weryfikacji i błędy odwołania do niezdefiniowanych parametrów, popraw pisownię i zapisz plik.

"parameters": {

Naprawianie błędu wstępnego

Aby utworzyć błąd weryfikacji wstępnej, użyjesz nieprawidłowej wartości dla parametru prefixName .

W tym przewodniku Szybki start użyto funkcji troubleshootRG dla nazwy grupy zasobów, ale możesz użyć dowolnej nazwy.

az group create --name troubleshootRG --location westus
az deployment group create \
  --resource-group troubleshootRG \
  --template-file troubleshoot.json \
  --parameters prefixName=long!!StoragePrefix

Walidacja wstępna szablonu kończy się niepowodzeniem i wdrożenie nie jest uruchamiane. Zawiera prefixName więcej niż 11 znaków i zawiera znaki specjalne i wielkie litery.

Nazwy magazynu muszą zawierać od 3 do 24 znaków i używać tylko małych liter i cyfr. Wartość prefiksu utworzyła nieprawidłową nazwę magazynu. Aby uzyskać więcej informacji, zobacz Naprawianie błędów dotyczących nazw kont magazynu. Aby naprawić błąd wstępny, użyj prefiksu zawierającego co najmniej 11 znaków i zawiera tylko małe litery lub cyfry.

Ponieważ wdrożenie nie zostało uruchomione, nie ma historii wdrożenia.

Screenshot of Azure resource group overview page displaying an empty deployment history section due to a preflight error.

W dzienniku aktywności jest wyświetlany błąd wstępny. Wybierz dziennik, aby wyświetlić szczegóły błędu.

Screenshot of Azure resource group activity log showing a preflight error entry with a red exclamation mark icon.

Naprawianie błędu wdrażania

Uruchom wdrożenie z prawidłową wartością prefiksu, na przykład storage.

az group create --name troubleshootRG --location westus
az deployment group create \
  --resource-group troubleshootRG \
  --template-file troubleshoot.json \
  --parameters prefixName=storage

Wdrożenie rozpoczyna się i jest widoczne w historii wdrażania. Wdrożenie kończy się niepowodzeniem, ponieważ outputs odwołuje się do sieci wirtualnej, która nie istnieje w grupie zasobów. Nie wystąpiły jednak żadne błędy dla konta magazynu, więc zasób został wdrożony. Historia wdrażania pokazuje nieudane wdrożenie.

Screenshot of Azure resource group overview page showing a failed deployment with a red exclamation mark icon in the deployment history section.

Aby naprawić błąd wdrożenia, zmień funkcję referencyjną, aby użyć prawidłowego zasobu. Aby uzyskać więcej informacji, zobacz Rozwiązywanie problemów z błędami nie odnalezionych zasobów. W tym przewodniku Szybki start usuń przecinek poprzedzający vnetResult i wszystkie .vnetResult Zapisz plik i uruchom ponownie wdrożenie.

"vnetResult": {
  "type": "object",
  "value": "[reference(resourceId('Microsoft.Network/virtualNetworks', 'doesnotexist'), '2021-03-01', 'Full')]"
}

Po naprawieniu błędów walidacji wstępne i wdrożenia poniższy szablon wdraża konto magazynu. Historia wdrożenia i dziennik aktywności pokazują pomyślne wdrożenie.

{
  "$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"
      ]
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]"
    },
    "prefixName": {
      "type": "string"
    }
  },
  "variables": {
    "storageAccountName": "[concat(parameters('prefixName'), uniquestring(resourceGroup().id))]"
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-04-01",
      "name": "[variables('storageAccountName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('storageAccountType')]"
      },
      "kind": "StorageV2",
      "properties": {}
    }
  ],
  "outputs": {
    "storageAccountName": {
      "type": "string",
      "value": "[variables('storageAccountName')]"
    }
  }
}

Czyszczenie zasobów

Gdy zasoby platformy Azure nie są już potrzebne, usuń grupę zasobów.

az group delete --name troubleshootRG

Aby usunąć grupę zasobów z portalu, wykonaj następujące kroki:

  1. W witrynie Azure Portal wprowadź ciąg Grupy zasobów w polu wyszukiwania.
  2. W polu Filtruj według nazwy wprowadź nazwę grupy zasobów.
  3. Wybierz nazwę grupy zasobów.
  4. Wybierz pozycję Usuń grupę zasobów.
  5. Aby potwierdzić usunięcie, wprowadź nazwę grupy zasobów, a następnie wybierz pozycję Usuń.

Następne kroki

W tym przewodniku Szybki start przedstawiono sposób rozwiązywania problemów z błędami wdrażania szablonu usługi ARM.