0

我使用链接作为启动实例的教程。以下是我的代码,

instance = resource.create_instances.first
sleep 10 until instance.state.name == "running"
//Do something once instance is up and running

上面的代码启动一个实例并在循环中等待,直到实例状态正在运行。一旦它运行,我就会对其进行一些处理。如您所见,我正在等待例如准备就绪,然后才能进行处理。这是一个坏主意,因为我每 10 秒轮询一次 AWS(轮询模型)。

AWS SDK 是否有内置的东西会在实例更改其状态时触发事件(类似于推送模型)?如果是的话,你能分享一下方法吗?

4

1 回答 1

1

SDK 确实提供了一项功能,但我不确定它使用的是什么模型(推或拉)。这可能是拉,但我不确定。无论型号如何,这是推荐的等待方式。

begin
  instance.wait_until(max_attempts:10, delay:10) {|instance|
    instance.state.name == 'running'
  }
rescue Aws::Waiters::Errors::WaiterFailed
  # resource did not enter the desired state in time
end

更多详细信息:http: //docs.aws.amazon.com/sdkforruby/api/Aws/Resources/Resource.html#wait_until-instance_method

于 2016-12-14T18:47:27.860 回答