[英]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_zone
是NetworkInterface
資源下的一個可用資源屬性,就像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.