当前位置: 首页 > 知识库问答 >
问题:

AWS Beanstalk-创建新环境时向Lambda发送SNS通知

阙俊友
2023-03-14

我使用CF模板创建Beanstalk环境。我想在创建环境时通过SNS触发Lambda代码,这样我就可以使用Lambda触发jenkins作业,并对新环境进行集成测试。

有没有办法在Beanstek中成功创建env后发送SNS消息?我已经定义了一个订阅lambda代码的主题。

beanstalk API允许您定义通知endpoint。http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.managing.sns.html

但是,如果我只能指定一个电子邮件地址,并且我必须确认订阅,这是为了什么?如何使用它自动触发SNS消息?

      {
        "OptionName": "Notification Endpoint",
        "Namespace": "aws:elasticbeanstalk:sns:topics",
        "Value": "no-reply@example.com"
      },
      {
        "OptionName": "Notification Protocol",
        "Namespace": "aws:elasticbeanstalk:sns:topics",
        "Value": "email"
      },

我发现的一个解决方法有点粗糙。我在堆栈创建过程结束时创建了一个EC2实例,并运行一些AWS命令,通过UserData shell发送SNS通知。这是唯一的办法吗?

共有2个答案

钱嘉致
2023-03-14

虽然使用Elastic Beanstek配置通知并未提供发送Amazon SNS通知的特定示例,但email只是resp的默认设置。AWS Elastic Beanstek选项设置,您还可以为大多数/所有其他协议创建订阅,请参阅选项aws: elasticbeanstek: sns:主题:

  • 有效值:超文本传输协议httpsemailemail-jsonsqs

显然,这里还没有引用AWS Lambda,但它只是另一个SNS协议,所以我假设/希望该表还没有更新,下面的内容应该可以相应地工作(不过我自己还没有尝试):

  {
    "OptionName": "Notification Endpoint",
    "Namespace": "aws:elasticbeanstalk:sns:topics",
    "Value": "<Your Lambda function ARN>"
  },
  {
    "OptionName": "Notification Protocol",
    "Namespace": "aws:elasticbeanstalk:sns:topics",
    "Value": "lambda"
  },
曹季同
2023-03-14

我在回答我自己的问题。我设法找到了在创建新Beanstalk env后如何使用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

 类似资料:
  • 我需要使用< code>aws-sns-javascript向多个设备发送推送通知。当我创建createPlatformEndpoint时,我可以只添加一个设备令牌,但我需要向多个设备发送通知,如一个数组令牌 创建平台应用程序 创建平台终端节点 向Amazon SNS主题发送消息

  • 我的AWS社交网络停止向我的iOS订阅者发送推送通知,我正在试图了解原因。所以我从零开始,目标是向我的测试设备发送1个通知。 我已经做了以下工作: 在iOSDev Portal上创建新的Apple推送服务类型的新证书,而不是旧的APNsiOS生产,导入到钥匙串,导出证书和私钥,按照AWS SNS APNS说明中的说明将其添加到AWS。 已确认此新APNS证书显示在门户上我的应用ID的“生产SSL证

  • 我需要使用< code>aws-sdk-go lib通过设备令牌数组向多个设备发送SNS推送通知。 目前我正在使用以下步骤向SNS发送推送消息: 创建endpoint: 将消息发送到endpoint: 我还没有见过一种方法,只使用一个请求就可以将一个推送消息发送到多个设备。可能吗? 像这个例子来说明:

  • 我为沙盒iOS设置了推送通知,它们曾经工作过,但由于某种原因目前不工作。这是来自云观察日志的错误AWS SNS: 这是我的发送代码(AWS Lambda调用此代码): Lambda方法的返回数据: 我已经将问题缩小到不与我的lambda方法关联,因为我试图发布到直接从SNS控制台创建的endpoint。我还想知道为什么这个旧的实现在过去,一个月或两个月前,仍然有效,而现在不再有效。我认为这可能与过

  • 问题 你想创建一个新的Python环境,用来安装模块和包。 不过,你不想安装一个新的Python克隆,也不想对系统Python环境产生影响。 解决方案 你可以使用 pyvenv 命令创建一个新的“虚拟”环境。 这个命令被安装在Python解释器同一目录,或Windows上面的Scripts目录中。下面是一个例子: bash % pyvenv Spam bash % 传给 pyvenv 命令的名字是