当我进入 EC2 控制台时,我单击以下之一:
- 关闭
- 终止
- 重启
- 开始
...我想在我的“Director”机器上收到一条消息,例如,该实例正在启动,它正在关闭,实际上无需轮询所有状态来自 API。
原因是,我使用 API 运行自己的 Nagios 监控,所以我希望主管机器接收/捕获事件,并安排 Nagios 的停机时间。
此外,如果是“终止”,Director 将以删除节点的方式更新 Chef 服务器。
另一个原因是,非常频繁地轮询状态对 API 来说非常有限,我无法发出连续请求,只能每 1-5 分钟发出一次。但这样一来,如果我自己从控制台终止实例,我需要很长时间才能真正发现这些信息,并相应地更新其他服务。
目前我正在研究是否可以在 Linux 实例上使用关闭脚本,该脚本将对 Director 进行远程 API 调用,同时 Director 也会轮询状态。但是,最好的方法是直接从 EC2 中获取消息队列,而无需编写额外的 API,只要有关于实例事件的可靠通知即可。
除了 Nagios 之外,我更喜欢使用 AWS 功能来实现此目的。
答案1
您需要自行处理。无法将此类钩子添加到 AWS API 操作中。
无需使用 AWS 控制面板,只需通过您选择的脚本语言以编程方式执行所有这些操作即可。然后,您可以确保在调用 AWS API 之前根据需要准备好环境。
答案2
AWS 最近推出了一项解决此问题的功能 - CloudWatch Events:https://aws.amazon.com/blogs/aws/new-cloudwatch-events-track-and-respond-to-changes-to-your-aws-resources/