教程:将函数添加到 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 门户中浏览资源组来验证部署。
- 登录 Azure 门户。
- 在左侧菜单中选择“资源组”。
- 选择已部署到的资源组。
- 可以看到一项存储帐户资源已部署,且其位置与资源组一样。
清理资源
若要继续学习下一篇教程,则不需删除该资源组。
如果你不打算继续学习,请删除该资源组以清理部署的资源。
- 在 Azure 门户上的左侧菜单中选择“资源组” 。
- 在“按名称筛选”字段中输入资源组名称。
- 选择资源组名称。
- 在顶部菜单中选择“删除资源组”。
后续步骤
在本教程中,我们在为参数定义默认值时使用了一个函数。 在本系列教程中,我们将继续使用函数。 到本系列完成时,我们会将函数添加到 Bicep 文件的每个部分。