【问题标题】:Amazon EC2: How to detect rebooting state through API as in AWS consoleAmazon EC2:如何在 AWS 控制台中通过 API 检测重启状态
【发布时间】:2013-03-13 21:10:22
【问题描述】:

在 AWS 控制台的 EC2 面板中,当您(通过控制台)重新启动实例时,状态列会从“正在运行”变为“正在重新启动”,然后在重新启动完成后又变回“正在运行”。

在 Amazon EC2 API 中,没有“正在重新启动”这样的状态。唯一可用的选项是“正在运行”、“待定”、“已停止”、“停止”、“关闭”和“终止”。检查实例状态的 API 在重启时也会返回“status:ok”。

我如何使用 API 知道启动重启的实例已完成并再次正常运行?必须有一些信息可以在重新启动状态期间检查,知道重新启动已启动。

提前致谢,

【问题讨论】:

  • 你可以通过拉取一些 URL 来 ping 实例或检测实例的健康状况吗?
  • 并非所有实例都启用了 ping 或 url。
  • 您能否添加到您的实例脚本中,该脚本将在启动时将消息推送到 SNS?

标签: api amazon-web-services amazon-ec2 reboot


【解决方案1】:

我认为您从 cmets 获得的一般要点是,仅仅因为实例已重新启动,并不意味着它以干净的状态启动,以便准备好执行工作。

因此,您确实应该在启动时进行某种运行状况监视器或健全性检查,以表明您的应用程序实际上正在正常运行(或准备好运行)。然后,您可以查询此监视器以确定事情是否按预期运行。

【讨论】:

  • 嗯,我并不总是控制运行哪些应用程序,有时实例位于没有公共 IP 的 VPC 中。我正在寻找 Amazon AWS 控制台所做的那种事情,它独立于机器中运行的内容。
【解决方案2】:

感谢大家的建议。我终于“逆向工程”了 AWS 控制台 JavaScript 代码,他就是:

> AWS.ioc.Configuration.getInstance("/ec2/instances/rebootInstances#controller").subscribe("changed",
> function() { var o =
> m.dataTable.getRecords(m.dataTable.getSelectedRows());
> m.dataTable.setColumn(o, "instanceState", "rebooting");
> i.rebooting.fire(o); YAHOO.lang.later(60000, m.dataTable, function(p,
> q, r) {
>                  m.dataTable.setColumn(p, q, r);
>                  i.rebooted.fire(p)
>                  }, [o, "instanceState", "running"], false) });

可以看出,只是超时60秒(60000毫秒)...

【讨论】:

    猜你喜欢
    • 2016-05-07
    • 2012-12-27
    • 1970-01-01
    • 1970-01-01
    • 2017-07-05
    • 2014-02-09
    • 1970-01-01
    • 2022-11-14
    • 2020-01-09
    相关资源
    最近更新 更多