EC2 实例在设置生命周期挂钩后被终止

问题描述 投票:0回答:1

我正在使用 AWS CDK 将生命周期挂钩添加到我的 ALB,以便在实例终止或新实例启动时收到电子邮件通知。这就是我的代码的样子:

topic = sns.Topic(my_stack, "fleet_changes")
topic_hook = autoscaling_hooktargets.TopicHook(topic)

asg.add_lifecycle_hook(
    'instance-terminating-hook',
    lifecycle_transition=autoscaling.LifecycleTransition.INSTANCE_TERMINATING,
    lifecycle_hook_name="instance-terminating",
    notification_target=topic_hook,
    notification_metadata="INFO: An instance has been terminated"
)

asg.add_lifecycle_hook(
    'instance-launching-hook',
    lifecycle_transition=autoscaling.LifecycleTransition.INSTANCE_LAUNCHING,
    lifecycle_hook_name="instance-launching",
    notification_target=topic_hook,
    notification_metadata="INFO: A new instance has been launched"
)

这工作得很好,因为当实例终止或启动时我确实收到了通知。问题是实例每小时都会终止,当我删除生命周期挂钩时,这种情况就会停止发生。这是我在设置挂钩时在 ALB 事件中看到的内容:

At 2024-03-22T17:11:34Z an instance was taken out of service in response to a launch failure.

之后:

At 2024-03-22T17:12:35Z an instance was started in response to a difference between desired and actual capacity, increasing the capacity from 1 to 2.   

我检查了 Cloudwatch 中的应用程序日志,没有发现任何表明存在错误的内容,并且这些实例目前几乎没有任何活动。

知道罪魁祸首是什么吗?

谢谢你。

amazon-web-services amazon-ec2 aws-cdk amazon-elb
1个回答
0
投票

您必须在获得后完成生命周期操作。获取时使用类似以下内容:

aws autoscaling complete-lifecycle-action --lifecycle-action-result CONTINUE \
  --lifecycle-hook-name my-launch-hook --auto-scaling-group-name my-asg \
  --lifecycle-action-token bcd2f1b8-9a78-44d3-8a7a-4dd07d7cf635

您也可以将其放入 UserData 中以实现自动化。您必须在其实例配置文件中授予您的保险许可才能这样做。

    aws autoscaling complete-lifecycle-action --lifecycle-action-result CONTINUE \
  --instance-id i-1a2b3c4d --lifecycle-hook-name my-launch-hook \
  --auto-scaling-group-name my-asg
© www.soinside.com 2019 - 2024. All rights reserved.