Tôi đang sử dụng ipython để hiểu Boto3 và tương tác với các cá thể EC2. Đây là mã tôi đang sử dụng để tạo ra một ví dụ:Lấy ra các dns công khai của cá thể EC2 với 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
)
này bắt đầu một thể EC2 tốt, và tôi có thể có được tên DNS công cộng, ip và thông tin khác từ AWS console. Tuy nhiên, khi tôi cố gắng nhận DNS công khai bằng Boto, bằng cách thực hiện việc này:
new_instance[0].public_dns_name
Trả về dấu ngoặc kép trống. Tuy nhiên, các chi tiết cá thể khác, chẳng hạn như:
Trả về thông tin chính xác.
Bất kỳ ý tưởng nào? Cảm ơn.
EDIT:
Vì vậy, nếu tôi làm:
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
Sau đó, nó sẽ trở lại với DNS công cộng. Nhưng nó không có ý nghĩa với tôi tại sao tôi cần phải làm tất cả những điều này.