首页 > 解决方案 > 如何运行 AWS ECS 任务,然后在准备好后运行 Lambda 函数,然后最终停止任务?

问题描述

我是 AWS 新手。我有一个 Lambda 函数,我想每天在格林威治标准时间凌晨 4:00 运行。Lambda 函数依赖于要运行的 AWS ECS 容器任务。我不想让 AWS ECS Container 任务始终运行(因为它对我来说成本很高),我希望能够触发运行它,然后在准备就绪时运行 Lambda 任务,最后在 Lambda 函数完成时运行,我想要阻止它。

我对此进行了调查,发现我可以使用 Amazon EventBridge 规则运行 Lambda 函数。我知道我可以使用 CRON 表达式 ,0 4 * * ? *在每天凌晨 4:00 运行它。但是,我不确定如何首先运行 ECS 容器任务,以及如何在 Lambda 函数完成时停止该任务。

其他信息:

Lambda 函数具有 Node.js 环境。

标签: amazon-web-serviceslambdaamazon-ecsaws-event-bridge

解决方案


ECS向 EventBridge (EB) 发送事件。您可以在 EB 中设置规则以捕获感兴趣的事件并触发您的 lambda 函数作为事件的目标。

示例 EB 规则可以是:

{
  "source": [
    "aws.ecs"
  ],
  "detail-type": [
    "ECS Task State Change"
  ],
  "detail": {
    "lastStatus": [
      "RUNNING"
    ]
  }
}

规则的其他定制是可能的。

以及如何在 Lambda 函数完成时停止任务。

您的 lambda 可以使用 AWS SDK for ECS 并停止任务。EB 事件捕获将包含启动了哪个任务的信息。

您还可以通过 step 函数编排您的 lambda 和 ecs 任务:


推荐阅读