我需要在我的实例终止时收到通知。我知道它可以通过cloudtrail完成,然后使用sns和sqs来获取它的电子邮件,如果你收到终止事件。
有更简单的方法吗?
任何解决方案都会受到赞赏,但我更喜欢使用boto。
虽然在实例终止时无法直接从Amazon EC2接收通知,但有几种方法可以实现:
当Auto Scaling管理的实例终止时,Auto Scaling可以发送通知。见:Configure Your Auto Scaling Group to Send Notifications
AWS Config还可以配置为在资源更改时发送简单通知服务(SNS)通知。这将发送许多通知,因此您需要检查并过滤通知以找到指示实例终止的通知。请参阅以下网址中的SNS参考:Set Up AWS Config Using the Console和Example Amazon SNS Notification and Email from AWS Config。
Amazon Simple Notification Service(SNS)还可以将消息推送到Amazon Queuing Service(SQS),可以使用boto python SDK轻松查询。
通过CloudTrail和CloudWatch Logs接收通知有些麻烦,因此我建议使用AWS Config方法。
现在,AWS在AWS CloudWatch的“事件”下引入了“规则”。在您的情况下,您可以选择EC2作为事件选择器,选择SNS或SQS作为目标。
根据AWS doc: Spot Instance Interruptions,可以汇集实例元数据以获得终止时间的近似值。您可以围绕它构建任何自定义监控解决方案。
> curl http://169.254.169.254/latest/meta-data/spot/instance-action
{"action": "stop", "time": "2017-09-18T08:22:00Z"}
如果未安排实例终止,则将返回http:400
。