View a markdown version of this page

대기열 환경에서 환경 변수 설정 - 기한 클라우드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

대기열 환경에서 환경 변수 설정

많은 애플리케이션 및 프레임워크는 환경 변수를 사용하여 기능 설정, 로깅 수준 및 표시 구성을 제어합니다. Open Job Description(OpenJD) 환경을 사용하여 범위 내의 모든 태스크 명령이 상속하는 환경 변수를 설정할 수 있습니다.

환경 변수 범위

AWS Deadline Cloud는 대기열에 연결하는 대기열 환경의 환경 변수를 적용합니다. 작업 템플릿 내에서 OpenJD 환경을 사용하여 작업 및 단계 수준에서 환경 변수를 정의할 수도 있습니다. 더 좁은 범위에서 정의된 변수는 더 넓은 범위에서 동일한 이름의 변수를 재정의합니다.

  • 대기열 환경 - Deadline Cloud의 대기열에 연결하는 템플릿입니다. 변수는 대기열에 제출된 모든 작업에 적용됩니다. 고정 값에 대한 variables 맵으로 변수를 설정하거나 동적 값에 스크립트를 사용할 수 있습니다.

  • 작업 환경 - 작업 템플릿의 jobEnvironments에 정의되어 있습니다. 변수는 작업의 모든 단계와 작업에 적용됩니다. 작업 수준 변수는 동일한 이름의 대기열 수준 변수를 재정의합니다.

  • 단계 환경 - 작업 템플릿의 stepEnvironments에 정의되어 있습니다. 변수는 해당 단계의 태스크에만 적용됩니다. 단계 수준 변수는 동일한 이름의 작업 수준 또는 대기열 수준 변수를 재정의합니다.

대기열 환경에서 변수 설정

고정 값에 대한 variables 맵을 사용하거나 동적 값에 대한 onEnter 작업과 script 함께를 사용하여 대기열 환경에서 환경 변수를 설정할 수 있습니다.

다음 대기열 환경 템플릿은 variables 맵을 사용하여 QT_QPA_PLATFORM 변수를 로 설정offscreen하므로 Qt 프레임워크를 사용하는 애플리케이션이 대화형 디스플레이 없이 작업자 호스트에서 실행될 수 있습니다.

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

가상 환경 수정 PATH 또는 활성화와 같은 동적 값의 경우 형식으로 줄을 인쇄하여 stdout하는 스크립트openjd_env: VAR=value를 사용합니다. openjd_env: 접두사가 필요합니다. 접두사 없이 export, 또는 기타 echo쉘 메커니즘을 사용하면 변수가 작업 및 작업에 전파되지 않습니다.

다음 대기열 환경 템플릿은 스크립트를 사용하여 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 환경 변수를 로 설정offscreen하여 Qt Framework를 사용하는 애플리케이션이 대화형 디스플레이 없이 작업자 호스트에서 실행되도록 합니다.

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 샘플 리포지토리에는 환경 변수 설정 및 보기를 보여주는 작업 번들이 포함되어 있습니다. 샘플 작업 템플릿은 작업 및 단계 수준에서 변수를 정의한 다음 병합된 결과를 인쇄하는 작업을 실행합니다. 다음 절차에 따라 샘플을 실행하고 결과를 검사합니다.

사전 조건

  1. 대기열 및 연결된 Linux 플릿이 있는 Deadline Cloud 팜이 없는 경우 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플릿에 작업자를 사용할 수 있게 되면 몇 초 안에 작업이 완료됩니다. 작업을 선택한 다음 작업 패널의 오른쪽 상단 메뉴에서 로그 보기를 선택합니다.

세션 작업과 정의 비교

로그 보기에는 세 가지 세션 작업이 표시됩니다. 텍스트 편집기에서 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