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

已完成

注意

首次激活沙盒并接受这些条款后,你的 Microsoft 帐户将与名为“Microsoft Learn 沙盒”的新 Azure 目录相关联。 你会被添加到名为“Concierge 订阅”的特殊订阅中。

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

在本练习中,你将使用适用于 Visual Studio Code 的 Azure 资源管理器工具。 请务必在 Visual Studio Code 中安装此扩展。

创建 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": "2019-06-01",
            "tags": {
                "displayName": "[parameters('storageName')]"
            },
            "location": "[resourceGroup().location]",
            "kind": "StorageV2",
            "sku": {
             "name": "[parameters('storageSKU')]"
           }
        }],
         "outputs": {}
    }
    
  3. 如果未完成上一个模块,请花点时间查看此文件。 请注意 storageName 参数。 此参数用于传入存储帐户的唯一名称。

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

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

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

  2. storagePrefix 参数的 maxLength: 特性的值更改为 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": "2019-06-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。 可以跳到下一节继续进行操作。

    屏幕截图,其中显示了 Visual Studio Code 终端窗口,且下拉菜单中显示有 bash。

  3. 如果没有正确的 shell,请选择下拉菜单中的“选择默认 Shell”

  4. 选择“bash”:

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

  5. 选择终端中的 +,以 bash 作为 shell 创建一个新的终端。

登录到 Azure

  1. 从 Visual Studio Code 中的终端运行以下命令以登录到 Azure。 运行此命令时,会打开一个浏览器,使你能够登录到你的帐户:

    az login
    
  2. 登录后,将在终端中看到与帐户关联的订阅的列表。 如果激活了沙盒,会显示一个名为“Concierge 订阅”的沙盒。 在本练习的其余部分中使用此沙盒。

  3. 为在此会话中运行的所有 Azure CLI 命令设置默认订阅:

    az account set --subscription "Concierge Subscription"
    

    注意

    如果最近使用了多个沙盒,则可能会列出多个“Concierge 订阅”。 在这种情况下,使用下面两个步骤来设置默认订阅。 如果上述命令执行成功,则跳过下面两个步骤。

  4. 获取“Concierge 订阅”ID:

     az account list \
       --refresh \
       --query "[?contains(name, 'Concierge Subscription')].id" \
       --output table
    
  5. 使用订阅 ID 设置默认订阅。 将 {your subscription ID} 替换为最新的 Concierge 订阅 ID。

    az account set --subscription {your subscription ID}
    

设置默认资源组

  • 将默认资源组设置为在沙盒环境中为你创建的资源组。 这使你能够在本练习的其余 Azure CLI 命令中省略该参数。

    az configure --defaults group=<rgn>[sandbox resource group name]</rgn>
    

将模板部署到 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。 可以跳到下一节继续进行操作。

    屏幕截图,其中显示了 Visual Studio Code 终端窗口,且下拉菜单中显示有 pwsh。

  3. 如果没有正确的 shell,请选择下拉菜单中的“选择默认 Shell”

  4. 选择“pwsh”。

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

  5. 选择终端中的 +,以 pwsh 作为 shell 创建一个新的终端。

使用 Azure PowerShell 登录到 Azure

  1. 从 Visual Studio Code 中的终端运行以下命令以登录到 Azure。 运行此命令时,系统会提示你打开一个浏览器以转至一个 URL,可以通过此 URL 来登录到你的帐户。 使用此提示中的代码。 请确保使用激活沙盒时所用的帐户登录。

    Connect-AzAccount
    
  2. 登录后,将在终端中看到与帐户关联的订阅的列表。 如果激活了沙盒,会显示一个名为“Concierge 订阅”的沙盒。 在本练习的其余部分中使用此沙盒。

    为在此会话中运行的所有 Azure CLI 命令设置默认订阅。

  3. 获取订阅 ID。 该命令会列出你的订阅及其 ID。 订阅 ID 位于第二列。 查找 Concierge Subscription 并复制第二列。 如下所示:aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e

    Get-AzSubscription
    
  4. 将处于活动状态的订阅更改为 Concierge 订阅。 请确保将 {Your subscription ID} 替换为你复制的 ID。

    $context = Get-AzSubscription -SubscriptionId {Your subscription ID}
    Set-AzContext $context
    
  5. 将默认资源组设置为在沙盒环境中为你创建的资源组。 这使你能够在本练习的其余 Azure PowerShell 命令中省略该参数。

    Set-AzDefault -ResourceGroupName <rgn>[sandbox resource group name]</rgn>
    

将模板部署到 Azure

你已在上一模块中了解了部署命令。 此处,我们将使用 Azure PowerShell New-AzResourceGroupDeployment 命令。

  • 在 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 门户,并确保你处于沙盒订阅中。 若要查看订阅,请选择页面右上角的头像。 选择“切换目录”。 在列表中,选择“Microsoft Learn 沙盒”目录。

  1. 在左窗格中,选择“资源组”。

  2. 选择 [沙盒资源组名称]

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

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

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

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

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

    Azure 门户的屏幕截图,其中显示了部署的存储帐户。

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