使用boto3 Python SDK返回AWS EC2可用性区域属性
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用boto3 Python SDK返回AWS EC2可用性区域属性相关的知识,希望对你有一定的参考价值。
[我正在尝试使用EC2
中的AWS
boto3
调用返回有关API
帐户中所有Python
实例的信息,但我无法显示availability_zone
资源。
例如,当我可以使用以下代码成功迭代所有EC2
实例时:
ec2 = boto3.resource('ec2')
output = defaultdict()
for instance in ec2.instances.all()
for iface in instance.network_interfaces:
output[instance.id] = {
'Instance ID': instance.id,
'Subnet ID': iface.subnet_id
}
我省去了其余的代码,但是上面的工作并输出了我随后使用csv
Pandas
放入.to_csv
文件中的那些资源的值。
[当我尝试在Python
dictionary
中添加以下内容作为值时:
'Availability Zone': instance.availability_zone
我收到以下错误:
AttributeError: 'ec2.Instance' object has no attribute 'availability_zone'
这是预期的行为。然后,我尝试以下方法:
'Availability Zone': iface.availability_zone
这会出错,但是输出为null。 csv
文件中没有任何内容。
我查看了boto3
documentation,availability_zone
是NetworkInterface
资源下的可用资源属性,就像subnet_id
一样,我正在使用并且正在使用。
我在这里想念什么?谁能指出我正确的方向,还是让我知道我做错了什么?
答案
Availability Zone是子网的属性。
因此,您可以使用:
import boto3
ec2 = boto3.resource('ec2')
output = {}
for instance in ec2.instances.all():
for iface in instance.network_interfaces:
output[instance.id] = {
'Instance ID': instance.id,
'Subnet ID': iface.subnet_id,
'AZ': iface.subnet.availability_zone
}
print(output)
以上是关于使用boto3 Python SDK返回AWS EC2可用性区域属性的主要内容,如果未能解决你的问题,请参考以下文章
python 简单的python函数,用于从角色ARN承担AWS IAM角色并返回boto3会话对象
我们可以使用 boto3 Python 在 aws s3 存储桶之间递归复制文件和文件夹吗?