Ich benutze Ipython, um ein Verständnis von Boto3 und die Interaktion mit EC2-Instanzen zu bekommen. Hier ist der Code Ich verwende eine Instanz zu erstellen:Abrufen öffentlicher DNS von EC2-Instanz mit BOTO3
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
)
Dies beginnt eine EC2-Instanz in Ordnung, und ich kann den öffentlichen DNS-Namen, IP und andere Informationen von der AWS-Konsole erhalten. Aber, wenn ich versuche, das öffentliche DNS mit Boto zu erhalten, indem ich dies tue:
Gibt leere Anführungszeichen zurück. Andere Instanzdetails wie:
new_instance[0].instance_type
Gibt die richtigen Informationen zurück.
Irgendwelche Ideen? Vielen Dank.
EDIT:
Also, wenn ich tun:
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
Dann wird es der Öffentlichkeit DNS zurückzukehren. Aber es ergibt für mich keinen Sinn, warum ich das alles machen muss.