我发现我的 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)
关于python - 如何使用 "state_transition_reason"变量按时间对停止的 EC2 进行排序? Python Boto3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39153410/