私は、Boto3の理解とEC2インスタンスとの対話を行うためにipythonを使用しています。ここで私は、インスタンスを作成するために使用しているコードは次のとおりです。BOTO3を使用してEC2インスタンスのパブリックDNSを取得する
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インスタンスを起動し、私は、パブリックDNS名、IPおよびAWSコンソールから他の情報を取得することができます。しかし、私が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を返します。しかし、なぜ私はこれをすべて行う必要があるのか私には意味がありません。