[英]ECS Container and Docker
我一直坚持这一点的时间最长:我将 Python 代码部署为 dockerized 容器。
我在 Python CDK 中做这一切。
这是我创建集群的方式
vpc_test = _ec2.Vpc.from_lookup(self, "VPC",
vpc_id= "vpc-6****"
)
#Setting up the container to run the job
cluster = _ecs.Cluster(self, "ClusterToGetFile",
vpc=vpc_test
)
task_definition = _ecs.FargateTaskDefinition(self, "TaskDefinition",
cpu=2048,
memory_limit_mib=4096
)
task_definition.add_container("getFileTask",
image = _ecs.ContainerImage.from_asset(directory="assets", file="Dockerfile-ecs-file-download"))
这是-Dockerfile-ecs-file-download
FROM python:3.9
WORKDIR /usr/app/src
COPY marketo-ecs-get-file/get_ecs_file_marketo.py ./
COPY marketo-ecs-get-file/requirements.txt ./
COPY common_functions ./
RUN pip3 install -r requirements.txt --no-cache
CMD ["python" , "./get_ecs_file_marketo.py"]
首先,我要做的就是手动运行任务(部署)。
我在 get_ecs_file_marketo.py.py 文件中的所有内容是
import logging
logging.info("ECS Container has stareted. ")
但是,当我部署任务时,我收到此错误:
Stopped reason
Essential container in task exited
我的计划是使用 ecs run 任务作为步骤 function 的一部分。 所以当 Lambda 处理完一些数据,需要做一个数据拉取时,它会调用这个容器的 RunTask。
理想情况下,我希望 Lambda 在步骤 function 中完成所有操作,但是,时间限制导致 Z945F3FC449518A73B9F5F32868DB466C3 在下载完整文件并将其推送到 S 之前死亡。 这将是一个常规练习,但是,需要预先安装 lambda,因为该作业需要对请求进行排队,并在 ecs/容器可以 go 并开始下载文件之前继续检查文件状态。
任何反馈表示赞赏。 谢谢。
这似乎完全按照我的预期工作。 您的脚本所做的只是打印一条日志消息并退出。
您并没有真正收到错误消息,只是通知您脚本停止运行(因为它已完成)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.