本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在队列环境中设置环境变量
许多应用程序和框架使用环境变量来控制功能设置、日志记录级别和显示配置。您可以使用开放任务描述 (OpenJD) 环境
环境变量范围
AWS Deadline Cloud 应用您附加到队列的队列环境中的环境变量。在作业模板中,您还可以使用 OpenJD 环境在作业和步骤级别定义环境
-
队列环境 -在 Deadline Cloud 中附加到队列的模板。变量适用于提交到队列的所有作业。您可以使用固定值的
variables映射来设置变量,也可以使用脚本设置动态值。 -
作业环境 -
jobEnvironments在作业模板下定义。变量适用于作业中的所有步骤和任务。作业级变量会覆盖同名的队列级变量。 -
工序环境 -
stepEnvironments在作业模板下定义。变量仅适用于该步骤中的任务。步骤级变量会覆盖同名的任务级别或队列级变量。
在队列环境中设置变量
您可以使用固定值的variables映射在队列环境中设置环境变量,或使用script带有onEnter操作来设置动态值的环境变量。
以下队列环境模板使用variables映射将QT_QPA_PLATFORM变量设置为offscreen,这允许使用 Qt Fram
specificationVersion: 'environment-2023-09'
environment:
name: QtOffscreen
variables:
QT_QPA_PLATFORM: offscreen
对于动态值,例如修改PATH或激活虚拟环境,请使用将行格式打印openjd_env: 到 stdout 的脚本。前VAR=valueopenjd_env:缀是必填的。使用echoexport、或其他不带前缀的 shell 机制不会将变量传播到任务和任务。
以下队列环境模板使用脚本设置QT_QPA_PLATFORM变量。
specificationVersion: 'environment-2023-09'
environment:
name: QtOffscreen
script:
actions:
onEnter:
command: bash
args:
- "{{Env.File.Enter}}"
embeddedFiles:
- name: Enter
type: TEXT
data: |
#!/bin/env bash
set -euo pipefail
echo "openjd_env: QT_QPA_PLATFORM=offscreen"
要将队列环境连接到您的队列,请使用 Deadline Cloud 控制台或 AWS CLI. 有关更多信息,请参阅 Deadl AWS ine Cloud 用户指南中的创建队列环境。以下 AWS CLI 命令从模板文件创建队列环境。
aws deadline create-queue-environment \ --farm-idFARM_ID\ --queue-idQUEUE_ID\ --priority 1 \ --template-type YAML \ --template file://my-queue-env.yaml
有关更复杂的示例,例如创建和激活 conda 虚拟环境,请参阅上 GitHub的 De
在作业模板中设置变量
在作业模板中,将variables地图添加到jobEnvironments或stepEnvironments条目中。每个条目都是一个键值对,其中键是变量名,值是变量值。
以下作业模板将QT_QPA_PLATFORM环境变量设置为offscreen,这允许使用 Qt Fram
specificationVersion: 'jobtemplate-2023-09'
name: MyJob
jobEnvironments:
- name: JobEnv
variables:
QT_QPA_PLATFORM: offscreen
可以在单个环境定义中设置多个变量。
jobEnvironments:
- name: JobEnv
variables:
JOB_VERBOSITY: MEDIUM
JOB_PROJECT_ID: my-project-id
JOB_ENDPOINT_URL: https://my-host-name/my/path
QT_QPA_PLATFORM: offscreen
您可以使用{{Param.语法在变量值中引用作业参数。ParameterName}}
jobEnvironments:
- name: JobEnv
variables:
JOB_EXAMPLE_PARAM: "{{Param.ExampleParam}}"
要覆盖特定步骤的任务级别变量,请定义一个具有相同变量名称的stepEnvironments条目。以下示例JOB_PROJECT_ID在任务级别使用该值进行定义project-12,然后使用该值覆盖步骤级别的step-project-12值。步骤中的任务使用步骤级别的值。
specificationVersion: 'jobtemplate-2023-09'
name: MyJob
jobEnvironments:
- name: JobEnv
variables:
JOB_PROJECT_ID: project-12
steps:
- name: MyStep
stepEnvironments:
- name: StepEnv
variables:
JOB_PROJECT_ID: step-project-12
试试看:运行环境变量示例
Deadline Cloud 示例存储库包含一个任务包,用于演示设置和查看环境变量
先决条件
-
如果您没有带有队列和关联的 Linux 机群的 Deadline Cloud 农场,请遵循截止日期云控制台
中的引导式入门体验,使用默认设置创建一个。 -
如果您的工作站上没有 Deadline Cloud CLI 和 Deadl AWS ine Cloud 监控器,请按照设置截止日期云提交者中的步骤进行操作。
-
git用于克隆 Deadl ine Cloud 示例 GitHub存储库。 git clone https://github.com/aws-deadline/deadline-cloud-samples.git cd deadline-cloud-samples/job_bundles
运行示例
-
使用 Deadline Cloud CLI 提交
job_env_vars示例。deadline bundle submit job_env_vars -
在截止日期云监视器中,选择新任务以监控其进度。在与Linux队列关联的队列有工作人员可用后,任务将在几秒钟内完成。选择任务,然后在任务面板的右上角菜单中选择 “查看日志”。
将会话操作与其定义进行比较
日志视图显示了三个会话操作。在文本编辑器中打开
-
选择 “启动 JobEnv会话” 操作。日志输出显示了正在设置的作业级环境变量。
Setting: JOB_VERBOSITY=MEDIUM Setting: JOB_EXAMPLE_PARAM=An example parameter value Setting: JOB_PROJECT_ID=project-12 Setting: JOB_ENDPOINT_URL=https://internal-host-name/some/path Setting: QT_QPA_PLATFORM=offscreen作业模板中的以下几行定义了此环境。
jobEnvironments: - name: JobEnv variables: JOB_VERBOSITY: MEDIUM JOB_EXAMPLE_PARAM: "{{Param.ExampleParam}}" JOB_PROJECT_ID: project-12 JOB_ENDPOINT_URL: https://internal-host-name/some/path QT_QPA_PLATFORM: offscreen -
选择 “启动 StepEnv会话” 操作。日志输出显示步骤级变量,包括被重
JOB_PROJECT_ID写的变量。Setting: STEP_VERBOSITY=HIGH Setting: JOB_PROJECT_ID=step-project-12作业模板中的以下几行定义了此环境。
stepEnvironments: - name: StepEnv variables: STEP_VERBOSITY: HIGH JOB_PROJECT_ID: step-project-12 -
选择任务运行会话操作。日志输出显示了可供任务使用的合并环境变量。请注意,
JOB_PROJECT_ID它使用的是步长级值step-project-12。Environment variables starting with JOB_*: JOB_ENDPOINT_URL=https://internal-host-name/some/path JOB_EXAMPLE_PARAM='An example parameter value' JOB_PROJECT_ID=step-project-12 JOB_VERBOSITY=MEDIUM Environment variables starting with STEP_*: STEP_VERBOSITY=HIGH