练习 - 使用 Azure 资源管理器函数创建表达式
注意
首次激活沙盒并接受这些条款后,你的 Microsoft 帐户将与名为“Microsoft Learn 沙盒”的新 Azure 目录相关联。 你会被添加到名为“Concierge 订阅”的特殊订阅中。
在本练习中,你将使用 Azure 资源管理器 (ARM) 模板函数创建表达式。 该表达式通过组合前缀输入与资源组 ID 的哈希,为每个资源组创建唯一的名称。 这将生成 dev2hu6sbtr5
和 staging5his8hgr67
等 Azure 存储帐户名称。
在本练习中,你将使用适用于 Visual Studio Code 的 Azure 资源管理器工具。 请务必在 Visual Studio Code 中安装此扩展。
创建 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": "2019-06-01", "tags": { "displayName": "[parameters('storageName')]" }, "location": "[resourceGroup().location]", "kind": "StorageV2", "sku": { "name": "[parameters('storageSKU')]" } }], "outputs": {} }
如果未完成上一个模块,请花点时间查看此文件。 请注意
storageName
参数。 此参数用于传入存储帐户的唯一名称。
创建表达式以设置唯一的存储帐户名称
更改参数以使用存储帐户名称的前缀,而不传入存储帐户的名称。 此参数会传递给表达式中的 concat
函数。
在
parameters
部分,将storageName
更改为 storagePrefix。将
storagePrefix
参数的maxLength:
特性的值更改为 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": "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 工具。 此外,确保登录的是激活沙盒的帐户。
使用“终端”菜单打开终端窗口。
如果终端窗口右侧的下拉菜单显示“bash”,即表示你有了要使用的正确 shell。 可以跳到下一节继续进行操作。
如果没有正确的 shell,请选择下拉菜单中的“选择默认 Shell”。
选择“bash”:
选择终端中的 +,以 bash 作为 shell 创建一个新的终端。
登录到 Azure
从 Visual Studio Code 中的终端运行以下命令以登录到 Azure。 运行此命令时,会打开一个浏览器,使你能够登录到你的帐户:
az login
登录后,将在终端中看到与帐户关联的订阅的列表。 如果激活了沙盒,会显示一个名为“Concierge 订阅”的沙盒。 在本练习的其余部分中使用此沙盒。
为在此会话中运行的所有 Azure CLI 命令设置默认订阅:
az account set --subscription "Concierge Subscription"
注意
如果最近使用了多个沙盒,则可能会列出多个“Concierge 订阅”。 在这种情况下,使用下面两个步骤来设置默认订阅。 如果上述命令执行成功,则跳过下面两个步骤。
获取“Concierge 订阅”ID:
az account list \ --refresh \ --query "[?contains(name, 'Concierge Subscription')].id" \ --output table
使用订阅 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 工具,并且登录的帐户与激活沙盒的帐户相同。
使用“终端”菜单打开终端窗口。
如果终端窗口右侧的下拉菜单显示“pwsh”,即表示你有了要使用的正确 shell。 可以跳到下一节继续进行操作。
如果没有正确的 shell,请选择下拉菜单中的“选择默认 Shell”。
选择“pwsh”。
选择终端中的 +,以 pwsh 作为 shell 创建一个新的终端。
使用 Azure PowerShell 登录到 Azure
从 Visual Studio Code 中的终端运行以下命令以登录到 Azure。 运行此命令时,系统会提示你打开一个浏览器以转至一个 URL,可以通过此 URL 来登录到你的帐户。 使用此提示中的代码。 请确保使用激活沙盒时所用的帐户登录。
Connect-AzAccount
登录后,将在终端中看到与帐户关联的订阅的列表。 如果激活了沙盒,会显示一个名为“Concierge 订阅”的沙盒。 在本练习的其余部分中使用此沙盒。
为在此会话中运行的所有 Azure CLI 命令设置默认订阅。
获取订阅 ID。 该命令会列出你的订阅及其 ID。 订阅 ID 位于第二列。 查找
Concierge Subscription
并复制第二列。 如下所示:aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
。Get-AzSubscription
将处于活动状态的订阅更改为 Concierge 订阅。 请确保将
{Your subscription ID}
替换为你复制的 ID。$context = Get-AzSubscription -SubscriptionId {Your subscription ID} Set-AzContext $context
将默认资源组设置为在沙盒环境中为你创建的资源组。 这使你能够在本练习的其余 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 个已成功”以查看部署的详细信息:
选择“addfunction”以查看部署了哪些资源:
让页面在浏览器中保持打开状态,以便在此模块后面的部分中可以再次检查部署。