教程:将函数添加到 Azure 资源管理器 Bicep 文件

本教程介绍如何将模板函数添加到 Bicep 模板。 我们使用函数来动态构造值。 目前,Bicep 不支持用户定义的函数。 完成本教程需要 7 分钟

注意

本文包含 Bicep 示例。 Bicep 目前为预览版。 有关详细信息,请参阅 Bicep 项目

先决条件

建议完成有关参数的教程,但这不是必需的。

必须具有包含 Bicep 扩展的 Visual Studio Code,以及 Azure PowerShell 或 Azure CLI。 有关详细信息,请参阅 Bicep 工具

查看 Bicep 文件

在上一篇教程结束时,Bicep 文件包含以下内容:

@minLength(3)
@maxLength(24)
param storageName string

@allowed([
  'Standard_LRS'
  'Standard_GRS'
  'Standard_RAGRS'
  'Premium_LRS'
])
param storageSKU string = 'Standard_LRS'

resource stg 'Microsoft.Storage/storageAccounts@2019-06-01' = {
  name: storageName
  location: 'chinaeast'
  sku: {
    name: storageSKU
  }
  kind: 'StorageV2'
  properties: {
    supportsHttpsTrafficOnly: true
  }
}

存储帐户的位置硬编码为“中国东部”。 但是,可能需要将存储帐户部署到其他区域。 你会再次面对一个问题:Bicep 文件缺乏灵活性。 可以添加一个位置参数,但理想的情况是默认值更理性,而不仅仅是一个硬编码值。

使用函数

函数可以在部署过程中动态获取值,为 Bicep 文件增加了灵活性。 在本教程中,我们使用函数来获取用于部署的资源组的位置。

以下示例演示了添加名为 location 的参数而需要做出的更改。 参数默认值调用 resourceGroup 函数。 此函数返回的对象描述用于部署的资源组。 对象上的一个属性是位置属性。 使用默认值时,存储帐户位置与资源组位置相同。 资源组中的资源不需共享同一位置。 也可根据需要提供不同的位置。

请复制整个文件,并将你的 Bicep 文件替换为该文件的内容。

@minLength(3)
@maxLength(24)
param storageName string

@allowed([
  'Standard_LRS'
  'Standard_GRS'
  'Standard_RAGRS'
  'Premium_LRS'
])

param storageSKU string = 'Standard_LRS'

param location string = resourceGroup().location

resource stg 'Microsoft.Storage/storageAccounts@2019-04-01' = {
  name: storageName
  location: location
  sku: {
    name: storageSKU
  }
  kind: 'StorageV2'
  properties: {
    supportsHttpsTrafficOnly: true
  }
}

部署 Bicep 文件

在前面的教程中,你创建的存储帐户位于“中国东部”,但资源组创建于“中国北部”。 在本教程中,存储帐户与资源组在同一区域创建。 请使用位置的默认值,这样就不需提供该参数值。 必须为存储帐户提供新名称,因为是在另一位置创建存储帐户。 例如,使用 store2 而不是 store1 作为前缀。

如果尚未创建资源组,请参阅创建资源组。 此示例假定你已按第一篇教程所述将 bicepFile 变量设置为 Bicep 文件的路径。

若要运行此部署 cmdlet,你必须具有 Azure PowerShell 的最新版本

New-AzResourceGroupDeployment `
  -Name addlocationparameter `
  -ResourceGroupName myResourceGroup `
  -TemplateFile $bicepFile `
  -storageName "{new-unique-name}"

注意

如果部署失败,请使用 verbose 开关获取有关正在创建的资源的信息。 使用 debug 开关获取调试的详细信息。

验证部署

可以通过在 Azure 门户中浏览资源组来验证部署。

  1. 登录 Azure 门户
  2. 在左侧菜单中选择“资源组”。
  3. 选择已部署到的资源组。
  4. 可以看到一项存储帐户资源已部署,且其位置与资源组一样。

清理资源

若要继续学习下一篇教程,则不需删除该资源组。

如果你不打算继续学习,请删除该资源组以清理部署的资源。

  1. 在 Azure 门户上的左侧菜单中选择“资源组” 。
  2. 在“按名称筛选”字段中输入资源组名称。
  3. 选择资源组名称。
  4. 在顶部菜单中选择“删除资源组”。

后续步骤

在本教程中,我们在为参数定义默认值时使用了一个函数。 在本系列教程中,我们将继续使用函数。 到本系列完成时,我们会将函数添加到 Bicep 文件的每个部分。