【发布时间】:2019-03-25 05:44:56
【问题描述】:
如果用于终止实例的 lambda 耗尽机制未在 cloudformation 中为生命周期挂钩设置的 HeartbeatTimeout 参数内完成,则需要让 EC2 实例运行。
我有一个 lambda 函数,它会在 cloudformation 中触发缩减警报时耗尽 EC2 实例并终止它。我目前使用 LifeCycle 挂钩来终止我的 cloudformation 中的实例。但是,我知道生命周期挂钩有一个 HeartbeatTimeout 参数,当 lambda 耗尽机制在此期间内未完成时,该参数会终止实例。如果 lambda 无法在 HeartbeatTimeout 内耗尽实例,我不想杀死该实例,因为仍有任务在此运行。我想中止实例终止并让实例在这种情况下运行,有什么办法吗?
这是 cloudformation 中的生命周期钩子
"Terminationhook": {
"Type": "AWS::AutoScaling::LifecycleHook",
"Properties": {
"AutoScalingGroupName": { "Ref": "Cluster" },
"DefaultResult": "ABANDON",
"HeartbeatTimeout": "3600",
"LifecycleTransition": "autoscaling:EC2_INSTANCE_TERMINATING",
"NotificationTargetARN": { "Ref" : "SNSTOPIC"},
"RoleARN": {
"Fn::GetAtt": [
"Role",
"Arn"
]
}
},
"DependsOn": "SNSTOPIC"
}
如果 lambda 在 3600 秒的 HeartbeatTimeout 内没有耗尽实例,那么我想中止实例终止
【问题讨论】:
标签: amazon-web-services amazon-ec2 aws-lambda amazon-ecs