练习 - 使用 Azure 资源管理器函数创建表达式
在本练习中,你将使用 Azure 资源管理器 (ARM) 模板函数创建表达式。 该表达式通过组合前缀输入与资源组 ID 的哈希,为每个资源组创建唯一的名称。 这将生成 dev2hu6sbtr5 和 staging5his8hgr67 等 Azure 存储帐户名称。
注意
本练习可选做。 若要完成本练习,则需要在开始之前创建 Azure 订阅。 如果没有 Azure 帐户或不想暂时创建一个帐户,可以通读说明,以便了解所显示的信息。
创建 ARM 模板文件
在上一个模块中,你创建了一个已部署存储帐户的 ARM 模板。 并向此文件添加了参数和输出。 现在,你将从此文件开始操作,但输出已被移除,以减少开销。
打开 Visual Studio Code 并创建名为 azuredeploy.json 的文件。 如果在上一个模块中有此文件,则可使用该文件。
将文件的内容替换为以下代码:
{ "$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" ] } }, "functions": [], "variables": {}, "resources": [ { "name": "[parameters('storageName')]", "type": "Microsoft.Storage/storageAccounts", "apiVersion": "2025-01-01", "tags": { "displayName": "[parameters('storageName')]" }, "location": "[resourceGroup().location]", "kind": "StorageV2", "sku": { "name": "[parameters('storageSKU')]" } } ], "outputs": {} }如果未完成上一个模块,请花点时间查看此文件。 请注意,该
storageName参数用于传入存储帐户的唯一名称。
创建表达式以设置唯一的存储帐户名称
更改参数以使用存储帐户名称的前缀,而不传入存储帐户的名称。 此参数会传递给表达式中的 concat 函数。
在
parameters部分,将storageName更改为 storagePrefix。将
maxLength:参数的storagePrefix特性的值更改为 11。 存储帐户名称的最大长度为 24 个字符,需要确保从你创建的函数中添加的哈希不会导致名称长于 24。创建表达式来设置唯一的存储帐户名称。 在
resources部分,将name:和displayName:特性的值从"[parameters('storageName')]"更改为 "[toLower(concat(parameters('storagePrefix'),uniqueString(resourceGroup().id)))]"。 你在上一个单元中了解过该表达式。 该文件现在应如下所示:{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "storagePrefix": { "type": "string", "minLength": 3, "maxLength": 11 }, "storageSKU": { "type": "string", "defaultValue": "Standard_LRS", "allowedValues": [ "Standard_LRS", "Standard_GRS", "Standard_RAGRS", "Standard_ZRS", "Premium_LRS", "Premium_ZRS", "Standard_GZRS", "Standard_RAGZRS" ] } }, "functions": [], "variables": {}, "resources": [ { "name": "[toLower(concat(parameters('storagePrefix'),uniqueString(resourceGroup().id)))]", "type": "Microsoft.Storage/storageAccounts", "apiVersion": "2025-01-01", "tags": { "displayName": "[toLower(concat(parameters('storagePrefix'),uniqueString(resourceGroup().id)))]" }, "location": "[resourceGroup().location]", "kind": "StorageV2", "sku": { "name": "[parameters('storageSKU')]" } } ], "outputs": {} }
将 ARM 模板部署到 Azure
若要将此模板部署到 Azure,你需要从 Visual Studio Code 终端登录到 Azure 帐户。 请确保已安装 Azure CLI 工具。
从“终端”菜单中,选择“新建终端”。
如果终端窗口右侧的下拉菜单显示“bash”,即表示你有了要使用的正确 shell。 可以跳到下一节继续进行操作。
如果没有正确的 shell,请选择向下键,然后选择 Git Bash。
将目录更改为包含 ARM 模板文件的文件夹。
登录到 Azure
从 Visual Studio Code 中的终端运行以下命令以登录到 Azure。 运行此命令时,会打开一个浏览器,使你能够登录到你的帐户:
az login
在打开的浏览器窗口中,登录到帐户。 登录后,与此帐户关联的订阅列表将显示在终端中。 默认订阅标记为星号 \. 如果你有多个订阅,请选择要用于本练习的订阅。
创建和设置默认资源组
需要使用资源组来完成本练习中的步骤。 可以使用已创建的资源组,也可以专门为此练习创建新的资源组。 如果选择创建新的资源组,这样就可以更轻松地清理完成练习时创建的任何资源。 如果已有资源组并将其设置为默认资源组,则可以跳过此会话。
az group create --name <resource-group-name> --location <location>
将资源组名称<替换为>资源组的唯一名称。 将位置<替换为>离你最近的 Azure 区域。 例如,将 eastus 用于美国东部。
通过设置默认资源组,可以省略本练习中 Azure CLI 命令中的该参数。 若要设置资源组,请运行以下命令。
az configure --defaults group="<resource-group-name>"
将 resource-group-name< 替换为>资源组名称。
将模板部署到 Azure
你已在上一模块中了解了部署命令。 此处,我们将使用 Azure CLI az deployment group create 命令。
在 Visual Studio Code 终端中使用 Azure CLI 命令部署模板。 请记住将
{your-prefix}替换为其他字符串。 例如,可使用“storage”。templateFile="azuredeploy.json" today=$(date +"%d-%b-%Y") DeploymentName="addfunction-"$today az deployment group create \ --name $DeploymentName \ --template-file $templateFile \ --parameters storagePrefix={your-prefix}在这段代码的最前面部分,为要部署的模板文件的路径设置了 Azure CLI 变量,并且设置了此部署的名称。 然后使用
az deployment group create命令将模板部署到 Azure。你应会在终端中看到消息
Running...。
若要将此模板部署到 Azure,你需要从 Visual Studio Code 终端登录到 Azure 帐户。 请确保已安装 Azure PowerShell 工具。
从“终端”菜单中,选择“新建终端”。
如果终端窗口右侧的下拉菜单显示“pwsh”,即表示你有了要使用的正确 shell。 可以跳到下一节继续进行操作。
如果没有正确的 shell,请选择向下箭头,然后在下拉菜单中选择 PowerShell 。
将目录更改为包含 ARM 模板文件的文件夹。
登录到 Azure
从 Visual Studio Code 中的终端运行以下命令以登录到 Azure。
Connect-AzAccount
在打开的浏览器窗口中(浏览器窗口可能在当前窗口后面打开,最小化当前窗口以查看它),登录到你的帐户。 登录后,与此帐户关联的订阅列表将显示在终端中。 默认订阅标记为星号 \. 如果你有多个订阅,请选择要用于本练习的订阅。
创建和设置默认资源组
需要使用资源组来完成本练习中的步骤。 可以使用已创建的资源组,也可以专门为此练习创建新的资源组。 如果选择创建新的资源组,这样就可以更轻松地清理完成练习时创建的任何资源。 如果已有资源组并将其设置为默认资源组,则可以跳过此会话。
New-AzResourceGroup -Name <ResourceGroupName> -Location <Location>
为你的资源组设置一个唯一的名称。 替换为离你最近的 Azure 区域。 例如,将 eastus 用于美国东部。
通过设置默认资源组,可以省略本练习中 Azure CLI 命令中的该参数。 若要设置资源组,请运行以下命令。
Set-AzDefault -ResourceGroupName <ResourceGroupName>
将 ResourceGroupName< 替换为>资源组名称。
将模板部署到 Azure
在 Visual Studio Code 终端中使用 Azure PowerShell 命令部署模板。 请记住将 {your-prefix} 替换为其他字符串。 例如,可使用“storage”。
$templateFile = "azuredeploy.json"
$today=Get-Date -Format "MM-dd-yyyy"
$deploymentName="addfunction-"+"$today"
New-AzResourceGroupDeployment `
-Name $deploymentName `
-TemplateFile $templateFile `
-storagePrefix {your-prefix}
在这段代码的最前面部分,为要部署的模板文件的路径设置了 Azure PowerShell 变量,并且设置了此部署的名称。 然后使用 New-AzResourceGroupDeployment 命令将模板部署到 Azure。
检查你的部署
部署完成后,转到 Azure 门户 ,确保你位于正确的订阅中。 若要查看订阅,请选择页面右上角的头像。 选择“切换目录”。 在列表中,选择相应的目录。
在左窗格中,选择“资源组”。
选择资源组名称。
在“概述”部分中,你会看到一个成功的部署:
选择“1 个已成功”以查看部署的详细信息:
选择“addfunction”以查看部署了哪些资源:
让页面在浏览器中保持打开状态,以便在此模块后面的部分中可以再次检查部署。