通过实例元数据检索目标生命周期状态 - Amazon EC2 Auto Scaling
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

通过实例元数据检索目标生命周期状态

重要

Amazon EC2 Auto Scaling 于 2022 年 3 月 10 日开始生成目标生命周期状态。如果您的实例在该日期之后转换为其中一个目标生命周期状态,则您的实例元数据中将显示该目标生命周期状态项目。否则,它不存在,并且您会收到 HTTP 404 错误。

您启动的每个 Auto Scaling 实例都经历多个生命周期状态。如果您想对实例上的自定义操作进行微调,以便对特定的生命周期状态转换采取行动,则可以通过实例元数据检索目标生命周期状态来实现此目标。例如,您可以在为暖池中的实例创建生命周期操作时检索目标生命周期状态,以便在重启时将休眠或已停止的实例附加到集群。

Auto Scaling 实例生命周期有两个主要的稳定状态:InServiceTerminated,还有两个附加的稳定状态:DetachedStandby。如果使用暖池,生命周期还有四个额外的稳定状态:Warmed:HibernatedWarmed:RunningWarmed:StoppedWarmed:Terminated

当实例准备转换到之前的稳定状态之一时,Amazon EC2 Auto Scaling 会更新实例元数据项目 autoscaling/target-lifecycle-state 的值。要从实例内获取目标生命周期状态,必须使用实例元数据服务从实例元数据中检索它。

注意

实例元数据是有关 Amazon EC2 实例的数据,应用程序可以用它来查询实例信息。实例元数据服务是实例上的组件,本地代码用它来访问实例元数据。本地代码可以包括实例上运行的用户数据脚本或应用程序。

本地代码可以使用以下两种方法之一从正在运行的实例访问实例元数据:实例元数据服务版本 1 (IMDSv1) 或实例元数据服务版本 2 (IMDSv2)。IMDSv2 使用面向会话的请求,并防范了多种类型的漏洞,这些漏洞可用于尝试访问实例元数据。有关这两种方法的详细信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南 中的使用 IMDSv2

IMDSv2
TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \ && curl -H "X-aws-ec2-metadata-token: $TOKEN" -v http://169.254.169.254/latest/meta-data/autoscaling/target-lifecycle-state
IMDSv1
curl http://169.254.169.254/latest/meta-data/autoscaling/target-lifecycle-state

下面是示例输出。

InService

目标生命周期状态是实例转换到的状态。当前生命周期状态是实例所处的状态。在生命周期操作完成并且实例完成向目标生命周期状态的转换之后,这两个状态可能是相同的。您无法从实例元数据中检索实例的当前生命周期状态。

有关向您展示如何在使用目标生命周期状态的用户数据脚本中使用自定义操作创建生命周期钩子的教程,请参阅 教程:配置用户数据以通过实例元数据检索目标生命周期状态

有关可以用来配置或管理实例的实例元数据类别的更多信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的实例元数据类别。有关检索实例元数据的更多信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的检索实例元数据