

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Konfigurasikan pekerjaan menggunakan lingkungan antrian
<a name="configure-jobs"></a>

AWS Deadline Cloud menggunakan *lingkungan antrian* untuk mengonfigurasi perangkat lunak pada pekerja Anda. Lingkungan memungkinkan Anda untuk melakukan tugas yang memakan waktu, seperti mengatur dan merobohkan, sekali untuk semua tugas dalam satu sesi. Ini mendefinisikan tindakan untuk dijalankan pada pekerja ketika memulai atau menghentikan sesi. Anda dapat mengonfigurasi lingkungan untuk antrian, pekerjaan yang berjalan dalam antrian, dan langkah-langkah individual untuk suatu pekerjaan.

Anda mendefinisikan lingkungan sebagai lingkungan antrian atau lingkungan kerja. Buat lingkungan antrian dengan konsol Deadline Cloud atau dengan [tenggat waktu: CreateQueueEnvironment](https://docs.aws.amazon.com/deadline-cloud/latest/APIReference/API_CreateQueueEnvironment.html) operasi dan tentukan lingkungan pekerjaan di templat pekerjaan pekerjaan yang Anda kirimkan. Mereka mengikuti spesifikasi Open Job Description (OpenJD) untuk lingkungan. Untuk detailnya, lihat <Environment>spesifikasi OpenJD[https://github.com/OpenJobDescription/openjd-specifications/wiki/2023-09-Template-Schemas#4-environment](https://github.com/OpenJobDescription/openjd-specifications/wiki/2023-09-Template-Schemas#4-environment) di. GitHub

Selain a `name` dan`description`, setiap lingkungan berisi dua bidang yang menentukan lingkungan pada host. File tersebut adalah:
+ `script`— Tindakan yang diambil ketika lingkungan ini dijalankan pada pekerja.
+ `variables`- Satu set name/value pasangan variabel lingkungan yang diatur saat memasuki lingkungan.

Anda harus menetapkan setidaknya satu `script` atau`variables`.

Anda dapat menentukan lebih dari satu lingkungan dalam template pekerjaan Anda. Setiap lingkungan diterapkan dalam urutan yang tercantum dalam template. Anda dapat menggunakan ini untuk membantu mengelola kompleksitas lingkungan Anda.

Lingkungan antrian default untuk Deadline Cloud menggunakan manajer paket conda untuk memuat perangkat lunak ke lingkungan, tetapi Anda dapat menggunakan manajer paket lainnya. Lingkungan default mendefinisikan dua parameter untuk menentukan perangkat lunak yang harus dimuat. Variabel ini diatur oleh pengirim yang disediakan oleh Deadline Cloud, meskipun Anda dapat mengaturnya dalam skrip dan aplikasi Anda sendiri yang menggunakan lingkungan default. File tersebut adalah:
+ `CondaPackages`— Daftar spesifikasi paket conda yang dipisahkan ruang untuk dipasang untuk pekerjaan itu. Misalnya, pengirim Blender akan menambahkan `blender=3.6` bingkai render di Blender 3.6.
+ `CondaChannels`— Daftar saluran conda yang dipisahkan ruang untuk menginstal paket dari. Untuk armada yang dikelola layanan, paket diinstal dari saluran. `deadline-cloud` Anda dapat menambahkan saluran lain.

# Kontrol lingkungan kerja dengan lingkungan antrian OpenJD
<a name="control-the-job-environment"></a>

Anda dapat menentukan lingkungan yang disesuaikan untuk pekerjaan rendering Anda menggunakan lingkungan *antrian*. Lingkungan antrian adalah template yang mengontrol variabel lingkungan, pemetaan file, dan pengaturan lain untuk pekerjaan yang berjalan dalam antrian tertentu. Ini memungkinkan Anda untuk menyesuaikan lingkungan eksekusi untuk pekerjaan yang dikirimkan ke antrian dengan persyaratan beban kerja Anda. AWS Deadline Cloud menyediakan tiga level bersarang di mana Anda dapat menerapkan [lingkungan Open Job Description (OpenJD)](https://github.com/OpenJobDescription/openjd-specifications/wiki/2023-09-Template-Schemas#4-environment): antrian, pekerjaan, dan langkah. Dengan mendefinisikan lingkungan antrian, Anda dapat memastikan kinerja yang konsisten dan dioptimalkan untuk berbagai jenis pekerjaan, merampingkan alokasi sumber daya, dan menyederhanakan manajemen antrian.

Lingkungan antrian adalah template yang Anda lampirkan ke antrian di AWS akun Anda dari konsol AWS manajemen atau menggunakan. AWS CLI Anda dapat membuat satu lingkungan untuk antrian, atau Anda dapat membuat beberapa lingkungan antrian yang diterapkan untuk membuat lingkungan eksekusi. Pendekatan ini memungkinkan Anda untuk membuat dan menguji lingkungan dalam langkah-langkah untuk membantu memastikan bahwa itu bekerja dengan benar untuk pekerjaan Anda.

Lingkungan Job dan step didefinisikan dalam template pekerjaan yang Anda gunakan untuk membuat pekerjaan dalam antrian Anda. Sintaks OpenJD sama dalam berbagai bentuk lingkungan ini. Di bagian ini kami akan menunjukkannya di dalam template pekerjaan. 

**Topics**
+ [Mengatur variabel lingkungan dalam lingkungan antrian](set-environment-variables.md)
+ [Mengatur jalur di lingkungan antrian](set-the-path.md)
+ [Jalankan proses daemon latar belakang dari lingkungan antrian](run-a-background-daemon-process.md)

# Mengatur variabel lingkungan dalam lingkungan antrian
<a name="set-environment-variables"></a>

Banyak aplikasi dan kerangka kerja menggunakan variabel lingkungan untuk mengontrol pengaturan fitur, tingkat logging, dan konfigurasi tampilan. Anda dapat menggunakan [lingkungan Open Job Description (OpenJD)](https://github.com/OpenJobDescription/openjd-specifications/wiki/2023-09-Template-Schemas#4-environment) untuk mengatur variabel lingkungan yang diwarisi oleh setiap perintah tugas dalam cakupannya.

## Lingkup variabel lingkungan
<a name="set-env-vars-scope"></a>

AWS Deadline Cloud menerapkan variabel lingkungan dari lingkungan antrian yang Anda lampirkan ke antrian. Dalam template pekerjaan, Anda juga dapat menentukan variabel lingkungan pada tingkat pekerjaan dan langkah menggunakan lingkungan [OpenJD](https://github.com/OpenJobDescription/openjd-specifications/wiki/2023-09-Template-Schemas#4-environment). Variabel yang didefinisikan pada lingkup yang lebih sempit mengganti variabel dengan nama yang sama dari lingkup yang lebih luas.
+ **Lingkungan antrian** — Template yang Anda lampirkan ke antrian di Deadline Cloud. Variabel berlaku untuk semua pekerjaan yang dikirimkan ke antrian. Anda dapat mengatur variabel dengan `variables` peta untuk nilai tetap, atau menggunakan skrip untuk nilai dinamis.
+ **Job environment** — Didefinisikan `jobEnvironments` di bawah dalam template pekerjaan. Variabel berlaku untuk semua langkah dan tugas dalam pekerjaan. Variabel tingkat pekerjaan mengesampingkan variabel tingkat antrian dengan nama yang sama.
+ **Lingkungan langkah** - Didefinisikan `stepEnvironments` di bawah dalam template pekerjaan. Variabel hanya berlaku untuk tugas-tugas dalam langkah itu. Variabel tingkat langkah mengesampingkan variabel tingkat pekerjaan atau tingkat antrian dengan nama yang sama.

## Mengatur variabel dalam lingkungan antrian
<a name="set-env-vars-queue-env"></a>

Anda dapat mengatur variabel lingkungan dalam lingkungan antrian menggunakan `variables` peta untuk nilai tetap, atau menggunakan `script` dengan `onEnter` tindakan untuk nilai dinamis.

Template lingkungan antrian berikut menggunakan `variables` peta untuk mengatur `QT_QPA_PLATFORM` variabel`offscreen`, yang memungkinkan aplikasi yang menggunakan [Kerangka Qt](https://www.qt.io/product/framework) untuk berjalan pada host pekerja tanpa tampilan interaktif.

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

Untuk nilai dinamis, seperti memodifikasi `PATH` atau mengaktifkan lingkungan virtual, gunakan skrip yang mencetak garis dalam format `openjd_env: VAR=value` ke stdout. `openjd_env:`Awalan diperlukan. Menggunakan`echo`,`export`, atau mekanisme shell lainnya tanpa awalan tidak menyebarkan variabel ke pekerjaan dan tugas.

Template lingkungan antrian berikut menetapkan `QT_QPA_PLATFORM` variabel menggunakan script.

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

Untuk melampirkan lingkungan antrian ke antrian, gunakan konsol Deadline Cloud atau. AWS CLI Untuk informasi selengkapnya, lihat [Membuat lingkungan antrian](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/create-queue-environment.html) di Panduan Pengguna Cloud AWS Batas Waktu. AWS CLI Perintah berikut menciptakan lingkungan antrian dari file template.

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

Untuk contoh yang lebih kompleks, seperti membuat dan mengaktifkan lingkungan virtual conda, lihat contoh lingkungan [antrian Deadline Cloud](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/queue_environments). GitHub

## Menetapkan variabel dalam template pekerjaan
<a name="set-env-vars-job-template"></a>

Dalam template pekerjaan, tambahkan `variables` peta ke `stepEnvironments` entri `jobEnvironments` atau. Setiap entri adalah pasangan kunci-nilai di mana kuncinya adalah nama variabel dan nilainya adalah nilai variabel.

Template pekerjaan berikut menetapkan variabel `QT_QPA_PLATFORM` lingkungan ke`offscreen`, yang memungkinkan aplikasi yang menggunakan [Kerangka Qt](https://www.qt.io/product/framework) untuk berjalan pada host pekerja tanpa tampilan interaktif.

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

Anda dapat mengatur beberapa variabel dalam satu definisi lingkungan.

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

Anda dapat mereferensikan parameter pekerjaan dalam nilai variabel dengan menggunakan `{{Param.ParameterName}}` sintaks.

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

Untuk mengganti variabel tingkat pekerjaan untuk langkah tertentu, tentukan `stepEnvironments` entri dengan nama variabel yang sama. Contoh berikut mendefinisikan `JOB_PROJECT_ID` pada tingkat pekerjaan dengan nilai`project-12`, dan kemudian mengganti nilai pada tingkat langkah dengan. `step-project-12` Tugas dalam langkah menggunakan nilai tingkat langkah.

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

## Cobalah: Menjalankan sampel variabel lingkungan
<a name="set-env-vars-example"></a>

Repositori sampel Deadline Cloud menyertakan [bundel pekerjaan yang menunjukkan pengaturan dan](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/job_env_vars/template.yaml) melihat variabel lingkungan. Template pekerjaan sampel mendefinisikan variabel pada tingkat pekerjaan dan langkah, kemudian menjalankan tugas yang mencetak hasil gabungan. Gunakan prosedur berikut untuk menjalankan sampel dan memeriksa hasilnya.

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

1. Jika Anda tidak memiliki peternakan Deadline Cloud dengan antrian dan armada Linux terkait, ikuti pengalaman orientasi terpandu di [konsol Deadline Cloud](https://console.aws.amazon.com/deadlinecloud/home) untuk membuatnya dengan pengaturan default.

1. Jika Anda tidak memiliki monitor Deadline Cloud CLI AWS dan Deadline Cloud di workstation Anda, ikuti langkah-langkah [di Mengatur](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/submitter.html) pengirim Deadline Cloud.

1. Gunakan `git` untuk mengkloning repositori [sampel GitHub Deadline Cloud](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
   ```

### Menjalankan sampel
<a name="set-run-example"></a>

1. Gunakan Deadline Cloud CLI untuk mengirimkan `job_env_vars` sampel.

   ```
   deadline bundle submit job_env_vars
   ```

1. Di monitor Deadline Cloud, pilih pekerjaan baru untuk memantau kemajuannya. Setelah Linux armada yang terkait dengan antrian memiliki pekerja yang tersedia, pekerjaan selesai dalam beberapa detik. Pilih tugas, lalu pilih **Lihat log** di menu kanan atas panel tugas.

### Membandingkan tindakan sesi dengan definisinya
<a name="set-compare-actions"></a>

Tampilan log menunjukkan tiga tindakan sesi. Buka file [job\$1env\$1vars/template.yaml](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/job_env_vars/template.yaml) di editor teks untuk membandingkan setiap tindakan dengan definisinya di template pekerjaan.

1. Pilih tindakan **Peluncuran JobEnv** sesi. Output log menunjukkan variabel lingkungan tingkat pekerjaan yang disetel.

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

   Baris berikut dari template pekerjaan menentukan lingkungan ini.

   ```
   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. Pilih tindakan **Peluncuran StepEnv** sesi. Output log menunjukkan variabel tingkat langkah, termasuk yang diganti`JOB_PROJECT_ID`.

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

   Baris berikut dari template pekerjaan menentukan lingkungan ini.

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

1. Pilih tindakan sesi **Task run**. Output log menunjukkan variabel lingkungan gabungan yang tersedia untuk tugas. Perhatikan bahwa `JOB_PROJECT_ID` menggunakan nilai `step-project-12` tingkat langkah.

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

# Mengatur jalur di lingkungan antrian
<a name="set-the-path"></a>

Gunakan lingkungan OpenJD untuk memberikan perintah baru di lingkungan. Pertama Anda membuat direktori yang berisi file skrip, dan kemudian menambahkan direktori itu ke variabel `PATH` lingkungan sehingga executable dalam skrip Anda dapat menjalankannya tanpa perlu menentukan jalur direktori setiap kali. Daftar variabel dalam definisi lingkungan tidak menyediakan cara untuk memodifikasi variabel, jadi Anda melakukan ini dengan menjalankan skrip sebagai gantinya. Setelah skrip mengatur segalanya dan memodifikasi`PATH`, ia mengekspor variabel ke runtime OpenJD dengan perintah. `echo "openjd_env: PATH=$PATH"` 

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

 Lakukan langkah-langkah berikut untuk menjalankan [paket pekerjaan sampel dengan variabel lingkungan](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/job_env_vars/template.yaml) dari repositori github sampel Deadline Cloud. 

1.  Jika Anda tidak memiliki peternakan Deadline Cloud dengan antrian dan armada Linux terkait, ikuti pengalaman orientasi terpandu di [konsol Deadline Cloud](https://console.aws.amazon.com/deadlinecloud/home) untuk membuatnya dengan pengaturan default. 

1.  Jika Anda tidak memiliki monitor Deadline Cloud CLI dan Deadline Cloud di workstation Anda, ikuti langkah-langkah [di Mengatur pengirim Deadline Cloud](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/submitter.html) dari panduan pengguna. 

1.  Gunakan `git` untuk mengkloning repositori [sampel GitHub Deadline Cloud](https://github.com/aws-deadline/deadline-cloud-samples). 

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

## Jalankan sampel jalur
<a name="path-run-sample"></a>

1.  Gunakan Deadline Cloud CLI untuk mengirimkan `job_env_with_new_command` sampel.

   ```
    $ deadline bundle submit job_env_with_new_command
    Submitting to Queue: MySampleQueue
    ...
   ```

1.  Di monitor Deadline Cloud, Anda akan melihat pekerjaan baru dan dapat memantau kemajuannya. Setelah Linux armada yang terkait dengan antrian memiliki pekerja yang tersedia untuk menjalankan tugas pekerjaan, pekerjaan selesai dalam beberapa detik. Pilih tugas, lalu pilih opsi **Lihat log** di menu kanan atas panel tugas. 

    Di sebelah kanan adalah dua tindakan sesi, **Launch RandomSleepCommand** dan **Task run**. Penampil log di tengah jendela sesuai dengan tindakan sesi yang dipilih di sebelah kanan. 

## Bandingkan tindakan sesi dengan definisinya
<a name="path-view-logs"></a>

Di bagian ini Anda menggunakan monitor Deadline Cloud untuk membandingkan tindakan sesi dengan di mana mereka didefinisikan dalam template pekerjaan. Ini berlanjut dari bagian sebelumnya. 

Buka file [job\$1env\$1with\$1new\$1command/template.yaml di editor](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/job_env_with_new_command/template.yaml) teks. Bandingkan tindakan sesi dengan tempat mereka didefinisikan dalam template pekerjaan. 

1.  Pilih tindakan **Peluncuran RandomSleepCommand** sesi di monitor Deadline Cloud. Anda akan melihat output log sebagai berikut.

   ```
    2024/07/16 17:25:32-07:00
    2024/07/16 17:25:32-07:00 ==============================================
    2024/07/16 17:25:32-07:00 --------- Entering Environment: RandomSleepCommand
    2024/07/16 17:25:32-07:00 ==============================================
    2024/07/16 17:25:32-07:00 ----------------------------------------------
    2024/07/16 17:25:32-07:00 Phase: Setup
    2024/07/16 17:25:32-07:00 ----------------------------------------------
    2024/07/16 17:25:32-07:00 Writing embedded files for Environment to disk.
    2024/07/16 17:25:32-07:00 Mapping: Env.File.Enter -> /sessions/session-ab132a51b9b54d5da22cbe839dd946baaw1c8hk5/embedded_filesf3tq_1os/tmpbt8j_c3f
    2024/07/16 17:25:32-07:00 Mapping: Env.File.SleepScript -> /sessions/session-ab132a51b9b54d5da22cbe839dd946baaw1c8hk5/embedded_filesf3tq_1os/tmperastlp4
    2024/07/16 17:25:32-07:00 Wrote: Enter -> /sessions/session-ab132a51b9b54d5da22cbe839dd946baaw1c8hk5/embedded_filesf3tq_1os/tmpbt8j_c3f
    2024/07/16 17:25:32-07:00 Wrote: SleepScript -> /sessions/session-ab132a51b9b54d5da22cbe839dd946baaw1c8hk5/embedded_filesf3tq_1os/tmperastlp4
    2024/07/16 17:25:32-07:00 ----------------------------------------------
    2024/07/16 17:25:32-07:00 Phase: Running action
    2024/07/16 17:25:32-07:00 ----------------------------------------------
    2024/07/16 17:25:32-07:00 Running command sudo -u job-user -i setsid -w /sessions/session-ab132a51b9b54d5da22cbe839dd946baaw1c8hk5/tmpbwrquq5u.sh
    2024/07/16 17:25:32-07:00 Command started as pid: 2205
    2024/07/16 17:25:32-07:00 Output:
    2024/07/16 17:25:33-07:00 openjd_env: PATH=/sessions/session-ab132a51b9b54d5da22cbe839dd946baaw1c8hk5/bin:/opt/conda/condabin:/home/job-user/.local/bin:/home/job-user/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/var/lib/snapd/snap/bin
    No newer logs at this moment.
   ```

    Baris berikut dari template pekerjaan menentukan tindakan ini.

   ```
    jobEnvironments:
    - name: RandomSleepCommand
      description: Adds a command 'random-sleep' to the environment.
      script:
        actions:
          onEnter:
            command: bash
            args:
            - "{{Env.File.Enter}}"
        embeddedFiles:
        - name: Enter
          type: TEXT
          data: |
            #!/bin/env bash
            set -euo pipefail
   
            # Make a bin directory inside the session's working directory for providing new commands
            mkdir -p '{{Session.WorkingDirectory}}/bin'
   
            # If this bin directory is not already in the PATH, then add it
            if ! [[ ":$PATH:" == *':{{Session.WorkingDirectory}}/bin:'* ]]; then
              export "PATH={{Session.WorkingDirectory}}/bin:$PATH"
   
              # This message to Open Job Description exports the new PATH value to the environment
              echo "openjd_env: PATH=$PATH"
            fi
   
            # Copy the SleepScript embedded file into the bin directory
            cp '{{Env.File.SleepScript}}' '{{Session.WorkingDirectory}}/bin/random-sleep'
            chmod u+x '{{Session.WorkingDirectory}}/bin/random-sleep'
        - name: SleepScript
          type: TEXT
          runnable: true
          data: |
            ...
   ```

1.  Pilih tindakan **Peluncuran StepEnv** sesi di monitor Deadline Cloud. Anda melihat output log sebagai berikut. 

   ```
    2024/07/16 17:25:33-07:00
    2024/07/16 17:25:33-07:00 ==============================================
    2024/07/16 17:25:33-07:00 --------- Running Task
    2024/07/16 17:25:33-07:00 ==============================================
    2024/07/16 17:25:33-07:00 ----------------------------------------------
    2024/07/16 17:25:33-07:00 Phase: Setup
    2024/07/16 17:25:33-07:00 ----------------------------------------------
    2024/07/16 17:25:33-07:00 Writing embedded files for Task to disk.
    2024/07/16 17:25:33-07:00 Mapping: Task.File.Run -> /sessions/session-ab132a51b9b54d5da22cbe839dd946baaw1c8hk5/embedded_filesf3tq_1os/tmpdrwuehjf
    2024/07/16 17:25:33-07:00 Wrote: Run -> /sessions/session-ab132a51b9b54d5da22cbe839dd946baaw1c8hk5/embedded_filesf3tq_1os/tmpdrwuehjf
    2024/07/16 17:25:33-07:00 ----------------------------------------------
    2024/07/16 17:25:33-07:00 Phase: Running action
    2024/07/16 17:25:33-07:00 ----------------------------------------------
    2024/07/16 17:25:33-07:00 Running command sudo -u job-user -i setsid -w /sessions/session-ab132a51b9b54d5da22cbe839dd946baaw1c8hk5/tmpz81iaqfw.sh
    2024/07/16 17:25:33-07:00 Command started as pid: 2256
    2024/07/16 17:25:33-07:00 Output:
    2024/07/16 17:25:34-07:00 + random-sleep 12.5 27.5
    2024/07/16 17:26:00-07:00 Sleeping for duration 26.90
    2024/07/16 17:26:00-07:00 ----------------------------------------------
    2024/07/16 17:26:00-07:00 Uploading output files to Job Attachments
    2024/07/16 17:26:00-07:00 ----------------------------------------------
   ```

1.  Baris berikut dari template pekerjaan menentukan tindakan ini.

   ```
    steps:
    - name: EnvWithCommand
      script:
        actions:
          onRun:
            command: bash
            args:
            - '{{Task.File.Run}}'
        embeddedFiles:
        - name: Run
          type: TEXT
          data: |
            set -xeuo pipefail
   
            # Run the script installed into PATH by the job environment
            random-sleep 12.5 27.5
      hostRequirements:
        attributes:
        - name: attr.worker.os.family
          anyOf:
          - linux
   ```

# Jalankan proses daemon latar belakang dari lingkungan antrian
<a name="run-a-background-daemon-process"></a>

 Dalam banyak kasus penggunaan rendering, memuat aplikasi dan data adegan dapat memakan waktu yang cukup lama. Jika pekerjaan memuat ulang mereka untuk setiap frame, itu akan menghabiskan sebagian besar waktunya untuk overhead. Seringkali mungkin untuk memuat aplikasi sekali sebagai proses daemon latar belakang, memintanya memuat data adegan, dan kemudian mengirimkannya perintah melalui komunikasi antar-proses (IPC) untuk melakukan render. 

 Banyak integrasi Deadline Cloud open source menggunakan pola ini. Proyek Open Job Description menyediakan [pustaka runtime adaptor](https://github.com/OpenJobDescription/openjd-adaptor-runtime-for-python) dengan pola IPC yang kuat pada semua sistem operasi yang didukung. 

 Untuk mendemonstrasikan pola ini, ada [bundel pekerjaan sampel mandiri](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/job_env_daemon_process/template.yaml) yang menggunakan Python dan kode bash untuk mengimplementasikan daemon latar belakang dan IPC untuk tugas-tugas untuk berkomunikasi dengannya. Daemon diimplementasikan dengan Python, dan mendengarkan SIGUSR1 sinyal POSIX kapan harus memproses tugas. Detail tugas diteruskan ke daemon dalam file JSON tertentu, dan hasil menjalankan tugas dikembalikan sebagai file JSON lain. 

## Prasyarat
<a name="daemon-prerequisites"></a>

 Lakukan langkah-langkah berikut untuk menjalankan [sample job bundle dengan proses daemon](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/job_env_daemon_process/template.yaml) dari repositori github sampel Deadline Cloud. 

1.  Jika Anda tidak memiliki peternakan Deadline Cloud dengan antrian dan armada Linux terkait, ikuti pengalaman orientasi terpandu di [konsol Deadline Cloud](https://console.aws.amazon.com/deadlinecloud/home) untuk membuatnya dengan pengaturan default. 

1.  Jika Anda tidak memiliki monitor Deadline Cloud CLI dan Deadline Cloud di workstation Anda, ikuti langkah-langkah [di Mengatur pengirim Deadline Cloud](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/submitter.html) dari panduan pengguna. 

1.  Gunakan `git` untuk mengkloning repositori [sampel GitHub Deadline Cloud](https://github.com/aws-deadline/deadline-cloud-samples). 

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

## Jalankan sampel daemon
<a name="daemon-run-sample"></a>

1.  Gunakan Deadline Cloud CLI untuk mengirimkan `job_env_daemon_process` sampel.

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

1.  Dalam aplikasi monitor Deadline Cloud, Anda akan melihat pekerjaan baru dan dapat memantau perkembangannya. Setelah Linux armada yang terkait dengan antrian memiliki pekerja yang tersedia untuk menjalankan tugas pekerjaan, itu selesai dalam waktu sekitar satu menit. Dengan salah satu tugas yang dipilih, pilih opsi **Lihat log** di menu kanan atas panel tugas. 

    Di sebelah kanan ada dua tindakan sesi, **Launch DaemonProcess** dan **Task run**. Penampil log di tengah jendela sesuai dengan tindakan sesi yang dipilih di sebelah kanan. 

    Pilih opsi **Lihat log untuk semua tugas**. Garis waktu menunjukkan sisa tugas yang berjalan sebagai bagian dari sesi, dan `Shut down DaemonProcess` tindakan yang keluar dari lingkungan. 

## Lihat log daemon
<a name="daemon-view-logs"></a>

1. Di bagian ini Anda menggunakan monitor Deadline Cloud untuk membandingkan tindakan sesi dengan di mana mereka didefinisikan dalam template pekerjaan. Ini berlanjut dari bagian sebelumnya. 

    Buka file [job\$1env\$1daemon\$1process/template.yaml di editor](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline/job_bundles/job_env_daemon_process/template.yaml) teks. Bandingkan tindakan sesi dengan tempat mereka didefinisikan dalam template pekerjaan. 

1.  Pilih tindakan `Launch DaemonProcess` sesi di monitor Deadline Cloud. Anda akan melihat output log sebagai berikut.

   ```
    2024/07/17 16:27:20-07:00
    2024/07/17 16:27:20-07:00 ==============================================
    2024/07/17 16:27:20-07:00 --------- Entering Environment: DaemonProcess
    2024/07/17 16:27:20-07:00 ==============================================
    2024/07/17 16:27:20-07:00 ----------------------------------------------
    2024/07/17 16:27:20-07:00 Phase: Setup
    2024/07/17 16:27:20-07:00 ----------------------------------------------
    2024/07/17 16:27:20-07:00 Writing embedded files for Environment to disk.
    2024/07/17 16:27:20-07:00 Mapping: Env.File.Enter -> /sessions/session-972e21d98dde45e59c7153bd9258a64dohwg4yg1/embedded_fileswy00x5ra/enter-daemon-process-env.sh
    2024/07/17 16:27:20-07:00 Mapping: Env.File.Exit -> /sessions/session-972e21d98dde45e59c7153bd9258a64dohwg4yg1/embedded_fileswy00x5ra/exit-daemon-process-env.sh
    2024/07/17 16:27:20-07:00 Mapping: Env.File.DaemonScript -> /sessions/session-972e21d98dde45e59c7153bd9258a64dohwg4yg1/embedded_fileswy00x5ra/daemon-script.py
    2024/07/17 16:27:20-07:00 Mapping: Env.File.DaemonHelperFunctions -> /sessions/session-972e21d98dde45e59c7153bd9258a64dohwg4yg1/embedded_fileswy00x5ra/daemon-helper-functions.sh
    2024/07/17 16:27:20-07:00 Wrote: Enter -> /sessions/session-972e21d98dde45e59c7153bd9258a64dohwg4yg1/embedded_fileswy00x5ra/enter-daemon-process-env.sh
    2024/07/17 16:27:20-07:00 Wrote: Exit -> /sessions/session-972e21d98dde45e59c7153bd9258a64dohwg4yg1/embedded_fileswy00x5ra/exit-daemon-process-env.sh
    2024/07/17 16:27:20-07:00 Wrote: DaemonScript -> /sessions/session-972e21d98dde45e59c7153bd9258a64dohwg4yg1/embedded_fileswy00x5ra/daemon-script.py
    2024/07/17 16:27:20-07:00 Wrote: DaemonHelperFunctions -> /sessions/session-972e21d98dde45e59c7153bd9258a64dohwg4yg1/embedded_fileswy00x5ra/daemon-helper-functions.sh
    2024/07/17 16:27:20-07:00 ----------------------------------------------
    2024/07/17 16:27:20-07:00 Phase: Running action
    2024/07/17 16:27:20-07:00 ----------------------------------------------
    2024/07/17 16:27:20-07:00 Running command sudo -u job-user -i setsid -w /sessions/session-972e21d98dde45e59c7153bd9258a64dohwg4yg1/tmp_u8slys3.sh
    2024/07/17 16:27:20-07:00 Command started as pid: 2187
    2024/07/17 16:27:20-07:00 Output:
    2024/07/17 16:27:21-07:00 openjd_env: DAEMON_LOG=/sessions/session-972e21d98dde45e59c7153bd9258a64dohwg4yg1/daemon.log
    2024/07/17 16:27:21-07:00 openjd_env: DAEMON_PID=2223
    2024/07/17 16:27:21-07:00 openjd_env: DAEMON_BASH_HELPER_SCRIPT=/sessions/session-972e21d98dde45e59c7153bd9258a64dohwg4yg1/embedded_fileswy00x5ra/daemon-helper-functions.sh
   ```

    Baris berikut dari template pekerjaan menentukan tindakan ini.

   ```
      stepEnvironments:
      - name: DaemonProcess
        description: Runs a daemon process for the step's tasks to share.
        script:
          actions:
            onEnter:
              command: bash
              args:
              - "{{Env.File.Enter}}"
            onExit:
              command: bash
              args:
              - "{{Env.File.Exit}}"
          embeddedFiles:
          - name: Enter
            filename: enter-daemon-process-env.sh
            type: TEXT
            data: |
              #!/bin/env bash
              set -euo pipefail
   
              DAEMON_LOG='{{Session.WorkingDirectory}}/daemon.log'
              echo "openjd_env: DAEMON_LOG=$DAEMON_LOG"
              nohup python {{Env.File.DaemonScript}} > $DAEMON_LOG 2>&1 &
              echo "openjd_env: DAEMON_PID=$!"
              echo "openjd_env: DAEMON_BASH_HELPER_SCRIPT={{Env.File.DaemonHelperFunctions}}"
   
              echo 0 > 'daemon_log_cursor.txt'
        ...
   ```

1.  Pilih salah satu tindakan Task run: N session di monitor Deadline Cloud. Anda akan melihat output log sebagai berikut.

   ```
   2024/07/17 16:27:22-07:00
    2024/07/17 16:27:22-07:00 ==============================================
    2024/07/17 16:27:22-07:00 --------- Running Task
    2024/07/17 16:27:22-07:00 ==============================================
    2024/07/17 16:27:22-07:00 Parameter values:
    2024/07/17 16:27:22-07:00 Frame(INT) = 2
    2024/07/17 16:27:22-07:00 ----------------------------------------------
    2024/07/17 16:27:22-07:00 Phase: Setup
    2024/07/17 16:27:22-07:00 ----------------------------------------------
    2024/07/17 16:27:22-07:00 Writing embedded files for Task to disk.
    2024/07/17 16:27:22-07:00 Mapping: Task.File.Run -> /sessions/session-972e21d98dde45e59c7153bd9258a64dohwg4yg1/embedded_fileswy00x5ra/run-task.sh
    2024/07/17 16:27:22-07:00 Wrote: Run -> /sessions/session-972e21d98dde45e59c7153bd9258a64dohwg4yg1/embedded_fileswy00x5ra/run-task.sh
    2024/07/17 16:27:22-07:00 ----------------------------------------------
    2024/07/17 16:27:22-07:00 Phase: Running action
    2024/07/17 16:27:22-07:00 ----------------------------------------------
    2024/07/17 16:27:22-07:00 Running command sudo -u job-user -i setsid -w /sessions/session-972e21d98dde45e59c7153bd9258a64dohwg4yg1/tmpv4obfkhn.sh
    2024/07/17 16:27:22-07:00 Command started as pid: 2301
    2024/07/17 16:27:22-07:00 Output:
    2024/07/17 16:27:23-07:00 Daemon PID is 2223
    2024/07/17 16:27:23-07:00 Daemon log file is /sessions/session-972e21d98dde45e59c7153bd9258a64dohwg4yg1/daemon.log
    2024/07/17 16:27:23-07:00
    2024/07/17 16:27:23-07:00 === Previous output from daemon
    2024/07/17 16:27:23-07:00 ===
    2024/07/17 16:27:23-07:00
    2024/07/17 16:27:23-07:00 Sending command to daemon
    2024/07/17 16:27:23-07:00 Received task result:
    2024/07/17 16:27:23-07:00 {
    2024/07/17 16:27:23-07:00   "result": "SUCCESS",
    2024/07/17 16:27:23-07:00   "processedTaskCount": 1,
    2024/07/17 16:27:23-07:00   "randomValue": 0.2578537967668988,
    2024/07/17 16:27:23-07:00   "failureRate": 0.1
    2024/07/17 16:27:23-07:00 }
    2024/07/17 16:27:23-07:00
    2024/07/17 16:27:23-07:00 === Daemon log from running the task
    2024/07/17 16:27:23-07:00 Loading the task details file
    2024/07/17 16:27:23-07:00 Received task details:
    2024/07/17 16:27:23-07:00 {
    2024/07/17 16:27:23-07:00  "pid": 2329,
    2024/07/17 16:27:23-07:00  "frame": 2
    2024/07/17 16:27:23-07:00 }
    2024/07/17 16:27:23-07:00 Processing frame number 2
    2024/07/17 16:27:23-07:00 Writing result
    2024/07/17 16:27:23-07:00 Waiting until a USR1 signal is sent...
    2024/07/17 16:27:23-07:00 ===
    2024/07/17 16:27:23-07:00
    2024/07/17 16:27:23-07:00 ----------------------------------------------
    2024/07/17 16:27:23-07:00 Uploading output files to Job Attachments
    2024/07/17 16:27:23-07:00 ----------------------------------------------
   ```

    Baris berikut dari template pekerjaan adalah apa yang menentukan tindakan ini. ```langkah: 

   ```
    steps:
    - name: EnvWithDaemonProcess
      parameterSpace:
        taskParameterDefinitions:
        - name: Frame
          type: INT
          range: "{{Param.Frames}}"
   
      stepEnvironments:
        ...
   
      script:
        actions:
          onRun:
            timeout: 60
            command: bash
            args:
            - '{{Task.File.Run}}'
        embeddedFiles:
        - name: Run
          filename: run-task.sh
          type: TEXT
          data: |
            # This bash script sends a task to the background daemon process,
            # then waits for it to respond with the output result.
   
            set -euo pipefail
   
            source "$DAEMON_BASH_HELPER_SCRIPT"
   
            echo "Daemon PID is $DAEMON_PID"
            echo "Daemon log file is $DAEMON_LOG"
   
            print_daemon_log "Previous output from daemon"
   
            send_task_to_daemon "{\"pid\": $$, \"frame\": {{Task.Param.Frame}} }"
            wait_for_daemon_task_result
   
            echo Received task result:
            echo "$TASK_RESULT" | jq .
   
            print_daemon_log "Daemon log from running the task"
   
      hostRequirements:
        attributes:
        - name: attr.worker.os.family
          anyOf:
          - linux
   ```

# Menyediakan aplikasi untuk pekerjaan Anda
<a name="provide-applications"></a>

Anda dapat menggunakan lingkungan antrian untuk memuat aplikasi untuk memproses pekerjaan Anda. Saat membuat armada yang dikelola layanan menggunakan konsol Deadline Cloud, Anda memiliki opsi untuk membuat lingkungan antrian yang menggunakan manajer paket conda untuk memuat aplikasi. 

Jika Anda ingin menggunakan manajer paket yang berbeda, Anda dapat membuat lingkungan antrian untuk manajer itu. Untuk contoh menggunakan Rez, lihat[Gunakan manajer paket yang berbeda](#provide-applications-other-package).

Deadline Cloud menyediakan saluran conda untuk memuat pilihan aplikasi rendering ke lingkungan Anda. Mereka mendukung pengirim yang disediakan Deadline Cloud untuk aplikasi pembuatan konten digital. 

Anda juga dapat memuat perangkat lunak untuk conda-forge untuk digunakan dalam pekerjaan Anda. Contoh berikut menunjukkan templat pekerjaan menggunakan lingkungan antrian yang disediakan oleh Deadline Cloud untuk memuat aplikasi sebelum menjalankan pekerjaan.

**Topics**
+ [Mendapatkan aplikasi dari saluran conda](#provide-applications-get-application)
+ [Gunakan manajer paket yang berbeda](#provide-applications-other-package)

## Mendapatkan aplikasi dari saluran conda
<a name="provide-applications-get-application"></a>

Anda dapat membuat lingkungan antrian khusus untuk pekerja Deadline Cloud Anda yang menginstal perangkat lunak pilihan Anda. Contoh lingkungan antrian ini memiliki perilaku yang sama dengan lingkungan yang digunakan oleh konsol untuk armada yang dikelola layanan. Ini menjalankan conda langsung untuk menciptakan lingkungan.

Lingkungan menciptakan lingkungan virtual conda baru untuk setiap sesi Deadline Cloud yang berjalan pada pekerja, dan kemudian menghapus lingkungan ketika selesai. 

Conda menyimpan paket yang diunduh sehingga tidak perlu diunduh lagi, tetapi setiap sesi harus menautkan semua paket ke lingkungan.

Lingkungan mendefinisikan tiga skrip yang berjalan saat Deadline Cloud memulai sesi pada pekerja. Skrip pertama berjalan ketika `onEnter` tindakan dipanggil. Ini memanggil dua lainnya untuk mengatur variabel lingkungan. Ketika skrip selesai berjalan, lingkungan conda tersedia dengan semua variabel lingkungan yang ditentukan ditetapkan.

Untuk versi terbaru dari contoh, lihat [conda\$1queue\$1env\$1console\$1equivalent.yaml](https://github.com/aws-deadline/deadline-cloud-samples/blob/mainline/queue_environments/conda_queue_env_console_equivalent.yaml) di repositori pada. [deadline-cloud-samples](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline) GitHub

Jika Anda ingin menggunakan aplikasi yang tidak tersedia di saluran conda, Anda dapat membuat saluran conda di Amazon S3 dan kemudian membuat paket Anda sendiri untuk aplikasi itu. Lihat [Buat saluran conda menggunakan S3](configure-jobs-s3-channel.md) untuk mempelajari selengkapnya.

### Dapatkan pustaka open source dari conda-forge
<a name="get-application-csv-example"></a>

Bagian ini menjelaskan cara menggunakan pustaka sumber terbuka dari `conda-forge` saluran. Contoh berikut adalah template pekerjaan yang menggunakan paket `polars` Python.

Pekerjaan menetapkan `CondaChannels` parameter `CondaPackages` dan yang ditentukan dalam lingkungan antrian yang memberi tahu Deadline Cloud tempat mendapatkan paket.

Bagian dari template pekerjaan yang menetapkan parameter adalah:

```
- name: CondaPackages
  description: A list of conda packages to install. The job expects a Queue Environment to handle this.
  type: STRING
  default: polars
- name: CondaChannels
  description: A list of conda channels to get packages from. The job expects a Queue Environment to handle this.
  type: STRING
  default: conda-forge
```

Untuk versi terbaru dari contoh template pekerjaan lengkap, lihat [stage\$11\$1self\$1contained\$1template/template.yaml](https://github.com/aws-deadline/deadline-cloud-samples/blob/mainline/job_bundles/job_dev_progression/stage_1_self_contained_template/template.yaml). Untuk versi terbaru dari lingkungan antrian yang memuat paket conda, lihat [conda\$1queue\$1env\$1console\$1equivalent.yaml](https://github.com/aws-deadline/deadline-cloud-samples/blob/mainline/queue_environments/conda_queue_env_console_equivalent.yaml) di repositori pada. [deadline-cloud-samples](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline) GitHub 

### Dapatkan Blender dari saluran deadline-cloud
<a name="get-application-blender"></a>

Contoh berikut menunjukkan template pekerjaan yang didapat Blender dari saluran `deadline-cloud` conda. Saluran ini mendukung pengirim yang disediakan Deadline Cloud untuk perangkat lunak pembuatan konten digital, meskipun Anda dapat menggunakan saluran yang sama untuk memuat perangkat lunak untuk Anda gunakan sendiri.

Untuk daftar perangkat lunak yang disediakan oleh `deadline-cloud` channel, lihat [Lingkungan antrian default](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/create-queue-environment.html#conda-queue-environment) di *Panduan Pengguna Cloud AWS Batas Waktu*.

Pekerjaan ini menetapkan `CondaPackages` parameter yang ditentukan dalam lingkungan antrian untuk memberi tahu Deadline Cloud agar dimuat Blender ke lingkungan. 

Bagian dari template pekerjaan yang menetapkan parameter adalah:

```
- name: CondaPackages
  type: STRING
  userInterface:
    control: LINE_EDIT
    label: Conda Packages
    groupLabel: Software Environment
  default: blender
  description: >
    Tells the queue environment to install Blender from the deadline-cloud conda channel.
```

Untuk versi terbaru dari contoh template pekerjaan lengkap, lihat [blender\$1render/template.yaml](https://github.com/aws-deadline/deadline-cloud-samples/blob/mainline/job_bundles/blender_render/template.yaml). Untuk versi terbaru dari lingkungan antrian yang memuat paket conda, lihat [conda\$1queue\$1env\$1console\$1equivalent.yaml](https://github.com/aws-deadline/deadline-cloud-samples/blob/mainline/queue_environments/conda_queue_env_console_equivalent.yaml) di repositori pada. [deadline-cloud-samples](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline)GitHub 

## Gunakan manajer paket yang berbeda
<a name="provide-applications-other-package"></a>

Manajer paket default untuk Deadline Cloud adalah conda. Jika Anda perlu menggunakan manajer paket yang berbeda, sepertiRez, Anda dapat membuat lingkungan antrian kustom yang berisi skrip yang menggunakan manajer paket Anda sebagai gantinya. 

Contoh lingkungan antrian ini memberikan perilaku yang sama dengan lingkungan yang digunakan oleh konsol untuk armada yang dikelola layanan. Ini menggantikan manajer paket conda dengan. Rez 

Lingkungan mendefinisikan tiga skrip yang berjalan saat Deadline Cloud memulai sesi pada pekerja. Skrip pertama berjalan ketika `onEnter` tindakan dipanggil. Ini memanggil dua lainnya untuk mengatur variabel lingkungan. Ketika skrip selesai berjalan, Rez lingkungan tersedia dengan semua variabel lingkungan yang ditentukan ditetapkan.

Contoh ini mengasumsikan bahwa Anda memiliki armada yang dikelola pelanggan yang menggunakan sistem file bersama untuk paket Rez.

Untuk versi terbaru dari contoh, lihat [rez\$1queue\$1env.yaml di repositori](https://github.com/aws-deadline/deadline-cloud-samples/blob/mainline/queue_environments/rez_queue_env.yaml) pada. [deadline-cloud-samples](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline)GitHub