如何从外部SQS队列活动触发AWS Lambda函数

时间:2020-01-14 22:22:15

标签: aws-lambda amazon-sqs

我正在尝试配置一个lambda函数以从我不拥有/没有配置的读取和删除权限的SQS队列中使用。有没有办法对我的AWS账户中不存在的队列使用lambda的SQS触发功能?

如果不是,那么还有哪些替代方法不包括检查已调度事件的队列。

1 个答案:

答案 0 :(得分:0)

如果SQS队列的所有者为您提供了必要的权限(有关权限,请参阅the setup docs),则可以执行此操作。但是,您不应该

订阅其他人的SQS队列是一种反模式。。这是因为队列表示工作积压,而隐含的功能是最终所有东西都会出来。队列所做的只是将输入流与输出流分开(数据流的流入和流出比流出的快和慢)。

但是,这种流动的想法意味着,当出现某种情况时,它不再在队列中。 (注意:这里有解决方法,但是通常不建议使用)。但是,消费者始终具有处理队列中所有内容的目标。这可以在一个使用者的控制下由多个线程完成,但是最终结果仍然是所有内容都已处理。如果有多个消费者,那么他们必然会相互竞争,而且他们都无法处理队列中的所有内容。

我们如何确保没有多个使用者?简单: 使用者拥有队列。没有其他使用者被授予读取权限。很有可能是由使用者以外的其他人来控制队列的填充(接收写权限)的,AWS为此提供了完美的解决方案:

SNS主题: An SNS topic is a source of data。实际上,它是发布者。当其他人希望您可以访问他们的数据时,他们允许您成为其主题的 subscriber 。将新消息发布到SNS主题后,订阅该主题的每个人都会获得一份副本。该副本发生了什么由订户决定:它可以直接作用,存储以备后用,也可以间接作用,例如。被放在队列中。这是Pub-Sub model。它从每个收件人(订户)关于如何使用这些消息的个人决定中分离出一个实体(发布者)创建消息并将其发送给其他许多实体的详细信息。


TL; DR:获取当前拥有队列的任何人来发布到SNS主题,然后设置订阅该主题的队列(或您喜欢的任何对象)。