#amazon-web-services #azure #amazon-ec2 #lambda #amazon-cloudwatch
#amazon-web-services #azure #amazon-ec2 #лямбда #amazon-cloudwatch
Вопрос:
Я пытаюсь запускать и останавливать свои экземпляры EC2 в определенное время суток. В Azure доступны параметры запуска и остановки виртуальных машин по расписанию.
Мне интересно, присутствует ли что-то подобное в AWS. если нет, то каков наилучший способ добиться этого? предполагая, что в 7 утра я запускаю свой EC2 и останавливаю его к 9 вечера по восточному времени. Я также знаю о событии cloud watch, интегрированном с опцией lamnda
Ответ №1:
На основе комментариев.
Функция lambda потребуется только для запуска вашего экземпляра, если вы хотите запустить его с помощью правила событий CloudWatch (CW). Причина в том, что вы можете остановить экземпляр напрямую, используя встроенные целевые объекты CW:
Встроенные цели: вызов API EC2 CreateSnapshot, вызов API EC2 RebootInstances, вызов API EC2 StopInstances и вызов API EC2 TerminateInstances.
К сожалению, для запуска экземпляра нет встроенной цели, поэтому для этого необходима функция lambda.
Комментарии:
1. просто любопытно, какое событие CloudWatch вы планируете использовать для запуска завершения EC2? Операция касалась планирования.
Ответ №2:
Создайте две разные лямбда-функции для запуска и завершения экземпляра EC2 и запланируйте их с помощью CloudWatch. Для лямбда-выражения вы можете использовать любой язык из AWS SDK. Чтобы выбрать конкретный экземпляр для завершения, экземпляр EC2 можно пометить, чтобы разделить его. Вот решение для того же.
Комментарии:
1. Зачем вам нужны две функции?
2. @Marcin — один для запуска, а другой для завершения экземпляра EC2.
3. Привет, @Marcin надеюсь, у тебя все хорошо. У меня есть идея события cloud watch с помощью lambda. Мы можем справиться с этим с помощью одной функции, проверив текущее состояние экземпляра. Но есть ли другой способ. Azure предоставляет для этого встроенную опцию, есть ли что-то подобное в AWS?
4. Вот ссылка на API Boto3 (Python AWS SDK), чтобы получить статус экземпляра EC2. Аналогичный API можно получить и для других языков. И на одну лямбду больше смысла, на одну меньше поводов для беспокойства 🙂
5. @sumanthshetty Привет. Я в порядке, спасибо. Событие CloudWatch было бы обычным способом сделать это. Но лямбда-выражение потребуется только для запуска экземпляра. Остановка может быть выполнена напрямую с помощью целевого правила события CW.
Ответ №3:
Вот полное руководство https://aws.amazon.com/premiumsupport/knowledge-center/start-stop-lambda-cloudwatch /. Дайте мне знать, если это поможет.
Как предложил Правин Шрипати https://aws.amazon.com/solutions/implementations/instance-scheduler / работает довольно хорошо.
Комментарии:
1. Решение AWS Knowledge Center имеет недостатки, поскольку идентификаторы экземпляров EC2 жестко закодированы в нем. Перед запуском лямбда-выражения необходимо изменить идентификаторы экземпляра EC2, что не имеет особого смысла для автоматизации. Пометка EC2 — это один из способов, которым я могу подумать о сужении экземпляра EC2 для завершения работы.