首页 > 解决方案 > Azure 可以触发本地脚本按计划运行吗?

问题描述

我们有很多作业必须在本地计算机上运行,​​但我们希望能够从云中运行和管理这些作业。这些不是计算机管理员类型的工作。它们更多的是与业务相关的任务。

我们已经认真考虑过以几种不同的方式做到这一点:

  1. Logic Apps/Microsoft Flow可以使用On-Premises Data Gateway 在本地计算机上的文件夹中创建文件。然后,我们可以将此文件用作持续运行并监视该文件夹的本地脚本的触发器。但是,这感觉很笨拙,因为逻辑应用程序不是直接触发脚本,而是通过一个简单的文件创建事件来触发。这种方法还要求我们在逻辑应用程序中使用单个用户名/密码组合,并记住使该密码保持最新。
  2. Azure 事件网格现在可以将事件从 Azure 转发到混合连接,混合连接将该事件传输到本地计算机上的特定端口。从理论上讲,我们可以有一个 PowerShell 脚本监视该端口并处理传入事件。对我来说,这似乎是从云端在本地机器上触发脚本的最佳方式,但是我不确定这是否真的会按我期望的方式工作。

我们还研究了其他一些可以利用 Azure 进行此类事情的方法:

  1. Azure 自动化 混合 Runbook可以在本地触发作业。但是,该服务似乎主要用于管理任务,而不是日常流程。
  2. Azure DevOps可以使用自托管代理触发脚本在本地计算机上运行。但是,我不认为 Azure DevOps 旨在按设定的时间表触发生产过程。它仅适用于软件开发构建管道。
  3. Azure 数据工厂 集成运行时允许你将数据从本地 SQL Server 移动到云。这似乎是一个将数据从本地移动到云的理想平台,但我认为 Azure 数据工厂不能从云触发实际的本地脚本。我认为它只能与本地 SQL Server 一起使用。

所以我试图在这些方法中做出决定,或者看看是否有更好的方法。

我想我将尝试 Azure 事件网格方法并在一些本地机器上安装混合连接管理器,然后让一些 PowerShell 脚本 24/7 运行以监视指定的端口。将 Azure 事件网格中的事件路由到混合连接管理器后,它将路由到 PowerShell 正在侦听的端口,然后 PowerShell 可以触发需要在本地计算机上运行的作业。

我非常喜欢这种方法,因为我现在可以使用 Azure 事件网格将本地计算机上的本地事件连接到 Azure 和第三方事件。对我来说,这为不同系统之间的集成开辟了一个充满可能性的世界。但在我采用这种方法之前,我想确保它是最好的。

标签: azureazure-data-factoryazure-logic-appspower-automateazure-eventgrid

解决方案


目前尚不清楚您将从云端发送什么类型的数据。你需要考虑

1)你想要拉或推功能来触发任务吗?如果您想在本地计算机上进行维护,我会推荐 Pull。除了您的本地计算机容量有限并且无法基于 Push 的负载进行扩展这一事实之外。

2) 你想安装额外的服务器软件吗?Azure 服务总线不需要任何网关即可在本地工作。

Azure 服务总线可以使用 Windows 服务实现,IIS 始终在应用程序上,它仍然为您提供与 3rd 方软件集成的灵活性,因为它可以与逻辑应用程序一起使用,流和 Azure 函数可以与 Azure 服务总线一起使用。


推荐阅读