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

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

重要

此功能为预览版,受 Microsoft Azure 预览版补充使用条款限制。

为了帮助你更轻松地管理 Azure 资源,你可以为特定资源或资源组创建自动化管理任务。 这些任务的数量和可用性因资源类型而异。 例如:

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

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

    例如,可以创建每天自动启动一次虚拟机的任务。 在任务的“配置”选项卡上,将“间隔”设置为“1”,将“频率”设置为“”。

可以从特定的自动化任务模板创建自动化任务。 下表列出了目前支持的资源类型以及此预览版中的可用任务模板:

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

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

- 删除旧 blob
Azure Cosmos DB 此外,

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

本文演示如何完成以下任务:

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

Azure 自动化相比,自动化任务更加基础和精简。 目前,只能在 Azure 资源级别创建自动化任务。 在后台,自动化任务实际上是运行工作流的逻辑应用资源。 此逻辑应用工作流由多租户 Azure 逻辑应用服务提供支持。 创建自动化任务后,可以通过在工作流设计器中打开任务来查看和编辑基础工作流。 某项任务完成至少一次运行后,你可以查看运行的状态、历史记录、输入和输出。

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

定价

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

无论工作流是否成功运行或者甚至是否已实例化,都会对此类执行进行计量和计费。 例如,假设你的自动化任务使用轮询触发器,该触发器定期对终结点进行传出调用。 无论是否激发或跳过触发器,此出站请求都会作为执行进行计量和计费,这会影响是否创建工作流实例。

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

注意

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

先决条件

  • 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 逻辑应用服务中打开,并显示“概述”窗格,你可以在其中查看可用于该任务的相同运行历史记录。

    该屏幕截图显示了选中了“概述”窗格的 Azure 逻辑应用视图中的任务。

  4. 若要在设计器中打开基础工作流,请在逻辑应用导航菜单上选择“逻辑应用设计器”。

    该屏幕截图显示了所选的“逻辑应用设计器”菜单选项,以及包含基础工作流的设计器图面。

    现在,你可以编辑工作流触发器和操作的属性,也可以编辑定义工作流本身的触发器和操作。 但是,作为最佳做法,请按照以下步骤克隆工作流,以便在原始工作流继续运行的同时对副本进行更改。

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

    1. 在逻辑应用工作流菜单上,选择“概述”。

    2. 在概述窗格的工具栏上,选择“克隆”。

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

      除“逻辑应用状态”外,其他属性均不可编辑。

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

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

  6. 若要查看触发器或操作的属性,请展开该触发器或操作。

    例如,你可以将定期触发器更改为每周运行一次,而不是每月运行一次。

    该屏幕截图显示了展开的定期触发器,其中“频率”列表打开并显示了可用的频率选项。

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

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

    该屏幕截图显示了设计器工具栏和所选的“保存”命令。

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

    运行完成后,设计器会显示工作流的运行详细信息。

    该屏幕截图显示了设计器上工作流的运行详细信息。

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

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

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

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

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

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

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

  1. Azure 门户中,打开要导出的逻辑应用工作流。 确保工作流以定期或基于事件的触发器(而不是基于 HTTP 的触发器或基于 HTTP 的 Webhook 触发器)开始。

  2. 在逻辑应用资源菜单中,选择“概述”。

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

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

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

    属性 需要 说明
    模板名称 <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

    -- 频率:参数值是频率,如“小时”、“天”或“月”

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

    下面的示例展示了仅适用于 Azure 资源组的示例自动化任务模板的属性:

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

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

    参数 说明
    emailAddress 指定用于发送报表的电子邮件地址。 此参数使用“默认”模板,你能够指定参数的信息、预期格式,以及参数是否是可选的。 对于此示例参数,预期格式为“无”,参数为“必需”。
    numberOf 指定虚拟机可以保持空闲状态的最大时间单位数。 此参数使用“默认”模板。
    timeUnit 指定要用于参数值的时间单位。 此参数使用“频率”模板,该模板显示任务创建者可以选择的时间单位,例如“小时”、“天”或“月”。
  5. 完成后,选择“下载模板”,并使用 .json 文件扩展名保存模板。 为了使模板名称格式保持一致,请仅使用小写字母,在单词之间使用连字符,并使用以下语法:

    <action-verb>-<Azure-resource>

    例如,根据前面的示例模板名称,可以将模板文件命名为“list-stale-virtual-machines.json”。

将模板上传到 GitHub

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

  2. 转到 Azure 自动化任务模板 GitHub 存储库,随后会转到存储库中的默认分支。

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

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

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

  6. 添加模板后,在相同的文件夹中,打开 manifest.json 文件,然后为 <template-name>.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>";
       }
    
       {...}
    }
    

    此代码从分叉存储库中获取 manifest.json 和 <template-name>.json 文件,而不是从 Azure GitHub 主存储库中获取。

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

    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 逻辑应用团队

后续步骤