与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”
答案 0 :(得分:0)
问题在于client.run_instances不返回EC2实例列表,而是返回实例字典列表。
要转换为返回EC2实例,我在上面的代码之后做了以下操作:
ec2 = boto3.resource('ec2')
inst = ec2.Instance(instance['InstanceId'])
然后inst.load()工作并上传公共DNS IP