BatchJobPreparationTask interface

지정된 컴퓨팅 노드에서 작업의 태스크 앞에 실행할 작업 준비 태스크입니다. 작업 준비를 사용하여 작업에 대한 작업을 실행하는 노드를 준비할 수 있습니다. 작업 준비에서 일반적으로 수행되는 활동은 다음과 같습니다. 작업의 모든 태스크에서 사용하는 일반적인 리소스 파일 다운로드 작업 준비 태스크는 이러한 일반적인 리소스 파일을 노드의 공유 위치에 다운로드할 수 있습니다. (AZ_BATCH_NODE_ROOT_DIR\shared) 또는 해당 작업의 모든 태스크가 통신할 수 있도록 노드에서 로컬 서비스를 시작합니다. 작업 준비 태스크가 실패하면(즉, 종료 코드 0으로 종료하기 전에 재시도 횟수가 소진됨) Batch는 노드에서 이 작업의 태스크를 실행하지 않습니다. 컴퓨팅 노드는 이미지로 다시 설치될 때까지 이 작업의 작업을 실행할 자격이 없습니다. 컴퓨팅 노드는 활성 상태로 유지되며 다른 작업에 사용할 수 있습니다. 작업 준비 태스크는 동일한 노드에서 여러 번 실행할 수 있습니다. 따라서 다시 실행을 처리하기 위해 작업 준비 태스크를 작성해야 합니다. 노드가 다시 부팅되면 작업 준비 태스크가 컴퓨팅 노드에서 다시 실행된 후 다른 작업 작업(rerunOnNodeRebootAfterSuccess가 true이거나 작업 준비 태스크가 이전에 완료되지 않은 경우)을 예약합니다. 노드가 이미지로 다시 설치되면 작업 태스크를 예약하기 전에 작업 준비 태스크가 다시 실행됩니다. Batch는 노드에서 복구 작업이 트리거될 때 작업을 다시 시도합니다. 복구 작업의 예로는 비정상 노드가 다시 부팅되거나 호스트 오류로 인해 컴퓨팅 노드가 사라진 경우(제한되지 않음) 등이 있습니다. 복구 작업으로 인한 재시도는 maxTaskRetryCount와 독립적이며 계산되지 않습니다. maxTaskRetryCount가 0이더라도 복구 작업으로 인한 내부 재시도가 발생할 수 있습니다. 이 때문에 모든 작업은 idempotent여야 합니다. 즉, 작업이 손상되거나 중복된 데이터를 유발하지 않고 중단되고 다시 시작되는 것을 허용해야 합니다. 장기 실행 작업의 모범 사례는 일종의 검사점을 사용하는 것입니다.

속성

commandLine

