为解决这个问题,可以使用AWS Batch的job dependency来设置数组中的并发作业数量。具体实现时,可以使用以下代码:
import boto3
batch_client = boto3.client('batch')
# define job definition and job name
job_definition = "my-job-definition"
job_name = "my-job"
# define array size and job dependency
array_size = 100
job_dependency = {"type": "SEQUENTIAL", "jobs": []}
# create array job with job dependency
response = batch_client.submit_job(
jobName=job_name,
jobQueue='my-job-queue',
jobDefinition=job_definition,
parameters={
'arraySize': str(array_size)
},
dependsOn=job_dependency,
arrayProperties={
'size': array_size
}
)
print(response)
在这个示例中,我们将作业数量设定为100个,但只允许32个同时运行。为实现这一目标,我们使用了所谓的'DEPENDENT”场景,其中我们将数组分为32个子组并在这些组之间创建依赖关系。这意味着在一组作业完成之前,第二组作业不会开始运行。这样就可以保证数组中最多只有32个并发作业。