1

Я использую шаблон CF для создания окружения Beanstalk. Я хотел бы вызвать Lambda код через SNS, когда создается среда, поэтому я могу использовать лямбда для запуска задания jenkins с интеграционными тестами для новой среды.AWS Beanstalk - уведомление SNS для Lambda при создании новой среды

Есть ли способ отправить сообщение SNS после успешного создания env в Beanstalk? Я уже определил тему, на которую подписан лямбда-код.

API-интерфейс beanstalk позволяет определить конечную точку уведомления. http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.managing.sns.html

Но что это, если я могу указать только адрес электронной почты, и мне нужно подтвердить подписку? Как я могу использовать его для автоматического запуска сообщения SNS?

 { 
     "OptionName": "Notification Endpoint", 
     "Namespace": "aws:elasticbeanstalk:sns:topics", 
     "Value": "[email protected]" 
     }, 
     { 
     "OptionName": "Notification Protocol", 
     "Namespace": "aws:elasticbeanstalk:sns:topics", 
     "Value": "email" 
     }, 

Обходной путь, который я нашел, немного взломан. Я создаю экземпляр EC2 в конце процесса создания стека и запускаю некоторые команды AWS для отправки уведомления SNS через UserData. Это единственный способ?

+0

Имейте в виде, что синтаксис JSON, который появляется в этом посте не согласен с синтаксисом на последней Справочный документ Amazon: (http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/ebextensions-optionsettings.html). У вас есть («OptionName», «Namespace», «Value»); они имеют («имя_параметра», «пространство имен», «значение»). Это кажется билетом на безумие. – doer

ответ

0

В то время как Configuring Notifications with Elastic Beanstalk не предоставляет конкретный пример для отправки уведомлений Amazon SNS, email - это просто значение по умолчанию для resp. AWS Elastic Beanstalk параметр настройки, и вы также можете создавать подписки для большинства/все другие протоколы, смотри вариант aws:elasticbeanstalk:sns:topics:

  • Допустимые значения: httphttpsemailemail-jsonsqs

Очевидно AWS Lambda не ссылается там еще, но это всего лишь еще один SNS protocol, поэтому я бы предположил/надеюсь, что таблица просто не обновилась, и что-то вроде следующего должно просто работать соответствующим образом (не три d он сам пока хотя):

{ 
    "OptionName": "Notification Endpoint", 
    "Namespace": "aws:elasticbeanstalk:sns:topics", 
    "Value": "<Your Lambda function ARN>" 
    }, 
    { 
    "OptionName": "Notification Protocol", 
    "Namespace": "aws:elasticbeanstalk:sns:topics", 
    "Value": "lambda" 
    }, 
2

Я отвечаю на свой вопрос. Мне удалось выяснить, как использовать SNS для запуска лямбда-кода после создания нового Beanstalk env.

Я создал SNS тему сервис-конфигуратор

и добавил его ARN и имя шаблона.

 
    { 
     "OptionName": "Notification Topic ARN", 
     "Namespace": "aws:elasticbeanstalk:sns:topics", 
     "Value": "arn:aws:sns:us-east-1:273218181234:service-configurator" 
    }, 
    { 
     "OptionName": "Notification Topic Name", 
     "Namespace": "aws:elasticbeanstalk:sns:topics", 
     "Value": "service-configurator" 
    } 

Далее, я установил, что тема sns является источником событий для моего лямбда-кода.

Теперь лямбда сработала каждый раз, когда что-то происходит с окружающей средой (добавлены примеры/удален, окр создан и т.д.)

+0

вам не требуется имя темы уведомления, достаточно указать параметр ARN темы уведомлений. – hellomichibye