SNS 到 SQS 与直接 SQS 放入 Lambda@Edge 应用程序

mic*_*cah 4 amazon-sqs amazon-sns aws-lambda aws-lambda-edge

我正在研究使用 Lambda@Edge 将从外部源生成的事件放入内部 SQS 队列中。lambda 只需要在必要时对其进行转换,进行交接,然后离开。我希望速度尽可能快,所以我的问题是,除了 SQS 之外,使用 SNS 是否有好处,或者我应该只使用 SQS?

换句话说,考虑到这两种配置,其中一种对最终用户来说性能会更好吗?

A) 请求进入 Lambda@Edge,Lambda 转换请求并将事件发送到 SNS,SNS 将事件发送到 SQS。

B) 请求进入 Lambds@Edge,lambda 转换请求并将事件直接放入 SQS。

编辑:

我说的是跨区域。

Mic*_*bot 6

如果按照此处所述进行配置,跨区域、SNS 到 SQS 的速度将显着加快。

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

当 Lambda@Edge 触发器运行时,该代码在最靠近查看器的区域中运行,并process.env.AWS_REGION会告诉您每次调用的区域。

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