###前提・実現したいこと
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ページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答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
総合スコア6621
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/08/09 10:48