【问题标题】:How to update EC2 instance state with boto3 resource如何使用 boto3 资源更新 EC2 实例状态
【发布时间】:2019-10-19 19:36:39
【问题描述】:

我正在用 boto3 编写一个 python 函数,它启动一个 EC2 实例,然后需要等到该实例运行。我了解这如何与客户一起工作,但我想用资源来做。 我尝试使用 for 循环检查 instance.state,但状态永远不会更新。所以我想我正在寻找某种刷新方法。

我看到有一个 wait_until_running() waiter,但它被锁定为 15 秒延迟。我想更频繁地投票。

【问题讨论】:

  • 您确定需要比每 15 秒更频繁地检查一次吗?考虑到启动 EC2 实例所需的延迟,这个间隔似乎是合理的。通过更频繁地拉低而获得预期的时间收益。
  • 我希望它尽可能快,因为我正在尝试立即通过 SSH 连接到机器。如果这是一个问题,我可以在服务员之前添加一个 time.sleep(5) 以减少服务器负载。如果它在 16 秒后启动,那将是很长的等待时间。

标签: python amazon-web-services amazon-ec2 boto3


【解决方案1】:

显然 WaiterConfig 设置也适用于资源,即使它仅针对客户端进行了记录。 wait_until_running(WaiterConfig = {'Delay': 2})

等待服务员之后,你仍然需要运行Instance.reload()来更新状态。

【讨论】:

  • 如果不运行Instance.reload()会怎样?我找不到运行与否的区别
  • 如果你不重新加载我认为某些属性会不准确,例如public_ip_address
  • 当我这样做Instance Start -> wait_until_running -> (without reload) -> print(instance.public_ip_address) 就没有问题了(IP地址与IP正确即可在 AWS EC2 控制台上看到)
猜你喜欢
  • 2018-03-11
  • 2017-02-28
  • 2015-12-28
  • 2020-09-30
  • 1970-01-01
  • 1970-01-01
  • 2016-11-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多