View a markdown version of this page

キュー環境で環境変数を設定する - Deadline クラウド

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

キュー環境で環境変数を設定する

多くのアプリケーションとフレームワークでは、環境変数を使用して機能設定、ログ記録レベル、表示設定を制御します。Open Job Description (OpenJD) 環境を使用して、スコープ内のすべてのタスクコマンドが継承する環境変数を設定できます。

環境変数スコープ

AWS Deadline Cloud は、キューにアタッチしたキュー環境から環境変数を適用します。ジョブテンプレート内で、OpenJD 環境を使用してジョブレベルとステップレベルで環境変数を定義することもできます。より狭いスコープで定義された変数は、より広いスコープから同じ名前の変数を上書きします。

  • キュー環境 – Deadline Cloud のキューにアタッチするテンプレート。変数は、キューに送信されたすべてのジョブに適用されます。固定値のvariablesマップを使用して変数を設定することも、動的値のスクリプトを使用することもできます。

  • ジョブ環境 – ジョブテンプレートの jobEnvironments で定義されます。変数は、ジョブ内のすべてのステップとタスクに適用されます。ジョブレベルの変数は、キューレベルの変数を同じ名前で上書きします。

  • ステップ環境 – ジョブテンプレートの stepEnvironments で定義されます。変数は、そのステップのタスクにのみ適用されます。ステップレベルの変数は、ジョブレベルまたはキューレベルの変数を同じ名前で上書きします。

キュー環境で変数を設定する

キュー環境の環境変数は、固定値のvariablesマップを使用するか、動的値のonEnterアクションscriptで を使用して設定できます。

次のキュー環境テンプレートは、variablesマップを使用してQT_QPA_PLATFORM変数を に設定しoffscreenQt Framework を使用するアプリケーションがインタラクティブディスプレイなしでワーカーホストで実行できるようにします。

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

仮想環境の変更PATHやアクティブ化などの動的な値の場合は、stdout openjd_env: VAR=valueの形式で行を出力するスクリプトを使用します。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。詳細については、 AWS Deadline 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 の Deadline Cloud キュー環境のサンプルを参照してください。

ジョブテンプレートでの変数の設定

ジョブテンプレートで、 jobEnvironmentsまたは stepEnvironmentsエントリにvariablesマップを追加します。各エントリはキーと値のペアで、キーは変数名、値は変数値です。

次のジョブテンプレートは、 QT_QPA_PLATFORM環境変数を に設定しoffscreenQt Framework を使用するアプリケーションがインタラクティブディスプレイなしでワーカーホストで実行できるようにします。

specificationVersion: 'jobtemplate-2023-09' name: MyJob jobEnvironments: - name: JobEnv variables: QT_QPA_PLATFORM: offscreen

1 つの環境定義で複数の変数を設定できます。

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 ファームがない場合は、Deadline Cloud コンソールのガイド付きオンボーディングエクスペリエンスに従って、デフォルト設定で作成します。

  2. ワークステーションに Deadline Cloud CLI と AWS Deadline Cloud モニターがない場合は、「Deadline Cloud 送信者の設定」の手順に従ってください。

  3. git を使用して Deadline 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フリートにワーカーが使用可能になると、ジョブは数秒で完了します。タスクを選択し、タスクパネルの右上メニューでログの表示を選択します。

セッションアクションとその定義の比較

ログビューには 3 つのセッションアクションが表示されます。テキストエディタでファイル 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