我是AWS的新手,正在尝试使用AWS Lambda和Fargate。我有一个长时间运行的流程,我将其定义为AWS Fargate容器化任务。此任务是使用AWS Lambda函数的ecs.runTask(taskParams, callback)
api调用触发的。Lambda函数是由文件上传到S3桶的通知触发的。
您现在可以将AWS Lambda函数配置为最多运行15个每次执行分钟数。以前,最大执行时间Lambda函数的超时时间为5分钟。(来源:亚马逊)
我的问题是,ecs.runTask()
是否在按需容器内异步运行任务,而没有触发它等待完成的lambda函数?这是否解释了lambda函数不再受任务运行时间的约束?对于不需要ECS实例的长时间运行流程,这是推荐的方法吗?
最后,ecs.runTask()
和ecs.startTask()
api调用有什么区别?
在一个按需容器内异步进行,而没有触发它等待完成的lambda函数?
是的。Lambda会直接启动它
ecs.runTask()和ecs.startTask() api调用之间的区别是什么?
startTask
只能在EC2启动类型上使用,并且需要显式地选择为您的任务使用哪个EC2实例。不能用于Fargate,允许您启动单个任务。
runTask
可以同时用于EC2和Fargate启动类型。当你使用runTask
时,ECS决定在哪里放置你的任务,例如哪个实例。此外,您可以一次运行单个任务的多个副本。
可能有更多的不同,但我认为以上是最关键的。