AWS CLI описывает моментальные снимки для печати SnapshotId

Я пытаюсь распечатать SnapshotId для новейшего снимка с помощью bash. Вот моя команда:

aws ec2 describe-snapshots | grep TestVolume1 |head -n 1| > Output.txt

Приведенный выше результат соответствует TestVolume1 для записи в Output.txt новейшего моментального снимка. Я также хочу распечатать SnapshotID и изо всех сил пытаюсь вывести его в Output.txt.

Пробовал awk и --filter - не помогает. Буду признателен за любую помощь с синтаксисом для вывода SnapshotId. Что еще я могу использовать?


person NetSystemAdmin    schedule 06.04.2020    source источник
comment
Вы просто хотите получить SnapshotId для самого последнего моментального снимка? Какова цель TestVolume1?   -  person John Rotenstein    schedule 07.04.2020


Ответы (1)


Вы можете использовать аргумент --filter для получения только совпадающих снимков и использовать аргумент --query для анализа требуемого поля из ответа,

Обновление (добавление снимков в обратном порядке в зависимости от времени начала создания снимка):

aws ec2 describe-snapshots --filters Name=description,Values="*TestVolume1*" --query "reverse(sort_by(Snapshots, &StartTime))[0].SnapshotId"

Фильтр применяется к описанию снимка, ожидая, что оно будет содержать нужный текст (TestVolume1).

person franklinsijo    schedule 06.04.2020
comment
Если это не всегда дает самый новый снимок, вы можете использовать sort_by() в --query и вернуть первый/последний элемент. См.: Примеры JMESPath — JMESPath - person John Rotenstein; 07.04.2020
comment
Спасибо за ответ. По-видимому, мой --query не работает и не имеет тегов. Вот ошибка: zsh: команда не найдена: --query - person NetSystemAdmin; 07.04.2020
comment
Частью чего является TestVolume1? Описание снимка? - person franklinsijo; 07.04.2020
comment
Привет - это одно из имен томов. У нас есть моментальные снимки для каждого тома EBS в течение дня (например, TestVolume1, TestVolume2 и т. д.). Моя цель - извлечь новейший снимок для тома и восстановить этот снимок на основе SnapshotId, поэтому необходимо распечатать SnapshotId. - person NetSystemAdmin; 07.04.2020
comment
Я предполагаю, что вы добавили информацию VolumeName в описание моментального снимка! Проверьте обновленный ответ - person franklinsijo; 07.04.2020
comment
Благодарю вас! Эта обновленная команда сработала. Ценю ваше понимание и руководство. - person NetSystemAdmin; 07.04.2020
comment
Хорошо, хотя я смогу это понять, но как мне запустить эту команду для нескольких томов? Я хочу найти самый новый моментальный снимок для многих томов, которые у меня есть. (Тестовый том1 - Тестовый том10) - person NetSystemAdmin; 07.04.2020
comment
@NetSystemAdmin Для этого потребуется выполнить эту команду несколько раз. Вы можете попробовать цикл for, for i in {1..10}; do aws ec2 describe-snapshots --filters Name=description,Values="*TestVolume$i*" --query "reverse(sort_by(Snapshots, &StartTime))[0].SnapshotId" >> snapshots.txt; done - person franklinsijo; 07.04.2020
comment
Привет - это сработало! Большое спасибо! Вы были очень полезны. Я также увеличил цикл for до {1..20}, потому что мне нужно было распечатать все snapshotsId. У меня много томов, и теперь я могу видеть многие snapshotId. Если бы я хотел вывести больше, чем SnapshotId, скажем, VolumeSize или State, добавил бы я в раздел фильтров? Я собирался попробовать это. - person NetSystemAdmin; 08.04.2020
comment
Нет, добавьте в раздел --query. - person franklinsijo; 08.04.2020