我正在使用this链接作为启动实例的教程。以下是我的代码,
instance = resource.create_instances.first
sleep 10 until instance.state.name == "running"
//Do something once instance is up and running
上面的代码启动一个实例并在循环中等待,直到实例状态正在运行。一旦它运行我就做了一些处理。正如您所看到的,我正在等待实例准备好才能进行处理。这是一个坏主意,因为我每隔10秒轮询一次AWS(轮询模型)。
AWS SDK是否内置了一些内容,当实例更改状态时会触发事件(类似推模型)?如果是的话,请你分享一下这样做的方法吗?
答案 0 :(得分: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