Используя клиент aws-cli (https://github.com/aws/aws-cli), есть ли способ найти экземпляры с помощью диапазон дат фильтр? Или с помощью фильтра «ранее X даты» или «последних X дней»?
Кажется, что единственный фильтр, связанный с датой, - это указать точную дату или частичную дату с подстановочными знаками строки. Например, я обнаружил, что указание даты работает следующим образом:
aws ec2 describe-instances --filters "Name=launch-time,Values=2015-03\*"
Например, все экземпляры будут запущены в марте 2015 года.
То, что я хочу, эквивалентно этой команде POSIX "find", "найти все за последние 30 дней":
find . -mtime -30
Найти на Использовать фильтр «время запуска», чтобы найти все экземпляры новее, чем дата X? с помощью JMESPath запрос:
aws ec2 describe-instances --query 'Reservations[].Instances[?LaunchTime>=`2015-03-01`][].{id: InstanceId, type: InstanceType, launched: LaunchTime}'
Вы не можете, но чтобы сделать это на Python с использованием библиотеки boto, сделайте так, например, чтобы вывести список экземпляров в регионе aws "eu-west-1", запущенных более 30 дней назад.
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