【问题标题】:aws sns invoking lambda multiple timesaws sns 多次调用 lambda
【发布时间】:2022-01-27 01:06:29
【问题描述】:
我的 AWS 应用程序不允许重复。在我的应用程序(扇出)中,SNS 触发了多个 lambda 服务。由于 SNS 遵循至少一次执行,因此有可能多次触发相同的服务。
- 如果我使用 SNS FIFO 修复重复问题?或任何最佳选择?
- 使用 SNS FIFO,我们只能订阅 SQS,是否有任何替代方法可以直接触发 lambda?
我的意图是 SNS==> 不同的 lambdas(基于输入的 msg 类型,没有重复)
提前致谢,
阿尼尔
【问题讨论】:
标签:
amazon-web-services
aws-lambda
amazon-sns
【解决方案1】:
- 是的,如果您提供重复数据删除 ID 或启用主题上基于内容的消息重复数据删除。此外,您还必须有一个 SQS FIFO 队列。
AWS docs 对重复数据删除有这样的看法:
Amazon SNS FIFO 主题和 Amazon SQS FIFO 队列支持消息重复数据删除,只要满足以下条件,就可以提供完全一次的消息传递和处理:
- 已订阅的 SQS FIFO 队列存在并具有允许 Amazon SNS 服务主体将消息传递到队列的权限。
- SQS FIFO 队列使用者处理消息,并在可见性超时到期之前将其从队列中删除。
- Amazon SNS 订阅主题没有消息过滤。当您配置消息过滤时,SNS FIFO 主题支持最多一次传递,因为可以根据您的订阅过滤策略过滤掉消息。
- 不存在阻止确认消息传递的网络中断。
- 对于这个,答案应该是显而易见的。不,此时此刻,您只能将 SQS FIFO 作为主题的订阅者。 AWS documentation 对此非常具体:
要将来自 Amazon SNS FIFO 主题的消息扇出到 AWS Lambda 函数,需要额外的步骤。首先,为主题订阅 Amazon SQS FIFO 队列。然后配置队列触发功能。