练习 - 使用 ARM 模板部署基本的 Azure 逻辑应用工作流

已完成

本单元将使用 Azure 资源管理器模板部署 Azure 逻辑应用中的工作流。

在 Azure 中创建资源

通常,先要创建一个资源组来保存所有需要创建的项。 资源组可帮助我们管理构成一个整体解决方案的所有虚拟机 (VM)、磁盘、网络接口和其他元素。

可以使用 Azure CLI 命令 az group create 创建资源组。 此命令采用 --name 在订阅中提供唯一的资源组名称。 该命令还采用 --location 提供资源的默认 Azure 区域。

但我们使用的是免费的 Azure 沙盒环境,因此无需创建资源组。 可在本练习中改为使用之前创建的资源组 [沙盒资源组名称]

下载并检查基本的资源管理器模板

  1. 从 Cloud Shell 中,运行以下 curl 命令从 GitHub 下载模板:

    curl https://raw.githubusercontent.com/MicrosoftDocs/mslearn-logic-apps-and-arm-templates/master/basic-template/template.json > basic-template.json
    
  2. 若要查看模板,请在内置编辑器中打开它。

    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 参数。

  1. 在 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 资源管理器填充模板参数,并检查模板是否在订阅中成功运行。

    如果验证失败,输出中会显示失败的详细说明。

  2. 在 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 结果中看到值为 SucceededprovisioningState

验证部署

  1. 运行 az deployment group show 以验证部署:

    az deployment group show \
    --name MyDeployment \
    --resource-group "<rgn>[sandbox resource group name]</rgn>" 
    

    可以看到与之前所见相同 JSON 块。 如果需要这些部署的详细信息,可稍后运行此命令。 输出的结构是 JSON 形式,有利于馈送到可能使用的其他工具,以跟踪部署和云使用情况。

  2. 要查看应用的运行情况,请在 JSON 结果中找到“logicAppUrl”值。 选择 URL 或将其复制粘贴到新的浏览器窗口。 该页面显示“Hello Azure Logic Apps Template!”消息,如以下屏幕截图所示

    Screenshot with Web browser displaying response from our basic logic app workflow.

恭喜! 你已使用 Azure 资源管理器模板成功部署了逻辑应用工作流。

正如本练习中所述,基本模板具有许多硬编码值。 这些值使得模板不如我们想要的灵活。 可以使用参数来改善这种情况。