AWS Lambda 调用 Fargate 任务

AWS Lambda invoking Fargate task

我是 AWS 的新手,正在尝试使用 AWS Lambda 和 Fargate。我有一个长 运行ning 过程,我将其定义为 AWS Fargate 容器化任务。此任务是使用来自 AWS Lambda 函数的 ecs.runTask(taskParams, callback) api 调用触发的。 Lambda 函数由上传到 S3 存储桶的文件通知触发。

You can now configure your AWS Lambda functions to run up to 15 minutes per execution. Previously, the maximum execution time (timeout) for a Lambda function was 5 minutes. (Source: Amazon)

我的问题是,ecs.runTask() 运行 任务是否在按需容器内异步执行,而没有触发它的 lambda 函数等待其完成?这是否解释了 lambda 函数如何不再受任务 运行ning 时间的约束?对于我们不希望附近有 ECS 实例的长期 运行 宁进程,这是推荐的方法吗?

最后,ecs.runTask()ecs.startTask()api调用有什么区别?

asynchronously inside an on-demand container without the lambda function that triggered it waiting for its completion?

是的。 Lambda 将启动它。

what is the difference between ecs.runTask() and ecs.startTask() api calls?

startTask 只能用于 EC2 启动类型,并且需要您明确选择 哪个 EC2 实例用于您的任务。不能用于 Fargate,允许您启动单个任务。

runTask 可用于 EC2 和 Fargate 启动类型。当您使用 runTask 时,ECS 会决定将您的任务放置在何处,例如哪个实例。此外,您可以一次 运行 单个任务的多个副本。

可能还有更多差异,但我认为以上是关键。