Amazon web services 如何运行AWS ECS任务,然后在其就绪后运行Lambda函数,然后最终停止任务?

Amazon web services 如何运行AWS ECS任务,然后在其就绪后运行Lambda函数,然后最终停止任务?,amazon-web-services,lambda,amazon-ecs,aws-event-bridge,Amazon Web Services,Lambda,Amazon Ecs,Aws Event Bridge,我是AWS的新手。我有一个Lambda函数,我想每天在格林尼治标准时间上午4:00运行。Lambda函数取决于要运行的AWS ECS容器任务。我不希望总是运行AWS ECS容器任务(因为这对我来说成本很高),而是希望能够触发运行它,然后在Lambda任务就绪时运行它,最后在Lambda函数完成时停止它 我对此进行了研究,发现我可以使用AmazonEventBridge规则运行Lambda函数。我知道我可以使用CRON表达式,04***,每天早上4:00运行。但是,我不知道如何首先运行ECS容器任

我是AWS的新手。我有一个Lambda函数,我想每天在格林尼治标准时间上午4:00运行。Lambda函数取决于要运行的AWS ECS容器任务。我不希望总是运行AWS ECS容器任务(因为这对我来说成本很高),而是希望能够触发运行它,然后在Lambda任务就绪时运行它,最后在Lambda函数完成时停止它

我对此进行了研究,发现我可以使用AmazonEventBridge规则运行Lambda函数。我知道我可以使用CRON表达式,
04***,每天早上4:00运行。但是,我不知道如何首先运行ECS容器任务,以及Lambda函数完成后如何停止任务

其他资料:

Lambda函数具有Node.js环境。

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

EB规则的示例可以是:

{
  "source": [
    "aws.ecs"
  ],
  "detail-type": [
    "ECS Task State Change"
  ],
  "detail": {
    "lastStatus": [
      "RUNNING"
    ]
  }
}
可以对规则进行其他自定义

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

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

您还可以通过步骤功能协调lambda和ecs任务:


ECS支持计划部署。你看过了吗?@Marcin是的,但是当Lambda函数在部署后处于就绪状态时,我如何触发它?有没有办法将自动分配的公共IP从ECS容器传递到Lambda函数,具体来说,我如何访问它?@user12055579使用Lambda中的AWS SDk查询你的任务并获取你需要的所有信息需要。我不太清楚AWS SDK是如何工作的,但是如果我有多个ECS容器任务在运行,该怎么办;我能否分辨Lambda函数是从哪一个触发的?@user12055579 EB事件具有
taskArn
,因此您将知道哪个任务触发了您的函数。您可以尝试构建它,如果您有困难,可以使用函数代码、示例EB事件和其他详细信息提出新问题。