在Windows ec2实例上运行批处理文件,然后在关机实例上运行?

时间:2018-08-29 18:26:27

标签: windows batch-file amazon-ec2 cron

我想每天运行的Windows ec2实例上有一个.bat文件。

有什么办法可以安排实例每天运行此文件,然后关闭ec2实例,而无需手动转到ec2管理控制台并启动实例?

1 个答案:

答案 0 :(得分:1)

这里有两个要求:

  • 每天在特定时间启动实例(这是我根据您每天关闭实例的意愿而做出的假设,因此需要打开它)
  • 运行脚本,然后关闭

选项1:启动和停止

Amazon CloudWatch Events可以按给定的时间表执行任务,例如每天执行一次。尽管它具有许多内置功能,但它不能本地启动实例。因此,将其配置为触发AWS Lambda函数。 Lambda函数可以通过一个API调用来启动实例。

实例启动时,请使用正常的Windows操作系统功能运行所需程序,例如:Automatically run program on Windows Server startup

程序运行完毕后,应向Windows操作系统发出命令,以关闭 Windows。以这种方式进行操作(而不是尝试安排关机)的好处是,程序将在激活任何关机之前运行完毕。只需确保将EC2实例配置为关机后停止(这是默认行为)。

选项2:启动并终止

代替启动和停止实例,您可以使用Amazon CloudWatch Events时间表启动新实例

传递所需的PowerShell脚本以在实例的用户数据中运行。该脚本可以安装和运行软件。

脚本完成后,应调用Windows OS命令关闭Windows。但是,这次配置关闭时终止,以便终止(删除)该实例。很好,因为上述时间表将在下次启动新实例。

此方法的好处是可以通过用户数据脚本完全配置软件配置以及每次应运行的内容,而不必启动实例,登录,更改脚本然后关闭。不必在一天的大部分时间里都保持实例停止状态。

选项3:重新考虑您的计划,并实现无服务器!

代替使用Amazon EC2实例运行脚本,而是研究运行AWS Lambda函数的功能。 Lambda函数可能能够执行所需的所有处理,而不必启动/启动/停止/终止实例。它也便宜!

某些限制可能会排除此选项(例如,最长5分钟的运行时间,限制500MB磁盘空间),但它应该是您探索的第一个选项,而不是启动/停止Amazon EC2实例。