Список всех моментальных снимков EC2 EBS, сделанных в определенную дату

Я пытаюсь перечислить все моментальные снимки томов EBS, сделанные в определенную дату, чтобы я мог автоматизировать копирование с помощью скрипта bash по всему региону для лучшего аварийного восстановления. У меня есть еще один скрипт bash, который создает моментальные снимки всех используемых томов EBS и удаляет все который старше 30 дней. Мне нужно скопировать все, что было снято в предыдущий день в другом регионе.

Я пробовал много переключателей jmespath (которые не дают никакого результата), некоторые из них такие: -

$aws ec2 describe-snapshots --query 'Sanpshots[?StartTime >= `2018-06-25`]|[?StartTime <= `2018-06-27`]'
$aws ec2 describe-snapshots --query 'Sanpshots[?StartTime == `2018-06-25`]

Я просмотрел много страниц, но не смог найти список для определенной даты. Пожалуйста, предложите некоторые переключатели, методы сортировки, ссылки или что-то еще. Спасибо.


person Nirbhay Singh    schedule 27.06.2018    source источник


Ответы (2)


Учитывая, что вам понадобится какой-то программный способ вычисления «30 дней назад», вам лучше сделать это на языке программирования, например:

import boto3
import pytz
from datetime import datetime, timedelta

# Get my AWS Account ID
myAccount = boto3.client('sts').get_caller_identity()['Account']

# Connect to EC2
client = boto3.client('ec2', region_name = 'ap-southeast-2')

# Get a list of snapshots for my AWS account (not all public ones)
snapshots = client.describe_snapshots(OwnerIds=[myAccount])['Snapshots']

# Find snapshots more than 30 days old
oldest_date = datetime.now(pytz.utc) - timedelta(days=30)
old_snapshots = [s for s in snapshots if s['StartTime'] < oldest_date]

# Delete the old snapshots
for s in old_snapshots:
  client.delete_snapshot(SnapshotId = s['SnapshotId'])
person John Rotenstein    schedule 28.06.2018
comment
Спасибо, Джон, как всегда. Но мне не нужен список, сделанный 30 дней назад для удаления, мне нужен список моментальных снимков, созданный в определенную дату (2 дня назад от текущей даты), чтобы я мог скопировать их в другой регион. Вот почему я ищу переключатели jmespath или любой другой способ сортировки. - person Nirbhay Singh; 28.06.2018

Я понял, что JMESpath переключается из документа справа здесь. Таким образом, для поиска конкретного date я применил переключатель, который выполняет поиск между двумя датами. Например:-

'Snapshots[?(StartTime >= `2018-06-27`) && (StartTime <= `2018-06-28`)]

Причина, по которой «==» не работает в переключателе, поскольку он используется для строки точного соответствия.

Таким образом, полная строка: -

aws ec2 describe-snapshots --query 'Snapshots[?(StartTime >= `2018-06-27`) && (StartTime <= `2018-06-28`)].{ID:SnapshotId,ST:StartTime}' --output text --region $regionname
person Nirbhay Singh    schedule 28.06.2018