能否获取EC2实例的公共IP地址?



嗨,我是新的python代码,想知道是否有一种方法来创建一个实例,然后打印IP地址回控制台,目前我可以创建一个实例,它打印实例ID回

#!/usr/bin/env python3
import boto3
ec2 = boto3.resource('ec2')
instance = ec2.create_instances(
ImageId='ami-0713f98de93617bb4',
MinCount=1,
MaxCount=1,
KeyName='JamieTest',
SecurityGroupIds=['sg-0273f9f172ba795ab'],
InstanceType='t2.nano')
print ('Your instance has been created, the instance ID is :' + instance[0].id)

create_instances()返回一个ec2的列表。实例对象和每个实例都可以有一个public_ip_address属性(如果实例有一个公共IP地址)。

因此,

print ('Your instance public IP address is : ' + instance[0].public_ip_address)

您可以使用describe_instances()方法:

import time
session = boto3.Session(profile_name='default')
ec2_client = session.client('ec2')
instance_id = instance[0].id #your instance id here
cycle = True
while cycle:
time.sleep(0.1)  #any value of your choice              
allinstances = ec2_client.describe_instances().get('Reservations')
for i, group in enumerate(allinstances):
for j, instance in enumerate(group.get('Instances')):
if instance.get("InstanceId") == instance_id:
externalip = instance.get('PublicIpAddress')
if externalip is not None: cycle = False
print('External IP:', externalip)

最新更新