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

仅在处理了相同主题的SQS订阅后调用AWS Lambda SNS事件

辛承
2023-03-14

我想实现一个Amazon SNS主题,它首先将消息传递给一个SQS队列,该队列是该主题的订阅者,然后执行一个AWS Lambda函数,该函数也是同一主题的订阅者。然后Lambda函数可以从SQS队列读取消息,并并行处理其中的几条消息(数百条)。

我的问题是,是否有任何方法可以保证发送到SNS主题的消息会首先被传递到SQS队列,然后才被传递到Lambda函数?

这样做的目的是扩展到大量消息,而不必为每个消息单独执行Lambda函数。

共有1个答案

姜志行
2023-03-14

您要查找的内容当前无法使用一个SNS主题。如果您将lambda订阅到SNS主题,则每次该SNS主题接收到消息时,都会并行执行特定的lambda

解决方案可能是有两个SNS主题并将消息发布到第一个主题,然后让您的SQS订阅它。向第一个主题成功提交消息后,您可以向第二个SNS主题发送消息,以执行您的lambda来处理存储到SQS的第一个SNS主题的消息。

另一个可能的解决方案可能是上面的,您可以只向第二个主题发送一些周期性消息,以运行订阅的lambda。这将允许您缩放lambda SQS Workers

 类似资料:
  • 是否有一种方法可以使用AWS CLI列出特定SQS队列订阅的所有AWS SNS主题? 我已经知道如何看到一个SNS主题上的订阅者列表,但这只有在我知道SNS主题的名称时才起作用。在这种情况下,我只知道SQS队列的名称。 我在网上搜索什么也找不到。

  • 我有几个。Net 5.0微服务,RabbitMQ作为消息代理。现在我正在切换到AWS SQS。很少有服务在侦听相同的消息(这是通过RabbitMQ中的Exchange完成的)。在AWS中,这可以通过将SQS队列订阅到SNS主题来实现。我创建了SNS fifo topic和SQS fifo队列,将这些队列订阅到topic。当我将消息直接发布到队列时,一切都会立即工作,但当我将消息发布到SNS主题时,

  • 到目前为止,我的代码在启动时查找主题和队列,并创建缺少的任何内容。这似乎起作用了,我可以在AWS管理控制台中看到SNS主题和SQS队列,并且我可以看到队列订阅了该主题,但是当我将消息发布到该主题时,队列中没有任何东西结束。 即使我使用管理控制台中的“publish”按钮手动发布消息,队列仍然是空的。 我把主题和队列上的权限都改成了‘每个人都可以做每件事’就是为了消除这种可能性。我的代码收到一个消息

  • 我有一个将消息发布到AWS SNS主题字符串的NodeJS应用程序和一个AWS SQS订阅。在SQS控制台上,我可以看到发布的消息。但是,我不清楚SQS队列的访问策略。 问题 当将消息传递到SQS队列时,作为订阅的结果,哪个用户是有效的?与发表该主题的人相同? 只有在使用时,才能使消息流入队列。那么,我应该如何定义一个限制性策略,使消息只能作为订阅的结果写入队列? 创建具有权限的队列的AWS SQ

  • 我有一个websocket服务器和一个websocket客户端,都是Java的。websocket服务器具有以下功能: 在 Java 网页滑板客户端中,我在我的踩踏会话处理程序中提供了以下内容: 然后,我能够通过客户端向服务器路径“hello”发送消息来在两者之间进行通信,然后由于客户端订阅了“topic/greetings”,所以我也要用我的stompFrameHandler来处理响应。 但是我

  • 我正在构建一个由亚马逊服务提供支持的警报系统。 我每天将一个文件放到S3上,它生成一个lambda函数(我们称之为生成器函数)来处理该文件。 Generator基于此文件构建警报并将多条消息发布到SNS主题(让我们称之为发件箱)-由Generator计算的每个收件人一条消息。 我在发件箱中订阅了第二个lambda函数(我们称之为Courier),它应该接收每条消息并对其进行处理。 发电机代码: 以