AWS Batch 中有大量作业,你能保证订单吗?

Can you guarantee order with a large number of jobs in AWS Batch?

我的问题是 运行在 AWS Batch 上 运行完成数千个作业后才完成作业。 我已经尝试 运行 优先级较低的作业队列中的作业和 运行 同一队列中的作业,但在所有其他作业之后提交(文档说作业的执行顺序大致是它们已提交)。但我的问题是这些(或其他一些)中的任何一个是否保证它会 运行 在其他人之后?

我不会依赖使用上述方法的保证。执行顺序明确不保证匹配提交顺序。优先级 "should" 有效,但在大规模情况下,某些事情可能会延迟您的高优先级执行并导致调度程序决定它有资源可用于低优先级队列。

可以依赖job dependencies。它们允许您指定一个作业依赖于另一个 N 个作业,因此必须等到它们全部完成才能开始 运行。这甚至可以链接 - A 取决于 BB 取决于 C,保证顺序 C -> B -> A。不幸的是,N <= 20.

依赖大量工作(超过 20 个)的最佳方式是依赖一个 array job,其中包含所有这些工作。与此相关的是,数组作业也可以配置为使其所有作业顺序相关(作业按数组顺序执行)。唯一需要注意的是,您必须将所有作业放入一个数组中。如果你想要依赖的数千个作业还没有在一个数组中,有一些方法可以将它们合并为一个——例如,如果你正在处理 1000 个文件,你可以将这些文件放在一个列表中,并使用其作业索引将每个数组作业索引到列表中。