Как массово удалить несколько моментальных снимков AWS с помощью интерфейса командной строки AWS?

Таким образом, команда для удаления моментального снимка AWS с использованием SnapshotID приведена ниже.

aws ec2 delete-snapshot --snapshot-id snap-1234567890abcdef0 

У меня есть список из 400 идентификаторов моментальных снимков, которые необходимо удалить. Какую команду я должен использовать для их массового удаления с помощью SnapshotID.

**PS: Ни один из снимков не помечен.

вы не можете, так как на данный момент нет команды сделать это.

Asdfg 15.12.2020 17:02

получить список снимков и передать его во что-то и проверить, можете ли вы перебрать файл. Или скопируйте снимки в редактор, войдите в режим выбора столбца и вставьте команду aws впереди, или замените каждый разрыв ссылки командой aws и т. д. Есть миллион ответов, которые нужно получить, вам просто нужно найти тот, который вам больше всего нравится. знаком с.

luk2302 15.12.2020 17:06

что-то вроде этого может работать: ec2-describe-snapshots | grep SNAPSHOT | sort -k 5 | head -200 | awk '{print "Deleting-> " $2; system("ec2-delete-snapshot " $2)}'

Asdfg 15.12.2020 17:09

CLI и формат вывода по умолчанию, возможно, изменились? Мой опыт: * Пришлось использовать aws ec2 describe-snapshots в качестве первой команды. * Пришлось добавить опцию --snapshot-id к команде удаления. * Приходилось настраивать вывод текста с помощью команды aws config или опции --output. * Все еще были некоторые проблемы с столбцом сортировки и столбцом печати. * Вместо того, чтобы бороться с разделителями полей и количеством столбцов, может быть проще использовать вывод JSON или YAML и выполнять итерацию с помощью Python.

ctwardy 04.08.2021 19:32
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
4
6 779
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Ответ принят как подходящий

Вот решение, которое может показаться глупым, но очень эффективным...

Обычно я создаю электронную таблицу Excel со списком идентификаторов в первом столбце.

Затем я создаю второй столбец с формулой, содержащей полную команду, со ссылкой на первый столбец, который вставляет идентификатор в соответствующее место. Затем я копирую формулу для всех строк.

Чтобы проверить формулу, я копирую первую строку и вставляю ее в свою оболочку, чтобы убедиться, что она работает должным образом.

Затем я вставляю все строки, сгенерированные формулой, в текстовый файл, а затем запускаю текстовый файл в оболочке. Он будет работать быстрее, если вы сделаете это из инстанса Amazon EC2, так как это уменьшит задержку в сети, но запуск с вашего собственного компьютера будет работать так же хорошо. Просто сходите за чашечкой кофе.

Если мысль об использовании Excel вызывает у вас отвращение, вы можете написать простой скрипт на Python, который выполняет итерацию по списку и вызывает команду delete_snapshot().

Именно этому я следовал, используя скрипт bash. Пришлось немного подправить, потому что некоторые снимки находятся в другом регионе. Но это решение сработало как шарм.

error2007s 15.12.2020 22:58

@John Rotenstein, не могли бы вы поделиться формулой Excel для этого?

Maciej 15.12.2022 15:10

@Maciej Если идентификатор находится в первом столбце, это будет просто = "aws ec2 delete-snapshot --snapshot-id "&a1

John Rotenstein 15.12.2022 20:35

Пакетное удаление снимков для aws-cli 2.2

Протестировано на следующей версии/системе:

% aws --version
aws-cli/2.2.26 Python/3.8.8 Darwin/20.6.0 exe/x86_64 prompt/off

Подождите... он усекает идентификаторы моментальных снимков, поэтому удаление не удается. (?!)

