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

How to sort stopped EC2s by time using "state_transition_reason" variable? Python Boto3

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

我有 50 多个已停止的 EC2。其中一个从2015年9月开始一直坐在那里处于停止状态。

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

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

我的问题是:我如何根据停止时间对实例 (EC2) 进行排序。在我的示例中,我希望从 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

谢谢。

只要用户发起的部分永远不变,我们可以简单地按 state_transition_reason:

对实例进行排序
sortedInstances = sorted(instances, key=lambda k: k.state_transition_reason)