如何覆盖 AWS Batch 作业中的 docker 映像?

Posted

技术标签:

【中文标题】如何覆盖 AWS Batch 作业中的 docker 映像?【英文标题】:How to override the docker image in an AWS Batch job? 【发布时间】:2019-10-14 11:11:39 【问题描述】:

在 AWS Batch 中,我试图在提交作业时覆盖作业定义中硬编码的图像。但我没有看到任何相关的文档。

当我在作业提交期间尝试添加 image 字段时,我得到:

参数验证失败:输入中的未知参数:“图像”,必须 是以下之一:jobName、jobQueue、arrayProperties、dependOn、 jobDefinition、参数、containerOverrides、retryStrategy、超时

参数验证失败:containerOverrides 中的未知参数: “图像”,必须是以下之一:vcpus、内存、命令、环境

【问题讨论】:

【参考方案1】:

我相信这是不可能的。

image 是一个容器属性,因为this doc 在命令、vcpus 和内存旁边显示它,但许多容器属性(例如工作角色 arn)在aws batch submit-job help 文档中并未列为可覆盖。

您的第二条错误消息显示了所有可以被覆盖的容器属性,与文档中的属性相匹配。

--container-overrides (structure)

JSON 格式的容器覆盖列表,指定指定作业定义中容器的名称及其应接收的覆盖。您可以使用命令覆盖覆盖容器的默认命令(在作业定义或 Docker 映像中指定)。您还可以覆盖容器上的现有环境变量(在作业定义或 Docker 映像中指定)或使用环境覆盖向其添加新环境变量。

简写语法:

vcpus=integer,memory=integer,command=string,string,instanceType=string,environment=[name=string,value=string,name=string,value=string],resourceRequirements=[value=string,type=string,value=string,type=string]

JSON 语法:


    "vcpus": integer,
    "memory": integer,
    "command": ["string", ...],
    "instanceType": "string",
    "environment": [
        
            "name": "string",
            "value": "string"
        
        ...
    ],
    "resourceRequirements": [
        
        "value": "string",
        "type": "GPU"
        
        ...
    ]

【讨论】:

以上是关于如何覆盖 AWS Batch 作业中的 docker 映像?的主要内容,如果未能解决你的问题,请参考以下文章

如何查看 AWS Batch 计算环境错误?

AWS ECS 中的批处理系统与 AWS Batch 有何不同?

为啥 AWS Batch 作业卡在 RUNNABLE 中?

将 SSH 隧道反向到 AWS Batch 阵列作业

AWS Step and Batch 动态命令

无法使用 Secrets Manager 密钥注册 AWS Batch 作业定义