簡體   English   中英

使用 boto3 Python SDK 返回 AWS EC2 availability_zone 屬性

[英]Returning AWS EC2 availability_zone attribute using boto3 Python SDK

我正在嘗試使用Python boto3 API調用返回有關AWS賬戶中所有EC2實例的信息,但我無法顯示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
        }

我省略了其余的代碼,但上述工作並輸出這些資源的值,然后我使用Pandas .to_csv將這些資源放入一個csv文件中。

當我嘗試將以下內容添加為Python dictionary的值時:

'Availability Zone': instance.availability_zone

我收到以下錯誤:

AttributeError: 'ec2.Instance' object has no attribute 'availability_zone'

這是預期的行為。 然后我嘗試以下操作:

'Availability Zone': iface.availability_zone

這運行時出錯,但輸出為空。 csv文件中沒有任何內容。

我查看了boto3 文檔availability_zoneNetworkInterface資源下的一個可用資源屬性,就像subnet_id一樣,我正在使用並且正在工作。

我在這里缺少什么? 誰能指出我正確的方向或讓我知道我做錯了什么?

可用區是子網的一個屬性。

因此,您可以使用:

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM