在 EC2 终止时调用脚本

2024-02-14

我必须在 AWS 自动缩放缩减事件期间采取某些操作。ec2 实例应该能够将一些日志和报告保存到 S3 存储桶。这可能需要 5 到 15 分钟。

我已经有一个在终止时调用的脚本:

ln -s /etc/ec2-termination /etc/rc0.d/S01ec2-termination

然而剧本在5分钟内突然结束。我正在考虑利用 AWS LifeCycle hooks 来延长 EC2 的生命周期。 文档并不清楚如何以类似于用户数据脚本的方式调用脚本。

有多种方法可以使用 AWS lambda 或 SNS 来接收通知。这可以潜在地用于通知 ec2。

但是,我想知道是否有更简单的解决方案来解决这个问题。有没有一种方法可以使用生命周期挂钩注册脚本,该脚本在缩减事件中被调用。


No.

实例被终止的事实是在 AWS 基础设施内进行管理的。 Auto Scaling 无法“进入”EC2 实例来触发任何操作。

相反,您需要在实例上编写一些代码来检查实例是否处于终止状态,然后采取适当的操作。

一个例子可能是:

  • 生命周期钩子发送一个通过 Amazon SNS 通知
  • 亚马逊社交网络服务触发 AWS Lambda 函数
  • Lambda 函数可以为实例添加标签(例如终止=是)
  • EC2 实例上的脚本每 15 秒触发一次检查标签与 EC2 实例(在其上运行)关联。如果找到标签,则会触发关闭过程。

(请注意,脚本在关闭过程中不会再次触发,否则它可能会尝试每 15 秒执行一次关闭过程!)

或者,将关闭信息存储在 Systems Manager 参数存储或数据库中,但使用标签似乎具有很好的可扩展性!

更新后的版本:

感谢 raevilman 的想法:

  • 生命周期钩子发送一个通过 Amazon SNS 通知
  • 亚马逊社交网络服务触发 AWS Lambda 函数
  • Lambda 函数调用AWS Systems Manager 运行命令 https://docs.aws.amazon.com/systems-manager/latest/userguide/execute-remote-commands.html在实例上触发代码

简单多了!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 EC2 终止时调用脚本 的相关文章

随机推荐