如何使用变量按时间对停止"state_transition_reason" EC2进行排序?蟒蛇博托3



我发现我的AWS账户成本急剧增加。最大成本项为:EC2: 67% RDS: 12%

我有超过50个EC2s停止。其中一辆从2015年9月起就一直停在那里。

我找到了使用变量获得EC2s停止时间的方法:

state_transition_reason

下面是代码:
import boto3
session = boto3.Session(region_name="us-east-1")
ec2 = session.resource('ec2')
instances = ec2.instances.filter(
            Filters=[{'Name': 'instance-state-name', 'Values': ['stopped']}])
count = 0
for i in instances:
   print "{0}, {1}, {2}".format( i.id, i.state_transition_reason, i.state['Name']) 
   count +=1
print count

打印出以下信息:

i-pll78233b, User initiated (2016-07-06 21:14:03 GMT), stopped
i-tr62l5647, User initiated (2015-12-18 21:35:20 GMT), stopped
i-9oc4391ca, User initiated (2016-03-17 04:37:46 GMT), stopped
55

我的问题是:我如何能排序实例(EC2s)的时间被停止。在我的例子中,我希望看到从2015年开始的输出顺序如下:

i-tr62l5647, User initiated (2015-12-18 21:35:20 GMT), stopped
i-9oc4391ca, User initiated (2016-03-17 04:37:46 GMT), stopped
i-pll78233b, User initiated (2016-07-06 21:14:03 GMT), stopped
55

谢谢。

只要User初始化部分不变,我们可以简单地按state_transition_reason对实例进行排序:

sortedInstances = sorted(instances, key=lambda k: k.state_transition_reason) 

最新更新