AWS Lambda boto3:Filter Instances by Launch Time=今天

2024-09-28 23:23:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图通过awslambda自动备份我的EC2实例。在

我用了这两个脚本,它们工作得很好。 https://gist.github.com/bkozora/724e01903a9ad481d21ehttps://gist.github.com/bkozora/d4f1cf0e5cf26acdd377

但是我想添加一个功能,即脚本只删除或备份今天已启动并带有备份标记的实例。在

我想我可以通过另外按Launch Time=(date of today)过滤实例列表来实现这一点,然后在午夜之前为过滤后的列表执行函数。在

遗憾的是,我不知道实现这一点的语法是什么,因为我对它完全陌生。在

但为了进一步澄清,上述代码部分应如下所示:

#....

var date = datetime.datetime.now();

Filters=[
            {'Name': 'tag-key', 'Values': ['Backup']},
            {'Name': 'instance.launch_time', 'Values': [date]}        
        ]

#....
#(and then the code to make a backup of every instance in the filtered list.

在筛选列表上找不到启动时间的任何内容,希望有人能在这里帮助我。在


Tags: of实例instancenamehttpsgithub脚本com
2条回答

试试这个:

import datetime

date_filter = (datetime.datetime.now() - datetime.timedelta(days=7)).strftime("%Y-%m-%d")

ec2_client.describe_instances(
    Filters=[
            {
                'Name':'launch-time',
                'Values':[date_filter+'*']
            },
        ],
    )

对于launch-time,您可以提供一个通配符来匹配给定日期内的任何时间。如果今天是Dec 13th 2017,则可以指定2017-12-13*

import boto3
from datetime import date

date_filter = date.isoformat(date.today()) + '*'
ec2 = boto3.resource('ec2')

instances = ec2.instances.filter(Filters=[{'Name':'launch-time', 'Values':[date_filter]}])
for instance in instances:
   print instance.instance_id

相关问题 更多 >