我使用 CF 模板来创建 Beanstalk 环境。我想在创建环境时通过 SNS 触发 Lambda 代码,这样我就可以使用 lambda 来触发 jenkins 作业,并对新环境进行集成测试。
在 Beanstalk 中成功创建环境后,是否可以发送 SNS 消息?我已经定义了 lambda 代码订阅的主题。
beanstalk API 允许您定义通知端点。 http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.managing.sns.html
但是,如果我只能指定电子邮件地址并且必须确认订阅,这有什么用呢?如何使用它自动触发SNS消息?
{
"OptionName": "Notification Endpoint",
"Namespace": "aws:elasticbeanstalk:sns:topics",
"Value": "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="4e2021633c2b3e22370e2b362f233e222b602d2123" rel="noreferrer noopener nofollow">[email protected]</a>"
},
{
"OptionName": "Notification Protocol",
"Namespace": "aws:elasticbeanstalk:sns:topics",
"Value": "email"
},
我发现的解决方法有点hacky。我在堆栈创建过程结束时创建了一个 EC2 实例,并运行一些 AWS 命令以通过 UserData shell 发送 SNS 通知。这是唯一的方法吗?
最佳答案
我正在回答我自己的问题。我设法弄清楚如何在创建新的 Beanstalk 环境后使用 SNS 触发 lambda 代码。
我创建了一个 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 主题设置为 lambda 代码的事件源。
现在,每次环境发生问题(添加/删除实例、创建环境等)时,都会触发 lambda
关于amazon-web-services - AWS Beanstalk - 创建新环境时向 Lambda 发送 SNS 通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32489048/