Job Preparation Task의 명령줄입니다. 명령줄은 셸에서 실행되지 않으므로 환경 변수 확장과 같은 셸 기능을 활용할 수 없습니다. 이런 기능을 활용하고 싶다면, 명령줄에서 셸을 호출해야 합니다. 예를 들어 Windows에서는 "cmd /c MyCommand"를, Linux에서는 "/bin/sh -c MyCommand"를 사용하는 식입니다. 명령줄이 파일 경로를 참조하는 경우 상대 경로(작업 작업 디렉터리를 기준으로)를 사용하거나 Batch 제공 환경 변수(https://dotnet.territoriali.olinfo.it/azure/batch/batch-compute-node-environment-variables)를 사용해야 합니다.

constraints

직무 준비 과제에 적용되는 제약 조건들.

containerSettings

작업 준비 작업이 실행되는 컨테이너 설정입니다. 이 명령이 명시되면, 노드 내 Azure Batch 디렉터리의 루트인 AZ_BATCH_NODE_ROOT_DIR 아래에 있는 모든 디렉터리가 재귀적으로 컨테이너에 매핑되고, 모든 작업 환경 변수가 컨테이너에 매핑되며, 작업 명령줄이 컨테이너에서 실행됩니다. AZ_BATCH_NODE_ROOT_DIR 외부에서 생성된 컨테이너 파일은 호스트 디스크에 반영되지 않을 수 있어, 배치 파일 API가 해당 파일에 접근할 수 없습니다.

environmentSettings

작업 준비 작업을 위한 환경 변수 설정 목록입니다.

id

직무 내 직무 준비 작업을 고유하게 식별하는 문자열입니다. ID는 하이픈과 밑줄을 포함한 모든 영숫자 문자 조합을 포함할 수 있으며 64자를 초과할 수 없습니다. 이 속성을 지정하지 않으면, 배치 서비스는 기본 값을 'jobpreparation'로 할당합니다. 작업 내 다른 어떤 작업도 작업 준비 작업과 동일한 ID를 가질 수 없습니다. 동일한 ID로 작업을 제출하려 하면, 배치 서비스는 TaskIdSameAsJobPreparationTask라는 오류 코드와 함께 요청을 거부합니다; REST API를 직접 호출할 경우 HTTP 상태 코드는 409(충돌)입니다.

rerunOnNodeRebootAfterSuccess

컴퓨트 노드가 재부팅된 후 배치 서비스가 작업 준비 작업을 재실행해야 하는지 여부. 컴퓨트 노드가 다시 이미지화되었거나, 작업 준비 작업이 완료되지 않았을 때(예: 재부팅이 작업 실행 중에 발생했기 때문) 작업 준비 작업은 항상 재실행됩니다. 따라서 여러 번 실행할 경우 ��등성(놻등)이고 올바르게 동작하도록 작업 준비 과제를 작성해야 합니다. 기본값은 true입니다.

resourceFiles

명령줄을 실행하기 전에 Batch 서비스가 컴퓨팅 노드에 다운로드할 파일 목록입니다. 이 요소 아래에 나열된 파일은 Task의 작업 디렉터리에 있습니다. 리소스 파일 목록에 대한 최대 크기가 있습니다. 최대 크기를 초과하면 요청이 실패하고 응답 오류 코드는 RequestEntityTooLarge가 됩니다. 이 경우 ResourceFiles 컬렉션의 크기를 줄여야 합니다. 이 작업은 .zip 파일, 애플리케이션 패키지 또는 Docker 컨테이너를 사용하여 수행할 수 있습니다.

userIdentity

작업 준비 작업이 실행되는 사용자 식별 정보입니다. 생략 시 작업은 Windows 컴퓨트 노드의 작업 고유 비관리자 사용자로, 또는 Linux 컴퓨트 노드의 풀에 고유한 비관리자 사용자로 실행됩니다.

waitForSuccess

배치 서비스가 작업 준비 작업이 성공적으로 완료될 때까지 기다렸다가 컴퓨트 노드에서 작업의 다른 작업을 스케줄링해야 하는지 여부. 작업 준비 작업이 종료 코드 0으로 종료되면 성공적으로 완료된 것으로 간주됩니다. 만약 참이고 Job Preparation Task가 노드에서 실패하면, 배치 서비스는 Job Preparation Task를 최대 재시도 횟수(제약 요소에 명시된 대로)까지 재시도합니다. 모든 재시도 후에도 작업이 성공적으로 완료되지 않았다면, 배치 서비스는 작업의 작업을 노드로 스케줄링하지 않습니다. 노드는 활성 상태로 유지되며 다른 작업의 작업을 실행할 수 있습니다. 만약 잘못 적용될 경우, 배치 서비스는 작업 준비 작업이 완료될 때까지 기다리지 않습니다. 이 경우, 작업의 다른 작업들이 작업 준비 작업이 실행 중인 동안 컴퓨팅 노드에서 실행을 시작할 수 있습니다; 작업 준비 작업이 실패하더라도 새로운 작업은 컴퓨트 노드에서 계속 예약됩니다. 기본값은 true입니다.

속성 세부 정보

commandLine

Job Preparation Task의 명령줄입니다. 명령줄은 셸에서 실행되지 않으므로 환경 변수 확장과 같은 셸 기능을 활용할 수 없습니다. 이런 기능을 활용하고 싶다면, 명령줄에서 셸을 호출해야 합니다. 예를 들어 Windows에서는 "cmd /c MyCommand"를, Linux에서는 "/bin/sh -c MyCommand"를 사용하는 식입니다. 명령줄이 파일 경로를 참조하는 경우 상대 경로(작업 작업 디렉터리를 기준으로)를 사용하거나 Batch 제공 환경 변수(https://dotnet.territoriali.olinfo.it/azure/batch/batch-compute-node-environment-variables)를 사용해야 합니다.

commandLine: string

속성 값

string

constraints

직무 준비 과제에 적용되는 제약 조건들.

constraints?: BatchTaskConstraints

속성 값

containerSettings

작업 준비 작업이 실행되는 컨테이너 설정입니다. 이 명령이 명시되면, 노드 내 Azure Batch 디렉터리의 루트인 AZ_BATCH_NODE_ROOT_DIR 아래에 있는 모든 디렉터리가 재귀적으로 컨테이너에 매핑되고, 모든 작업 환경 변수가 컨테이너에 매핑되며, 작업 명령줄이 컨테이너에서 실행됩니다. AZ_BATCH_NODE_ROOT_DIR 외부에서 생성된 컨테이너 파일은 호스트 디스크에 반영되지 않을 수 있어, 배치 파일 API가 해당 파일에 접근할 수 없습니다.

containerSettings?: BatchTaskContainerSettings

속성 값

environmentSettings

작업 준비 작업을 위한 환경 변수 설정 목록입니다.

environmentSettings?: EnvironmentSetting[]

속성 값

id

직무 내 직무 준비 작업을 고유하게 식별하는 문자열입니다. ID는 하이픈과 밑줄을 포함한 모든 영숫자 문자 조합을 포함할 수 있으며 64자를 초과할 수 없습니다. 이 속성을 지정하지 않으면, 배치 서비스는 기본 값을 'jobpreparation'로 할당합니다. 작업 내 다른 어떤 작업도 작업 준비 작업과 동일한 ID를 가질 수 없습니다. 동일한 ID로 작업을 제출하려 하면, 배치 서비스는 TaskIdSameAsJobPreparationTask라는 오류 코드와 함께 요청을 거부합니다; REST API를 직접 호출할 경우 HTTP 상태 코드는 409(충돌)입니다.

id?: string

속성 값

string

rerunOnNodeRebootAfterSuccess

컴퓨트 노드가 재부팅된 후 배치 서비스가 작업 준비 작업을 재실행해야 하는지 여부. 컴퓨트 노드가 다시 이미지화되었거나, 작업 준비 작업이 완료되지 않았을 때(예: 재부팅이 작업 실행 중에 발생했기 때문) 작업 준비 작업은 항상 재실행됩니다. 따라서 여러 번 실행할 경우 ��등성(놻등)이고 올바르게 동작하도록 작업 준비 과제를 작성해야 합니다. 기본값은 true입니다.

rerunOnNodeRebootAfterSuccess?: boolean

속성 값

boolean

resourceFiles

명령줄을 실행하기 전에 Batch 서비스가 컴퓨팅 노드에 다운로드할 파일 목록입니다. 이 요소 아래에 나열된 파일은 Task의 작업 디렉터리에 있습니다. 리소스 파일 목록에 대한 최대 크기가 있습니다. 최대 크기를 초과하면 요청이 실패하고 응답 오류 코드는 RequestEntityTooLarge가 됩니다. 이 경우 ResourceFiles 컬렉션의 크기를 줄여야 합니다. 이 작업은 .zip 파일, 애플리케이션 패키지 또는 Docker 컨테이너를 사용하여 수행할 수 있습니다.

resourceFiles?: ResourceFile[]

속성 값

userIdentity

작업 준비 작업이 실행되는 사용자 식별 정보입니다. 생략 시 작업은 Windows 컴퓨트 노드의 작업 고유 비관리자 사용자로, 또는 Linux 컴퓨트 노드의 풀에 고유한 비관리자 사용자로 실행됩니다.

userIdentity?: UserIdentity

속성 값

waitForSuccess

배치 서비스가 작업 준비 작업이 성공적으로 완료될 때까지 기다렸다가 컴퓨트 노드에서 작업의 다른 작업을 스케줄링해야 하는지 여부. 작업 준비 작업이 종료 코드 0으로 종료되면 성공적으로 완료된 것으로 간주됩니다. 만약 참이고 Job Preparation Task가 노드에서 실패하면, 배치 서비스는 Job Preparation Task를 최대 재시도 횟수(제약 요소에 명시된 대로)까지 재시도합니다. 모든 재시도 후에도 작업이 성공적으로 완료되지 않았다면, 배치 서비스는 작업의 작업을 노드로 스케줄링하지 않습니다. 노드는 활성 상태로 유지되며 다른 작업의 작업을 실행할 수 있습니다. 만약 잘못 적용될 경우, 배치 서비스는 작업 준비 작업이 완료될 때까지 기다리지 않습니다. 이 경우, 작업의 다른 작업들이 작업 준비 작업이 실행 중인 동안 컴퓨팅 노드에서 실행을 시작할 수 있습니다; 작업 준비 작업이 실패하더라도 새로운 작업은 컴퓨트 노드에서 계속 예약됩니다. 기본값은 true입니다.

waitForSuccess?: boolean

속성 값

boolean