【问题标题】:How to pass script arguments to AWS Batch fetch-and-run如何将脚本参数传递给 AWS Batch 获取并运行
【发布时间】:2019-03-16 23:24:18
【问题描述】:

我正在关注 this tutorial 在 AWS 批处理中运行一个简单的获取并运行示例。但是,我无法将参数传递给通过此示例获取的脚本。

基本示例将产生这个执行:

export BATCH_FILE_TYPE="script"

export BATCH_FILE_S3_URL="s3://my-bucket/my-script"

fetch_and_run.sh script-from-s3 [ <script arguments> ]

其中脚本参数仅在以下内容中提及:

这表明它支持 BATCH_FILE_TYPE 的两个值,“script”或“zip”。当您设置“脚本”时,它会导致 fetch_and_run.sh 下载单个文件然后执行它,此外还会将任何其他参数传递给脚本。

我尝试使用 AWS CLI 通过 --parameters--container-overrides 参数(在后者中的 command 键下)传递它们,但是它们没有从脚本中接收到。

我不想为每次运行修改我的 Dockerfile ENTRYPOINTfetch_and_run.sh 脚​​本,但我不明白如何以不同的方式实现这一点。

【问题讨论】:

    标签: amazon-web-services arguments aws-batch


    【解决方案1】:

    混合these example of job definitions 我使用aws batch 实现了它:

    aws batch submit-job --job-name <job_name> --job-definition <job_def_name> \
      --job-queue <queue_name> \
      --container-overrides '{
        "command": ["<script-from-s3>", "Ref::param1", "Ref::param2"], \
        "environment": [ \
          {"name": "BATCH_FILE_S3_URL", "value": "<script-from-s3>"}, \
          {"name": "BATCH_FILE_TYPE", "value": "script"}]}' \
      --parameters '{"param1": "<param1>", "param2": "<param2>"}'
    

    【讨论】:

    • 史诗般的答案,首先我找到了一个可行的解决方案,AWS CLI 文档中的确切语法不起作用
    • 请注意,使用 ENTRYPOINT ENTRYPOINT ["/usr/local/bin/fetch_and_run.sh"] 的 EXEC 形式而不是 shell 形式至关重要。 shell 形式忽略命令行参数
    • 感谢您发布此信息。我想知道为什么您不能直接将命令行参数添加到“command”属性并避免使用--parameters 的“Ref::param”。
    猜你喜欢
    • 2017-01-21
    • 2018-11-15
    • 1970-01-01
    • 2020-07-12
    • 2016-07-30
    • 2011-06-06
    • 2014-12-25
    • 1970-01-01
    • 2020-07-18
    相关资源
    最近更新 更多