在AWS上启动并行作业的最简单方法是什么?

时间:2019-06-27 12:51:33

标签: amazon-web-services aws-lambda aws-batch

我的用例如下:

我有一个python脚本,

1. reads a file from S3
2. processes the file and outputs a new file
3. saves the output file to S3 (or maybe a database)

python脚本具有一些依赖关系,这些依赖关系通过virtualenv进行管理。

在AWS上并行运行这些脚本的推荐/最简单方法是什么?

我看到以下选项:

  1. AWS Batch:看起来真的很复杂-我必须构建自己的Docker容器,设置3个不同的用户,调试起来并不容易。
  2. AWS Lambda:设置起来比较容易,但是我仍然必须将脚本包装到Lambda函数中。调试似乎不太简单
  3. 针对手动启动的EC2实例进行扼制-从用户角度来看,这是理想的-我要做的就是创建一个jobs.sbatch文件,该文件加载virtualenv并运行脚本。主要缺点是我必须安装和配置Slurm。

处理此工作流程的推荐方法是什么?

2 个答案:

答案 0 :(得分:1)

我认为您可以通过使用包含要处理的对象密钥的SQS队列来使用发布/订阅机制。然后,您可以拥有一组EC2实例或ECS,每个实例都订阅队列并执行单个操作。使用队列,可以确保每个流程都可以处理单个问题。我认为可以创建一个 auto scaling group in ECS,并且您可能可以更改计算机的数量以调整性能/成本。

答案 1 :(得分:1)

Lambda将非常适合您,因为您无需考虑缩放比例,也无需进行任何设置。关于调试,您可以使用sls wsgi serve

轻松地进行调试