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

已完成

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

在 Azure 中创建资源

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

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

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

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

  1. 在 Cloud Shell 窗口顶部,选择“更多”图标 (...),选择“设置”>“转到经典版本”

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

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

    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!”消息,如以下屏幕截图所示

    Web 浏览器的屏幕截图,其中显示基本逻辑应用工作流的响应。

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

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