2016-12-09 10 views
0

Я использую ссылку this как учебник для запуска экземпляра. Ниже приведен мой код:Предоставляет ли AWS SDK архитектуру, основанную на событиях?

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

Выше кода запускаются экземпляры и ждут в цикле до тех пор, пока не будет запущено состояние экземпляра. Когда он работает, я делаю некоторую обработку на нем. Как вы можете видеть, я жду, пока экземпляр будет готов, прежде чем я смогу выполнить свою обработку. Это плохая идея, так как я опросу AWS каждые 10 секунд (модель опроса).

Имеет ли AWS SDK что-то встроенное, которое вызовет событие, когда экземпляр изменит его состояние (что-то вроде модели push)? Если да, можете ли вы поделиться тем, как это сделать?

ответ

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

+0

Удивительный .. +1 заставила меня в курсе 'события wait_until'. Это модель тяги: | – Abhishek