Ответ 1
Да, это возможно. Вот несколько вариантов:
-
Вручную создайте тему SNS. Добавьте
AWS::SNS::Subscription
в свой стек, используя лямбда-функцию в качествеTopicArn
Endpoint
и тему SNS в качествеTopicArn
. При создании/обновлении стека настройте уведомления о событиях стека для отправки в этот раздел SNS.- (См. Раздел Настройка параметров стека AWS CloudFormation для получения документации о том, как это сделать при использовании консоли AWS для создания стека, или используйте эквивалентную опцию, например
--notification-arns
при создании/обновлении стека с помощью интерфейса командной строки AWS или другого пакета AWS SDK. )
- (См. Раздел Настройка параметров стека AWS CloudFormation для получения документации о том, как это сделать при использовании консоли AWS для создания стека, или используйте эквивалентную опцию, например
-
Добавьте пользовательский ресурс, ссылающийся на лямбда-функцию, которая будет вызываться при создании.
- Если вам нужно, чтобы лямбда-функция вызывалась после создания какого-то определенного ресурса, добавьте атрибут
DependsOn
в пользовательский ресурс, ссылающийся на ресурс, который вы хотите удостовериться, что он создан в первую очередь перед вызовом функции. - Чтобы пользовательский ресурс успешно создавался (и не вызывал сбой/откат в вашем стеке), вам нужно будет адаптировать свою функцию Lambda для поддержки формата запроса/ответа CloudFormation (см. Ссылку на пользовательский ресурс).
- Эта опция будет вызывать лямбда-функцию, пока статус стека все еще
CREATE_IN_PROGRESS
, потому что пользовательский ресурс является частью самого стека. - Лямбда-функция также будет вызываться снова при удалении стека (и связанного с ним пользовательского ресурса). Это должно быть правильно обработано вашей лямбда-функцией, иначе ваш стек может застрять в состоянии
DELETE_FAILED
.
- Если вам нужно, чтобы лямбда-функция вызывалась после создания какого-то определенного ресурса, добавьте атрибут
-
Добавьте ссылку на функцию Lambda в вывод стека, затем напишите простой скрипт, который выполняет создание стека, а затем вручную вызывает функцию Lambda.