首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用boto3和python过滤超过24小时的EC2实例

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

Stack Overflow用户
提问于 2021-09-21 16:03:13
回答 2查看 210关注 0票数 0

我想搜索超过24小时的EC2实例,这样我就可以只清空那些可能没有人用来进行测试的实例。

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

代码语言:javascript
复制
    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*"]},
            ]
        )
    )
EN

回答 2

Stack Overflow用户

发布于 2021-09-21 21:02:09

您不能过滤实例的创建时间,只能过滤它们最后一次“启动”的时间(这是它们最后一次启动的时间)。查找实例创建日期的最好方法是使用根磁盘。有关该策略的更多信息,请查看this

票数 2
EN

Stack Overflow用户

发布于 2021-09-24 12:57:36

这就解决了我的问题:

代码语言:javascript
复制
    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属性

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69272091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档