Posted at

AWS SDK for RubyでEC2作成後に起動を待つ

More than 5 years have passed since last update.

EC2作成後システムチェックとインスタンスステータスチェックが行われる

インスタンスステータスチェックが終わるまで待てば起動完了となる

インスタンスステータスチェックの結果はDescribeInstanceStatus APIで取得できる

以下のようにインスタンスステータスチェックの結果を取得して完了するまで待てば良い

require 'aws-sdk'

ec2 = AWS::EC2.new(:proxy_uri => ENV['HTTP_PROXY'] || ENV['HTTP_PROXY'], :region => "ap-northeast-1")

# 略

created_instance = ec2.instances.create(ec2hash)

ec2info = ec2.client.describe_instance_status({"instance_ids" => [created_instance.instance_id]})
status = ec2info.instance_status_set[0].instance_status.details[0].status rescue nil

st_retry = 0
while status != "passed" do
sleep 15
ec2info = ec2.client.describe_instance_status({"instance_ids" => [created_instance.instance_id]})
status = ec2info.instance_status_set[0].instance_status.details[0].status rescue nil
st_retry += 1
raise "instance status is still bad" if st_retry >= 20
end