你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

通过创建自动化任务来管理 Azure 资源和监视成本

为了帮助你管理 Azure 资源,可以在特定的受支持资源或资源组上创建自动化任务。 这些任务的数量和可用性因资源类型而异。

  • 对于 Azure 存储帐户,可以设置一个自动化任务来发送该存储帐户的每月费用。

  • 对于 Azure 虚拟机,你可以创建一个自动化任务,按预定义计划打开或关闭该虚拟机。 具体而言,可以创建每天、每周或每月按特定次数自动启动或停止虚拟机的任务。 在任务的“配置”选项卡上,将“间隔”值设置为“次数”,将“频率”值设置为“”、“”或“”。 在删除或禁用该任务之前,自动化任务将继续工作。

可以从特定的自动化任务模板创建自动化任务。 下表列出了当前支持的资源类型和可用任务模板:

资源类型 自动化任务模板
所有 Azure 资源 发送资源的每月费用
Azure 虚拟机 此外:

- 关闭虚拟机
- 启动虚拟机
- 解除分配虚拟机
Azure 存储帐户 此外:

- 删除旧 blob
Azure Cosmos DB 此外,

- 通过电子邮件发送查询结果

本文介绍如何完成以下任务:

自动化任务与 Azure 自动化有何不同?

Azure 自动化相比,自动化任务更加基础和精简。 目前,只能在 Azure 资源级别创建自动化任务。 在后台,自动化任务实际上是运行工作流的逻辑应用资源。

逻辑应用工作流由 多租户 Azure 逻辑应用服务提供支持。 创建自动化任务后,可以通过在工作流设计器中打开任务来查看和编辑基础工作流。 某项任务完成至少一次运行后,你可以查看运行的状态、历史记录、输入和输出。

相比之下,Azure 自动化是一种基于云的自动化和配置服务,用于支持 Azure 环境和非 Azure 环境之间的一致管理。 该服务包括用于通过使用 runbook 来编排流程的流程自动化、具有更改跟踪和清单的配置管理、更新管理、共享功能以及异类功能。 在部署、操作和解除工作负荷与资源期间,自动化可以提供全面的控制。

定价

创建自动化任务时,费用不会立即开始计算。 下面,自动化任务由工作流提供支持,工作流位于托管于多租户 Azure Logic 应用中的逻辑应用资源中。 因此,消耗量定价模型适用于自动化任务。 计量和计费基于逻辑应用工作流中的触发器和操作执行。

无论工作流是否成功运行或是否被实例化,执行都会被记录和计费。 例如,假设你的自动化任务使用轮询触发器,该触发器定期对终结点进行传出调用。 此出站请求将按一次执行计费。 该请求可能会导致触发器被激活或被跳过,这会影响是否创建工作流实例。

触发器和操作遵循消耗计划费率,具体取决于这些操作是内置还是托管(标准版或企业版)。 触发器和操作还进行存储交易,这使用消耗计划数据费率。

注意

作为每月的额外奖励,消耗计划包含数千次免费的内置执行。 有关详细信息,请参阅 消耗计划费率

Prerequisites

  • Azure 帐户和订阅。 如果没有订阅,可以注册免费的 Azure 帐户
  • 你要管理的 Azure 资源。 本文以 Azure 存储帐户为例。
  • 一个 Office 365 帐户(如果要遵循本示例),该帐户使用 Office 365 Outlook 向你发送电子邮件。

