Я использую ipython, чтобы получить представление о Boto3 и взаимодействовать с экземплярами EC2. Вот код, я использую для создания экземпляра:Получение публичных dns экземпляра EC2 с 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
)
Это запускает экземпляр EC2 прекрасно, и я могу получить имя общественного DNS, IP и другую информацию из консоли AWS. Но, когда я пытаюсь получить публичный DNS с помощью Boto, выполните следующие действия:
new_instance[0].public_dns_name
Возвращает пустые кавычки. Тем не менее, данные других инстанций, такие как:
new_instance[0].instance_type
Возвращает правильную информацию.
Любые идеи? Благодарю.
EDIT:
Так что, если я делаю:
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. Но для меня не имеет смысла, зачем мне все это делать.