

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

# Deadline Cloud의 작업 연결
<a name="storage-job-attachments"></a>

*작업 연결을* 사용하면 워크스테이션과 AWS Deadline Cloud 간에 파일을 주고받을 수 있습니다. 작업 첨부 파일을 사용하면 파일에 대해 Amazon S3 버킷을 수동으로 설정할 필요가 없습니다. 대신 Deadline Cloud 콘솔을 사용하여 대기열을 생성할 때 작업 연결에 사용할 버킷을 선택합니다.

Deadline Cloud에 작업을 처음 제출하면 작업에 대한 모든 파일이 Deadline Cloud로 전송됩니다. 후속 제출의 경우 변경된 파일만 전송되므로 시간과 대역폭이 모두 절약됩니다.

처리가 완료되면 작업 세부 정보 페이지에서 또는 Deadline Cloud CLI `deadline job download-output` 명령을 사용하여 결과를 다운로드할 수 있습니다.

여러 대기열에 동일한 S3 버킷을 사용할 수 있습니다. 각 대기열에 대해 다른 루트 접두사를 설정하여 버킷에 첨부 파일을 구성합니다.

콘솔을 사용하여 대기열을 생성할 때 기존 AWS Identity and Access Management (IAM) 역할을 선택하거나 콘솔에서 새 역할을 생성하도록 할 수 있습니다. 콘솔이 역할을 생성하면 대기열에 지정된 버킷에 액세스할 수 있는 권한을 설정합니다. 기존 역할을 선택하는 경우 S3 버킷에 액세스할 수 있는 권한을 역할에 부여해야 합니다.

## 작업 연결 S3 버킷의 암호화
<a name="storage-job-attachments-encryption"></a>

