使用boto3和python过滤超过24小时的EC2实例



我想搜索超过24小时的EC2实例,这样我就可以只清除那些可能没有被任何人用于测试的实例。

我能够过滤在某个日期启动的实例,或者如果我只指定年份,我可以搜索该年份创建的所有实例。但是我不知道如何过滤在给定日期之前启动的实例。我有:

session = get_aws_session()
ec2 = session.resource("ec2", region_name=REGION)
ssm = session.client("ssm")
instances = list(
ec2.instances.filter(
Filters=[
{"Name": "tag:Environment", "Values": ["test"]},
{"Name": "launch-time", "Values": ["2021-09-21*"]},
]
)
)

不能过滤实例创建的时间,只能过滤实例最后一次"启动"的时间。(这是它们最后一次被启动)。查找实例创建日期的最佳方法是使用根磁盘。查看这一策略的更多信息。

解决了我的问题:

session = get_aws_session()
ec2 = session.resource("ec2", region_name=REGION)
ssm = session.client("ssm")
instances = list(
ec2.instances.filter(
Filters=[
{"Name": "tag:Environment", "Values": ["test"]},
{"Name": "instance-state-name", "Values": ["running"]},
]
)
)
yesterday = (datetime.now() - timedelta(days=1)).timestamp()
instances_over_24hours_old = list(
filter(lambda instance: instance.launch_time.timestamp() < yesterday, instances)
)

注意:ec2launch_time值没有时区信息,所以我只使用时间戳属性

最新更新