跳至内容

在Fargate上触发定时任务

0

【以下的问题经过翻译处理】 大家好! 这是我第一次尝试使用docker化应用程序,我想在Fargate上部署一个cron任务,以运行docker镜像。 一些背景: docker镜像通过CI / CD管道从我的gitlab帐户发布到ECR。该镜像是一个slim伯斯特python,我利用docker in docker构建该镜像。推到ECR成功。

镜像的基础知识是:

1.创建一个带有requirements.txt中指定库的python env 2.将库导入到main.py中以及func.py文件中的所有用户定义的函数

main.py运行一系列DDL sql和DML sql,通过snowflake python SDK传递到我们的snowflake 数据准备Stage。然后,将Stage上的数据循环发送到外部API(SmartyStreets),并将GET结果发送回snowflake(基本上标准化自由文本地址字段是应用程序的重点)。

我的目标是:每天一次通过计划的Fargate任务运行它。 没有任何内容发送到snowflake。我确定在运行docker容器的任务方面,我可能遗漏了一些非常愚蠢的事情,但找不到它。查看了许多YouTube上的教程,但它们似乎

我的问题是:我定义了一个 fargate 集群,我有一个任务定义,并创建了一个计划规则(EventBridge),但没有任何反应。当我尝试手动运行任务定义时,没有任何反应。该任务显示其处于挂起状态然后消失,并且也没有给出任何日志(告诉我某些内容失败),并且在我创建的事件桥规则的计划时间内没有任何反应。在 SQL DML 上,我有一个将此过程记录到snowflake表的开始|结束时间,这表明没有向snowflake发送任何内容。我敢肯定,在获取运行 docker 容器的任务时,我缺少一些非常愚蠢的东西,但没有找到它。在 youtube 上查看了很多教程,但它们似乎都是针对 Fargate *服务 *(通常是flask)的网络应用程序驱动的,而不是像我试图做的那样按计划进行的简单突发 ETL 作业。

关于如何将这一切联系在一起的任何示例???

添加了注释 我很确定我选择的子网的 IP 在我们的snowflake上被列入白名单,但我预计 API 作为其外部会失败。但此时我只想触发 docker 容器/

专家

已提问 3 年前105 查看次数

1 回答
0

【以下的回答经过翻译处理】 你好,

请注意,你可以在EventBridge指标中检查“触发规则”、“调用”和“失败调用”来查看事件规则的情况,并观察规则是否按照预期从EventBridge方面被触发一次。

此外,你可以检查云跟踪日志中的api调用“RunTask”,以检查任务是否在预定时间记录到日志部分。如果存在RunTask api调用日志,那么你将能够看到更多有关任务停止的原因[2]或它是否启动的详细信息,这将有助于缩小问题范围。

谢谢,祝你有愉快的一天。


参考资料:

[1] https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-monitoring.html [2]https://aws.amazon.com/premiumsupport/knowledge-center/ecs-task-stopped/

专家

已回答 3 年前

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

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