练习 - 使用 ARM 模板部署基本的 Azure 逻辑应用工作流
本单元将使用 Azure 资源管理器模板部署 Azure 逻辑应用中的工作流。
在 Azure 中创建资源
通常,先要创建一个资源组来保存所有需要创建的项。 资源组可帮助我们管理构成一个整体解决方案的所有虚拟机 (VM)、磁盘、网络接口和其他元素。
可以使用 Azure CLI 命令 az group create
创建资源组。 此命令采用 --name
在订阅中提供唯一的资源组名称。 该命令还采用 --location
提供资源的默认 Azure 区域。
但我们使用的是免费的 Azure 沙盒环境,因此无需创建资源组。 可在本练习中改为使用之前创建的资源组
下载并检查基本的资源管理器模板
从 Cloud Shell 中,运行以下
curl
命令从 GitHub 下载模板:curl https://raw.githubusercontent.com/MicrosoftDocs/mslearn-logic-apps-and-arm-templates/master/basic-template/template.json > basic-template.json
若要查看模板,请在内置编辑器中打开它。
code basic-template.json
template.json 中描述的逻辑应用工作流定义如以下列表所示:
{ "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": {}, "variables": {}, "resources": [ { "type": "Microsoft.Logic/workflows", "apiVersion": "2017-07-01", "name": "HelloLogicAppsTemplate", "location": "westus2", "properties": { "state": "Enabled", "definition": { "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#", "contentVersion": "1.0.0.0", "parameters": {}, "triggers": { "manual": { "type": "Request", "kind": "Http", "inputs": { "method": "GET", "schema": {} } } }, "actions": { "Response": { "runAfter": {}, "type": "Response", "kind": "Http", "inputs": { "body": "Hello Logic Apps Template!", "statusCode": 200 } } }, "outputs": {} }, "parameters": {} } } ], "outputs": { "logicAppUrl": { "type": "string", "value": "[listCallbackURL(concat(resourceId('Microsoft.Logic/workflows/', 'HelloLogicAppsTemplate'), '/triggers/manual'), '2017-07-01').value]" } } }
从前面的 JSON 定义可以看出,正如模板名称所示,此逻辑应用工作流是基本的。 我们来看看此应用的主要组件。
在以下代码段中,我们看到该应用名为
HelloLogicAppsTemplate
。 此名称在模板中进行硬编码。 应用运行的位置也硬编码为westus2
。"name": "HelloLogicAppsTemplate", "location": "westus2",
向下滚动到“触发器”部分,可以看到该工作流是通过 HTTP GET 请求触发的。 触发器名为
manual
。"triggers": { "manual": { "type": "Request", "kind": "Http", "inputs": { "method": "GET", "schema": {} } } },
在“操作”部分中,我们进一步了解到该工作流包含一个步骤或操作。 此操作使用消息
Hello Azure Logic Apps Template!
响应请求。"actions": { "Response": { "runAfter": {}, "type": "Response", "kind": "Http", "inputs": { "body": "Hello Logic Apps Template!", "statusCode": 200 } } },
资源管理器模板的“输出”部分有一个名为
logicAppUrl
的输出。 此输出变量列出部署的逻辑应用资源的 URL。 此 URL 可简化应用测试。 输出使用listCallbackURL
来创建 URl,但工作流名称和触发器名称均在此处进行了硬编码。"outputs": { "logicAppUrl": { "type": "string", "value": "[listCallbackURL(concat(resourceId('Microsoft.Logic/workflows/', 'HelloLogicAppsTemplate'), '/triggers/manual'), '2017-07-01').value]" } }
现在让我们部署这个逻辑应用并测试它。
验证和部署模板
若要部署逻辑应用资源,请使用 az deployment group create
命令,因为需要部署到资源组。 使用此命令进行部署时,可以使用 --template-uri
参数指定远程模板的位置,从而选择部署远程模板。 在本例中,我们想要在本地部署已有的模板,因此我们将设置 --template-file
参数。
在 Cloud Shell 中,运行
az deployment group validate
来验证该模板:az deployment group validate \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --template-file basic-template.json
--template-file
参数指向本地模板。 模板的文件名是“basic-template.json”。输出中会显示一个大型 JSON 块,告诉你该模板已通过验证。
Azure 资源管理器填充模板参数,并检查模板是否在订阅中成功运行。
如果验证失败,输出中会显示失败的详细说明。
在 Cloud Shell 中运行以下
az deployment group create
命令,将基本模板定义的逻辑应用资源部署到沙盒资源组:az deployment group create \ --name MyDeployment \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --template-file basic-template.json
此命令类似于前一个命令,但还包含
--name
参数,可为部署提供名称。此命令需要两分钟到三分钟的时间才能完成。 部署完成后,输出中将显示另一个描述部署的大型 JSON 块。 你将在 JSON 结果中看到值为
Succeeded
的provisioningState
。
验证部署
运行
az deployment group show
以验证部署:az deployment group show \ --name MyDeployment \ --resource-group "<rgn>[sandbox resource group name]</rgn>"
可以看到与之前所见相同 JSON 块。 如果需要这些部署的详细信息,可稍后运行此命令。 输出的结构是 JSON 形式,有利于馈送到可能使用的其他工具,以跟踪部署和云使用情况。
要查看应用的运行情况,请在 JSON 结果中找到“logicAppUrl”值。 选择 URL 或将其复制粘贴到新的浏览器窗口。 该页面显示“Hello Azure Logic Apps Template!”消息,如以下屏幕截图所示:
恭喜! 你已使用 Azure 资源管理器模板成功部署了逻辑应用工作流。
正如本练习中所述,基本模板具有许多硬编码值。 这些值使得模板不如我们想要的灵活。 可以使用参数来改善这种情况。