创建自动化任务

  1. Azure 门户中,找到要管理的资源。

  2. 在“资源边栏”菜单中的 “自动化”下,选择“ 任务”。

    屏幕截图显示了 Azure 门户和存储帐户资源菜单,其中突出显示了“任务”。

  3. “任务 ”页工具栏上,选择“ 添加任务”。

    屏幕截图显示了“任务”页,其中包含“添加任务”选项。

  4. “添加任务 ”页上,在 “选择模板”下,为要创建的任务选择 *。 如果没有出现下一页,请选择“下一步: 身份验证”

    本示例选择发送资源每月成本任务模板。

    屏幕截图显示了“添加任务”窗格,其中突出显示了“发送资源的每月成本”模板和“选择”选项。

  5. 在“ 身份验证”部分的“ 连接 ”部分,为任务中显示的每个连接选择 “创建 ”。 任务中的连接类型有所不同。

    屏幕截图显示了 Azure 资源管理器连接的“创建”选项。

  6. 出现提示时,使用 Azure 帐户凭据登录。

    屏幕截图显示了“连接”窗格,可在其中选择“登录”。

    每个成功通过身份验证的连接看起来都类似于以下示例:

    屏幕截图显示状态为“已连接”的连接。

  7. 对所有连接进行身份验证后,选择“ 下一步:配置”。

  8. 在“配置”下,提供任务的名称以及任务所需的任何其他信息。 完成操作后,选择“查看 + 创建”

    注意

    创建后无法更改任务名称。 如果为任务 SendMonthlyCost命名,但稍后将基础工作流编辑为每周运行,则无法将任务的名称更改为 SendWeeklyCost。 考虑一个即使您编辑了基础工作流仍然适用的名称。

    对基础工作流所做的更改仅适用于所创建的任务,而不适用于任务模板。

    发送电子邮件通知的任务需要一个电子邮件地址。

    屏幕截图显示了配置任务所需的信息。

    你创建的任务(将自动启动并运行)现在会在“任务”列表中显示

    屏幕截图显示了包含新任务的自动化任务列表。

    提示

    如果任务未立即显示,请尝试刷新任务列表或稍等一会再刷新。 在工具栏上,选择“刷新”

    所选任务运行后,你会收到一封电子邮件,如以下示例所示:

    屏幕截图显示任务发送的电子邮件通知。

查看任务历史记录

若要查看任务的运行历史记录以及它们的状态、输入、输出和其他信息,请执行以下步骤:

  1. Azure 门户中,找到具有你要查看的任务历史记录的资源。

  2. 在“资源边栏”菜单中的 “自动化”下,选择“ 任务”。

  3. 在任务列表中,找到要查看的任务。 在该任务的“运行”列中,选择“查看”

    屏幕截图显示了你创建的任务,其中突出显示了“视图”选项。

    运行历史记录 ”窗格显示任务的运行及其状态、开始时间、标识符和运行持续时间。

    屏幕截图显示任务的运行、其状态和其他信息。

    可能的运行状态如下:

    状态 说明
    已取消 任务在运行时被取消。
    失败 任务至少有一个失败的操作,但是没有后续操作来处理该失败。
    正在运行 任务目前正在运行。
    成功 所有操作成功。 如果某个操作失败,但是有后续操作来处理该失败,那么,任务仍然可以成功完成。
    正在等待 运行尚未开始,并且已暂停,因为任务的早期实例仍在运行。

    有关详细信息,请参阅查看工作流运行历史记录

  4. 若要查看运行中每个步骤的状态和其他信息,请选择该运行。

    “逻辑应用运行”窗格随即打开,并显示已运行的基础工作流。

    • 工作流始终从触发器开始。 对于此任务,工作流从定期触发器开始。
    • 每个步骤都会显示其状态和运行持续时间。 持续时间为 0 秒的步骤的运行时间不到 1 秒。

    屏幕截图显示了运行、状态和运行持续时间中的每个步骤。

  5. 若要查看每个步骤的输入和输出,请选择该步骤,这将打开输入和输出窗格。

若要了解如何开发自己的自动化工作流,使您能够集成应用、数据、服务和系统,并且不只是停留在 Azure 资源自动化任务的上下文中,请参阅 快速入门:在 Azure 门户中创建基于消耗的逻辑应用工作流

编辑任务

若要更改任务,你可以使用以下选项:

