你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

ARM 模板中的数据类型

本文介绍 Azure 资源管理器模板(ARM 模板)中支持的数据类型。

支持的类型

在 ARM 模板中,可以使用以下数据类型:

  • 数组
  • 布尔
  • 整数 (int)
  • 物体
  • secureObject 安全对象
  • securestring 安全字符串
  • 字符串

数组

数组以左中括号 ([) 开头,以右中括号 (]) 结尾。 数组可以在单行或多行中声明。 每个元素都用逗号分隔。

"parameters": {
  "exampleArray": {
    "type": "array",
    "defaultValue": [
      1,
      2,
      3
    ]
  }
},

"outputs": {
  "arrayOutput": {
    "type": "array",
    "value": "[variables('exampleArray')]"
  },
  "firstExampleArrayElement": {
    "type": "int",
    "value": "[parameters('exampleArray')[0]]"
  }
}

数组的元素可以是相同类型或不同类型的。

"variables": {
  "mixedArray": [
    "[resourceGroup().name]",
    1,
    true,
    "example string"
  ]
}

"outputs": {
  "arrayOutput": {
    "type": "array",
    "value": "[variables('mixedArray')]"
  },
  "firstMixedArrayElement": {
    "type": "string",
    "value": "[variables('mixedArray')[0]]"
  }
}

布尔值

指定布尔值时,请使用 truefalse。 不要将值用引号括起。

"parameters": {
  "exampleBool": {
    "type": "bool",
    "defaultValue": true
  }
},

整数

指定整数值时,请勿使用引号。

"parameters": {
  "exampleInt": {
    "type": "int",
    "defaultValue": 1
  }
}

对于作为内联参数传递的整数,值的范围可能会受到用于部署的 SDK 或命令行工具的限制。 例如,使用 PowerShell 部署模板时,整数类型的范围可以从 -2147483648 到 2147483647。 为了避免此限制,请在参数文件中指定大的整数值。 资源类型会针对整数属性应用其自己的限制。

对象

对象以左大括号 ({) 开头,以右大括号 (}) 结尾。 对象中的每个属性都由 keyvalue组成。 和 keyvalue 用双引号括起来,并用冒号 (): 分隔。 每个属性都用逗号分隔。

"parameters": {
  "exampleObject": {
    "type": "object",
    "defaultValue": {
      "name": "test name",
      "id": "123-abc",
      "isCurrent": true,
      "tier": 1
    }
  }
}

您可以从具有点表示法的对象中获取属性。

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "exampleObject": {
            "type": "object",
            "defaultValue": {
                "name": "test name",
                "id": "123-abc",
                "isCurrent": true,
                "tier": 1
            }
        }
    },
    "resources": [
    ],
    "outputs": {
        "nameFromObject": {
            "type": "string",
            "value": "[parameters('exampleObject').name]"
        }
    }
}

在 JSON 中,对象是零个或更多个键/值对的无序集合。 排序可能会根据实现而有所不同。 例如,Bicep items() 函数按字母顺序对对象进行排序。 在其他位置,可以保留原始排序。 由于这种非确定性,在编写代码时避免对对象键排序做出任何假设,因为这会与部署参数和输出交互。

字符串

字符串用双引号标记。

"parameters": {
  "exampleString": {
    "type": "string",
    "defaultValue": "test value"
  }
},

安全字符串和对象

安全字符串使用与字符串相同的格式,安全对象使用与对象相同的格式。 将参数设置为安全字符串或安全对象时,参数的值不会保存到部署历史记录中,也不会记入日志。 但是,如果将该安全值设置为不应为安全值的属性,则该值不会受到保护。 例如,如果将安全字符串设置为标记,则该值将以纯文本的形式存储。 使用安全字符串作为密码和机密。

以下示例显示了两个 secure 参数。

"parameters": {
  "password": {
    "type": "securestring"
  },
  "configValues": {
    "type": "secureObject"
  }
}

注释

不要使用安全字符串或对象作为输出值。 如果将安全值作为输出值包含在内,则该值不会显示在部署历史记录中,并且无法从其他模板中检索。 相反,请将 secure 值保存在 Key Vault 中,并 作为 Key Vault 中的参数传递

后续步骤

若要了解模板语法,请参阅 了解 ARM 模板的结构和语法