質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

1回答

1852閲覧

Running状態のEC2の取得について

tkya

総合スコア8

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2016/08/09 07:23

###前提・実現したいこと
Rubyからaws-sdkを使って、AWS上の起動中EC2インスタンスの取得を考えています。

サンプルコードについて調べていたら、以下を見つけたのですが、
具体的に、どのような操作を行っているのでしょうか。

describe_istancesの部分で、running状態のインスタンスを絞り、変数に代入しているところまでは
理解できるのですが、その後の出力部分、reservation_set[0]以降で実行している操作について
ご教示願えませんでしょうか。
instances_setや、instance_id等について、マニュアルで調べてみたのですが、
理解ができず。。
実際に実行をしてみると、AWS上で起動中となっているインスタンスのうち、
1インスタンスのみ、IDが表示されました。
初歩的な質問で恐縮ですが、お願い致します。

###該当のソースコード

i = ec2.describe_instances(:filters => [{ 'name' => 'instance-state-name', 'values' => ['running'] }]) p i.reservation_set[0][:instances_set][0][:instance_id]

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

aws-sdkの結果はJSONで返ってきます。
そのJSONを言語の構造体にマッピングしているだけです。

以下の結果でいうと、
Reservations[0].Instances[0]. InstanceId
をpしているだけとなります。

{ "Reservations": [ { "OwnerId": "XXXXXXXXXXXX", "ReservationId": "r-XXXXXXXX", "Groups": [ { "GroupName": "XXXX", "GroupId": "sg-XXXXXXXX" } ], "Instances": [ { "Monitoring": { "State": "disabled" }, "PublicDnsName": "ec2-XX-XX-XX-XX.ap-northeast-1.compute.amazonaws.com", "State": { "Code": 16, "Name": "running" }, "EbsOptimized": false, "LaunchTime": "2015-XX-XXTXX:XX:XX.000Z", "PublicIpAddress": "XX.XX.XX.XX", "PrivateIpAddress": "XX.XX.XX.XX", "ProductCodes": [], "StateTransitionReason": "", "InstanceId": "i-XXXXXXXX", "ImageId": "ami-XXXXXXXX", "PrivateDnsName": "ip-XX-XX-XX-XX.ap-northeast-1.compute.internal", "KeyName": "XXXXXXXX", "SecurityGroups": [ { "GroupName": "XXXX", "GroupId": "sg-XXXXXXXX" } ], "ClientToken": "XXXX", "InstanceType": "c3.2xlarge", "NetworkInterfaces": [], "Placement": { "Tenancy": "default", "GroupName": "", "AvailabilityZone": "ap-northeast-1b" }, "Hypervisor": "xen", "BlockDeviceMappings": [], "Architecture": "x86_64", "RootDeviceType": "instance-store", "VirtualizationType": "hvm", "Tags": [ { "Value": "XXXXXXXX", "Key": "Name" }, { "Value": "XXXXXXXX", "Key": "Project" } ], "AmiLaunchIndex": 0 } ] }, { "OwnerId": "XXXXXXXXXXXX", "ReservationId": "r-XXXXXXXX", "Groups": [], "Instances": [ { "Monitoring": { "State": "disabled" }, "PublicDnsName": "ec2-XX-XX-XX-XX.ap-northeast-1.compute.amazonaws.com", "State": { "Code": 16, "Name": "running" }, "EbsOptimized": false, "LaunchTime": "XXXX-XX-XXTXX:XX:XX.000Z", "PublicIpAddress": "XX.XX.XX.XX", "PrivateIpAddress": "XX.XX.XX.XX", "ProductCodes": [], "VpcId": "vpc-XXXXXXXX", "StateTransitionReason": "", "InstanceId": "i-XXXXXXXX", "ImageId": "ami-XXXXXXXX", "PrivateDnsName": "ip-XX-XX-XX-XX.ap-northeast-1.compute.internal", "KeyName": "XXXXXXXX", "SecurityGroups": [ { "GroupName": "XXXXXXXX", "GroupId": "sg-XXXXXXXX" } ], "ClientToken": "XXXXXXXX", "SubnetId": "subnet-XXXXXXXX", "InstanceType": "m3.large", "NetworkInterfaces": [ { "Status": "in-use", "MacAddress": "XX:XX:XX:XX:XX:XX", "SourceDestCheck": true, "VpcId": "vpc-XXXXXXXX", "Description": "Primary network interface", "Association": { "PublicIp": "XX.XX.XX.XX", "PublicDnsName": "ec2-XX-XX-XX-XX.ap-northeast-1.compute.amazonaws.com", "IpOwnerId": "amazon" }, "NetworkInterfaceId": "eni-XXXXXXXX", "PrivateIpAddresses": [ { "PrivateDnsName": "ip-XX-XX-XX-XX.ap-northeast-1.compute.internal", "Association": { "PublicIp": "XX.XX.XX.XX", "PublicDnsName": "ec2-XX-XX-XX-XX.ap-northeast-1.compute.amazonaws.com", "IpOwnerId": "amazon" }, "Primary": true, "PrivateIpAddress": "XX.XX.XX.XX" } ], "PrivateDnsName": "ip-XX-XX-XX-XX.ap-northeast-1.compute.internal", "Attachment": { "Status": "attached", "DeviceIndex": 0, "DeleteOnTermination": true, "AttachmentId": "eni-attach-XXXXXXXX", "AttachTime": "20XX-XX-XXTXX:XX:XX.000Z" }, "Groups": [ { "GroupName": "XXXXXXXX", "GroupId": "sg-XXXXXXXX" } ], "SubnetId": "subnet-XXXXXXXX", "OwnerId": "XXXXXXXX", "PrivateIpAddress": "XX.XX.XX.XX" } ], "SourceDestCheck": true, "Placement": { "Tenancy": "default", "GroupName": "", "AvailabilityZone": "ap-northeast-1b" }, "Hypervisor": "xen", "BlockDeviceMappings": [ { "DeviceName": "/dev/xvda", "Ebs": { "Status": "attached", "DeleteOnTermination": true, "VolumeId": "vol-XXXXXXXX", "AttachTime": "20XX-XX-XXTXX:XX:XX.000Z" } } ], "Architecture": "x86_64", "RootDeviceType": "ebs", "RootDeviceName": "/dev/xvda", "VirtualizationType": "hvm", "Tags": [ { "Value": "XXXXXXXX", "Key": "Project" }, { "Value": "XXXXXXXX", "Key": "Name" } ], "AmiLaunchIndex": 0 } ] } ] }

投稿2016/08/09 09:22

moonphase

総合スコア6621

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tkya

2016/08/09 10:48

ありがとうございます。凄くわかりやすいです。 2点教えていただきたいのですが、 1. Reservations[0].Instances[0]. InstanceId  このカッコ内の数字は何を表しているのでしょうか? 2. reservation_set = Reservations  このように結びつきがあると認識いたしましたが、  何か公式なマニュアルなどで示されているのでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問