python - 如何通过 BOTO3 程序从创建的 AWS 实例中检索公共 DNS?
问题描述
与使用 BOTO3 检索 EC2 实例的公共 dns 中存在相同的问题
首先我创建并运行一个实例:
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
解决方案
问题是 client.run_instances 不返回 EC2 实例列表,它返回实例字典列表。
要将返回转换为 EC2 实例,我在上述代码之后执行了以下操作:
ec2 = boto3.resource('ec2')
inst = ec2.Instance(instance['InstanceId'])
然后 inst.load() 工作并上传公共 DNS IP
推荐阅读
- javascript - 使用后退按钮后离子标签消失
- python - 使用bidaf模型提取答案的置信度得分
- algorithm - 矩阵 n*m 中的最短源到目标路径
- django - 如何防止用户在填写表单之前访问其他 URL?
- java - 参考 = FirebaseDatabase.getInstance().getReference("Users").child(userID); 此行会产生错误。我如何解决这个问题?
- jsf - f:selectItems from POJO 和 grouping - 我只得到 String 而不是 POJO
- javafx - 如何在 JavaFx 中使用 CSS 设置 GridPane 的样式
- python - Python 计数器对象出人意料地是全球性的
- css - 网格模板区域不呈现 Vue JS
- java - 从具有相似对象 ID 的两个列表中获取地图