练习 - 使用 Azure 资源管理器函数创建表达式

已完成

在本练习中,你将使用 Azure 资源管理器 (ARM) 模板函数创建表达式。 该表达式通过组合前缀输入与资源组 ID 的哈希,为每个资源组创建唯一的名称。 这将生成 dev2hu6sbtr5staging5his8hgr67 等 Azure 存储帐户名称。

注意

本练习可选做。 若要完成本练习,则需要在开始之前创建 Azure 订阅。 如果没有 Azure 帐户或不想暂时创建一个帐户,可以通读说明,以便了解所显示的信息。

创建 ARM 模板文件

在上一个模块中,你创建了一个已部署存储帐户的 ARM 模板。 并向此文件添加了参数和输出。 现在,你将从此文件开始操作,但输出已被移除,以减少开销。

  1. 打开 Visual Studio Code 并创建名为 azuredeploy.json 的文件。 如果在上一个模块中有此文件,则可使用该文件。

  2. 将文件的内容替换为以下代码:

    {
      "$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": {}
    }
    
  3. 如果未完成上一个模块,请花点时间查看此文件。 请注意,该 storageName 参数用于传入存储帐户的唯一名称。

创建表达式以设置唯一的存储帐户名称

更改参数以使用存储帐户名称的前缀,而不传入存储帐户的名称。 此参数会传递给表达式中的 concat 函数。

  1. parameters 部分,将 storageName 更改为 storagePrefix

  2. maxLength: 参数的 storagePrefix 特性的值更改为 11。 存储帐户名称的最大长度为 24 个字符,需要确保从你创建的函数中添加的哈希不会导致名称长于 24。

  3. 创建表达式来设置唯一的存储帐户名称。 在 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 工具。

  1. 从“终端”菜单中,选择“新建终端”

  2. 如果终端窗口右侧的下拉菜单显示“bash”,即表示你有了要使用的正确 shell。 可以跳到下一节继续进行操作。

    显示下拉菜单中带有 bash 的 Visual Studio Code 终端窗口的屏幕截图。

    如果没有正确的 shell,请选择向下键,然后选择 Git Bash

    显示 Visual Studio Code 终端窗口中选择 shell 列表的屏幕截图。

  3. 将目录更改为包含 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 工具。

  1. 从“终端”菜单中,选择“新建终端”

  2. 如果终端窗口右侧的下拉菜单显示“pwsh”,即表示你有了要使用的正确 shell。 可以跳到下一节继续进行操作。

    显示下拉菜单中带有 pwsh 的 Visual Studio Code 终端窗口的屏幕截图。

    如果没有正确的 shell,请选择向下箭头,然后在下拉菜单中选择 PowerShell

    显示 Visual Studio Code 终端窗口中选择 shell 列表的屏幕截图。

  3. 将目录更改为包含 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. 在左窗格中,选择“资源组”

  2. 选择资源组名称。

  3. 在“概述”部分中,你会看到一个成功的部署

    显示资源组概述的 Azure 门户的屏幕截图。“部署”部分显示一个部署成功。

  4. 选择“1 个已成功”以查看部署的详细信息

    显示部署的 Azure 门户的屏幕截图。列出了一个部署,状态为“成功”。

  5. 选择“addfunction”以查看部署了哪些资源

    显示已部署存储帐户的 Azure 门户的屏幕截图。

  6. 让页面在浏览器中保持打开状态,以便在此模块后面的部分中可以再次检查部署。