【发布时间】:2019-09-19 07:33:55
【问题描述】:
我们有很多作业必须在本地计算机上运行,但我们希望能够从云端运行和管理这些作业。这些不是计算机管理员类型的工作。它们更多的是与业务相关的任务。
我们已经认真考虑过以几种不同的方式来做到这一点:
- Logic Apps/Microsoft Flow 可以使用On-Premises Data Gateway 在local computer 上的文件夹中创建文件。然后,我们可以将此文件用作持续运行并监视该文件夹的本地脚本的触发器。但是,这感觉很笨拙,因为逻辑应用程序不是直接触发脚本,而是通过一个简单的文件创建事件来触发。这种方法还要求我们在逻辑应用程序中使用单个用户名/密码组合,并记住使该密码保持最新。
- Azure 事件网格 可以now 将来自 Azure 的事件转发到混合连接,该混合连接将该事件传输到本地计算机上的特定端口。理论上,我们可以有一个 PowerShell 脚本monitoring 那个端口并处理传入的事件。对我来说,这似乎是从云端在本地机器上触发脚本的最佳方式,但我不确定这是否真的能按我预期的方式工作。
我们还研究了一些可以利用 Azure 进行此类事情的其他方法:
- Azure 自动化 Hybrid Runbooks 可以在本地触发作业。但是,该服务似乎主要用于管理任务,而不是日常流程。
- Azure DevOps 可以使用 Self-Hosted Agents 触发 scripts 在本地计算机上运行。但是,我不认为 Azure DevOps 旨在按设定的时间表触发生产过程。它仅适用于软件开发构建管道。
- Azure 数据工厂 Integration Runtime 允许您将数据从本地 SQL Server 移动到云。这似乎是一个将数据从本地移动到云的理想平台,但我认为 Azure 数据工厂不能从云触发实际的本地脚本。我认为它只能与本地 SQL Server 一起使用。
所以我正在尝试在这些方法中做出决定,或者看看是否有更好的方法。
我想我将尝试使用 Azure 事件网格方法并在一些本地计算机上安装混合连接管理器,然后让一些 PowerShell 脚本 24/7 全天候运行以监控指定端口。将 Azure 事件网格中的事件路由到混合连接管理器后,它将路由到 PowerShell 正在侦听的端口,然后 PowerShell 可以触发需要在本地计算机上运行的作业。
我非常喜欢这种方法,因为我现在可以使用 Azure 事件网格将本地计算机上的本地事件连接到 Azure 和第三方事件。对我来说,这为不同系统之间的集成开辟了一个充满可能性的世界。但在我采用这种方法之前,我想确保它是最好的。
【问题讨论】:
-
Azure 函数呢?你读过它们吗?
-
据我所见,我认为 Azure Functions 没有本地功能。那将是理想的。
-
Azure 函数实际上可以在本地运行,但有一些限制(例如 Windows 10 或 Server 2016)。见Azure Functions Runtime
-
@BarrettNashville 你最终采用了什么解决方案?
标签: azure azure-data-factory azure-logic-apps power-automate azure-eventgrid