View a markdown version of this page

在队列环境中设置环境变量 - 截止日期云

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在队列环境中设置环境变量

许多应用程序和框架使用环境变量来控制功能设置、日志记录级别和显示配置。您可以使用开放任务描述 (OpenJD) 环境来设置其作用域内每个任务命令继承的环境变量。

环境变量范围

AWS Deadline Cloud 应用您附加到队列的队列环境中的环境变量。在作业模板中,您还可以使用 OpenJD 环境在作业和步骤级别定义环境变量。在较窄的范围内定义的变量会覆盖更广泛范围内具有相同名称的变量。

  • 队列环境 -在 Deadline Cloud 中附加到队列的模板。变量适用于提交到队列的所有作业。您可以使用固定值的variables映射来设置变量,也可以使用脚本设置动态值。

  • 作业环境 -jobEnvironments 在作业模板下定义。变量适用于作业中的所有步骤和任务。作业级变量会覆盖同名的队列级变量。

  • 工序环境 -stepEnvironments 在作业模板下定义。变量仅适用于该步骤中的任务。步骤级变量会覆盖同名的任务级别或队列级变量。

在队列环境中设置变量

您可以使用固定值的variables映射在队列环境中设置环境变量,或使用script带有onEnter操作来设置动态值的环境变量。

以下队列环境模板使用variables映射将QT_QPA_PLATFORM变量设置为offscreen,这允许使用 Qt Fram ework 的应用程序在没有交互式显示器的情况下在工作主机上运行。

specificationVersion: 'environment-2023-09' environment: name: QtOffscreen variables: QT_QPA_PLATFORM: offscreen

对于动态值,例如修改PATH或激活虚拟环境,请使用将行格式打印openjd_env: VAR=value到 stdout 的脚本。前openjd_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-id FARM_ID \ --queue-id QUEUE_ID \ --priority 1 \ --template-type YAML \ --template file://my-queue-env.yaml

有关更复杂的示例,例如创建和激活 conda 虚拟环境,请参阅上 GitHub的 De adline Cloud 队列环境示例。

在作业模板中设置变量

在作业模板中,将variables地图添加到jobEnvironmentsstepEnvironments条目中。每个条目都是一个键值对,其中键是变量名,值是变量值。

以下作业模板将QT_QPA_PLATFORM环境变量设置为offscreen,这允许使用 Qt Fram ework 的应用程序在没有交互式显示器的情况下在工作主机上运行。

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 示例存储库包含一个任务包,用于演示设置和查看环境变量。示例作业模板定义了作业和步骤级别的变量,然后运行打印合并结果的任务。使用以下过程运行样本并检查结果。

先决条件

  1. 如果您没有带有队列和关联的 Linux 机群的 Deadline Cloud 农场,请遵循截止日期云控制台中的引导式入门体验,使用默认设置创建一个。

  2. 如果您的工作站上没有 Deadline Cloud CLI 和 Deadl AWS ine Cloud 监控器,请按照设置截止日期云提交者中的步骤进行操作。

  3. git用于克隆 Deadl ine Cloud 示例 GitHub存储库

    git clone https://github.com/aws-deadline/deadline-cloud-samples.git cd deadline-cloud-samples/job_bundles

运行示例

  1. 使用 Deadline Cloud CLI 提交job_env_vars示例。

    deadline bundle submit job_env_vars
  2. 在截止日期云监视器中,选择新任务以监控其进度。在与Linux队列关联的队列有工作人员可用后,任务将在几秒钟内完成。选择任务,然后在任务面板的右上角菜单中选择 “查看日志”。

将会话操作与其定义进行比较

日志视图显示了三个会话操作。在文本编辑器中打开 job_env_vars/template .yaml 文件,将每个操作与其在作业模板中的定义进行比较。

  1. 选择 “启动 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
  2. 选择 “启动 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
  3. 选择任务运行会话操作。日志输出显示了可供任务使用的合并环境变量。请注意,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