您好Stackoverflow社区,我有一个关于将Docker与AWS EC2一起使用的问题。我对EC2很满意,但对Docker来说却很新。我在Python 3.6中编码并希望自动执行以下过程:
1:使用Docker启动EC2实例(Docker镜像存储在ECR中)
2:运行一次性过程并以CSV格式返回结果(让我们称之为“T”)
3:在AWS S3中存储“T”
4:关闭EC2
使用EC2实例的原因是因为该过程计算量很大,并且对我的本地计算机不可行。 Docker的原因是确保整个团队和CI工具(目前使用circle.ci)的开发环境相同。据我所知,与AWS的交互大多可以使用Boto3完成。
我一直在阅读AWS自己的ECS,我觉得它更倾向于使用Docker部署Web应用程序,而不是运行一次性流程。然而,当我在EC2 + Docker周围搜索时,除了ECS之外别无其他。我也在AWS中完成了本教程,但它没有多大帮助。
我还考虑过使用shell脚本运行EC2(即下载docker,拉动图像,构建容器等)但感觉有点hacky?因此我的问题是:
1:在他的情景中,ECS真的是最合适的解决方案吗? (或者换句话说就是为此类操作设计的ECS?)
2:如果有人使用ECS建立和运行一次性流程的例子? (我发现设置确实令人困惑,特别是使用的术语)
3:有哪些其他选择(如果有的话)?
非常感谢您的帮助!
答案 0 :(得分:0)
不了解您的流程;我想为你提供两种选择。
等待您的流程计算密集程度,这可能不是一个可行的选择。但是,如果它可以分发,Lambda很棒。您可以找到有关资源限制here的更多信息。这条路线,您只需编写Python 3.6代码来执行您的任务并编写" T"到S3。
使用Data Pipeline,您可以构建自定义AMI(EC2)并将其用作图像。然后,您可以指定运行此过程所需的EC2 resource
的大小。听起来你的过程非常简单。您需要定义:
您还可以安排管道以间隔/时间表运行,或直接从boto3调用。