我想搜索超过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*"]},
]
)
)发布于 2021-09-21 21:02:09
您不能过滤实例的创建时间,只能过滤它们最后一次“启动”的时间(这是它们最后一次启动的时间)。查找实例创建日期的最好方法是使用根磁盘。有关该策略的更多信息,请查看this。
发布于 2021-09-24 12:57:36
这就解决了我的问题:
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)
)注意: ec2 launch_time值没有时区信息,所以我只使用了timestamp属性
https://stackoverflow.com/questions/69272091
复制相似问题