使用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 documentationavailability_zoneNetworkInterface资源下的可用资源属性,就像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 存储桶之间递归复制文件和文件夹吗?

如何使用 AWS Python SDK Boto 3 等待 Elastic Beanstalk 事件

Python使用boto3操作AWS S3中踩过的坑

AWS CLI 和 BOTO3 开发工具包(权限问题)

使用 boto3 和 python 将 AWS EC2 详细信息导出到 xlsx/csv