View a markdown version of this page

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

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

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

许多应用程序和框架使用环境变量来控制功能设置、日志级别和显示配置。你可以使用 Ope n Job Description (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、或其他外壳机制不会将变量传播到作业和任务。

以下队列环境模板使用脚本设置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-id FARM_ID \ --queue-id QUEUE_ID \ --priority 1 \ --template-type YAML \ --template file://my-queue-env.yaml

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

在作业模板中设置变量

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

以下作业模板将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 场,请按照 De adline Cloud 控制台中的指导性入门体验创建具有默认设置的群组。

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

  3. 用于克隆 D git e adline 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. 在 Deadline Cloud 监视器中,选择新作业以监控其进度。与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