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

SNS to SQS vs Direct SQS Put in Lambda@Edge Applications

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

换句话说,给定这两种配置,对于最终用户,一种配置会更高效吗?

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

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

编辑:

我说的是跨区

跨区域,SNS-to-SQS 会明显更快,如果按照此处所述配置。

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

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

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