使用 aws-cli 客户端 (https://github.com/aws/aws-cli),有没有办法使用日期范围过滤器?或者使用“早于 X 日期”或“过去 X 天”过滤器?
似乎唯一与日期相关的过滤器是指定确切日期,或使用字符串通配符指定部分日期。例如,我发现按如下方式指定日期有效:
aws ec2 describe-instances --filters "Name=launch-time,Values=2015-03\*"
例如,这将获取 2015 年 3 月启动的所有实例。
我想要的是相当于这个 POSIX“find”命令,“查找过去 30 天的所有内容”:
find . -mtime -30
答案1
您不能,但可以使用 boto 库在 python 中执行此操作,例如,列出 30 多天前启动的 aws 区域“eu-west-1”中的实例。
import boto.ec2
import datetime
from dateutil import parser
conn = boto.ec2.connect_to_region('eu-west-1')
reservations = conn.get_all_instances()
for r in reservations:
for i in r.instances:
launchtime = parser.parse(i.launch_time)
launchtime_naive = launchtime.replace(tzinfo=None)
then = datetime.datetime.utcnow() + datetime.timedelta(days = -30)
if launchtime_naive < then:
print i.id
答案2
发现于使用过滤器“启动时间”来查找晚于 X 日期的所有实例?使用JMESPath 查询:
aws ec2 describe-instances --query 'Reservations[].Instances[?LaunchTime>=`2015-03-01`][].{id: InstanceId, type: InstanceType, launched: LaunchTime}'