内联编辑任务

  1. Azure 门户中,找到包含要更新的任务的资源。

  2. 在资源导航菜单的“自动化”部分中,选择“任务”

  3. 在任务列表中,找到要更新的任务。 打开任务的省略号 (...) 菜单,然后选择“内联编辑”

    屏幕截图显示任务,其中打开了省略号菜单,并选择了“内联编辑”选项。

    默认情况下,“身份验证”选项卡将出现,并显示现有连接

  4. 若要为连接添加新的身份验证凭据或选择其他现有的身份验证凭据,请打开连接的省略号 (...) 菜单,然后选择“添加新的连接”或其他身份验证凭据(如果可用)。

    屏幕截图显示了“身份验证”选项卡,其中包含现有连接和选定的省略号菜单。

  5. 若要更新其他任务属性,请选择“下一步: 配置”

    对于本示例中的任务,唯一可供编辑的属性是电子邮件地址。

    显示“配置”选项卡的屏幕截图,可在其中编辑电子邮件地址。

  6. 完成后,选择“保存”

编辑任务的基础工作流

更改自动化任务的基础工作流时,所做的更改仅影响你创建的任务实例,而不影响创建该任务的模板。 进行和保存更改后,为原始任务提供的名称可能无法准确描述任务。 可以使用其他名称重新创建任务。

提示

最佳做法是克隆基础工作流并编辑复制的版本。 这样,就可以在原始自动化任务继续运行时对副本进行更改和测试。 你不会面临中断或破坏现有功能的风险。

完成更改并确信新版本成功运行后,可以禁用或删除原始自动化任务。 然后,将克隆的版本用于自动化任务。 以下步骤包括有关如何克隆工作流的信息。

  1. Azure 门户中,找到包含要更新的任务的资源。

  2. 在“资源边栏”菜单中的 “自动化”下,选择“ 任务”。

  3. 在任务列表中,找到要更新的任务。 打开任务的省略号 (...) 菜单,然后选择“在逻辑应用中打开”

    屏幕截图显示了打开的省略号菜单和所选选项“在逻辑应用中打开”。

    任务的基础工作流将在 Azure 逻辑应用的设计器中打开。

    屏幕截图显示了包含基础工作流的工作流设计器图面。

    现在可以编辑工作流的属性。 最佳做法是按照步骤克隆工作流。 可以在原始工作流继续运行时对副本进行更改。

  4. 若要改为克隆工作流并编辑复制的版本,请执行以下步骤:

    1. 在 Azure 门户搜索框中,找到并选择 逻辑应用,然后选择逻辑应用资源。

    2. 在资源边栏菜单上,选择“ 概述”。

    3. 概述工具栏上,选择克隆

    4. 在“ 创建逻辑应用 ”窗格的 “逻辑应用名称”下,输入复制的逻辑应用资源和工作流的新名称。

      除了 逻辑应用状态,不能编辑其他属性。

    5. “逻辑应用状态”下,选择 “已禁用”。 克隆的工作流在您进行更改时不会运行。 准备好测试更改时,可以启用工作流。

    6. Azure 预配完克隆的工作流后,在设计器中找到并打开该工作流。

  5. 若要查看触发器或作的属性,请在设计器上选择该触发器或作:

    例如,您可以将 重复 触发器设置为每周运行,而不是每月运行。

    屏幕截图显示了“重复触发器”,其中“信息”窗格已打开,“频率”列表也已打开,以显示可用的频率选项。

    有关定期触发器的详细信息,请参阅使用 Recurrence 触发器创建、计划和运行定期任务和工作流。

  6. 若要保存更改,请在设计器工具栏上选择“保存”

    屏幕截图显示了设计器工具栏和突出显示的“保存”图标。

  7. 若要测试和运行更新的工作流,请在设计器工具栏上选择“ 运行>运行”。

  8. 若要禁用工作流,以使该任务不再继续运行,请参阅在 Azure 门户中管理逻辑应用

从工作流创建自动化任务模板

