用Docker启动EC2,运行脚本并closures

嗨Stackoverflow社区,我有一个关于使用Docker与AWS EC2的问题。 我对EC2感到满意,但是对于Docker来说,这是非常新的。 我在Python 3.6中编码,并希望自动化以下过程:

1:使用Docker启动一个EC2实例(存储在ECR中的Docker镜像)

2:运行一次性过程,并以CSV格式返回结果(我们称之为“T”)

3:在AWS S3中存储“T”

4:closuresEC2

使用EC2实例的原因是因为这个过程的计算量很大,对于我的本地计算机来说是不可行的。 Docker的原因是为了确保整个团队和CI设施(目前使用circle.ci)的开发环境相同。 我明白,与AWS的交互主要可以使用Boto3完成。

我一直在阅读AWS自己的ECS,而且我有一种感觉,它更倾向于使用Docker部署Web应用程序,而不是运行一次性的过程。 但是,当我searchEC2 + Docker的时候,没有任何其他的ECS出现了。 我也在AWS中完成了这个教程,但没有多大帮助。

我也考虑过使用shell脚本运行EC2(例如下载docker,拉图像,build造容器等),但是感觉有点不好意思? 所以我这里的问题是:

1:在他的情况下,ECS真的是最合适的解决scheme吗? (或换句话说就是ECS为这种操作而devise的?)

2:如果有的话,是否有人使用ECSbuild立和运行一次性stream程? (我发现设置真的很混乱,尤其是使用的术语)

3:有什么其他的select(如果有的话)?

十分感谢你的帮助!

不知道更多关于你的过程; 我想为你提供两种select。

  1. 使用Lambda

等待您的stream程计算密集程度如何,这可能不是一个可行的select。 但是,如果可以分发的东西,Lambda真棒。 您可以在这里find关于资源限制的更多信息。 这条路线,你只需编写Python 3.6代码来执行你的任务,并写入“T”到S3。

  1. 使用数据pipe道

使用数据pipe道 ,您可以构build自定义AMI(EC2)并将其用作图像。 然后,您可以指定运行此过程所需的EC2 resource的大小。 这听起来像你的过程将是非常简单的。 您需要定义:

  • EC2resource
    • 指定AMI,angular色,安全组,实例types等
  • ShellActivity
    • 根据需要引导EC2实例
    • 抓住你的代码formsS3,GitHub等
    • 执行你的代码(包括在你的代码中写入“T”到S3)

您还可以安排pipe道以间隔/计划运行,或直接从boto3调用。