有人可以帮助我使用boto3对我的AWS EBS卷进行排序吗?

时间:2016-10-24 22:58:14

标签: python sorting amazon-web-services amazon-ec2 boto3

如果我只列出卷但是当尝试按卷大小排序时,此代码有效,我会收到错误“TypeError:'ec2.Volume'对象不支持索引”。评论部分是我用来对卷进行排序的部分。我希望按id然后大小排序。谢谢

from operator import itemgetter
import boto3
import sys

ec2 = boto3.resource('ec2')
vol_array = ec2.volumes.all()

#for v in sorted(vol_array, key=itemgetter(0)):
for v in vol_array:
    a = v.id
    b = v.state
    c = v.size
    print('{}   {}  {}'.format(a, b, c))

2 个答案:

答案 0 :(得分:1)

该错误意味着您尝试在不支持它的对象上使用obj[0]。例如:

>>> class A(object):
    pass

>>> a = A()
>>> a[0]
Traceback (most recent call last):
  File "<pyshell#4>", line 1, in <module>
    A()[0]
TypeError: 'A' object does not support indexing
>>> 

特别是在您的代码中,因为您使用的itemgetter(0)转换为不支持的v[0]

您应该编写一个正确的函数,在不使用[0]的情况下返回要排序的键。例如:

def my_sort_key(v):
  return v.id, v.size

for v in sorted(vol_array, key=my_sort_key):
  print(v.id)

答案 1 :(得分:0)

您需要使用ripe = require('stripe')(PLATFORM_SECRET_KEY); stripe.transfers.create( { amount: 1000, currency: 'usd', destination: {CONNECTED_STRIPE_ACCOUNT_ID}, source_transaction: {CHARGE_ID} } ); 代替attrgetter('id')

itemgetter(0)