EC2作成後システムチェックとインスタンスステータスチェックが行われる
インスタンスステータスチェックが終わるまで待てば起動完了となる
インスタンスステータスチェックの結果はDescribeInstanceStatus APIで取得できる
- 使用API:DescribeInstanceStatus - Amazon Elastic Compute Cloud
- AWS SDKの使用クラスClass: AWS::EC2::Client — AWS SDK for Ruby
以下のようにインスタンスステータスチェックの結果を取得して完了するまで待てば良い
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