本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在队列环境中设置环境变量
许多应用程序和框架使用环境变量来控制功能设置、日志级别和显示配置。你可以使用 Ope n Job Description (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、或其他外壳机制不会将变量传播到作业和任务。
以下队列环境模板使用脚本设置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。有关更多信息,请参阅 D e AWS adline 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 adline Cloud 队列环境示例
在作业模板中设置变量
在作业模板中,向jobEnvironments或stepEnvironments条目添加variables地图。每个条目都是一个键值对,其中键是变量名,值是变量值。
以下作业模板将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 场,请按照 De adline Cloud 控制台
中的指导性入门体验创建具有默认设置的群组。 -
如果您的工作站上没有 Deadline Cloud CLI 和 De AWS adline Cloud 监控器,请按照设置 Deadline Cloud 提交者中的步骤进行操作。
-
用于克隆 D
gite adline 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 -
在 Deadline Cloud 监视器中,选择新作业以监控其进度。与Linux队列关联的队列有工作人员可用后,任务将在几秒钟内完成。选择任务,然后在任务面板的右上角菜单中选择 “查看日志”。
将会话操作与其定义进行比较
日志视图显示三个会话操作。在文本编辑器中打开 job_env_vars/template.yaml
-
选择 “启动 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