작업 연결 파일은 기본적으로 S3 버킷에서 암호화됩니다. 이 암호화는 무단 액세스로부터 정보를 보호하는 데 도움이 됩니다. Deadline Cloud에서 제공하는 키로 파일을 암호화하기 위해 아무 작업도 수행할 필요가 없습니다. 자세한 내용은 *Amazon S3 사용 설명서*의 [Amazon S3, 이제 모든 새 객체 자동 암호화](https://docs.aws.amazon.com/AmazonS3/latest/userguide/default-encryption-faq.html)를 참조하세요.

자체 고객 관리형 AWS Key Management Service 키를 사용하여 작업 첨부 파일이 포함된 S3 버킷을 암호화할 수 있습니다. 이렇게 하려면 버킷과 연결된 대기열의 IAM 역할을 수정하여에 대한 액세스를 허용해야 합니다 AWS KMS key.

**대기열 역할에 대한 IAM 정책 편집기를 열려면**

1. 에 로그인 AWS Management Console 하고 Deadline Cloud [콘솔](https://console.aws.amazon.com/deadlinecloud/home)을 엽니다. 기본 페이지의 **시작하기** 섹션에서 **팜 보기를** 선택합니다.

1. 팜 목록에서 수정할 대기열이 포함된 팜을 선택합니다.

1. 대기열 목록에서 수정할 대기열을 선택합니다.

1. **대기열 세부 정보** 섹션에서 **서비스 역할을** 선택하여 서비스 역할에 대한 IAM 콘솔을 엽니다.

그런 다음 다음 절차를 완료합니다.

**에 대한 권한으로 역할 정책을 업데이트하려면 AWS KMS**

1. **권한 정책** 목록에서 역할에 대한 정책을 선택합니다.

1. **이 정책에 정의된 권한** 섹션에서 **편집**을 선택합니다.

1. **새 문 추가**를 선택합니다.

1. 다음 정책을 복사하여 편집기에 붙여 넣습니다. *`Region`*``, *`accountID`*및를 *`keyID`*`` 자체 값으로 변경합니다.

   ```
   {
      "Effect": "Allow",
      "Action": [
          "kms:Decrypt",
          "kms:DescribeKey",
          "kms:GenerateDataKey"
      ],
      "Resource": [
          "arn:aws:kms:us-east-1:111122223333:key/keyID"
      ]
   }
   ```

1. **다음**을 선택합니다.

1. 정책에 대한 변경 사항을 검토한 다음 만족하면 **변경 사항 저장**을 선택합니다.

## 작업 연결 버킷 교체
<a name="storage-job-attachments-replace-bucket"></a>

현재 작업 연결 버킷을 다른 작업 연결 버킷으로 바꿀 수 있습니다. 대기열 세부 정보의 **작업 연결** 탭 아래에 버튼이 있습니다. 이를 사용하여 작업 첨부 파일 버킷을 변경하거나 동일한 버킷 내의 루트 폴더를 교체하여 작업 첨부 파일을 업로드할 수 있습니다.

**작업 첨부 파일 설정에 액세스하려면**

1. **대기열 세부 정보로** 이동한 다음 **작업 첨부 파일** 탭을 찾습니다.

1. 작업 첨부 파일 탭에는 두 가지 옵션이 있습니다.

   1. 다음을 수행하여 작업 연결 버킷을 변경합니다.

      1. 새 S3 버킷을 선택합니다.

      1. 대기열의 서비스 역할 정책을 업데이트하여 새 버킷에 대한 액세스 권한을 부여합니다.

      또는

   1. 다음을 수행하여 기존 버킷 내의 루트 폴더를 변경합니다.

      1. 루트 폴더 이름을 수정합니다.

      1. 대기열 서비스 역할에서 리소스 ARN을 업데이트합니다.

**서비스 역할을 생성하는 방법**

1. 팜 > 대기열 > 대기열 서비스 역할로 이동합니다.

1. **JSON으로 편집**을 선택합니다.

1. 리소스 ARN을 찾습니다(기본 루트 폴더는 **DeadlineCloud**).

   ```
     "arn:aws:s3:::<your-job-attachments-bucket-name>/DeadlineCloud/*"
   ]
   ```

1. ARN을 새 버킷 또는 폴더로 업데이트합니다.

   ```
    "arn:aws:s3:::<your-job-attachments-NEW-bucket-name>/NEW-ROOT-FOLDER-NAME/*"
   ]
   ```

1. 이러한 변경을 수행한 후 권한을 확인하여 적절한 액세스를 보장합니다.

## S3 버킷에서 작업 연결 관리
<a name="storage-job-attachments-s3-lifecycle"></a>

Deadline Cloud는 작업에 필요한 작업 연결 파일을 S3 버킷에 저장합니다. 이러한 파일은 시간이 지남에 따라 누적되어 Amazon S3 비용이 증가합니다. 비용을 절감하기 위해 S3 버킷에 S3 수명 주기 구성을 적용할 수 있습니다. 이 구성은 버킷의 파일을 자동으로 삭제할 수 있습니다. S3 버킷은 계정에 있으므로 언제든지 S3 수명 주기 구성을 수정하거나 제거할 수 있습니다. 자세한 내용은 Amazon [ S3 사용 설명서의 S3 수명 주기 구성 예제](https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-configuration-examples.html)를 참조하세요. *Amazon S3 *

보다 세분화된 S3 버킷 관리 솔루션을 위해 마지막으로 액세스한 시간을 기준으로 S3 버킷의 객체를 만료 AWS 계정 하도록를 설정할 수 있습니다. 자세한 내용은 아키텍처 블로그에서 [ 마지막으로 액세스한 날짜를 기준으로 Amazon S3 객체 만료를 참조하여 비용을 절감](https://aws.amazon.com/blogs/architecture/expiring-amazon-s3-objects-based-on-last-accessed-date-to-decrease-costs/)하세요 AWS .

# Deadline Cloud 가상 파일 시스템
<a name="storage-virtual"></a>

 AWS Deadline Cloud의 작업 연결에 대한 가상 파일 시스템을 지원하면 작업자의 클라이언트 소프트웨어가 Amazon Simple Storage Service와 직접 통신할 수 있습니다. 작업자는 처리 전에 모든 파일을 다운로드하는 대신 필요한 경우에만 파일을 로드할 수 있습니다. 파일은 로컬에 저장됩니다. 이 접근 방식은 두 번 이상 사용된 자산을 다운로드하지 않도록 합니다. 작업이 완료된 후 모든 파일이 제거됩니다.
+ 가상 파일 시스템은 특정 작업 프로필에 대해 상당한 성능 향상을 제공합니다. 일반적으로 작업자 플릿이 큰 총 파일의 하위 집합이 작을수록 가장 큰 이점이 있습니다. 작업자 수가 적은 파일 수는 처리 시간이 거의 동일합니다.
+ 가상 파일 시스템 지원은 서비스 관리형 플릿의 Linux 작업자만 사용할 수 있습니다.
+ Deadline Cloud 가상 파일 시스템은 다음 작업을 지원하지만 POSIX를 준수하지 않습니다.
  + 파일 `create`, `delete`, `open`, `close`, `read`, `write`, `append`, `truncate`, `rename`, `move`, `copy`, `stat`, 및 `fsync` `falloc` 
  + 디렉터리 `create`, `delete`, `rename`, `move`, `copy`및 `stat`
+ 가상 파일 시스템은 작업이 대규모 데이터 세트의 일부에만 액세스할 때 데이터 전송을 줄이고 성능을 개선하도록 설계되었으며 모든 워크로드에 최적화되지 않았습니다. 프로덕션 작업을 실행하기 전에 워크로드를 테스트해야 합니다.

## VFS 지원 활성화
<a name="enable-vfs"></a>

각 작업에 대해 가상 파일 시스템 지원(VFS)이 활성화됩니다. 다음과 같은 경우 작업은 기본 작업 연결 프레임워크로 돌아갑니다.
+ 작업자 인스턴스 프로파일은 가상 파일 시스템을 지원하지 않습니다.
+ 문제가 있으면 가상 파일 시스템 프로세스가 시작되지 않습니다.
+ 가상 파일 시스템은 탑재할 수 없습니다.

**제출자를 사용하여 가상 파일 시스템 지원을 활성화하려면**

1. 작업을 제출할 때 **설정** 버튼을 선택하여 **AWS Deadline Cloud 워크스테이션 구성 패널을** 엽니다.

1. **작업 첨부 파일 시스템 옵션** 드롭다운에서 **가상**을 선택합니다.  
![\[작업 첨부 파일 시스템의 옵션을 보여주는 Deadline Cloud 제출자입니다.\]](http://docs.aws.amazon.com/ko_kr/deadline-cloud/latest/userguide/images/submitter-vfs.png)

1. 변경 사항을 저장하려면 **확인을** 선택합니다.

**를 사용하여 가상 파일 시스템 지원을 활성화하려면 AWS CLI**
+ 저장된 작업을 제출할 때 다음 명령을 사용합니다.

  ```
  deadline bundle submit-job --job-attachments-file-system VIRTUAL
  ```

특정 작업에 대해 가상 파일 시스템이 성공적으로 시작되었는지 확인하려면 Amazon CloudWatch Logs에서 로그를 검토합니다. 다음 메시지를 찾습니다.

```
Using mount_point mount_point
Launching vfs with command command
Launched vfs as pid PID number
```

로그에 다음 메시지가 포함된 경우 가상 파일 시스템 지원이 비활성화됩니다.

```
Virtual File System not found, falling back to COPIED for JobAttachmentsFileSystem.
```

## 가상 파일 시스템 지원 문제 해결
<a name="troubleshoot-vfs"></a>

Deadline Cloud 모니터를 사용하여 가상 파일 시스템의 로그를 볼 수 있습니다. 지침은 [Deadline Cloud에서 세션 및 작업자 로그 보기](view-logs.md) 섹션을 참조하세요.

가상 파일 시스템 로그는 작업자 에이전트 출력과 공유된 대기열과 연결된 CloudWatch Logs 그룹으로도 전송됩니다.

# 자동 다운로드
<a name="auto-downloads"></a>

Deadline CLI는 동일한 명령이 마지막으로 실행된 이후 완료된 대기열에 있는 모든 작업의 출력을 다운로드하는 명령을 제공합니다. 반복적으로 실행되도록 cron 작업 또는 예약된 작업으로 구성할 수 있습니다. 이 구성은 출력의 자동 다운로드를 지속적으로 설정합니다.

자동 다운로드를 설정하기 전에 [작업 연결을 위한 스토리지 프로필](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/storage-profile.html)의 단계에 따라 업로드 및 다운로드를 위한 자산 데이터의 모든 경로를 구성합니다. 작업이 스토리지 프로파일에 없는 출력 경로를 사용하는 경우 자동 다운로드는 해당 출력 다운로드를 건너뛰고 경고 메시지를 인쇄하여 다운로드하지 않은 파일을 요약합니다. 마찬가지로 스토리지 프로파일 없이 작업이 제출되면 자동 다운로드는 해당 작업을 건너뛰고 경고 메시지를 인쇄합니다. 기본적으로 Deadline Cloud 제출자는 올바른 구성을 보장하기 위해 스토리지 프로파일 외부에 있는 경로에 대한 경고 메시지를 표시합니다.

## AWS 자격 증명 구성
<a name="credentials"></a>

자동 다운로드는 Deadline CLI를 사용하여 작업 출력을 지속적으로 다운로드합니다. 이러한 다운로드를 인증하려면 장기 IAM 자격 증명이 필요합니다. Deadline Cloud Monitor 자격 증명은 만료되므로이 용도로 사용할 수 없습니다.

 아래 단계에 따라 장기 자격 증명을 설정합니다.

**중요**  
다음 경고에 주의하세요.  
계정의 루트 자격 증명을 사용하여 AWS 리소스에 액세스**하지 마십시오**. 이 보안 인증은 계정 액세스에 제한이 없고 취소하기 어렵습니다.
**금지 사항.** 애플리케이션 파일에 리터럴 액세스 키나 보안 인증 정보를 넣으면 안 됩니다. 이를 어기는 경우, 예를 들어 프로젝트를 퍼블릭 리포지토리에 업로드하면 뜻하지 않게 보안 인증이 노출될 위험이 있습니다.
**금지 사항.** 프로젝트 영역에 보안 인증이 포함된 파일을 포함하지 마세요.
액세스 키를 보호합니다. [계정 식별자를 찾는 데](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-identifiers.html) 도움이 되더라도 액세스 키를 권한 없는 당사자에게 제공하지 마세요. 이렇게 하면 다른 사람에게 계정에 대한 영구 액세스 권한을 부여할 수 있습니다.
공유 AWS 자격 증명 파일에 저장된 모든 자격 증명은 일반 텍스트로 저장됩니다.
자세한 내용은 [*AWS 일반* 참조의 AWS 액세스 키 관리 모범 사례를 참조하세요.](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html#securing_access-keys)

**IAM 사용자를 생성합니다.**

1. IAM 콘솔([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/))을 엽니다.

1. 탐색 창에서 **사용자**와 **사용자 생성**을 차례로 선택합니다.

1. 사용자 이름을 로 지정합니다**deadline-output-downloader**. 에 대한 **사용자 액세스 제공 AWS Management Console** 확인란의 선택을 취소한 **후 다음을** 선택합니다.

1. **정책 직접 연결**을 선택합니다.

1. **정책 생성을** 선택하여 최소 필수 권한이 있는 사용자 지정 정책을 생성합니다.

1. JSON 편집기에서 다음 권한을 지정합니다.

------
#### [ JSON ]

****  

   ```
   {
                      "Version":"2012-10-17",		 	 	 
                      "Statement": [
                          {
                              "Sid": "DeadlineCloudOutputDownload",
                              "Effect": "Allow",
                              "Action": [
                                  "deadline:AssumeQueueRoleForUser",
                                  "deadline:ListQueueEnvironments",
                                  "deadline:ListSessions",
                                  "deadline:ListSessionActions",
                                  "deadline:SearchJobs",
                                  "deadline:GetJob",
                                  "deadline:GetQueue",
                                  "deadline:GetStorageProfileForQueue"
                              ],
                              "Resource": "*"
                          }
                        ]
                     }
   ```

------

1. 정책의 이름을 지정**DeadlineCloudOutputDownloadPolicy**하고 **정책 생성을** 선택합니다.

1. 사용자 생성 페이지로 돌아가서 정책 목록을 새로 고치고 방금 생성한 **DeadlineCloudOutputDownloadPolicy**를 선택한 **후 다음을** 선택합니다.

1. 사용자 세부 정보를 검토한 다음 **사용자 생성을** 선택합니다.

**액세스 키 생성**

1. 사용자 세부 정보 페이지에서 **보안 자격 증명** 탭을 선택합니다. **액세스 키** 섹션에서 **액세스 키 생성**을 선택합니다.

1. 기타에 키를 사용할 것인지 표시한 **후 다음을** 선택하고 **액세스 키 생성을** 선택합니다.

1. **액세스 키 검색** 페이지에서 **표시를** 선택하여 사용자의 보안 액세스 키 값을 표시합니다. 자격 증명을 복사하거나 .csv 파일을 다운로드할 수 있습니다.

**사용자 액세스 키 저장**
+ 사용자 액세스 키를 시스템의 AWS 자격 증명 파일에 저장합니다.
  + 에서 파일은 Linux에 있습니다. `~/.aws/credentials` 
  + 에서 파일은 Windows에 있습니다. `%USERPROFILE\.aws\credentials` 

  다음 키를 바꿉니다.

  ```
  [deadline-downloader]
  aws_access_key_id=ACCESS_KEY_ID
  aws_secret_access_key=SECRET_ACCESS_KEY
  region=YOUR_AWS_REGION
  ```

**중요**  
이 IAM 사용자가 더 이상 필요하지 않은 경우 [AWS 보안 모범 사례에](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#lock-away-credentials) 맞게 제거하는 것이 좋습니다. 에 액세스할 [AWS IAM Identity Center](https://docs.aws.amazon.com/singlesignon/latest/userguide/getting-started.html) 때를 통해 인간 사용자에게 임시 자격 증명을 사용하도록 요구하는 것이 좋습니다 AWS.

## 사전 조건
<a name="auto-downloads-prerequisites"></a>

자동 다운로드를 위해 cron 작업 또는 예약된 작업을 생성하기 전에 다음 단계를 완료합니다.

1. 아직 설치하지 않았다면 [Python](https://www.python.org/)을 설치합니다.

1. 다음을 실행하여 Deadline CLI를 설치합니다.

   ```
   python -m pip install deadline
   ```

1. 다음 명령을 사용하여 Deadline CLI의 버전이 0.52.1 이상인지 확인합니다.

   ```
   $ deadline --version
   deadline, version 0.52.1
   ```

## 출력 다운로드 명령 테스트
<a name="test-output-command"></a>

**명령이 환경에서 작동하는지 확인하려면**

1. Deadline 경로 가져오기

------
#### [ Linux and macOS ]

   ```
   $ which deadline
   ```

------
#### [ Windows ]

   ```
   C:\> where deadline
   ```

------
#### [ PowerShell ]

   ```
   PS C:\> Get-Command deadline
   ```

------

1. sync-output 명령을 실행하여 부트스트랩합니다.

   ```
     /path/to/deadline queue sync-output \
     --profile deadline-downloader \
     --farm-id YOUR_FARM_ID \
     --queue-id YOUR_QUEUE_ID \
     --storage-profile-id YOUR_PROFILE_ID \
     --checkpoint-dir /path/to/checkpoint/directory \
   ```

1. 다운로드 머신이 제출 머신과 동일한 경우에만이 단계를 수행하면 됩니다. `--storage-profile-id YOUR_PROFILE_ID \` 위의를 로 바꿉니다`--ignore-storage-profiles`.

1. 테스트 작업을 제출합니다.

   1. GitHub에서 .zip 파일을 다운로드합니다.

      1. [deadline-cloud-samples GitHub 리포지토리](https://github.com/aws-deadline/deadline-cloud-samples/tree/mainline)를 엽니다.

      1. **코드를** 선택한 다음 드롭다운 메뉴에서 **ZIP 다운로드**를 선택합니다.

      1. 다운로드한 아카이브의 압축을 로컬 디렉터리로 풉니다.

   1. 실행

      ```
       cd /path/to/unzipped/deadline-cloud-samples-mainline/job_bundles/job_attachments_devguide_output
      ```

   1. 실행

      ```
      deadline bundle submit .
      ```

      1. 기본 기한 구성 설정이 없는 경우 명령줄에 다음을 제공해야 할 수 있습니다.

        ```
        --farm-id YOUR-FARM-ID --queue-id YOUR-QUEUE-ID
        ```

   1. 다음 단계로 이동하기 전에 작업이 완료될 때까지 기다립니다.

1. sync-output 명령을 다시 실행합니다.

   ```
    /path/to/deadline queue sync-output \
     --profile deadline-downloader \
     --farm-id YOUR_FARM_ID \
     --queue-id YOUR_QUEUE_ID \
     --storage-profile-id YOUR_PROFILE_ID \
     --checkpoint-dir /path/to/checkpoint/directory
   ```

1. 다음을 확인합니다.
   + 테스트 작업의 출력이 대상 디렉터리에 나타납니다.
   + 지정된 체크포인트 디렉터리에 체크포인트 파일이 생성됩니다.

## 예약된 다운로드 설정
<a name="set-up-scheduled-downloads"></a>

운영 체제의 탭을 선택하여 5분마다 자동 다운로드를 구성하는 방법을 알아봅니다.

------
#### [ Linux ]

1. **기한 CLI 설치 확인**

   기한 실행 파일의 정확한 경로를 가져옵니다.

   ```
   $ which deadline
   ```

   plist 파일에 사용할 수 있도록이 경로(예: `/opt/homebrew/bin/deadline`)를 기록해 둡니다.

1. **체크포인트 디렉터리 생성**

   체크포인트 파일이 저장될 디렉터리를 생성합니다. 사용자가 명령을 실행할 수 있는 적절한 권한이 있는지 확인합니다.

   ```
   $ mkdir -p /path/to/checkpoint/directory
   ```

1. **로그 디렉터리 생성**

   cron 작업 로그용 디렉터리를 생성합니다.

   ```
   $ mkdir -p /path/to/logs
   ```

   https://www.redhat.com/en/blog/setting-logrotate 사용하여 로그 파일에 로그 교체를 설정하는 것이 좋습니다.

1. **현재 Crontab 확인**

   현재 crontab을 보고 기존 작업을 확인합니다.

   ```
   $ crontab -l
   ```

1. **Crontab 편집**

   편집을 위해 crontab 파일을 엽니다.

   ```
   $ crontab -e
   ```

   처음 사용하는 경우 편집기(nano, vim 등)를 선택하라는 메시지가 표시될 수 있습니다.

1. **Cron 작업 항목 추가**

   다음 줄을 추가하여 5분마다 작업을 실행합니다(경로를 1단계와 2단계의 실제 값으로 바꿉니다).

   ```
   */5 * * * * /path/to/deadline queue sync-output --profile deadline-downloader --farm-id YOUR_FARM_ID --queue-id YOUR_QUEUE_ID --storage-profile-id YOUR_PROFILE_ID --checkpoint-dir /path/to/checkpoint/directory >> /path/to/logs/deadline_sync.log 2>&1
   ```

1. **Cron 작업 설치 확인**

   편집기를 저장하고 종료한 후 cron 작업이 추가되었는지 확인합니다.

   ```
   $ crontab -l
   ```

   새 작업이 나열됩니다.

1. **Cron 서비스 상태 확인**

   cron 서비스가 실행 중인지 확인합니다.

   ```
   # For systemd systems (most modern Linux distributions)
   $ sudo systemctl status cron
   # or
   $ sudo systemctl status crond
   
   # For older systems
   $ sudo service cron status
   ```

   실행 중이 아니면 시작합니다.

   ```
   $ sudo systemctl start cron
   $ sudo systemctl enable cron  # Enable auto-start on boot
   ```

------
#### [ macOS ]

1. **기한 CLI 설치 확인**

   기한 실행 파일의 정확한 경로를 가져옵니다.

   ```
   $ which deadline
   ```

   plist 파일에 사용할 수 있도록이 경로(예: `/opt/homebrew/bin/deadline`)를 기록해 둡니다.

1. **체크포인트 디렉터리 및 로그 디렉터리 생성**

   체크포인트 파일이 저장될 디렉터리를 생성합니다.

   ```
   $ mkdir -p /path/to/checkpoint/directory
   $ mkdir -p /path/to/logs
   ```

   https://formulae.brew.sh/formula/logrotate 사용하여 로그 파일에 로그 교체를 설정하는 것이 좋습니다.

1. **Plist 파일 생성**

   다음 콘텐츠를 `~/Library/LaunchAgents/com.user.deadlinesync.plist` 사용하여에서 구성 파일을 생성합니다(1단계의 실제 경로`/path/to/deadline`로 대체).

   ```
   <?xml version="1.0" encoding="UTF-8"?>
   <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
   <plist version="1.0">
   <dict>
       <key>Label</key>
       <string>com.user.deadlinesync</string>
       <key>ProgramArguments</key>
       <array>
           <string>/path/to/deadline</string>
           <string>queue</string>
           <string>sync-output</string>
           <string>--profile</string>
           <string>deadline-downloader</string>
           <string>--farm-id</string>
           <string>YOUR_FARM_ID</string>
           <string>--queue-id</string>
           <string>YOUR_QUEUE_ID</string>
           <string>--storage-profile-id</string>
           <string>YOUR STORAGE PROFILE ID</string>
           <string>--checkpoint-dir</string>
           <string>/path/to/checkpoint/dir</string>
       </array>
       <key>RunAtLoad</key>
       <true/>
       <key>UserName</key>
       <string>YOUR_USER_NAME</string>
       <key>StandardOutPath</key>
       <string>/path/to/logs/deadline_sync.log</string>
       <key>StartInterval</key>
       <integer>300</integer>
   </dict>
   </plist>
   ```

   다운로드 머신이 제출 머신과 동일한 `--ignore-storage-profiles` 경우 `--storage-profile-id YOUR_PROFILE_ID` 위의를 로 바꿉니다.

1. **Plist 파일 검증**

   plist 파일의 XML 구문을 검증합니다.

   ```
   $ plutil -lint ~/Library/LaunchAgents/com.user.deadlinesync.plist
   ```

   파일이 유효한 경우 "OK"를 반환해야 합니다.

1. **기존 시작 에이전트 또는 시작 데몬 확인**

   시작 에이전트가 이미 로드되었는지 확인합니다.

   ```
   $ launchctl list | grep deadlinesync
   OR
   $ sudo launchctl list | grep deadlinesync
   ```

   존재하는 경우 먼저 언로드합니다.

   ```
   $ launchctl bootout gui/$(id -u)/com.user.deadlinesync
   OR
   $ sudo launchctl bootout system/com.user.deadlinesync
   ```

1. **생성 및 부트스트랩**

   사용자가 로그인한 상태에서이 작업을 실행하려면 **LaunchAgent**로 실행합니다. 시스템을 실행할 때마다 사용자가 로그인하지 않고이 작업을 실행하려면 **LaunchDaemon**으로 실행합니다.

   1. **LaunchAgent**로를 실행하려면

      1. 아래에 생성된 구성 사용 `~/Library/LaunchAgents/com.user.deadlinesync.plist`

      1. 그런 다음 부트스트랩 명령을 사용하여 구성을 로드합니다.

         ```
         $ launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.user.deadlinesync.plist
         ```

   1. **LaunchDaemon**으로를 실행하려면:

      1. 다음을 실행하여 Pilst 파일을 이동하고 권한을 변경합니다.

         ```
         $ sudo mv ~/Library/LaunchAgents/com.user.deadlinesync.plist /Library/LaunchDaemons/ 
         $ sudo chown root:wheel /Library/LaunchDaemons/com.user.deadlinesync.plist 
         $ sudo chmod 644 /Library/LaunchDaemons/com.user.deadlinesync.plist
         ```

      1. 최신 부트스트랩 명령을 사용하여 시작 에이전트를 로드합니다.

         ```
         $ sudo launchctl bootstrap system /Library/LaunchDaemons/com.user.deadlinesync.plist
         ```

1. **상태 확인**

   LaunchAgent를 부트스트래핑한 경우 다음을 실행하여 로드되었는지 확인합니다.

   ```
   $ launchctl list | grep deadlinesync
   ```

   LaunchDaemon을 부트스트래핑한 경우 다음을 실행하여 로드되었는지 확인합니다.

   ```
   $ sudo launchctl list | grep deadlinesync
   ```

   출력은 다음과 같아야 합니다.

   ```
   SOME_PID_NUMBER 0 com.user.deadlinesync
   ```

   자세한 상태 정보는 다음과 같습니다.

   ```
   $ launchctl print gui/$(id -u)/com.user.deadlinesync
   ```

   현재 상태, 프로그램 인수, 환경 변수, 실행 간격 및 실행 기록을 보여줍니다.

------
#### [ Windows ]

**참고**  
이 지침을 사용하여 생성된 예약된 작업은 사용자가 로그인한 경우에만 작동합니다.  
사용자 로그인 없이 시스템 시작 시 설정하려면 공식 [Windows 설명서를](https://learn.microsoft.com/en-us/windows/win32/taskschd/using-the-task-scheduler) 참조하세요.

아래 모든 단계에서 명령 프롬프트 - 관리자로 실행을 사용합니다.

1. **기한 CLI 설치 확인**

   기한 실행 파일을 찾습니다.

   ```
   C:\> where deadline
   ```

   작업에 사용할 전체 경로(예: `C:\Program Files\Amazon\DeadlineCloud\deadline.exe`)를 기록해 둡니다.

1. **체크포인트 디렉터리 생성**

   체크포인트 파일이 저장될 디렉터리를 생성합니다.

   ```
   C:\> mkdir "path\to\checkpoint\directory"
   ```

1. **로그 디렉터리 생성**

   작업 로그용 디렉터리를 생성합니다.

   ```
   C:\> mkdir "path\to\logs"
   ```

1. **배치 파일 래퍼 생성**

   다음 콘텐츠로 배치 파일을 생성합니다.

   ```
   C:\> notepad C:\path\to\deadline_sync.bat
   ```

   ```
   YOUR_PATH_TO_DEADLINE.EXE queue sync-output --profile deadline-downloader --farm-id YOUR_FARM_ID --queue-id YOUR_QUEUE_ID --storage-profile-id YOUR_PROFILE_ID --checkpoint-dir path\to\checkpoint\checkpoints > path\to\logs\deadline.log 2>&1
   ```

1. **배치 파일 테스트**

   배치 파일을 수동으로 테스트합니다.

   ```
   C:\> .\path\to\deadline_sync.bat
   ```

   로그 파일이 생성되었는지 확인합니다.

   ```
   C:\> notepad path\to\logs\deadline_sync.log
   ```

1. **작업 스케줄러 서비스 확인**

   Task Scheduler 서비스가 실행 중인지 확인합니다.

   ```
   C:\> sc query "Schedule"
   ```

   서비스가 존재하지 않는 경우 대체 이름을 시도해 보세요.

   ```
   C:\> sc query "TaskScheduler"
   C:\> sc query "Task Scheduler"
   ```

   실행 중이 아니면 시작합니다.

   ```
   C:\> sc start "Schedule"
   ```

1. **예약된 작업 생성**

   5분마다 실행할 작업을 생성합니다.

   ```
   C:\> schtasks /create /tn "DeadlineOutputSync" /tr "C:\path\to\deadline_sync.bat" /sc minute /mo 5
   ```

   명령 분석:
   + `/tn` - 작업 이름
   + `/tr` - 실행할 작업(배치 파일)
   + `/sc minute /mo 5` - 일정: 5분마다

1. **작업 생성 확인**

   작업이 성공적으로 생성되었는지 확인합니다.

   ```
   schtasks /query /tn "DeadlineOutputSync" /v /fo LIST
   ```

   다음을 찾습니다.
   + **실행할 작업**: 배치 파일 경로를 표시해야 합니다.
   + **다음 실행 시간**: 5분 이내에 시간을 표시해야 합니다.

1. **테스트 작업 실행**

   작업을 수동으로 실행하여 테스트합니다.

   ```
   schtasks /run /tn "DeadlineOutputSync"
   ```

   작업 상태 확인:

   ```
   schtasks /query /tn "DeadlineOutputSync"
   ```

------

**설정 확인**

자동 다운로드 설정이 성공했는지 확인하려면 다음 단계를 완료하세요.

1. 새 테스트 작업을 제출합니다.

1. 한 스케줄러 간격이 완료될 때까지 기다립니다.이 경우 5분입니다.

1. 새 출력이 자동으로 다운로드되는지 확인합니다.

출력이 다운로드되지 않는 경우 문제 해결 섹션에서 프로세스 로그를 확인합니다.

## 자동 다운로드 문제 해결
<a name="auto-downloads-troubleshooting"></a>

자동 다운로드에 문제가 발생하면 다음을 확인하세요.

### 스토리지 프로필 문제
<a name="storage-profile-issues"></a>
+ `[Errno 13] Permission denied` 로그 파일의 `[Errno 2] No such file or directory` 또는와 같은 오류는 누락되거나 잘못 구성된 스토리지 프로파일과 관련이 있을 수 있습니다.
+ 다운로드 머신이 제출 머신과 다를 때 [ 스토리지 프로파일을](https://docs.aws.amazon.com/deadline-cloud/latest/userguide/storage-profile-job-attachments.html) 설정하는 방법에 대한 자세한 내용은 스토리지 프로파일을 참조하세요.
+ 동일한 시스템 다운로드의 경우 `--ignore-storage-profiles` 플래그를 사용해 보세요.

### 디렉터리 권한
<a name="directory-permissions"></a>
+ 스케줄러 서비스 사용자에게 다음이 있는지 확인합니다.
  + 체크포인트 디렉터리에 대한 읽기/쓰기 액세스
  + 출력 대상 디렉터리에 대한 쓰기 액세스 권한
+ Linux 및의 경우 macOS`ls -la`를 사용하여 권한을 확인합니다.
+ 의 경우 속성 폴더의 보안 설정을 Windows검토합니다.

### 스케줄러 로그 확인
<a name="checking-scheduler-logs"></a>

------
#### [ Linux ]

1. cron 서비스가 실행 중인지 확인합니다.

   ```
   # For systemd systems
   $ sudo systemctl status cron
   # or
   $ sudo systemctl status crond
   
   # Check if your user has cron job correctly configured
   $ crontab -l
   ```

1. cron 실행 로그 보기:

   ```
   # Check system logs for cron activity (most common locations)
   $ sudo tail -f /var/log/syslog | grep CRON
   $ sudo tail -f /var/log/cron.log | grep deadline
   
   # View recent cron logs
   $ sudo journalctl -u cron -f
   $ sudo journalctl -u crond -f  # On some systems
   ```

1. 특정 cron 작업 로그를 확인합니다.

   ```
   # View the log file specified in your cron job
   $ tail -100f /path/to/logs/deadline_sync.log
   ```

1. 시스템 로그에서 cron 작업 실행을 검색합니다.

   ```
   # Look for your specific cron job executions
   $ sudo grep "deadline.*incremental-output-download" /var/log/syslog
   
   # Check for cron job starts and completions
   $ sudo grep "$(whoami).*CMD.*deadline" /var/log/syslog
   ```

1. 체크포인트 파일 업데이트 확인:

   ```
   # List checkpoint files with timestamps
   $ ls -la /path/to/checkpoint/directory/
   
   # Check when checkpoint was last modified
   $ stat /path/to/checkpoint/directory/queue-*_download_checkpoint.json
   ```

1. 로그 파일을 확인합니다.

   ```
   $ ls -la /path/to/log/deadline_sync.log
   ```

------
#### [ macOS ]

시작 에이전트 실행 로그 보기:

1. 시작 에이전트가 실행 중인지 확인합니다.

   ```
   $ sudo launchctl list | grep deadlinesync
   ```

   출력 표시: `PID Status Label` (PID는 현재 실행되지 않을 `-` 때 이며 간격 작업의 경우 정상임)

1. 자세한 시작 에이전트 상태 보기:

   ```
   $ sudo launchctl print system/com.user.deadlinesync
   ```

   실행 기록, 마지막 종료 코드, 실행 수 및 현재 상태가 표시됩니다.

1. 시작 에이전트 실행 로그 보기:

   ```
   # View recent logs (last hour)
   log show --predicate 'subsystem contains "com.user.deadlinesync"' --last 1h
   
   # View logs from a specific time period
   log show --predicate 'subsystem contains "com.user.deadlinesync"' --start '2024-08-27 09:00:00'
   ```

1. 즉시 테스트하기 위해 시작 에이전트를 강제 실행합니다.

   ```
   $ sudo launchctl kickstart gui/$(id -u)/com.user.deadlinesync
   ```

   이렇게 하면 일정에 관계없이 작업이 즉시 트리거되어 테스트에 유용합니다.

1. 체크포인트 파일 업데이트 확인:

   ```
   # List checkpoint files with timestamps
   $ ls -la /path/to/checkpoint/directory/
   ```

1. 로그 파일을 확인합니다.

   ```
   $ ls -la /path/to/log/deadline_sync.log
   ```

------
#### [ Windows ]

1. Task Scheduler 서비스가 실행 중인지 확인합니다.

   ```
   C:\> sc query "Schedule"
   ```

   서비스가 존재하지 않는 경우 대체 이름을 시도해 보세요.

   ```
   C:\> sc query "TaskScheduler"
   C:\> sc query "Task Scheduler"
   ```

1. 예약된 작업을 봅니다.

   ```
   C:> schtasks /query /tn "DeadlineOutputSync"
   ```

1. 작업의 로그 파일을 확인합니다.

   ```
   # View the log file created by your batch script
   C:> notepad C:\path\to\logs\deadline_sync.log
   ```

1. 체크포인트 파일 업데이트 확인:

   ```
   # List checkpoint files with timestamps
   C:> dir "C:\path\to\checkpoint\directory" /od
   ```

------