Recuperando dns públicos de instancia EC2 con BOTO3
Estoy usando ipython para comprender Boto3 e interactuar con instancias de EC2. Aquí está el código que estoy usando para crear una instancia:
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
)
Esto inicia una instancia EC2 bien, y puedo obtener el nombre DNS público, ip y otra información de la consola de AWS. Pero, cuando trato de obtener el DNS público usando Boto, al hacer esto:
new_instance[0].public_dns_name
Devuelve comillas en blanco. Sin embargo, otros detalles de la instancia, como:
new_instance[0].instance_type
Devuelve la información correcta.
¿Algunas ideas? Gracias.
EDITAR:
Entonces si lo hago:
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
Luego devolverá el DNS público. Pero no tiene sentido para mí por qué tengo que hacer todo esto.