17

ipython を使用して Boto3 を理解し、EC2 インスタンスとやり取りしています。インスタンスを作成するために使用しているコードは次のとおりです。

import boto3

ec2 = boto3.resource('ec2')
client = boto3.client('ec2')


new_instance = ec2.create_instances(
    ImageId='ami-d05e75b8',
    MinCount=1,
    MaxCount=1,
    InstanceType='t2.micro',
    KeyName=<name_of_my_key>,
    SecurityGroups=['<security_group_name>'],
    DryRun = False
    )

これにより、EC2 インスタンスが正常に起動し、AWS コンソールからパブリック DNS 名、IP、およびその他の情報を取得できます。しかし、Boto を使用してパブリック DNS を取得しようとすると、次のようになります。

new_instance[0].public_dns_name

空白の引用符を返します。ただし、次のようなその他のインスタンスの詳細:

new_instance[0].instance_type

正しい情報を返します。

何か案は?ありがとう。

編集:

だから私がするなら:

def get_name(inst):
    client = boto3.client('ec2')
    response = client.describe_instances(InstanceIds = [inst[0].instance_id])
    foo = response['Reservations'][0]['Instances'][0]['NetworkInterfaces'][0]['Association']['PublicDnsName']
    return foo


foo = get_name(new_instance)
print foo

次に、パブリック DNS を返します。しかし、なぜこれをすべて行う必要があるのか​​ 、私には意味がありません。

4

3 に答える 3