ARM 模板中的数据类型

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

支持的类型

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

  • array
  • bool
  • int
  • object
  • secureObject
  • securestring
  • string

数组

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

"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。 为了避免此限制,请在参数文件中指定大的整数值。 资源类型会针对整数属性应用其自己的限制。

对象

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

"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"
  }
},

安全字符串和对象

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

以下示例显示了两个安全参数。

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

注意

请勿将安全字符串或对象用作输出值。 如果包含安全值作为输出值,则该值不会显示在部署历史记录中,并且无法从另一个模板检索到。 请改为将该安全值保存在密钥保管库中,并作为参数从密钥保管库传递

后续步骤

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