共用方式為


教學課程:將參數新增至 ARM 範本

上一個教學課程中,您已瞭解如何將 Azure 儲存體帳戶 新增至範本並部署它。 在本教學課程中,您將瞭解如何藉由新增參數來改善 Azure Resource Manager 範本 (ARM 範本)。 此指示需要 14 分鐘 才能完成。

先決條件

建議您完成 有關資源的教學課程,但這不是必要條件。

您必須有 Visual Studio Code,以及 Azure PowerShell 或 Azure CLI。 如需詳細資訊,請參閱 範本工具

審查模板

在上一個教學課程的結尾,您的範本具有下列 JSON 檔案:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2025-06-01",
      "name": "{provide-unique-name}",
      "location": "eastus",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    }
  ]
}

您可能會注意到此模板有問題。 儲存體帳戶名稱是硬式編碼的。 您每次都只能使用此範本來部署相同的儲存體帳戶。 若要部署具有不同名稱的儲存體帳戶,您必須建立新的範本,這顯然不是自動化部署的實用方式。

使模板可重複使用

若要讓您的範本可重複使用,讓我們新增可用來傳入儲存體帳戶名稱的參數。 下列範例中的 JSON 檔案顯示範本中的變更。 參數 storageName 會識別為字串。 儲存體帳戶名稱都是小寫字母或數字,且限制為 24 個字元。

將整個檔案複製,並以其內容替換您的範本:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storageName": {
      "type": "string",
      "minLength": 3,
      "maxLength": 24
    }
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2025-06-01",
      "name": "[parameters('storageName')]",
      "location": "eastus",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    }
  ]
}

部署範本

讓我們部署範本。 下列範例會使用 Azure CLI 或 Azure PowerShell 來部署範本。 請注意,您會提供儲存體帳戶名稱作為部署命令中的其中一個值。 針對儲存體帳戶名稱,請提供您在上一個教學課程中使用的相同名稱。

如果您尚未建立資源群組,請參閱 建立資源群組。 此範例假設您將變數設定 templateFile 為範本檔案的路徑,如 第一個教學課程所示。

New-AzResourceGroupDeployment `
  -Name addnameparameter `
  -ResourceGroupName myResourceGroup `
  -TemplateFile $templateFile `
  -storageName "{your-unique-name}"

瞭解資源更新

部署具有先前使用相同名稱的儲存體帳戶之後,您可能想知道重新部署如何影響資源。

如果資源已存在,且屬性沒有變更,則不需要採取進一步動作。 如果資源存在且屬性變更,則會更新。 如果它不存在,即會加以建立。

這種處理更新的方式表示您的範本可以包含 Azure 解決方案所需的所有資源。 您可以安全地重新部署範本,並知道資源會變更或僅在需要時建立。 例如,如果您將檔案新增至儲存體帳戶,您可以重新部署儲存體帳戶,而不會遺失檔案。

依環境自訂

參數可讓您提供針對特定環境量身打造的值,以自訂部署。 例如,您可以根據部署至開發、測試或生產環境來傳遞不同的值。

先前的範本一律會部署標準本機備援儲存體 (LRS) Standard_LRS 帳戶。 您可能希望根據環境靈活地部署不同的庫存單位 (SKU)。 下列範例顯示新增 SKU 參數的變更。 複製整個檔案,並將其貼到範本上:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storageName": {
      "type": "string",
      "minLength": 3,
      "maxLength": 24
    },
    "storageSKU": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Standard_LRS",
        "Standard_GRS",
        "Standard_RAGRS",
        "Standard_ZRS",
        "Premium_LRS",
        "Premium_ZRS",
        "Standard_GZRS",
        "Standard_RAGZRS"
      ]
    }
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2025-06-01",
      "name": "[parameters('storageName')]",
      "location": "eastus",
      "sku": {
        "name": "[parameters('storageSKU')]"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    }
  ]
}

參數 storageSKU 具有預設值。 當部署未指定此值時,請使用此值。 它還有一個允許值的列表。 這些值符合建立儲存體帳戶所需的值。 您希望範本使用者傳遞有效的SKU。

重新部署範本

您已準備好再次部署。 由於預設 SKU 設定為 Standard_LRS,因此您已提供參數值。

New-AzResourceGroupDeployment `
  -Name addskuparameter `
  -ResourceGroupName myResourceGroup `
  -TemplateFile $templateFile `
  -storageName "{your-unique-name}"

備註

如果部署失敗,請使用 verbose 交換器來取得所建立資源的相關資訊。 使用 debug 選項來獲取更多調試相關的資訊。

若要查看範本的彈性,讓我們再次部署它。 這次將 SKU 參數設定為標準異地備援儲存體 (GRS) Standard_GRS。 您可以傳入新名稱來建立不同的儲存體帳戶,或使用相同的名稱來更新現有的儲存體帳戶。 這兩種選擇都有效。

New-AzResourceGroupDeployment `
  -Name usenondefaultsku `
  -ResourceGroupName myResourceGroup `
  -TemplateFile $templateFile `
  -storageName "{your-unique-name}" `
  -storageSKU Standard_GRS

最後,讓我們再執行一個測試,看看當您傳入不是允許值之一的 SKU 時會發生什麼。 在此情況下,我們會測試範本使用者認為 basic 是其中一個 SKU 的情境。

New-AzResourceGroupDeployment `
  -Name testskuparameter `
  -ResourceGroupName myResourceGroup `
  -TemplateFile $templateFile `
  -storageName "{your-unique-name}" `
  -storageSKU basic

命令會立即失敗,並顯示包含允許值的錯誤訊息。 ARM 處理器會在部署開始之前找到錯誤。

清理資源

如果您要繼續進行下一個教學課程,則不需要刪除資源群組。

如果您現在要停止,您可能會想要移除資源群組以清理已部署的資源。

  1. 從 Azure 入口網站 中,從左側功能表中選取 [資源群組 ]。
  2. [篩選任何欄位... ] 文字欄位中輸入資源群組名稱。
  3. 核取 myResourceGroup 旁邊的方塊,然後選取 myResourceGroup 或您的資源群組名稱。
  4. 從頂端功能表選取 [刪除資源群組 ]。

後續步驟

您透過新增參數來改善您在 第一個教學課程 中建立的範本。 在下一個教學課程中,您將瞭解範本函式。