AWS Lambda boto3:按发布时间过滤实例=今天

时间:2017-12-13 15:44:29

标签: python amazon-web-services amazon-ec2 aws-lambda boto3

我试图通过AWS Lambda自动备份我的EC2实例。

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

但是我想添加脚本只删除或备份今天启动的实例并具有备份标记的功能。

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

可悲的是,我不知道实现这一目的的语法是什么,因为我对此完全陌生。

但是为了进一步澄清,代码的上述部分看起来应该是这样的:

#....

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.

无法通过发布时间在过滤列表中找到任何内容,所以希望有人可以帮助我。

2 个答案:

答案 0 :(得分:3)

对于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

答案 1 :(得分:0)

尝试这个:

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+'*']
            },
        ],
    )