SQS到ECS(Fargate)或SQS到Lambda到ECS



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

SQS->ECS(法盖特(SQS->Lambda->ECS(法盖特(

我没有发现任何迹象表明这两种选择的利弊,以及什么是首选。关于如何处理这个问题,有什么建议吗?

我没有发现任何关于这两个选项的优点/缺点的提示,以及通常首选的选项。关于如何处理这个问题,有什么建议吗?

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

请注意,当您将SQS配置为Lambda的事件源时,幕后AWS实际上正在运行一个进程,该进程轮询SQS队列中的消息,然后用这些消息调用Lambda函数。SQS从不";"推";消息在任何地方,它都是一个";"拉";服务

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

相关内容

  • 没有找到相关文章

最新更新