可以通过使用以定期或基于事件的触发器开始的任何消耗型逻辑应用工作流来创建自己的自动化任务模板,但不能使用基于 HTTP 的触发器或基于 HTTP 的 Webhook 触发器。 对于此任务,需要以下项:

要创建模板并使模板可在 Azure 中使用,请参阅以下概要步骤:

  1. 工作流导出到自动化任务模板。
  2. 模板上传到分叉存储库中的工作分支。
  3. 使用 Web 调试工具(如 Fiddler)测试模板
  4. 针对自动化任务模板 GitHub 存储库中的默认分支为工作分支创建拉取请求 (PR)

Azure 逻辑应用团队审核并批准合并到默认分支的 PR 后,你的模板将处于活动状态,可供所有 Azure 客户使用。

将工作流导出到自动化任务模板

在开始之前,请确保工作流以定期触发器或基于事件的触发器(而不是基于 HTTP 的触发器或基于 HTTP 的 Webhook 触发器)开头。

  1. Azure 门户中,打开具有要导出的工作流的消耗逻辑应用资源。

  2. 在资源边栏菜单上,选择“ 概述”。

  3. “概述”工具栏上,选择 “导出导出到自动化任务”。

    屏幕截图显示了“概述”工具栏,其中打开了“导出”菜单并突出显示了“导出到自动化任务”。

  4. 在打开的“导出到自动化任务”窗格中,提供以下信息:

    properties 必选 说明
    模板名称 < template-name> 自动化任务模板的友好显示名称。

    重要说明:请确保使用简单易懂的名称,例如“List stale virtual machines”
    模板说明 < template-description> 模板的任务或目的的说明
    支持的资源类型 为空或为 <supported-Azure-resource-type-list> 要使模板可用的第一类 Azure 资源类型。 目前不支持子资源类型。 若要包括所有第一类 Azure 资源类型,请将此属性留空。 若要指定多个资源类型,请用逗号分隔每个名称,并使用以下语法:

    Microsoft.<service-provider>/<entity>

    例如,若要使模板可用于 Azure 资源组,请指定 Microsoft.Resources/resourceGroups。 有关详细信息,请参阅 Azure 服务的资源提供程序
    不支持的资源类型 为空或为 <unsupported-Azure-resource-type-list> 如果有,就是你特别不想使模板可用的 Azure 资源类型。 若要指定多个资源类型,请用逗号分隔每个名称,并使用以下语法:

    Microsoft.<service-provider>/<entity>

    例如,若要使模板不可用于 Azure 资源组,请指定 Microsoft.Resources/resourceGroups。 有关详细信息,请参阅 Azure 服务的资源提供程序
    配置参数 不定 如果你的工作流包含跨环境参数定义,这些参数将显示在此部分中,让你可以进一步配置。 可以选择是否由资源或任务创建者提供每个参数值。

    - 如果选择“由资源提供”,则从该资源中选择要使用的“源参数”属性值:

    -- 资源名称
    -- 资源类型
    -- 资源 ID
    -- 订阅 ID
    -- 资源组
    -- 资源位置

    - 如果选择“由用户提供”,则选择一个“模板”格式,确定任务创建者如何提供参数值:

    -- 默认值:参数值是除间隔、频率或时区以外的任何值。

    ---- 指定参数的显示名称、默认值和说明。

    ---- 如果值是时间戳 (hh:mm:ss),将“格式”属性设置为“时间格式”

    ---- 若要根据需要标记参数,将“选项”更改为“必需”

    -- 间隔:参数值是间隔,如 1 或 12

    -- 频率:参数值是频率,例如 HourDayMonth

    -- 时区:参数值为时区,例如(UTC-08:00)太平洋时间(美国和加拿大)。

    以下示例显示了示例自动化任务模板的属性:

    屏幕截图显示了“导出到自动化任务”窗格,其中包含自动化任务模板的示例属性。

    在此示例中,任务的基础工作流包括以下参数定义,并指定任务创建者提供这些参数值。

  5. 完成后,选择“下载模板”,并使用 .json 文件扩展名保存模板。 为了使模板名称格式保持一致,请仅使用小写字母,在单词之间使用连字符,并使用以下语法:

    <action-verb>-<Azure-resource>

    例如,根据前面的示例模板名称,可以命名模板文件 power-off-virtual-machine.json

