amazon-web-services - 如何运行 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 环境。
解决方案
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 任务:
推荐阅读
- jquery - How to execute some piece of jquery code only when the viewport is above 1000px in WordPress
- ibm-integration-bus - 在 ESQL 中迭代字符串字符的最佳/最正确方法是什么?
- google-apps-script - How can I copy a range to a different sheet based on checkbox value, then delete on the new sheet, while keeping both check boxes up to date
- c++ - cmath 是否从 math.h 借用了它的实现
- python - 手动定义聚类中心
- asp.net - 从 google adwords api 获取 Null 数据
- kotlin - 使用额外属性的 build.gradle.kts 脚本中的错误
- python - python使用路径从选定的文件中创建一个excel并读取excel
- laravel - 如何在资源控制器 laravel 6 中有两种更新方法
- c++ - 为什么 imwrite on BMP 图像卡住/不返回?