2016-12-28 3 views
-2

Я закончил автоматическое создание снимков с помощью следующей ссылке:Автоматическое создание снимков с помощью AWS Lambda

https://blog.powerupcloud.com/2016/02/15/automate-ebs-snapshots-using-lambda-function/

Как написано в коде, фильтрация осуществляется на основе тегов виртуальных машин , Вместо создания виртуальной машины с тегом резервного копирования или резервного копирования я хочу создать моментальные снимки всех, за исключением некоторых имен.

Я не хочу добавлять дополнительные теги в виртуальные машины. Вместо этого я хочу написать условие if в моих фильтрах. Я бы предоставил имена моих тестовых виртуальных машин, и если тег VM соответствует этому, моментальный снимок не будет создан. Если это не соответствует, необходимо создать моментальные снимки. Я могу это сделать?

Ех: У меня в моей учетной записи четыре виртуальные машины.

VM 1 --> Prod1, 
VM 2 --> Prod2, 
VM 3 --> Prod3, 
VM 4 --> Test1. 

Для примера, мне нужно иметь возможность записать условие if, которое включает в себя мой тестовый тег VM 'Test1'. Если тег соответствует этому, то моментальный снимок не следует создавать. Если это не соответствует, необходимо создать моментальные снимки.

Итак, для этого, как мне изменить свой код?

+1

Вам понадобится простой способ определения того, какие машины вы хотите сделать. Как вы хотите, чтобы ваш код работал? Вы хотите сделать снимок * все, кроме тех, у кого есть определенный тег *? Что произойдет, если есть 5-й экземпляр? –

+0

Точно. Я хочу, чтобы он делал снимок всего, кроме тех, у которых есть теги. У меня есть два экземпляра в моей учетной записи, чьи моментальные копии не нужно создавать. Для остальных экземпляров [работает или остановлено], я хочу моментальные снимки. – prudhvi

ответ

1

Вам просто нужно создать тег для всех трех серверов с ключом «Резервное копирование». Сценарий фильтрует экземпляры только для имен ключей.

+0

Это не то, что я хочу. Я не хочу добавлять дополнительные теги в виртуальные машины. Вместо этого я хочу написать условие if в моих фильтрах. Я бы предоставил имена моих тестовых виртуальных машин, и если тег VM соответствует этому, моментальный снимок не будет создан. Если это не соответствует, необходимо создать моментальные снимки. Я могу это сделать? – prudhvi

1

Кусок кода, который улавливает, которые нуждаются виртуальные машины для резервного копирования заключается в следующем:

reservations = ec.describe_instances(
     Filters=[ 
      {'Name': 'tag-key', 'Values': ['Backup', 'True']}, 
     ] 
    ).get(
     'Reservations', [] 
    ) 

Как вы можете видеть, он использует бото-х describe_instances и фильтр ограничивает количество экземпляров, которые будут обработаны. Если вы хотите сделать резервную копию всего, кроме тех, которые не являются prod в вашей среде, вам следует рассмотреть возможность пометки ваших экземпляров non-prod чем-то вроде Backup = NO.

+0

Это не то, что я хочу. Я не хочу добавлять дополнительные теги в виртуальные машины.Вместо этого я хочу написать условие if в моих фильтрах. Я бы предоставил имена моих тестовых виртуальных машин, и если тег VM соответствует этому, моментальный снимок не будет создан. Если это не соответствует, необходимо создать моментальные снимки. Я могу это сделать? – prudhvi

+0

Каждое имя экземпляра также является тегом по умолчанию, например Name = yourhostname, поэтому все, что вам нужно сделать, это передать несколько значений 'aws ec2 describe-instance -filters" Name = tag: Name, Values ​​= instance1, instance2, instance3 " '. Это виртуальные машины, которые вы хотите. Он работает в AWS cli, он также будет работать здесь, пожалуйста, просмотрите документацию и попробуйте. –

+0

Yaa..Это нормально. Но от 2 до 3 новых экземпляров запускается в моем аккаунте почти каждые 3 дня. Таким образом, я не могу продолжать редактировать свой код каждый альтернативный день – prudhvi

0

Для резервного копирования всех серверов кроме эти помеченные тегом:

  • Получить список все серверы
  • Получить список серверов с «не резервного копирования» флаг и удалить их из первого списка
  • Сделайте резервную копию

Требуется два вызова: describe_instances().

Смежные вопросы