Hızlı Başlangıç: ARM şablonu JSON dağıtımlarıyla ilgili sorunları giderme

Bu hızlı başlangıçta Azure Resource Manager şablonu (ARM şablonu) JSON dağıtım hatalarıyla ilgili sorunları giderme işlemi açıklanmaktadır. Hata içeren bir şablon ayarlayıp hataları düzeltmeyi öğreneceksiniz.

Azure Resource Manager şablonu, projenizin altyapısını ve yapılandırmasını tanımlayan bir JavaScript Nesne Gösterimi (JSON) dosyasıdır. Bu şablonda, bildirim temelli sözdizimi kullanılır. Dağıtımı oluşturmak için programlama komutlarının sırasını yazmadan hedeflenen dağıtımınızı açıklarsınız.

Bir dağıtımla ilgili üçi tür hata vardır:

  • Doğrulama hataları bir dağıtım başlamadan önce oluşur ve dosyanızdaki söz dizimi hatalarının neden olduğu durumlardır. Visual Studio Code gibi bir kod düzenleyicisi bu hataları tanımlayabilir.
  • Dağıtım komutu çalıştırıldığında ancak kaynaklar dağıtılmadığında denetim öncesi doğrulama hataları oluşur. Bu hatalar dağıtım başlatılmadan bulunur. Örneğin, bir parametre değeri yanlışsa, hata denetim öncesi doğrulamada bulunur.
  • Dağıtım hataları dağıtım işlemi sırasında oluşur ve yalnızca Azure ortamınızdaki dağıtımın ilerleme durumu değerlendirilerek bulunabilir.

Tüm hata türleri dağıtım sorunlarını gidermek için kullanabileceğiniz bir hata kodu döndürür. Doğrulama ve denetim öncesi hataları etkinlik günlüğünde gösterilir ancak dağıtım geçmişinizde görünmez.

Önkoşullar

Bu hızlı başlangıcı tamamlamak için aşağıdaki öğelere ihtiyacınız vardır:

Hatalarla şablon oluşturma

Aşağıdaki şablonu kopyalayın ve yerel olarak kaydedin. Doğrulama hatası, denetim öncesi hatası ve dağıtım hatası sorunlarını gidermek için bu dosyayı kullanacaksınız. Bu hızlı başlangıçta, dosya troubleshoot.json adlandırdığınız ancak herhangi bir ad kullanabileceğiniz varsayılır.

{
  "$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')]"
    }
  }
}

Doğrulama hatalarını düzeltme

Dosyayı Visual Studio Code'da açın. altındaki parameterss: dalgalı çizgi bir hatayı gösterir. Doğrulama hatasını görmek için, hatanın üzerine gelin.

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

Tanımlanmamış parametre başvurusu için ve resources hatalarının olduğunu variables fark edeceksiniz. Şablonun doğrulama hatalarını görüntülemek için Sorunları Görüntüle'yi>seçin.

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

Tüm hatalar bir öğe adının yanlış yazımı nedeniyle oluşur.

"parameterss": {

Hata iletisinde Şablon doğrulaması başarısız oldu: 'Template' türündeki nesnede 'parameterss' üyesi bulunamadı. Yol 'parametreler', satır 4, konum 16.

Parametreler için ARM şablonu söz dizimi doğru öğe adını gösterirparameters.

Doğrulama hatasını ve tanımlanmamış parametre başvuru hatalarını düzeltmek için, yazımı düzeltin ve dosyayı kaydedin.

"parameters": {

Denetim öncesi hata düzeltmesi

Denetim öncesi doğrulama hatası oluşturmak için parametresi için prefixName yanlış bir değer kullanacaksınız.

Bu hızlı başlangıçta kaynak grubu adı için troubleshootRG kullanılır, ancak herhangi bir adı kullanabilirsiniz.

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

Şablon denetim öncesi doğrulamada başarısız oluyor ve dağıtım çalıştırılmıyor. prefixName 11 karakterden fazladır ve özel karakterler ve büyük harfler içerir.

Depolama adları 3 ile 24 karakter arasında olmalı ve yalnızca küçük harf ve sayı kullanmalıdır. Ön ek değeri geçersiz bir depolama adı oluşturdu. Daha fazla bilgi için bkz. Depolama hesabı adı hatalarını düzeltme. Denetim öncesi hatasını düzeltmek için 11 karakter veya daha kısa bir ön ek kullanın ve yalnızca küçük harf veya sayı içerir.

Dağıtım çalışmadığından dağıtım geçmişi yoktur.

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

Etkinlik günlüğü denetim öncesi hatasını gösterir. Hatanın ayrıntılarını görmek için günlüğü seçin.

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

Dağıtım hatalarını düzeltme

Dağıtımı gibi storagegeçerli bir ön ek değeriyle çalıştırın.

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

Dağıtım başlar ve dağıtım geçmişinde görünür. Kaynak grubunda mevcut olmayan bir sanal ağa başvurduğunuz için outputs dağıtım başarısız olur. Ancak, depolama hesabı için hata olmadığından kaynak dağıtıldı. Dağıtım geçmişi başarısız bir dağıtımı gösterir.

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

Dağıtım hatasını düzeltmek için başvuru işlevini geçerli bir kaynak kullanacak şekilde değiştirin. Daha fazla bilgi için bkz . Kaynak bulunamadı hatalarını çözme. Bu hızlı başlangıç için, önce vnetResult gelen virgülünü ve tümünü vnetResultsilin. Dosyayı kaydedin ve dağıtımı yeniden çalıştırın.

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

Doğrulama, denetim öncesi ve dağıtım hataları düzeltildikten sonra aşağıdaki şablon bir depolama hesabı dağıtır. Dağıtım geçmişi ve etkinlik günlüğü başarılı bir dağıtım gösterir.

{
  "$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')]"
    }
  }
}

Kaynakları temizleme

Azure kaynaklarına artık gerek kalmadığında kaynak grubunu silin.

az group delete --name troubleshootRG

Kaynak grubunu portaldan silmek için şu adımları izleyin:

  1. Azure portalında, arama kutusuna Kaynak grupları yazın.
  2. Ada göre filtrele alanına kaynak grubu adını girin.
  3. Kaynak grubu adını seçin.
  4. Kaynak grubunu sil'i seçin.
  5. Silme işlemini onaylamak için kaynak grubu adını girin ve Sil’i seçin.

Sonraki adımlar

Bu hızlı başlangıçta ARM şablonu dağıtım hatalarını gidermeyi öğrendiniz.