

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

# キュー環境で環境変数を設定する
<a name="set-environment-variables"></a>

多くのアプリケーションとフレームワークでは、環境変数を使用して機能設定、ログ記録レベル、表示設定を制御します。[Open Job Description (OpenJD) 環境](https://github.com/OpenJobDescription/openjd-specifications/wiki/2023-09-Template-Schemas#4-environment)を使用して、スコープ内のすべてのタスクコマンドが継承する環境変数を設定できます。

## 環境変数スコープ
<a name="set-env-vars-scope"></a>

AWS Deadline Cloud は、キューにアタッチしたキュー環境から環境変数を適用します。ジョブテンプレート内で、[OpenJD 環境を使用してジョブレベルとステップレベルで環境](https://github.com/OpenJobDescription/openjd-specifications/wiki/2023-09-Template-Schemas#4-environment)変数を定義することもできます。より狭いスコープで定義された変数は、より広いスコープから同じ名前の変数を上書きします。
+ **キュー環境** – Deadline Cloud のキューにアタッチするテンプレート。変数は、キューに送信されたすべてのジョブに適用されます。固定値の`variables`マップを使用して変数を設定することも、動的値のスクリプトを使用することもできます。
+ **ジョブ環境** – ジョブテンプレートの `jobEnvironments` で定義されます。変数は、ジョブ内のすべてのステップとタスクに適用されます。ジョブレベルの変数は、キューレベルの変数を同じ名前で上書きします。
+ **ステップ環境** – ジョブテンプレートの `stepEnvironments` で定義されます。変数は、そのステップのタスクにのみ適用されます。ステップレベルの変数は、ジョブレベルまたはキューレベルの変数を同じ名前で上書きします。

## キュー環境で変数を設定する
<a name="set-env-vars-queue-env"></a>

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

次のキュー環境テンプレートは、`variables`マップを使用して`QT_QPA_PLATFORM`変数を に設定し`offscreen`、[Qt Framework](https://www.qt.io/product/framework) を使用するアプリケーションがインタラクティブディスプレイなしでワーカーホストで実行できるようにします。

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

仮想環境の変更`PATH`やアクティブ化などの動的な値の場合は、stdout `openjd_env: {{VAR}}={{value}}`の形式で行を出力するスクリプトを使用します。`openjd_env:` プレフィックスは必須です。プレフィックスなしで `echo`、`export`、またはその他のシェルメカニズムを使用しても、ジョブやタスクに変数は伝達されません。

次のキュー環境テンプレートは、スクリプトを使用して `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 ユーザーガイドの[「キュー環境の作成](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/create-queue-environment.html)」を参照してください。次の 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 キュー環境のサンプル](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/queue_environments)を参照してください。

## ジョブテンプレートでの変数の設定
<a name="set-env-vars-job-template"></a>

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

次のジョブテンプレートは、 `QT_QPA_PLATFORM`環境変数を に設定し`offscreen`、[Qt Framework](https://www.qt.io/product/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
```

## 試す: 環境変数サンプルの実行
<a name="set-env-vars-example"></a>

Deadline Cloud サンプルリポジトリには、[環境変数の設定と表示を示すジョブバンドル](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/job_env_vars/template.yaml)が含まれています。サンプルジョブテンプレートは、ジョブレベルとステップレベルの両方で変数を定義し、マージされた結果を出力するタスクを実行します。サンプルを実行し、結果を検査するには、次の手順に従います。

### 前提条件
<a name="set-prerequisites"></a>

1. キューと関連する Linux フリートを持つ Deadline Cloud ファームがない場合は、[Deadline Cloud コンソール](https://console.aws.amazon.com/deadlinecloud/home)のガイド付きオンボーディングエクスペリエンスに従って、デフォルト設定で作成します。

1. ワークステーションに Deadline Cloud CLI と AWS Deadline Cloud モニターがない場合は、[「Deadline Cloud 送信者の設定](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/submitter.html)」の手順に従ってください。

1. `git` を使用して [Deadline Cloud サンプル GitHub リポジトリ](https://github.com/aws-deadline/deadline-cloud-samples)のクローンを作成します。

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

### サンプルの実行
<a name="set-run-example"></a>

1. Deadline Cloud CLI を使用して`job_env_vars`サンプルを送信します。

   ```
   deadline bundle submit job_env_vars
   ```

1. Deadline Cloud モニターで、新しいジョブを選択して進行状況をモニタリングします。キューに関連付けられたLinuxフリートにワーカーが使用可能になると、ジョブは数秒で完了します。タスクを選択し、タスクパネルの右上メニューで**ログの表示**を選択します。

### セッションアクションとその定義の比較
<a name="set-compare-actions"></a>

ログビューには 3 つのセッションアクションが表示されます。テキストエディタでファイル [job\_env\_vars/template.yaml](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/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
   ```

1. **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
   ```

1. **タスク実行**セッションアクションを選択します。ログ出力には、タスクで使用できるマージされた環境変数が表示されます。がステップレベルの値 `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
   ```