使用Python boto3筛选创建时间超过24小时的AWS EC2实例
实现方案
EC2 API的launch-time过滤器仅支持前缀匹配,不支持直接筛选早于指定时间的实例,你可以在拉取测试环境实例列表后,在本地做时间比对筛选,完整实现代码如下:
from datetime import datetime, timedelta, timezone session = get_aws_session() ec2 = session.resource("ec2", region_name=REGION) ssm = session.client("ssm") # 计算24小时前的UTC时间(EC2返回的启动时间默认是UTC时区) cutoff_time = datetime.now(timezone.utc) - timedelta(hours=24) # 先拉取所有测试环境的实例 test_instances = ec2.instances.filter( Filters=[ {"Name": "tag:Environment", "Values": ["test"]}, # 可选:仅筛选运行中的实例,避免匹配已停止的资源 {"Name": "instance-state-name", "Values": ["running"]} ] ) # 过滤出启动时间超过24小时的闲置实例 idle_instances = [instance for instance in test_instances if instance.launch_time < cutoff_time]
补充说明
- 以上代码使用Python 3.9+内置的
timezone模块处理时区,不需要安装第三方依赖;如果是更低版本的Python,可以安装pytz替换时区逻辑:import pytz cutoff_time = datetime.now(tz=pytz.UTC) - timedelta(hours=24) - 可以按需调整闲置判定阈值,比如修改
timedelta(days=3)即可筛选启动超过3天的实例
内容的提问来源于stack exchange,提问作者Eloise
相关产品推荐
相关产品推荐

