aws-lambda - SQS 到 ECS (Fargate) 或 SQS 到 Lambda 到

这个问题更多的是关于如何最好地构建 ETL 管道的架构问题。目前,我有一个通过 SQS ping 的 AWS Lambda。但是处理数据可能需要 15 分钟多一点(AWS 的运行时限制)并且使用 sam build 进行部署会导致 .zip 大于 250MB,因此它会引发错误。因此需要 AWS Lambda 的替代方案。到目前为止我看到的替代方案是:

SQS -> ECS(法门) SQS -> Lambda -> ECS (Fargate)

我没有找到任何关于这两个选项的优缺点的提示,也没有找到通常首选的选项。有关如何处理此问题的任何提示?

最佳答案

I don't find any hints to the pro/cons of both options, and what is generally a preferred option. Any tips on how to approach this?

一旦您开始遇到 15 分钟限制或 Lambda 的部署文件大小限制,那么可能是时候迁移到 ECS Fargate 了。

请注意,当您将 SQS 配置为 Lambda 的事件源时,AWS 实际上在幕后运行一个进程来轮询 SQS 队列以获取消息,然后使用这些消息调用您的 Lambda 函数。 SQS 从不将消息“推送”到任何地方,它是一种“拉取”服务。

考虑到这一点,在迁移到 ECS 时,您需要更改代码,以便它轮询 SQS 以获取要处理的消息。一般来说,配置它的方法是拥有一个 docker 镜像,当作为容器生成时,它只会永远轮询 SQS 队列,处理它收到的任何消息。然后根据 SQS 队列中的消息数量配置 ECS 自动缩放。当队列中有 0 个消息时,ECS 可以缩小到 0 个正在运行的任务。当队列中有消息时,ECS 可以扩展到您希望运行的任意数量的任务以处理消息。在此设置中不需要 Lambda。

关于aws-lambda - SQS 到 ECS (Fargate) 或 SQS 到 Lambda 到 ECS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71692732/

相关文章:

ethereum - 扁平化智能联系人是否会降低部署成本?

c# - c#中的整数提升(以sbyte的范围为例)

python - 连接到与登录到 google colab 的不同的 google 驱动器

r - 创建一个虚拟变量,指示事件是否在过去 2 年发生

javascript - 根据条件在嵌套的 JS 数组中插入新的 JSON 对象

reactjs - 在函数或类中使用 `useDispatch` 可以吗?

google-forms - 您可以向 google forms api 提交 Restful 请求

r - 如果列的值与另一列的值匹配,如何返回列的名称?

linux - bash 将奇数日期格式转换为 linux 日期识别的更有效方法

python - 等于运算符与元组 : 'a' , 'b' == ('a' , 'b' )