如何通过BOTO3程序从创建的AWS实例中检索公共DNS?

时间:2018-10-24 17:37:33

标签: python amazon-web-services amazon-ec2 boto3

Retrieving public dns of EC2 instance with BOTO3中的问题相同

首先,我创建并运行一个实例:

r = client.run_instances(
ImageId=aws_config['base_ami'], 
MinCount=1, 
MaxCount=1,
KeyName=aws_config['key_name'],
InstanceType="t2.small",
NetworkInterfaces=[
{
    'DeviceIndex': 0,
    'SubnetId' : aws_config['subnet'],
    'Groups': aws_config['security_groups'],
    'AssociatePublicIpAddress': True            
}]                     
)
instance = r["Instances"][0]

答案建议使用instance.load()将新的公共DNS IP上传到实例。顺便说一下,我可以从AWS控制台看到公共IP

在我的程序中,instance.load()之后有AttributeError

instance.load()

AttributeError:“ dict”对象没有属性“ load”

1 个答案:

答案 0 :(得分:0)

问题在于client.run_instances不返回EC2实例列表,而是返回实例字典列表。

要转换为返回EC2实例,我在上面的代码之后做了以下操作:

ec2 = boto3.resource('ec2')
inst = ec2.Instance(instance['InstanceId']) 

然后inst.load()工作并上传公共DNS IP