本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在佇列環境中設定環境變數
許多應用程式和架構使用環境變數來控制功能設定、記錄層級和顯示組態。您可以使用開放任務描述 (OpenJD) 環境
環境變數範圍
AWS 截止日期 Cloud 會從您連接至佇列的佇列環境套用環境變數。在任務範本中,您也可以使用 OpenJD 環境在任務和步驟層級定義環境
-
佇列環境 – 您附加至截止日期雲端中佇列的範本。變數會套用至提交至佇列的所有任務。您可以使用固定值的
variables映射來設定變數,或使用動態值的指令碼。 -
任務環境 – 在任務範本
jobEnvironments的 下定義。變數適用於任務中的所有步驟和任務。任務層級變數會以相同名稱覆寫佇列層級變數。 -
步驟環境 – 在任務範本
stepEnvironments的 下定義。變數僅適用於該步驟中的任務。步驟層級變數會以相同名稱覆寫任務層級或佇列層級變數。
在佇列環境中設定變數
您可以使用固定值的variables映射,或在動態值script的 onEnter 動作中使用 ,在佇列環境中設定環境變數。
下列佇列環境範本使用variables映射將QT_QPA_PLATFORM變數設定為 offscreen,這可讓使用 Qt 架構
specificationVersion: 'environment-2023-09'
environment:
name: QtOffscreen
variables:
QT_QPA_PLATFORM: offscreen
對於動態值,例如修改PATH或啟用虛擬環境,請使用以 openjd_env: stdout 格式列印行的指令碼。字VAR=valueopenjd_env:首為必要。使用 echo、 export或其他沒有字首的 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"
若要將佇列環境連接至佇列,請使用截止日期雲端主控台或 AWS CLI。如需詳細資訊,請參閱《 AWS 截止日期雲端使用者指南》中的建立佇列環境。下列 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 上的截止日期雲端佇列環境範例
在任務範本中設定變數
在任務範本中,將variables映射新增至 jobEnvironments或 stepEnvironments項目。每個項目都是索引鍵/值對,其中索引鍵是變數名稱,而值是變數值。
下列任務範本會將QT_QPA_PLATFORM環境變數設定為 offscreen,允許使用 Qt 架構
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 機群的截止日期雲端陣列,請遵循截止日期雲端主控台
中的引導式加入體驗,以使用預設設定建立。 -
如果您的工作站上沒有截止日期雲端 CLI AWS 和截止日期雲端監視器,請遵循設定截止日期雲端提交者中的步驟。
-
使用
git複製截止日期雲端範例 GitHub 儲存庫。 git clone https://github.com/aws-deadline/deadline-cloud-samples.git cd deadline-cloud-samples/job_bundles
執行範例
-
使用截止日期雲端 CLI 提交
job_env_vars範例。deadline bundle submit job_env_vars -
在截止日期雲端監視器中,選取新任務以監控其進度。與佇列相關聯的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