기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Deadline Cloud에서 작업 첨부 파일이 있는 작업 제출
많은 팜은 공유 파일 시스템을 사용하여 작업을 제출하는 호스트와 작업을 실행하는 호스트 간에 파일을 공유합니다. 예를 들어 이전 simple_file_job
예제에서 로컬 파일 시스템은 작업을 제출하는 탭 1과 작업자 에이전트를 실행하는 탭 2에서 실행되는 AWS CloudShell 터미널 창 간에 공유됩니다.
공유 파일 시스템은 제출자 워크스테이션과 작업자 호스트가 동일한 로컬 영역 네트워크에 있을 때 유용합니다. 데이터를 액세스하는 워크스테이션 근처의 온프레미스에 저장하는 경우 클라우드 기반 팜을 사용하면 지연 시간이 긴 VPN을 통해 파일 시스템을 공유하거나 클라우드에서 파일 시스템을 동기화해야 합니다. 이러한 옵션 중 어느 것도 설정하거나 작동하기가 쉽지 않습니다.
AWS Deadline Cloud는 이메일 첨부 파일과 유사한 작업 첨부 파일이 있는 간단한 솔루션을 제공합니다. 작업 연결을 사용하면 작업에 데이터를 연결할 수 있습니다. 그런 다음 Deadline Cloud는 Amazon Simple Storage Service(Amazon S3) 버킷에 작업 데이터를 전송하고 저장하는 세부 정보를 처리합니다.
콘텐츠 생성 워크플로는 종종 반복적입니다. 즉, 사용자가 수정된 파일의 작은 하위 집합으로 작업을 제출합니다. Amazon S3 버킷은 콘텐츠 주소 지정 스토리지에 작업 첨부 파일을 저장하므로 각 객체의 이름은 객체 데이터의 해시를 기반으로 하며 디렉터리 트리의 콘텐츠는 작업에 연결된 매니페스트 파일 형식으로 저장됩니다.
이 섹션의 절차를 따르려면 먼저 다음을 완료해야 합니다.
작업 연결로 작업을 실행하려면 다음 단계를 완료하세요.
대기열에 작업 연결 구성 추가
대기열에서 작업 연결을 활성화하려면 계정의 대기열 리소스에 작업 연결 구성을 추가합니다.
대기열에 작업 연결 구성을 추가하려면
-
첫 번째 CloudShell 탭을 선택한 다음 다음 명령 중 하나를 입력하여 Amazon S3 버킷을 작업 연결에 사용합니다.
-
기존 프라이빗 Amazon S3 버킷이 없는 경우 새 S3 버킷을 생성하고 사용할 수 있습니다.
DEV_FARM_BUCKET=$(echo $DEV_FARM_NAME \ | tr '[:upper:]' '[:lower:]')-$(xxd -l 16 -p /dev/urandom) if [ "$AWS_REGION" == "us-east-1" ]; then LOCATION_CONSTRAINT= else LOCATION_CONSTRAINT="--create-bucket-configuration \ LocationConstraint=${AWS_REGION}" fi aws s3api create-bucket \ $LOCATION_CONSTRAINT \ --acl private \ --bucket ${DEV_FARM_BUCKET}
-
프라이빗 Amazon S3 버킷이 이미 있는 경우
를 버킷 이름으로 바꿔 사용할 수 있습니다.MY_BUCKET_NAME
DEV_FARM_BUCKET=
MY_BUCKET_NAME
-
-
Amazon S3 버킷을 생성하거나 선택한 후 버킷 이름을
~/.bashrc
에 추가하여 다른 터미널 세션에서 버킷을 사용할 수 있도록 합니다.echo "DEV_FARM_BUCKET=$DEV_FARM_BUCKET" >> ~/.bashrc source ~/.bashrc
-
대기열에 대한 AWS Identity and Access Management (IAM) 역할을 생성합니다.
aws iam create-role --role-name "${DEV_FARM_NAME}QueueRole" \ --assume-role-policy-document \ '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "credentials.deadline.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }' aws iam put-role-policy \ --role-name "${DEV_FARM_NAME}QueueRole" \ --policy-name S3BucketsAccess \ --policy-document \ '{ "Version": "2012-10-17", "Statement": [ { "Action": [ "s3:GetObject*", "s3:GetBucket*", "s3:List*", "s3:DeleteObject*", "s3:PutObject", "s3:PutObjectLegalHold", "s3:PutObjectRetention", "s3:PutObjectTagging", "s3:PutObjectVersionTagging", "s3:Abort*" ], "Resource": [ "arn:aws:s3:::'$DEV_FARM_BUCKET'", "arn:aws:s3:::'$DEV_FARM_BUCKET'/*" ], "Effect": "Allow" } ] }'
-
작업 첨부 파일 설정과 IAM 역할을 포함하도록 대기열을 업데이트합니다.
QUEUE_ROLE_ARN="arn:aws:iam::$(aws sts get-caller-identity \ --query "Account" --output text):role/${DEV_FARM_NAME}QueueRole" aws deadline update-queue \ --farm-id $DEV_FARM_ID \ --queue-id $DEV_QUEUE_ID \ --role-arn $QUEUE_ROLE_ARN \ --job-attachment-settings \ '{ "s3BucketName": "'$DEV_FARM_BUCKET'", "rootPrefix": "JobAttachments" }'
-
대기열을 업데이트했는지 확인합니다.
deadline queue get
다음과 같은 출력이 표시됩니다.
... jobAttachmentSettings: s3BucketName: DEV_FARM_BUCKET rootPrefix: JobAttachments roleArn: arn:aws:iam::ACCOUNT_NUMBER:role/DeveloperFarmQueueRole ...
작업 첨부 파일simple_file_job과 함께 제출
작업 첨부 파일을 사용하는 경우 작업 번들은 Deadline Cloud에 PATH
파라미터 사용과 같은 작업의 데이터 흐름을 결정할 수 있는 충분한 정보를 제공해야 합니다. 의 경우 Deadline Cloud에 데이터 흐름이 입력 template.yaml
파일 및 출력 파일에 있음을 알리도록 파일을 simple_file_job편집했습니다.
대기열에 작업 첨부 파일 구성을 추가한 후 작업 첨부 파일과 함께 simple_file_job 샘플을 제출할 수 있습니다. 이렇게 하면 로깅 및 작업 출력을 보고 작업 첨부 파일이 simple_file_job 있는가 작동하는지 확인할 수 있습니다.
작업 첨부 파일이 있는 simple_file_job 작업 번들을 제출하려면
-
첫 번째 CloudShell 탭을 선택한 다음
JobBundle-Samples
디렉터리를 엽니다. -
cd ~/deadline-cloud-samples/job_bundles/
-
simple_file_job을 대기열에 제출합니다. 업로드를 확인하라는 메시지가 표시되면를 입력합니다
y
.deadline bundle submit simple_file_job \ -p InFile=simple_job/template.yaml \ -p OutFile=hash-jobattachments.txt
-
작업 첨부 파일 데이터 전송 세션 로그 출력을 보려면 다음 명령을 실행합니다.
JOB_ID=$(deadline config get defaults.job_id) SESSION_ID=$(aws deadline list-sessions \ --farm-id $DEV_FARM_ID \ --queue-id $DEV_QUEUE_ID \ --job-id $JOB_ID \ --query "sessions[0].sessionId" \ --output text) cat ~/demoenv-logs/$DEV_QUEUE_ID/$SESSION_ID.log
-
세션 내에서 실행된 세션 작업을 나열합니다.
aws deadline list-session-actions \ --farm-id $DEV_FARM_ID \ --queue-id $DEV_QUEUE_ID \ --job-id $JOB_ID \ --session-id $SESSION_ID
다음과 같은 출력이 표시됩니다.
{ "sessionactions": [ { "sessionActionId": "sessionaction-123-0", "status": "SUCCEEDED", "startedAt": "<timestamp>", "endedAt": "<timestamp>", "progressPercent": 100.0, "definition": { "syncInputJobAttachments": {} } }, { "sessionActionId": "sessionaction-123-1", "status": "SUCCEEDED", "startedAt": "<timestamp>", "endedAt": "<timestamp>", "progressPercent": 100.0, "definition": { "taskRun": { "taskId": "task-abc-0", "stepId": "step-def" } } } ] }
첫 번째 세션 작업은 입력 작업 첨부 파일을 다운로드한 반면, 두 번째 작업은 이전 단계에서와 같이 작업을 실행한 다음 출력 작업 첨부 파일을 업로드했습니다.
-
출력 디렉터리를 나열합니다.
ls *.txt
와 같은 출력
hash.txt
은 디렉터리에 존재하지만 작업의 출력 파일이 아직 다운로드되지 않았기 때문에hash-jobattachments.txt
존재하지 않습니다. -
가장 최근 작업에서 출력을 다운로드합니다.
deadline job download-output
-
다운로드한 파일의 출력을 봅니다.
cat hash-jobattachments.txt
다음과 같은 출력이 표시됩니다.
eaa2df5d34b54be5ac34c56a24a8c237b8487231a607eaf530a04d76b89c9cd3 /tmp/openjd/session-123/assetroot-abc/simple_job/template.yaml
Amazon S3에 작업 첨부 파일이 저장되는 방법 이해
AWS Command Line Interface (AWS CLI)를 사용하여 Amazon S3 버킷에 저장된 작업 첨부 파일에 대한 데이터를 업로드하거나 다운로드할 수 있습니다. Deadline Cloud가 Amazon S3에 작업 첨부 파일을 저장하는 방법을 이해하면 워크로드 및 파이프라인 통합을 개발할 때 도움이 됩니다.
Deadline Cloud 작업 연결이 Amazon S3에 저장되는 방법을 검사하려면
-
첫 번째 CloudShell 탭을 선택한 다음 작업 번들 샘플 디렉터리를 엽니다.
cd ~/deadline-cloud-samples/job_bundles/
-
작업 속성을 검사합니다.
deadline job get
다음과 같은 출력이 표시됩니다.
parameters: Message: string: Welcome to AWS Deadline Cloud! InFile: path: /home/cloudshell-user/deadline-cloud-samples/job_bundles/simple_job/template.yaml OutFile: path: /home/cloudshell-user/deadline-cloud-samples/job_bundles/hash-jobattachments.txt attachments: manifests: - rootPath: /home/cloudshell-user/deadline-cloud-samples/job_bundles/ rootPathFormat: posix outputRelativeDirectories: - . inputManifestPath: farm-3040c59a5b9943d58052c29d907a645d/queue-cde9977c9f4d4018a1d85f3e6c1a4e6e/Inputs/f46af01ca8904cd8b514586671c79303/0d69cd94523ba617c731f29c019d16e8_input.xxh128 inputManifestHash: f95ef91b5dab1fc1341b75637fe987ee fileSystem: COPIED
첨부 파일 필드에는 작업이 실행될 때 사용하는 입력 및 출력 데이터 경로를 설명하는 매니페스트 구조 목록이 포함되어 있습니다. 에서 작업을 제출한 시스템의 로컬 디렉터리 경로를
rootPath
확인합니다. 매니페스트 파일이 포함된 Amazon S3 객체 접미사를 보려면를 검토합니다inputManifestFile
. 매니페스트 파일에는 작업 입력 데이터의 디렉터리 트리 스냅샷에 대한 메타데이터가 포함되어 있습니다. -
Amazon S3 매니페스트 객체를 Pretty-print하여 작업의 입력 디렉터리 구조를 확인합니다.
MANIFEST_SUFFIX=$(aws deadline get-job \ --farm-id $DEV_FARM_ID \ --queue-id $DEV_QUEUE_ID \ --job-id $JOB_ID \ --query "attachments.manifests[0].inputManifestPath" \ --output text) aws s3 cp s3://$DEV_FARM_BUCKET/JobAttachments/Manifests/$MANIFEST_SUFFIX - | jq .
다음과 같은 출력이 표시됩니다.
{ "hashAlg": "xxh128", "manifestVersion": "2023-03-03", "paths": [ { "hash": "2ec297b04c59c4741ed97ac8fb83080c", "mtime": 1698186190000000, "path": "simple_job/template.yaml", "size": 445 } ], "totalSize": 445 }
-
출력 작업 첨부 파일에 대한 매니페스트를 포함하는 Amazon S3 접두사를 구성하고 그 아래에 객체를 나열합니다.
SESSION_ACTION=$(aws deadline list-session-actions \ --farm-id $DEV_FARM_ID \ --queue-id $DEV_QUEUE_ID \ --job-id $JOB_ID \ --session-id $SESSION_ID \ --query "sessionActions[?definition.taskRun != null] | [0]") STEP_ID=$(echo $SESSION_ACTION | jq -r .definition.taskRun.stepId) TASK_ID=$(echo $SESSION_ACTION | jq -r .definition.taskRun.taskId) TASK_OUTPUT_PREFIX=JobAttachments/Manifests/$DEV_FARM_ID/$DEV_QUEUE_ID/$JOB_ID/$STEP_ID/$TASK_ID/ aws s3api list-objects-v2 --bucket $DEV_FARM_BUCKET --prefix $TASK_OUTPUT_PREFIX
출력 작업 연결은 작업 리소스에서 직접 참조되지 않고 대신 팜 리소스 IDs를 기반으로 Amazon S3 버킷에 배치됩니다.
-
특정 세션 작업 ID에 대한 최신 매니페스트 객체 키를 가져온 다음 매니페스트 객체를 예쁘게 인쇄합니다.
SESSION_ACTION_ID=$(echo $SESSION_ACTION | jq -r .sessionActionId) MANIFEST_KEY=$(aws s3api list-objects-v2 \ --bucket $DEV_FARM_BUCKET \ --prefix $TASK_OUTPUT_PREFIX \ --query "Contents[*].Key" --output text \ | grep $SESSION_ACTION_ID \ | sort | tail -1) MANIFEST_OBJECT=$(aws s3 cp s3://$DEV_FARM_BUCKET/$MANIFEST_KEY -) echo $MANIFEST_OBJECT | jq .
출력
hash-jobattachments.txt
에 다음과 같은 파일 속성이 표시됩니다.{ "hashAlg": "xxh128", "manifestVersion": "2023-03-03", "paths": [ { "hash": "f60b8e7d0fabf7214ba0b6822e82e08b", "mtime": 1698785252554950, "path": "hash-jobattachments.txt", "size": 182 } ], "totalSize": 182 }
작업에는 작업 실행당 하나의 매니페스트 객체만 있지만 일반적으로 작업 실행당 더 많은 객체를 가질 수 있습니다.
-
Data
접두사 아래에서 콘텐츠 주소 지정 Amazon S3 스토리지 출력을 봅니다.FILE_HASH=$(echo $MANIFEST_OBJECT | jq -r .paths[0].hash) FILE_PATH=$(echo $MANIFEST_OBJECT | jq -r .paths[0].path) aws s3 cp s3://$DEV_FARM_BUCKET/JobAttachments/Data/$FILE_HASH -
다음과 같은 출력이 표시됩니다.
eaa2df5d34b54be5ac34c56a24a8c237b8487231a607eaf530a04d76b89c9cd3 /tmp/openjd/session-123/assetroot-abc/simple_job/template.yaml
다음 단계
Deadline Cloud CLI를 사용하여 첨부 파일이 있는 작업을 제출하는 방법을 학습한 후 다음을 탐색할 수 있습니다.
-
Deadline Cloud로 제출 작업자 호스트에서 OpenJD 번들을 사용하여 작업을 실행하는 방법을 알아봅니다.
-
Deadline Cloud의 개발자 팜에 서비스 관리형 플릿 추가 - Deadline Cloud에서 관리하는 호스트에서 작업을 실행합니다.
-
Deadline Cloud에서 팜 리소스 정리 -이 자습서에서 사용한 리소스를 종료합니다.