SNS到SQS与Lambda@Edge应用程序中的直接SQS放置的比较

4
我正在研究使用Lambda@Edge将来自外部来源的事件放入内部SQS队列。该lambda仅需要在必要时进行转换,完成交接并离开。我希望这个过程尽可能快,因此我的问题是,除了使用SQS之外,使用SNS是否有益处,或者我应该只使用SQS?
换句话说,对于最终用户来说,这两种配置中哪一种更具性能?
A)请求进入Lambda@Edge,lambda转换请求并将事件发送到SNS,SNS将事件放入SQS。
B)请求进入Lambda@Edge,lambda转换请求并直接将事件放入SQS。
编辑:
我是跨区域讨论。
1个回答

6

如果按照这里描述的配置,跨区域的SNS到SQS将会显着提高速度。

最佳配置是在每个AWS区域中创建一个同名的SNS主题,并将您的SQS队列(假设只有一个队列,在单个区域中)订阅到所有这些主题。

当Lambda@Edge触发器运行时,该代码在最靠近查看者的地区运行,process.env.AWS_REGION将为每次调用告诉您是哪个地区。

使用此信息初始化SNS客户端,并将消息发送到该地区的SNS主题。SNS将立即接受该消息,但会异步(从您的角度)跨区域地将其传递到SQS队列,因此它不会阻止函数完成。直接从Lambda触发器函数进行任何跨区域请求,无论是向SQS还是SNS,都会增加延迟。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接