【问题标题】:How to terminate EC2 instance from user-data script on the instance itself immediately?如何立即从实例本身的用户数据脚本终止 EC2 实例?
【发布时间】:2021-12-29 18:09:44
【问题描述】:

我有一些用户数据脚本,用于在我的 EC2 实例上配置一些应用程序。 如果在该脚本运行期间发生某种情况,我希望立即终止一个新实例。

我已经在脚本中尝试了以下两个命令。但是,直到发出命令 10+ 分钟后才会终止。

aws autoscaling terminate-instance-in-auto-scaling-group --instance-id $instanceid --no-should-decrement-desired-capacity


aws ec2 terminate-instances --instance-ids $instanceid 

有什么方法可以强制终止提前发生吗?

【问题讨论】:

    标签: amazon-web-services amazon-ec2 aws-cli


    【解决方案1】:

    您可以简单地调用操作系统并告诉它停止实例,而不是要求 Amazon EC2 服务终止实例:

    sudo shutdown now -h
    

    -h 告诉它“停止”虚拟硬件,这会向 EC2 实例发出计算机现在已关闭的信号,就像您的家用计算机在执行“关闭”命令后自行关闭一样。)

    根据实例的配置Shutdown Behavior,它将进入StoppedTerminated状态。

    我注意到您正在使用 Auto Scaling。如果 Auto Scaling 注意到某个实例已停止/终止,它将自动启动替换。但是,检测到这一点并启动替换可能需要几分钟时间。

    【讨论】:

    • 根据 AWS 文档,我相信您明确不想要 -h
    • "halt 命令不会启动关闭。如果使用,实例不会终止;相反,它将 CPU 置于 HLT 中并且实例保持运行。"
    • 嗨@jordanm!我的经验是相反的。如果-h 命令 被使用,那么操作系统会停止,但实例不会停止。我刚刚通过启动一个 EC2 实例,然后发出 sudo shutdown now -h 命令对此进行了测试。不久之后,实例进入Stopped 状态。请注意,您引用的文档指的是halt 命令,而不是shutdown 命令。
    • 这不是我测试过的东西,所以我相信你的结果。关闭命令的联机帮助页说 -h 使其行为类似于 halt 命令,而不是默认的 poweroff 命令。我之前发布的引用来自这个文档:docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/…
    • 搜索了一下建议你可以使用shutdown /s,但我没有尝试过。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-01
    • 2017-01-15
    • 2020-03-16
    • 1970-01-01
    相关资源
    最近更新 更多