Черт. Я вернусь к этому через некоторое время. :-(

Команда:

% aws ec2 describe-snapshots | grep SNAPSHOT | sort -k 6 | head -20 \
    | awk '{print "Deleting-> " $4,$6,$8,$9,$10; \
      system("aws ec2 delete-snapshot --snapshot-id " $8)}'

Выход:

Deleting-> image.vmdk 099720109477 snap-005349429a002f03b 2019-05-08T11:09:45.481000+00:00 completed
Deleting-> image.vmdk 099720109477 snap-00ea72d226a56a8cf 2019-05-29T16:27:54.246000+00:00 completed
    :

Примечания:

  • Команда имеет формат v2, соответствует указанному в вопросе.
  • Grep: для SNAPSHOT, чтобы пропустить любые строки TAGS.
  • Сортировка: для меня это было поле 6.
  • Голова: 20 для тестирования; увеличить, как только он работает.
  • Awk print: показывает несколько полей ($4,$6,$8...) для отслеживания.
  • Система Awk: использование 8 долларов на основе предыдущего

Поля изменены по сравнению с теми, которые были даны предыдущим комментатором.

  • Могут быть различия в aws cli или
  • Могут быть различия в ОС/оболочке.
  • В любом случае сначала выполните короткую пробную печать полей.

Спасибо за идеи в этой ветке форума AWS.

Примечание. Это приведет к удалению всех моментальных снимков из вашего региона, настроенных в AWS CLI. используйте эту команду, чтобы сохранить все идентификаторы моментальных снимков в файле sgn.txt.

Команда:

aws ec2 description-snapshots --owner-id self --query 'Snapshots[].SnapshotId' > sgn.txt


[
    "snap-04030b95f2ebcbe6e",
    "snap-06e1a8394774c8486",
    "snap-03c6659d966953d6c",
    "snap-02de629dc082b33cb",
    "snap-033dfc52483c09455"
]

уберите скобки и сделайте так, чтобы файл выглядел так, и добавьте ',' к последнему идентификатору

"snap-04030b95f2ebcbe6e",
"snap-06e1a8394774c8486",
"snap-03c6659d966953d6c",
"snap-02de629dc082b33cb",
"snap-033dfc52483c09455",

теперь используйте приведенный ниже код Python, чтобы удалить все снимки

код:

import boto3
client = boto3.client('ec2',region_name='us-east-1')
file=open('sgn.txt','r')
l=file.readlines()
for i in l: 
    s=i.strip()
    s=s[1:len(s)-2]
    client.delete_snapshot(SnapshotId=s)
    print(s,"deleted")

Примечание:- вы должны настроить aws cli для запуска этого файла python, а также вам необходимо установить модуль boto3 в python

# Удалить все снимки в регионе us-west-2:

for K in $(aws ec2 --region us-west-2 describe-snapshots --owner-ids=${AWS_OWNER_ID} --query 'Snapshots[*].SnapshotId' --output=text); do
aws ec2 --region us-west-2 delete-snapshot --snapshot-id $K
done

Вы можете просто сделать --owner-ids self, чтобы получить список моментальных снимков, принадлежащих текущей учетной записи AWS.

demisx 09.03.2022 06:49

Использование ответа @Lock-o-motiffe

Если вы пытаетесь выполнить поиск по описанию или фильтровать по каким-либо другим параметрам, например по тегам, а также у вас есть aws sso, сначала выполните

aws ec2 describe-snapshots --region us-west-2 --owner-ids self --profile <your-profile> --filters '{"Name":"description","Values":["Created by CreateImage(*) for *"]}' --query 'Snapshots[*].SnapshotId' --output=text --max-items 5

Затем сделайте следующее и удалите флаг --max-items:

for K in $(aws ec2 describe-snapshots --region us-west-2 --owner-ids self --profile <your-profile> --filters '{"Name":"description","Values":["Created by CreateImage(*) for *"]}' --query 'Snapshots[*].SnapshotId' --output=text); do
aws ec2 delete-snapshot --region us-west-2 --profile <your-profile> --snapshot-id $K
done

Имя может быть любым из перечисленных в параметрах фильтра здесь https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/describe-images.html, например, архитектура, имя, тег , и т. д.

Другие вопросы по теме