0

У нас есть несколько экземпляров AWS EC2, для которых мы создали функции Lambda, подключенные к событиям Cloudwatch. Одна функция лямбда запускает экземпляры в 8:00 утра, а один выключает их в 18:00. Я хотел бы иметь возможность уведомлять пользователей о том, что экземпляры будут закрыты, возможно, за 15 минут до того, как они планируются. Есть ли способ итерации по всем экземплярам и создание сообщения, которое сообщает пользователям, что экземпляры1 и экземпляр2 вот-вот закрываются? Наш код для лямбда-функций берется непосредственно из примера:Как настроить уведомление AWS о экземпляре, который будет закрыт?

import boto3 

# Enter the region your instances are in, e.g. 'us-east-1' 
region = 'us-east-1' 

# Enter your instances here: ex. ['X-XXXXXXXX', 'X-XXXXXXXX']# 
instances = ['X-XXXXXXXX', 'X-XXXXXXXX'] 

def lambda_handler(event, context): 
    ec2 = boto3.client('ec2', region_name=region) 
    ec2.start_instances(InstanceIds=instances) 
    print 'started your instances: ' + str(instances) 

Любой вход будет большой помощью.

+0

Что вы подразумеваете под "уведомлять пользователей"? Зарегистрированы ли пользователи в экземплярах или они запускают приложение? Как вы хотите * уведомлять * пользователей (электронную почту, всплывающее сообщение, удар электрическим током)? –

+0

Извините, я должен был быть более ясным. Удар электрическим током, но электронная почта в порядке ... – TortillaCurtain

+0

Мне просто интересно, почему вы не используете Autoscaling? Вы также можете запланировать его. –

ответ

0

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

Сделайте копию вашей лямбда-функции, которая выключит ваши экземпляры. Измените эту версию для отправки электронной почты (через SES) вместо фактического закрытия серверов. Запланируйте эту новую функцию Lambda для запуска за 15 минут до запуска функции останова.

+1

Я надеялся избежать создания другой функции; Я не был уверен, есть ли способ настроить отправку уведомления автоматически. Я попробую ваше решение, которое, я уверен, сработает. – TortillaCurtain

+0

Если вы хотите открыть немного больше, вы можете публиковать сообщения в теме SNS вместо SES. Тогда вы можете иметь некоторую гибкость для параметров уведомлений. – Mikelax

1

По умолчанию в EC2, остановка экземпляра с внутренней стороны (например, sudo halt или sudo poweroff) точно так же, как и остановить их с помощью API - они переходят в состояние Stopped в консоли, и вы не должны заплатите за них, как если бы вы их остановили, попросив API остановить их.

Команда shutdown -h +15 попросит систему выключиться через 15 минут и будет транслировать предупреждение всем ttys.

Итак, вы могли бы предположительно вызвать EC2 RunCommand от Lambda для каждого экземпляра за 15 минут раньше, вместо вашей функции выключения, дистанционно запуская команду выключения на каждой системе.

Или, если эти системы делают это каждый день, просто поставьте выключение в кронтабе.