2016-02-19 4 views
1

Я хотел бы запустить некоторый код с помощью Lambda в событии, когда я создаю новый экземпляр EC2. Глядя на проект config-rule-change-triggered У меня есть возможность запускать код в зависимости от различных изменений конфигурации, но не при создании. Есть ли способ сделать то, что я хочу? Или я неправильно понял случай использования Лямбды?Запустите код AWS Lambda при создании нового экземпляра AWS EC2

ответ

3

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

Лучше всего использовать комбинацию CloudTrail и Lambda. Если вы включите ведение журнала CloudTrail (каждый а/c должен иметь это включенное, все время во всех регионах), CloudTrail будет регистрировать на S3 все вызовы API, сделанные в вашей учетной записи. Затем вы подключаете это к Lambda, настраивая S3 для публикации событий в Lambda. Функция Lambda получит событие S3, затем может получить журналы API, найти вызовы API RunInstances и выполнить любую работу, необходимую для запуска нового экземпляра.

Некоторые полезные ссылки here и here.

+1

Спасибо, я настроил код из материалов, предоставленных вами для достижения того, что я хотел. – TimothyBuktu

2

Я не вижу триггер уведомления, например, запуск, однако то, что вы можете сделать, это написать сценарий запуска и передать его через пользовательские данные. Этот сценарий запуска должен будет загрузить и установить AWS CLI, а затем пройти аутентификацию в SNS и опубликовать сообщение в предварительно настроенном разделе. Сценарий запуска должен быть аутентифицирован для SNS и любых других сервисов AWS, необходимых для вашей роли IAM, поэтому вам нужно предоставить разрешение роли IAM для выполнения того, что вы хотите, чтобы скрипт выполнял. Это можно сделать в консоли IAM.

В этой теме будет включена ваша функция Lambda, которая будет выполняться. Как и в приведенной ниже статье (хотя автор делает что-то подобное для остановки, а не для запуска).

http://rogueleaderr.com/post/48795010760/how-to-notifyemail-yourself-when-an-ec2-instance

Если вы ставите экземпляры EC2 в AutoScale группу, я считаю, что есть триггер, который увольняет, когда группа автомасштаба запускает новый экземпляр, чтобы вы могли воспользоваться этим.

Я надеюсь, что это поможет.

2

Если у вас включен CloudTrail, вы можете запустить S3 PutObject/TrailBucket функцию Lambda. Функция Lambda анализирует объект, который ему передан, и если он находит событие RunInstances, тогда запустите свой код.

Я делаю то же самое, чтобы уведомлять некоторых пользователей о запуске нового экземпляра. С Lambda/Python это ~ 20 строк кода.

1

Мы аналогичные требования пару дней назад (пользователи должны были получить электронную почту, когда новый экземпляр получает запущен)

1) Перейти к cloudwatch, а затем выберите Правила
2) Выберите имя службы (его EC2 для ваш случай), затем выберите «Уведомление об изменении состояния экземпляра Ec2» 3) Затем выберите ожидающий в раскрывающемся списке «Конкретное состояние»
4) Нажмите «Добавить целевую» и выберите свою лямбда-функцию.

Всякий раз, когда запускается новый экземпляр, Cloudwatch запускает вашу функцию лямбда.

Надеюсь, это поможет!

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