

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Legen Sie Umgebungsvariablen in einer Warteschlangenumgebung fest
<a name="set-environment-variables"></a>

Viele Anwendungen und Frameworks verwenden Umgebungsvariablen, um Funktionseinstellungen, Protokollierungsebenen und die Anzeigekonfiguration zu steuern. Sie können [Open Job Description (OpenJD) -Umgebungen](https://github.com/OpenJobDescription/openjd-specifications/wiki/2023-09-Template-Schemas#4-environment) verwenden, um Umgebungsvariablen festzulegen, die jeder Taskbefehl innerhalb seines Gültigkeitsbereichs erbt.

## Gültigkeitsbereich der Umgebungsvariablen
<a name="set-env-vars-scope"></a>

AWS Deadline Cloud wendet Umgebungsvariablen aus Warteschlangenumgebungen an, die Sie an eine Warteschlange anhängen. Innerhalb einer Jobvorlage können Sie mithilfe von [OpenJD-Umgebungen](https://github.com/OpenJobDescription/openjd-specifications/wiki/2023-09-Template-Schemas#4-environment) auch Umgebungsvariablen auf Job- und Schrittebene definieren. Variablen, die in einem engeren Gültigkeitsbereich definiert sind, überschreiben Variablen mit demselben Namen aus einem breiteren Gültigkeitsbereich.
+ **Warteschlangenumgebung** — Eine Vorlage, die Sie an eine Warteschlange in Deadline Cloud anhängen. Variablen gelten für alle Jobs, die an die Warteschlange gesendet werden. Sie können Variablen mit einer `variables` Zuordnung für feste Werte festlegen oder Skripts für dynamische Werte verwenden.
+ **Arbeitsumgebung** — Definiert unter `jobEnvironments` in einer Jobvorlage. Variablen gelten für alle Schritte und Aufgaben im Job. Eine Variable auf Jobebene überschreibt eine Variable auf Warteschlangenebene mit demselben Namen.
+ **Schrittumgebung** — Definiert unter `stepEnvironments` in einer Jobvorlage. Variablen gelten nur für die Aufgaben in diesem Schritt. Eine Variable auf Schrittebene überschreibt eine Variable auf Job- oder Warteschlangenebene mit demselben Namen.

## Variablen in einer Warteschlangenumgebung setzen
<a name="set-env-vars-queue-env"></a>

Sie können Umgebungsvariablen in einer Warteschlangenumgebung mithilfe einer `variables` Map für feste Werte oder `script` mithilfe einer `onEnter` With-Aktion für dynamische Werte festlegen.

Die folgende Vorlage für die Warteschlangenumgebung verwendet eine `variables` Map, auf die die `QT_QPA_PLATFORM` Variable gesetzt wird`offscreen`, sodass Anwendungen, die das [Qt Framework](https://www.qt.io/product/framework) verwenden, auf Worker-Hosts ohne interaktive Anzeige ausgeführt werden können.

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

Verwenden Sie für dynamische Werte, wie das Ändern `PATH` oder Aktivieren virtueller Umgebungen, ein Skript, das Zeilen im Format stdout `openjd_env: {{VAR}}={{value}}` ausgibt. Das `openjd_env:` Präfix ist erforderlich. Durch die Verwendung von `echo``export`, oder anderen Shell-Mechanismen ohne das Präfix werden Variablen nicht an Jobs und Aufgaben weitergegeben.

Die folgende Vorlage für die Warteschlangenumgebung legt die `QT_QPA_PLATFORM` Variable mithilfe eines Skripts fest.

```
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"
```

Um eine Warteschlangenumgebung an Ihre Warteschlange anzuhängen, verwenden Sie die Deadline Cloud-Konsole oder die AWS CLI. Weitere Informationen finden Sie unter [Erstellen einer Warteschlangenumgebung](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/create-queue-environment.html) im AWS Deadline Cloud-Benutzerhandbuch. Der folgende AWS CLI Befehl erstellt eine Warteschlangenumgebung aus einer Vorlagendatei.

```
aws deadline create-queue-environment \
    --farm-id {{FARM_ID}} \
    --queue-id {{QUEUE_ID}} \
    --priority 1 \
    --template-type YAML \
    --template file://{{my-queue-env.yaml}}
```

Komplexere Beispiele, wie das Erstellen und Aktivieren virtueller Conda-Umgebungen, finden Sie unter [Beispiele für Deadline Cloud-Warteschlangenumgebungen](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/queue_environments) unter GitHub.

## Variablen in einer Jobvorlage festlegen
<a name="set-env-vars-job-template"></a>

Fügen Sie in einer Jobvorlage eine `variables` Map zu einem `jobEnvironments` `stepEnvironments` OR-Eintrag hinzu. Jeder Eintrag ist ein Schlüssel-Wert-Paar, wobei der Schlüssel der Variablenname und der Wert der Variablenwert ist.

Die folgende Jobvorlage setzt die `QT_QPA_PLATFORM` Umgebungsvariable auf`offscreen`, sodass Anwendungen, die das [Qt Framework](https://www.qt.io/product/framework) verwenden, auf Worker-Hosts ohne interaktive Anzeige ausgeführt werden können.

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

Sie können mehrere Variablen in einer einzigen Umgebungsdefinition festlegen.

```
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
```

Mithilfe der `{{Param.{{ParameterName}}}}` Syntax können Sie in Variablenwerten auf Jobparameter verweisen.

```
jobEnvironments:
- name: JobEnv
  variables:
    JOB_EXAMPLE_PARAM: "{{Param.ExampleParam}}"
```

Um eine Variable auf Jobebene für einen bestimmten Schritt zu überschreiben, definieren Sie einen `stepEnvironments` Eintrag mit demselben Variablennamen. Das folgende Beispiel definiert `JOB_PROJECT_ID` auf Auftragsebene mit dem Wert `project-12` und überschreibt dann den Wert auf Schrittebene mit. `step-project-12` Die Aufgaben im Schritt verwenden den Wert auf Schrittebene.

```
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
```

## Probieren Sie es aus: Beispiel für die Umgebungsvariable ausführen
<a name="set-env-vars-example"></a>

Das Deadline Cloud-Beispiel-Repository enthält ein [Job-Bundle, das das Setzen und Anzeigen von Umgebungsvariablen demonstriert](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/job_env_vars/template.yaml). Die Beispieljobvorlage definiert Variablen sowohl auf Auftrags- als auch auf Schrittebene und führt dann eine Aufgabe aus, die das zusammengeführte Ergebnis druckt. Gehen Sie wie folgt vor, um das Beispiel auszuführen und die Ergebnisse zu überprüfen.

### Voraussetzungen
<a name="set-prerequisites"></a>

1. Wenn Sie keine Deadline Cloud-Farm mit einer Warteschlange und der zugehörigen Linux-Flotte haben, folgen Sie der Anleitung zum Onboarding in der [Deadline Cloud-Konsole](https://console.aws.amazon.com/deadlinecloud/home), um eine Farm mit Standardeinstellungen zu erstellen.

1. Wenn Sie die Deadline Cloud-CLI und den AWS Deadline Cloud-Monitor nicht auf Ihrer Workstation haben, folgen Sie den Schritten unter [Deadline Cloud-Einreicher einrichten](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/submitter.html).

1. Wird verwendet`git`, um das [Deadline GitHub Cloud-Beispiel-Repository](https://github.com/aws-deadline/deadline-cloud-samples) zu klonen.

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

### Ausführen des Beispiels
<a name="set-run-example"></a>

1. Verwenden Sie die Deadline Cloud-CLI, um das `job_env_vars` Beispiel einzureichen.

   ```
   deadline bundle submit job_env_vars
   ```

1. Wählen Sie im Deadline Cloud-Monitor den neuen Job aus, um seinen Fortschritt zu überwachen. Sobald für die Linux Flotte, die der Warteschlange zugeordnet ist, ein Mitarbeiter verfügbar ist, ist der Job in wenigen Sekunden abgeschlossen. Wählen Sie die Aufgabe aus und wählen Sie dann im Menü oben rechts im Aufgabenbereich die Option **Protokolle anzeigen** aus.

### Vergleich von Sitzungsaktionen mit ihren Definitionen
<a name="set-compare-actions"></a>

In der Protokollansicht werden drei Sitzungsaktionen angezeigt. Öffnen Sie die Datei [job\_env\_vars/template.yaml](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/job_env_vars/template.yaml) in einem Texteditor, um jede Aktion mit ihrer Definition in der Jobvorlage zu vergleichen.

1. Wählen Sie die Aktion JobEnv Sitzung **starten** aus. Die Protokollausgabe zeigt, dass die Umgebungsvariablen auf Jobebene gesetzt wurden.

   ```
   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
   ```

   Die folgenden Zeilen aus der Jobvorlage definieren diese Umgebung.

   ```
   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. Wählen Sie die Aktion StepEnv Sitzung **starten** aus. Die Protokollausgabe zeigt die Variablen auf Schrittebene, einschließlich der überschriebenen Variablen. `JOB_PROJECT_ID`

   ```
   Setting: STEP_VERBOSITY=HIGH
   Setting: JOB_PROJECT_ID=step-project-12
   ```

   Die folgenden Zeilen aus der Jobvorlage definieren diese Umgebung.

   ```
   stepEnvironments:
   - name: StepEnv
     variables:
       STEP_VERBOSITY: HIGH
       JOB_PROJECT_ID: step-project-12
   ```

1. Wählen Sie **die Aktion Sitzung ausführen aus**. In der Protokollausgabe werden die zusammengeführten Umgebungsvariablen angezeigt, die für die Aufgabe verfügbar sind. Beachten Sie, dass der Wert auf Schrittebene `JOB_PROJECT_ID` verwendet wird. `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
   ```