我们正在使用其中运行了Docker容器的AWS ECS服务。这些docker容器具有应用程序代码,该应用程序代码不断轮询SQS并获取单个消息,对其进行处理并杀死自己,这就是任务的生命周期。 现在,我们正在根据SQS上的消息数量扩展任务和集群中的EC2。我们能够扩大规模,但是却很难缩小规模,因为我们不知道任何任务是否仍在处理任何消息,因为由于某些复杂的逻辑,消息处理时间很长。 在这种情况下,有人可以建议扩大和缩小规模的基础方法是什么吗?
答案 0 :(得分:0)
您是否已考虑将AWS Lambda用于此用例而不是ECS(前提是您的应用程序逻辑在少于5分钟的时间内运行)。您可以将SQS用作Lambda的触发器。 AWS Documentation : Using AWS Lambda with Amazon SQS提供了有关如何使用Lambda实现此目标的全面指南。
答案 1 :(得分:0)
您提到的用例并不意味着ECS for EC2实例。您应该考虑使用AWS ECS Fargate或AWS BATCH。一方面,fargate将为您提供更多基础架构方面的功能,例如,任务可以运行更长的时间,或者根据某些参数(例如CPU或MEM)扩展任务的规模。另一方面,您只需支付集群中一次运行的任务数。