我们有很多作业必须在本地计算机上运行,但我们希望能够从云中运行和管理这些作业。这些不是计算机管理类型的工作。它们更多的是与业务相关的任务。
我们认真考虑了几种不同的方法:
- 逻辑应用/Microsoft Flow 可以在local computer 上的文件夹中创建文件。使用On-Premises Data Gateway 。然后,我们可以使用该文件作为持续运行并监视该文件夹的本地脚本的触发器。但是,这感觉很笨拙,因为逻辑应用不会直接触发脚本,而是仅通过简单的文件创建事件触发。这种方法还要求我们在逻辑应用中使用单个用户名/密码组合,并记住保持该密码最新。
- Azure 事件网格可以 now将事件从 Azure 转发到混合连接,混合连接将该事件传输到本地计算机上的特定端口。理论上我们可以有一个 PowerShell 脚本 monitoring该端口并处理传入事件。对我来说,这似乎是从云端在本地计算机上触发脚本的最佳方式,但我不确定这是否真的会按照我预期的方式工作。
我们还研究了其他一些可以利用 Azure 来完成此类任务的方法:
- Azure 自动化 Hybrid Runbooks可以触发本地作业。然而,这项服务似乎主要用于管理任务,而不是日常流程。
- Azure DevOps 可以触发 scripts使用 Self-Hosted Agents 在本地计算机上运行。但是,我不认为 Azure DevOps 的设计目的是按设定的时间表触发生产流程。它仅适用于软件开发构建管道。
- Azure 数据工厂 Integration Runtime允许您将数据从本地 SQL Server 移动到云。这似乎是将数据从本地移动到云的理想平台,但我不认为 Azure 数据工厂可以从云触发实际的本地脚本。我认为它只能与本地 SQL Server 一起使用。
所以我试图在这些方法中做出决定,或者看看是否有更好的方法。
我想我将尝试 Azure 事件网格方法并在一些本地计算机上安装混合连接管理器,然后让一些 PowerShell 脚本全天候运行以监视指定端口。将 Azure 事件网格中的事件路由到混合连接管理器后,它会将其路由到 PowerShell 正在监听的端口,然后 PowerShell 可以触发需要在本地计算机上运行的作业。
我真的很喜欢这种方法,因为我现在可以使用 Azure 事件网格将本地计算机上的本地事件连接到 Azure 和第三方事件。对我来说,这开启了不同系统之间集成的可能性世界。但在采用这种方法之前,我想确保它是最好的方法。
最佳答案
目前尚不清楚您将从云端发送什么类型的数据。你需要考虑一下
1) 您想要拉动还是推送功能来触发任务? 如果您想在本地计算机上进行维护,我会推荐 Pull。除此之外,您的本地计算机容量有限,无法根据推送的负载进行扩展。
2) 您想安装额外的服务器软件吗? Azure 服务总线不需要任何网关即可在本地工作。
Azure Service Bus可以使用 Windows 服务实现,IIS 始终在线应用程序,它仍然为您提供与第 3 方软件集成的灵 active ,因为它可以与逻辑应用程序、Flow 和 Azure Functions 一起使用,可以与 Azure 服务总线一起使用。
关于azure - Azure 能否触发本地脚本按计划运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55924319/