将模板上传到 GitHub

  1. 转到 GitHub,使用 GitHub 帐户登录。

  2. 转到自动化任务模板 GitHub 存储库,这将带您进入存储库的默认分支。

  3. 从分支列表中,切换到工作分支。

  4. 在文件列表上方,选择“添加文件”>“上传文件”

  5. 将工作流定义文件拖到页面上的指定区域,或者选择“选择文件”

  6. 添加模板后,在同一文件夹中打开 manifest.json 文件,并为 JSON 文件添加条目。

测试模板

可以使用你最喜欢的 Web 调试工具来测试已上传到工作目录的模板。 本示例继续操作,将 Fiddler 与修改 Web 请求的脚本结合使用。 如果你使用其他工具,请对工具使用等效的步骤和脚本。

  1. 在 Fiddler 脚本中,查找 onBeforeRequest() 函数,并将以下代码添加到该函数,例如:

    static function OnBeforeRequest(oSession: Session)
    {
       if (oSession.url == "raw.githubusercontent.com/azure/automation-task-template/master/templates/manifest.json") {
          oSession.url = "raw.githubusercontent.com/<GitHub-username>/automation-task-template/<working-branch>/templates/manifest.json";
       }
    
       if (oSession.url == "raw.githubusercontent.com/azure/automation-task-template/master/templates/<template-name>") {
          oSession.url = "raw.githubusercontent.com/<GitHub-username>/automation-task-template/<working-branch>/templates/<template-name>";
       }
    
       {...}
    }
    

    此代码从分支存储库(而不是主 Azure GitHub 存储库)获取manifest.json<模板名称>.json 文件。

    因此,根据示例,文件重定向代码类似于以下版本:

    static function OnBeforeRequest(oSession: Session)
    {
       if (oSession.url == "raw.githubusercontent.com/azure/automation-task-template/master/templates/manifest.json") {
          oSession.url = "raw.githubusercontent.com/sophowe/automation-task-template/upload-auto-template/templates/manifest.json";
       }
    
       if (oSession.url == "raw.githubusercontent.com/azure/automation-task-template/master/templates/list-stale-virtual-machines.json") {
          oSession.url = "raw.githubusercontent.com/sophowe/automation-task-template/upload-auto-template/templates/list-stale-virtual-machines.json";
       }
    
       {...}
    }
    
  2. 在运行测试之前,请确保关闭所有浏览器窗口,并在 Fiddler 中清除浏览器缓存。

  3. 打开新的浏览器窗口,然后登录到 Azure 门户

  4. 打开要在其中查找自动化任务的 Azure 资源。 使用导出的模板创建自动化任务。 运行任务。

如果任务成功运行,请继续创建从工作分支到默认分支的拉取请求。

创建拉取请求

  1. 在“提交更改”下,为更新输入一个简明扼要的标题。 可以在“说明”框中提供详细信息。

  2. 选择“为此提交创建新分支并启动拉取请求”。 出现提示时,为工作分支提供一个名称,例如:

    <your-GitHub-alias>-<automation-task-name>-template

  3. 准备就绪后,选择“建议更改”。 在下一页上,选择“创建拉取请求”

  4. 为拉取请求提供名称和说明。 在右下角选择“创建拉取请求”

  5. 等待 Azure 逻辑应用团队审核拉取请求。

提供反馈

我们非常乐意听到你的反馈! 若要报告 bug、提供反馈或询问有关此预览版功能的问题,请联系 Azure 逻辑应用团队