pym*_*mat 3 etl amazon-sqs amazon-ecs aws-lambda
这个问题更多的是一个关于如何最好地构建 ETL 管道的架构问题。目前,我有一个通过 SQS ping 的 AWS Lambda。但处理数据可能需要 15 分钟多一点(AWS 的运行时间限制),并且使用 forsam build部署会导致 .zip 大于 250MB,因此会引发错误。因此需要 AWS Lambda 的替代方案。到目前为止我看到的替代方案是:
SQS -> ECS (Fargate) SQS -> Lambda -> ECS (Fargate)
我没有找到任何关于这两个选项的优缺点的提示,以及通常首选的选项。关于如何解决这个问题有什么建议吗?
我没有找到任何关于这两个选项的优缺点的提示,以及通常首选的选项。关于如何解决这个问题有什么建议吗?
一旦您开始遇到 15 分钟限制或 Lambda 的部署文件大小限制,那么可能就该迁移到 ECS Fargate 了。
请注意,当您将 SQS 配置为 Lambda 的事件源时,AWS 实际上在幕后运行一个进程,该进程轮询 SQS 队列中的消息,然后使用这些消息调用您的 Lambda 函数。SQS 从不将消息“推送”到任何地方,它是一种“拉”服务。
考虑到这一点,当迁移到 ECS 时,您需要更改代码,以便它轮询 SQS 来处理要处理的消息。一般来说,配置它的方法是拥有一个 docker 镜像,当它作为容器生成时,只需永远轮询 SQS 队列,处理它收到的任何消息。然后根据SQS队列中的消息数量配置ECS自动伸缩。当队列中有0条消息时,ECS可以缩减至0个正在运行的任务。当队列中有消息时,ECS 可以扩展到您希望运行的任务数量以处理消息。此设置中不需要 Lambda。
| 归档时间: |
|
| 查看次数: |
4477 次 |
| 最近记录: |