

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

# 작업에서 작업 연결 입력 파일을 찾는 방법
<a name="how-jobs-find-job-attachments-input-files"></a>

 작업이 Deadline Cloud가 작업 첨부 파일을 사용하여 Amazon S3에 업로드하는 파일을 사용하려면 작업자 호스트의 파일 시스템을 통해 해당 파일을 사용할 수 있어야 합니다. 작업 [세션](https://github.com/OpenJobDescription/openjd-specifications/wiki/How-Jobs-Are-Run#sessions)이 작업자 호스트에서 실행되면 Deadline Cloud는 작업에 대한 입력 파일을 작업자 호스트의 로컬 드라이브의 임시 디렉터리에 다운로드하고 작업의 각 루트 경로에 대한 경로 매핑 규칙을 로컬 드라이브의 파일 시스템 위치에 추가합니다.

 이 예제에서는 AWS CloudShell 탭에서 Deadline Cloud 작업자 에이전트를 시작합니다. 이전에 제출한 작업의 실행을 완료한 다음 로그 디렉터리에서 작업 로그를 삭제합니다.

```
rm -rf ~/devdemo-logs/queue-*
```

 다음 스크립트는 작업 번들을 수정하여 세션의 임시 작업 디렉터리에 있는 모든 파일과 경로 매핑 규칙 파일의 내용을 표시한 다음 수정된 번들로 작업을 제출합니다.

```
# Change the value of FARM_ID to your farm's identifier
FARM_ID=farm-{{00112233445566778899aabbccddeeff}}
# Change the value of QUEUE1_ID to queue Q1's identifier
QUEUE1_ID=queue-{{00112233445566778899aabbccddeeff}}
# Change the value of WSALL_ID to the identifier of the WSAll storage profile
WSALL_ID=sp-{{00112233445566778899aabbccddeeff}}

deadline config set settings.storage_profile_id $WSALL_ID

cat > ~/job_attachments_devguide/script.sh << EOF
#!/bin/bash

echo "Session working directory is: \$(pwd)"
echo
echo "Contents:"
find . -type f
echo
echo "Path mapping rules file: \$1"
jq . \$1
EOF

cat > ~/job_attachments_devguide/template.yaml << EOF
specificationVersion: jobtemplate-2023-09
name: "Job Attachments Explorer"
parameterDefinitions:
- name: ScriptFile
  type: PATH
  default: script.sh
  dataFlow: IN
  objectType: FILE
steps:
- name: Step
  script:
    actions:
      onRun:
        command: /bin/bash
        args:
        - "{{Param.ScriptFile}}"
        - "{{Session.PathMappingRulesFile}}"
EOF

deadline bundle submit --farm-id $FARM_ID --queue-id $QUEUE1_ID job_attachments_devguide/
```

 AWS CloudShell 환경에서 작업자가 작업을 실행한 후 작업 실행 로그를 볼 수 있습니다.

```
cat demoenv-logs/queue-*/session*.log
```

로그는 세션에서 첫 번째로 발생하는 작업이 작업자에게 다운로드되는 두 개의 입력 파일임을 보여줍니다.

```
2024-07-17 01:26:37,824 INFO ==============================================
2024-07-17 01:26:37,825 INFO --------- Job Attachments Download for Job
2024-07-17 01:26:37,825 INFO ==============================================
2024-07-17 01:26:37,825 INFO Syncing inputs using Job Attachments
2024-07-17 01:26:38,116 INFO Downloaded 142.0 B / 186.0 B of 2 files (Transfer rate: 0.0 B/s)
2024-07-17 01:26:38,174 INFO Downloaded 186.0 B / 186.0 B of 2 files (Transfer rate: 733.0 B/s)
2024-07-17 01:26:38,176 INFO Summary Statistics for file downloads:
Processed 2 files totaling 186.0 B.
Skipped re-processing 0 files totaling 0.0 B.
Total processing time of 0.09752 seconds at 1.91 KB/s.
```

 다음은 작업에서 `script.sh` 실행한 출력입니다.
+  작업이 제출될 때 업로드된 입력 파일은 세션의 임시 디렉터리에서 이름이 "assetroot"로 시작하는 디렉터리 아래에 있습니다.
+  입력 파일의 경로는 작업의 입력 매니페스트()에 대한 루트 경로 대신 "assetroot" 디렉터리를 기준으로 재배치되었습니다`"/"`.
+  경로 매핑 규칙 파일에는 "assetroot" 디렉터리의 절대 경로`"/"`로 다시 매핑하는 추가 규칙이 포함되어 있습니다.

 예제: 

```
2024-07-17 01:26:38,264 INFO Output:
2024-07-17 01:26:38,267 INFO Session working directory is: /sessions/session-{{5b33f}}
2024-07-17 01:26:38,267 INFO 
2024-07-17 01:26:38,267 INFO Contents:
2024-07-17 01:26:38,269 INFO ./tmp_xdhbsdo.sh
2024-07-17 01:26:38,269 INFO ./tmpdi00052b.json
2024-07-17 01:26:38,269 INFO ./assetroot-{{assetroot-3751a}}/shared/projects/project2/file.txt
2024-07-17 01:26:38,269 INFO ./assetroot-{{assetroot-3751a}}/home/cloudshell-user/job_attachments_devguide/script.sh
2024-07-17 01:26:38,269 INFO 
2024-07-17 01:26:38,270 INFO Path mapping rules file: /sessions/session-{{5b33f}}/tmpdi00052b.json
2024-07-17 01:26:38,282 INFO {
2024-07-17 01:26:38,282 INFO   "version": "pathmapping-1.0",
2024-07-17 01:26:38,282 INFO   "path_mapping_rules": [
2024-07-17 01:26:38,282 INFO     {
2024-07-17 01:26:38,282 INFO       "source_path_format": "POSIX",
2024-07-17 01:26:38,282 INFO       "source_path": "/shared/projects/project1",
2024-07-17 01:26:38,283 INFO       "destination_path": "/mnt/projects/project1"
2024-07-17 01:26:38,283 INFO     },
2024-07-17 01:26:38,283 INFO     {
2024-07-17 01:26:38,283 INFO       "source_path_format": "POSIX",
2024-07-17 01:26:38,283 INFO       "source_path": "/shared/common",
2024-07-17 01:26:38,283 INFO       "destination_path": "/mnt/common"
2024-07-17 01:26:38,283 INFO     },
2024-07-17 01:26:38,283 INFO     {
2024-07-17 01:26:38,283 INFO       "source_path_format": "POSIX",
2024-07-17 01:26:38,283 INFO       "source_path": "/",
2024-07-17 01:26:38,283 INFO       "destination_path": "/sessions/session-{{5b33f}}/assetroot-{{assetroot-3751a}}"
2024-07-17 01:26:38,283 INFO     }
2024-07-17 01:26:38,283 INFO   ]
2024-07-17 01:26:38,283 INFO }
```

**참고**  
 제출하는 작업에 서로 다른 루트 경로를 가진 여러 매니페스트가 있는 경우 각 루트 경로에 대해 서로 다른 "assetroot"-named 디렉터리가 있습니다.

 입력 파일, 디렉터리 또는 파일 시스템 위치 중 하나의 재배치된 파일 시스템 위치를 참조해야 하는 경우 작업에서 경로 매핑 규칙 파일을 처리하고 재매핑을 직접 수행하거나 작업 번들의 작업 템플릿에 `PATH` 유형 작업 파라미터를 추가하고 해당 파라미터의 값으로 재매핑해야 하는 값을 전달할 수 있습니다. 예를 들어 다음 예제에서는 이러한 작업 파라미터 중 하나를 갖도록 작업 번들을 수정한 다음 파일 시스템 위치가 값으로 인 작업을 제출합니다`/shared/projects/project2`.

```
cat > ~/job_attachments_devguide/template.yaml << EOF
specificationVersion: jobtemplate-2023-09
name: "Job Attachments Explorer"
parameterDefinitions:
- name: LocationToRemap
  type: PATH
steps:
- name: Step
  script:
    actions:
      onRun:
        command: /bin/echo
        args:
        - "The location of {{RawParam.LocationToRemap}} in the session is {{Param.LocationToRemap}}"
EOF

deadline bundle submit --farm-id $FARM_ID --queue-id $QUEUE1_ID job_attachments_devguide/ \
  -p LocationToRemap=/shared/projects/project2
```

 이 작업의 실행에 대한 로그 파일에는 다음과 같은 출력이 포함됩니다.

```
2024-07-17 01:40:35,283 INFO Output:
2024-07-17 01:40:35,284 INFO The location of /shared/projects/project2 in the session is /sessions/session-{{5b33f}}/assetroot-{{assetroot-3751a}}
```