仅请求1个Fargate任务,但创建了多个

0

【以下的问题经过翻译处理】 我创建了一个Lambda(NodeJS),它会在文件上传到S3存储桶时触发。该Lambda使用AWS SDK(v2)中的ecs.runTask方法来创建一个Fargate任务,任务定义包括两个容器来处理上传的文件。该任务在没有定义服务的ECS集群中创建。

我遇到的问题是,虽然我只请求创建一个任务,但总是看到创建了两个任务。它们都运行并产生日志,表示它们已经处理了上传的文件(但我只想处理一次文件)。

Lambda的CloudWatch日志看起来很正常,只返回一个任务的详细信息(其中包括一个创建的任务的taskArn)。

我尝试从TaskDef中删除一个容器并获得相同的行为(即两个任务,每个任务包含1个容器)。我尝试将要创建的任务计数更新为3,然后启动6个任务(Lambda日志显示3个taskARN)。 (重复的任务总是在第一个任务创建的一两秒钟内创建。)如果我使用相同的设置从管理控制台创建任务,它只会按预期创建1个任务。

如果有任何建议,关于可能的问题原因或如何进一步调试的建议,我将不胜感激。

profile picture
专家
已提问 5 个月前12 查看次数
1 回答
0

【以下的回答经过翻译处理】 很难在不深入调查的情况下回答您的问题 - 您确定lambda只执行一次吗……您的代码中也可能有两次调用(但只记录了一次)。

使用Lambda启动Fargate任务以处理S3中的文件并不是一个好的模式,因为错误处理等方面很困难,我建议使用Step Functions,它可以通过Event Bridge触发,可以同步启动fargate tasks,并具有完整的逻辑与错误处理能力。

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则