AWS Batch 数组 - 数组大小?

cod*_*ons 8 batch-processing amazon-web-services aws-batch

我正在使用 AWS Batch 并已开始使用数组作业。 AWS_BATCH_JOB_ARRAY_INDEX作为环境变量传递给容器。

数组大小是否以某种方式传递?必须知道该指数是与 5 个职位相关还是与 1000 个职位相关。目前,我将其作为我自己的环境变量传递,但认为该信息已经以某种方式传递到容器。

Mat*_*ock 5

目前这是不可能的。我已经提出了一个功能请求,您可以在这里投票: https: //github.com/aws/containers-roadmap/issues/1631

与此同时,我找到了一个巧妙的解决方法。阵列工作人员的作业 ID 似乎符合$PARENT_JOB_ID:$AWS_BATCH_JOB_ARRAY_INDEX. 因此,只要您可以依赖数组工作 ID 的这种格式,您就可以描述父作业并从中获取数组总大小。这是一个使用的示例boto3

import os
import boto3

worker_job_id = os.environ['AWS_BATCH_JOB_ID']
parent_job_id = worker_job_id.split(":")[0]

response = boto3.client('batch').describe_jobs(jobs=[parent_job_id])

parent_job = response['jobs'][0]
array_size = parent_job.get('arrayProperties', {}).get("size")

print("array_size =", array_size)
Run Code Online (Sandbox Code Playgroud)


Gow*_*and -1

如果我的理解是正确的,您是在问数组大小应该在aws批处理中传递到哪里吗?

在作业部分中,单击提交作业 - 在环境中选择阵列。

请参阅:https ://docs.aws.amazon.com/batch/latest/userguide/submit_job.html

  • 是的,您在提交作业时提供了所需的作业数量,但是据我所知,该信息永远不会进入 Docker 内部。目前,我似乎需要手动将其添加到可能的环境变量中,但对于传递 iit 的作业来说,这似乎是一个自然值。 (3认同)