【问题标题】:How to submit multiple commands to AWS Batch using Boto3?如何使用 Boto3 向 AWS Batch 提交多个命令?
【发布时间】:2020-05-11 04:35:12
【问题描述】:

我正在尝试使用 AWS Batch 和 boto3 通过 Docker 运行多个 shell 命令。当我尝试如下使用 & 符号提交多个命令时,作业失败。

我的尝试

import boto3

client = boto3.client("batch")
response = client.submit_job(
    jobName='AndrewJob',
    jobQueue='AndrewJobQueue',
    jobDefinition='AndrewJobDefinition',
    containerOverrides={
        'command': 'ls & python myjob.py'.split(),
    },
    timeout = {'attemptDurationSeconds': 100}
)
print(response)

错误是:

ls: cannot access '&': 没有这样的文件或目录

根据此处的 Docker 文档 https://docs.docker.com/engine/reference/builder/#cmd 和此处的帖子 docker run <IMAGE> <MULTIPLE COMMANDS> ,这似乎应该以 shell 形式实现。

【问题讨论】:

  • 你试过&amp;&amp;吗?
  • @badger0053 - 是的,我试过 && 并得到同样的错误(但使用 '&&')

标签: python-3.x amazon-web-services docker aws-batch


【解决方案1】:

Batch 的行为似乎类似于subprocess.Popen,因为它将命令作为一个命令执行,其中第一个参数是命令名称,其余参数是命令参数。我得到这个可以与subprocess.Popen 一起使用,所以我敢打赌它可以与 Batch 一起使用:

subprocess.Popen(["/bin/bash", "-c", "ls && echo \"Hello world\""])

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-15
    • 1970-01-01
    • 2010-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多