Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cron 如何使用aws lamba和cloudwatch事件运行长时间运行的任务_Cron_Aws Lambda_Amazon Cloudwatch - Fatal编程技术网

Cron 如何使用aws lamba和cloudwatch事件运行长时间运行的任务

Cron 如何使用aws lamba和cloudwatch事件运行长时间运行的任务,cron,aws-lambda,amazon-cloudwatch,Cron,Aws Lambda,Amazon Cloudwatch,我正在运行一个每天运行的cron,它连接到数据库(x),并将数据从x数据库导出到y数据库,然后从x数据库删除该数据。整个执行时间超过5分钟 我想在cloudwatch事件中使用lambda,但lambda的执行时间限制为5分钟。我曾想过批量运行查询并多次运行lambda,但我不知道lambda应该运行多少次。有什么方法可以通过lambda完成此任务,或者有其他解决方案吗?我建议使用一些AWS容器服务(ECS/EKS/Fargate)来执行“导出容器”:例如,ECS还支持计划执行: “您可以使用C

我正在运行一个每天运行的cron,它连接到数据库(x),并将数据从x数据库导出到y数据库,然后从x数据库删除该数据。整个执行时间超过5分钟


我想在cloudwatch事件中使用lambda,但lambda的执行时间限制为5分钟。我曾想过批量运行查询并多次运行lambda,但我不知道lambda应该运行多少次。有什么方法可以通过lambda完成此任务,或者有其他解决方案吗?

我建议使用一些AWS容器服务(ECS/EKS/Fargate)来执行“导出容器”:例如,ECS还支持计划执行:

“您可以使用CloudWatch事件规则和目标在类似于cron的时间表上运行Amazon ECS任务。”请参阅:


使用此选项,您不会达到lambda中5分钟的限制,并且仍然只为您的容器运行时间付费(如果设置正确)。

您是否考虑过使用
步骤函数实现cronjob?

解决问题的一个可能方法是分批处理作业。在批之间检查当前执行时间。如果执行时间高于特定阈值,则终止lambda,并启动另一个step函数,直到导出整个数据。

您可以访问上下文中剩余的时间,该时间称为
getRemainingTimeInMillis()
。密切关注它,当剩余时间变少时,使用标记递归调用相同的lambda。冲洗并重复

危险:你很容易发现自己做得不对。如果您这样做了,请不要惊慌,但您可能必须删除AWS Lambda函数并重新上传它以停止无限循环