在执行脚本后停止EC2实例

时间:2011-09-30 12:46:09

标签: cron amazon-web-services

我将ubuntu服务器(AWS ec2实例)系统配置为cronserver,9个cronjobs运行在4:15-7:15& 21:00-23:00。我在其他系统(ec2 intance)上写了一个cron作业,在7:15之后停止这个cronserver,并在21:00再次启动。我希望cronserver在执行最后一个脚本后自行停止。是否可以编写这样的脚本。

2 个答案:

答案 0 :(得分:3)

启动临时实例时,请指定

--instance-initiated-shutdown-behavior terminate

然后,当实例完成其所有任务时,只需运行等效的

sudo halt

sudo shutdown -h now

使用上面的标志,这将告诉实例从实例内部关闭应该终止实例(而不是仅仅停止它)。

答案 1 :(得分:1)

是的,您可以在最后一个脚本的末尾添加ec2stop命令。

你需要:

  • 安装ec2 api工具

  • 将您的AWS凭据放在intance上,或创建有权停止实例的IAM凭据

  • 获取实例ID,可能来自inIstance-data

另一种选择是将cron作业作为来自控制实例的命令运行。主要的cron工作可能如下所示:

  • 运行处理实例 -wait for sshd接受连接
  • ssh到处理实例,运行每个处理脚本
  • 停止处理实例

这种方法可以连续完成所有处理作业,使您的实例保持最短的时间。并且您不必将凭据放在实例上。

如果您的用例允许终止实例而不是停止实例,那么您可以使用EC2自动扩展替换启动/停止cron作业。它现在用于运行实例的运动时间表。

http://docs.amazonwebservices.com/AutoScaling/latest/DeveloperGuide/index.html?scaling_plan.html