ども、cloudpack の かっぱ (@inokara) です。
メモ
うんちく
describe_instances
メソッドの:filters
を利用するinstance-state-code
またはinstance-state-name
にて絞り込む
ちなみに、以下は instance-state-code
と instance-state-name
の比較。
instance-state-code | instance-state-name |
---|---|
0 | pending |
16 | running |
32 | shutting-down |
48 | terminated |
64 | stopping |
80 | stopped |
コード
#!/usr/bin/env ruby require 'aws-sdk' ec2 = AWS::EC2.new( :access_key_id => 'AKxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', :secret_access_key => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', :ec2_endpoint => 'ec2.ap-northeast-1.amazonaws.com', ).client # 0 (pending), 16 (running), 32 (shutting-down), 48 (terminated), 64 (stopping), and 80 (stopped) p ec2.describe_instances(:filters => [{ 'name' => 'instance-state-code', 'values' => ['16'] }]) # (pending | running | shutting-down | terminated | stopping | stopped). p ec2.describe_instances(:filters => [{ 'name' => 'instance-state-name', 'values' => ['running'] }])
さらに…
ステータスが Running な状態なインスタンスを取得したい場合には以下のように…
#!/usr/bin/env ruby (省略) i = ec2.describe_instances(:filters => [{ 'name' => 'instance-state-name', 'values' => ['running'] }]) p i.reservation_set[0][:instances_set][0][:instance_id]
実行すると以下のようにインスタンス ID が出力されます。
i-xxxxxxxx
取り急ぎ
メモでした。
ちなみに、describe-instances
からインスタンス ID を取り出すのってこんなに大変でしたっけ?
元記事はこちらです。
「AWS SDK for Ruby でインスタンスのステータスを取得するメモ」