【问题标题】:how to pass environment variables to an aws batch job definition如何将环境变量传递给 aws 批处理作业定义
【发布时间】:2017-11-03 10:23:34
【问题描述】:

我想为正在运行的 aws 批处理作业定义环境变量。不同的 ENV 变量会触发代码的某些部分。当我在批处理控制台中添加它们时,它们不会传递给作业定义容器属性。我以与将变量传递到 Dockerfile 中的相同形式传递变量:NAME=VALUE。下面是我在创建新定义和对现有定义进行修订后得到的输出。

"containerProperties": { "image": "docker-image", "vcpus": 2, "memory": 2000, "command": [], "volumes": [], "environment": [], "mountPoints": [], "ulimits": [] }

是否有用于此的特殊语法?

【问题讨论】:

  • 请更详细地演示您是如何尝试的,显示不起作用的代码就可以了。显示所需的输出(即您希望它的外观,模仿环境变量的扩展。
  • 在 aws Batch 作业定义控制台的 Environment Variables 部分下,我将 NAME 放入 Key 输入框中,将 VALUE 放入 value 输入框中。我点击保存。并且作业定义的 json 不包含变量。
  • 找到了一个解决方案,我运行了一个调用“register_job_definition”端点的 lambda 函数,并将环境变量包含在有效负载中。 'containerProperties = { "image": "test-image", 'vcpus': 1, 'memory': 10, "environment": [{ "name": "please","value": "work"}] } ' 我检查了我的批次定义,新定义包含变量。不知道为什么它不能从控制台工作。

标签: amazon-web-services aws-batch


【解决方案1】:

您需要一个 lambda 函数来开始工作。 Python 代码如下所示:

import boto3

client = boto3.client('batch')

def lambda_handler(event, context):
  response = client.submit_job(
   jobName='some-job',
   jobQueue='some-Queue',
   jobDefinition='some-job-definition:1') # 1 is a version

环境变量将从环境中添加到client = boto3.client('batch')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 2015-03-25
    • 1970-01-01
    相关资源
    最近更新 更多