【发布时间】:2019-02-04 15:03:29
【问题描述】:
我想每天运行一个 Windows ec2 实例上的 .bat 文件。
有没有办法安排实例每天运行此文件,然后关闭 ec2 实例,而无需手动进入 ec2 管理控制台并启动实例?
【问题讨论】:
标签: windows batch-file amazon-ec2 cron
我想每天运行一个 Windows ec2 实例上的 .bat 文件。
有没有办法安排实例每天运行此文件,然后关闭 ec2 实例,而无需手动进入 ec2 管理控制台并启动实例?
【问题讨论】:
标签: windows batch-file amazon-ec2 cron
这里有两个要求:
选项 1:启动和停止
Amazon CloudWatch Events 可以按照给定的计划执行任务,例如每天一次。虽然它具有许多内置功能,但它不能原生启动实例。因此,将其配置为触发 AWS Lambda 函数。 Lambda 函数可以通过单个 API 调用启动实例。
实例启动时,使用正常的 Windows 操作系统功能运行您想要的程序,例如:Automatically run program on Windows Server startup
当程序完成运行后,它应该向 Windows 操作系统发出命令以关闭 Windows。这样做的好处(而不是试图安排关机)是程序将在任何关机被激活之前运行完成。请务必将 EC2 实例配置为 Stop on Shutdown(这是默认行为)。
选项 2:启动和终止
您可以使用 Amazon CloudWatch Events 计划启动新实例,而不是启动和停止实例。
传递所需的 PowerShell 脚本以在实例的用户数据中运行。此脚本可以安装和运行软件。
脚本完成后,它应该调用 Windows 操作系统命令来关闭 Windows。但是,这次配置 Terminate on Shutdown 以便终止(删除)实例。这很好,因为上述时间表将在下次启动一个新实例。
这种方法的好处是软件配置以及每次应该运行的内容可以通过用户数据脚本进行完全配置,而不必启动实例、登录、更改脚本然后关闭。没有必要为了在一天的大部分时间里停止而保留一个实例。
选项 3:重新考虑您的计划并使用无服务器!
不要使用 Amazon EC2 实例来运行脚本,而是研究运行 AWS Lambda 函数的能力。 Lambda 函数可能能够完成您想要的所有处理,而无需启动/启动/停止/终止实例。它也更便宜!
某些限制可能会排除此选项(例如最长 5 分钟的运行时间,500MB 磁盘空间的限制),但它应该是您探索的第一个选项,而不是启动/停止 Amazon EC2 实例。
【讨论】: