gpt4 book ai didi

amazon-web-services - 如何从自身内部检测 aws 实例的状态?

转载 作者:行者123 更新时间:2023-12-05 00:19:27 25 4
gpt4 key购买 nike

我在 EC2 中有 Auto Scaling 组,我想在实例终止时检测它的状态,以便在实例终止之前开始导出日志文件。

我知道一种方法是使用自动缩放生命周期 Hook ,但据我了解,我必须使用外部监视器,然后必须使用 ssh 进入实例并导出日志文件。理想情况下,我想找到一种如何从内部检测实例状态的方法(当自动缩放组发送命令终止它时),这样它就可以自行导出而不与任何其他实例通信。任何人都会知道是否可以这样做,如果可以,我可以从哪里开始?

最佳答案

这是一个解决方案,灵感来自您检查状态的想法......

获取实例ID
http://169.254.169.254/latest/meta-data/instance-id
获取实例的生命周期状态

aws autoscaling describe-auto-scaling-instances --instance-ids <instance-id>

它返回如下内容:
{
"AutoScalingInstances": [
{
"InstanceId": "i-4ba0837f",
"HealthStatus": "HEALTHY",
"AvailabilityZone": "us-west-2c",
"AutoScalingGroupName": "my-auto-scaling-group",
"LifecycleState": "InService"
}
]
}

如果激活了生命周期 Hook , LifecycleState字段将是 Pending:Wait当它被终止时。这将是您的应用程序关闭、导出日志文件等的信号。

信号准备终止

一旦应用程序完成了它的终止事件,它就可以发出它准备终止的信号。这可以通过以下方式完成:
  • 创建生命周期钩子(Hook)时定义心跳值,之后实例自动终止
  • 在关机过程中延长心跳(见下文)
  • 准备关机时,停止发送心跳

  • 心跳调用将是:
    aws autoscaling record-lifecycle-action-heartbeat --lifecycle-hook-name my-lifecycle-hook --instance-id my-instance

    总的来说,上述步骤应该允许一个实例检测到它自己的状态并发出它自己准备被终止的信号。 (虽然,准确地说,“信号”实际上是“没有”继​​续运行的信号。

    关于amazon-web-services - 如何从自身内部检测 aws 实例的状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35914004/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com