AWS 批处理数组 - 数组大小?



我正在使用 AWS Batch,并且已经开始使用 Array Jobs。AWS_BATCH_JOB_ARRAY_INDEX作为环境变量传递给容器。

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

目前这是不可能的。我已经为它提出了一个功能请求,你可以在这里投票: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)

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

在"作业">

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

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

最新更新