python - 如何使用 "state_transition_reason"变量按时间对停止的 EC2 进行排序? Python Boto3

标签 python amazon-web-services amazon-ec2 aws-lambda 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) 

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

相关文章:

python - 如何将用户输入存储到列表中?

python - 在事先不知道代码页的情况下将原始字节字符串转换为 Unicode

amazon-ec2 - 无法在 ec2 实例中安装 Supervisor 作为 ASP .Net Core 项目的服务管理器

amazon-ec2 - 无法找到监听端口 80 的虚拟主机.... 请为端口 80 添加虚拟主机

php - PHP Nominatim API 每秒可以响应多少次调用?

python - 关于字符串操作的 Python 基础问题 : example: string. 小写

python - 将列表插入同一列表时的省略号

database - AWS RDS 手动快照生命周期

连接到 Amazon AWS DynamoDB NoSQL 的 Android 应用程序

amazon-web-services - eks选项在AWS CLI中不可用。如何安装?