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 都会增加您的延迟。
我正在研究使用 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 都会增加您的延迟。