

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

# 관리자 권한으로 호스트 구성 스크립트 실행
<a name="smf-admin"></a>

호스트 구성 스크립트를 사용하면 서비스 관리형 플릿 작업자에 대해 소프트웨어 설치와 같은 관리 작업을 수행할 수 있습니다. 이러한 스크립트는 승격된 권한(`sudo`의 Linux,의 관리자Windows)으로 실행되므로 시스템에 맞게 작업자를 유연하게 구성할 수 있습니다.

Deadline Cloud는 작업자가 `STARTING` 상태가 된 후 작업을 실행하기 전에 스크립트를 실행합니다.

**중요**  
스크립트는 승격된 권한으로 실행됩니다. 스크립트에 보안 문제가 발생하지 않도록 하는 것은 사용자의 책임입니다.  
호스트 구성 스크립트를 사용하는 경우 플릿의 상태를 모니터링할 책임이 있습니다.

호스트 구성 스크립트의 일반적인 용도는 다음과 같습니다.
+ 관리자 액세스가 필요한 소프트웨어 설치
+ Docker 컨테이너 설치
+ 와 같은 타사 클라우드 스토리지 솔루션 설치LucidLink. 연습은 M&E 블로그 AWS 용의 [Deadline Cloud에 대한 서비스 관리형 플릿 스크립트로 LucidLink 설정을 참조하세요](https://aws.amazon.com/blogs/media/set-up-lucidlink-with-service-managed-fleet-scripts-for-aws-deadline-cloud/).

콘솔 또는를 사용하여 호스트 구성 스크립트를 생성하고 업데이트할 수 있습니다 AWS CLI.

------
#### [ Console ]

1. **플릿 세부 정보** 페이지에서 **구성** 탭을 선택합니다.

1. **스크립트** 필드에 승격된 권한으로 실행할 스크립트를 입력합니다. **가져오기**를 선택하여 워크스테이션에서 스크립트를 로드할 수 있습니다.

1. 스크립트를 실행하기 위한 제한 시간을 초 단위로 설정합니다. 기본값은 300초(5분)입니다.

1. **변경 사항 저장**을 선택하여 스크립트를 저장합니다.

------
#### [ Create with CLI ]

다음 AWS CLI 명령을 사용하여 호스트 구성 스크립트가 있는 플릿을 생성합니다. {{자리 표시자}} 텍스트를 정보로 바꿉니다.

```
aws deadline create-fleet \
--farm-id {{farm-12345}} \
--display-name "{{fleet-name}}" \
--max-worker-count 1 \
--configuration '{
"serviceManagedEc2": {
  "instanceCapabilities": {
    "vCpuCount": {"min": 2},
    "memoryMiB": {"min": 4096},
    "osFamily": "linux",
    "cpuArchitectureType": "x86_64"
  },
  "instanceMarketOptions": {"type":"spot"}
}
}' \
--role-arn arn:aws:iam::{{111122223333}}:role/{{role-name}} \
--host-configuration '{ "scriptBody": "{{script body}}", "scriptTimeoutSeconds": {{timeout value}}}'
```

------
#### [ Update with CLI ]

다음 AWS CLI 명령을 사용하여 플릿의 호스트 구성 스크립트를 업데이트합니다. {{자리 표시자}} 텍스트를 정보로 바꿉니다.

```
aws deadline update-fleet \
--farm-id {{farm-12345}} \
--fleet-id {{fleet-455678}} \
--host-configuration '{ "scriptBody": "{{script body}}", "scriptTimeoutSeconds": {{timeout value}}}'
```

------

다음 스크립트는 다음을 보여줍니다.
+ 스크립트에 사용할 수 있는 환경 변수
+ 해당 AWS 자격 증명은 쉘에서 작동합니다.
+ 스크립트가 승격된 셸에서 실행되고 있는지 여부

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

다음 스크립트를 사용하여 스크립트가 `root` 권한으로 실행되고 있음을 표시합니다.

```
# Print environment variables
set 
# Check AWS Credentials
aws sts get-caller-identity
```

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

다음 PowerShell 스크립트를 사용하여 스크립트가 관리자 권한으로 실행 중임을 표시합니다.

```
Get-ChildItem env: | ForEach-Object { "$($_.Name)=$($_.Value)" }
aws sts get-caller-identity
function Test-AdminPrivileges {
  $currentUser = New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())
  $isAdmin = $currentUser.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
  
  return $isAdmin
}

if (Test-AdminPrivileges) {
  Write-Host "The current PowerShell session is elevated (running as Administrator)."
} else {
  Write-Host "The current PowerShell session is not elevated (not running as Administrator)."
}
exit 0
```

------

## 호스트 구성 스크립트 문제 해결
<a name="smf-admin-troubleshooting"></a>

호스트 구성 스크립트를 실행하는 경우: 
+ 성공 시: 작업자가 작업을 실행합니다.
+ 실패 시(0이 아닌 종료 코드 또는 충돌): 
  + 작업자 종료

  플릿은 최신 호스트 구성 스크립트를 사용하여 새 작업자를 자동으로 시작합니다.

스크립트를 모니터링하려면:

1. Deadline Cloud 콘솔에서 플릿 페이지를 엽니다.

1. **작업자 보기를** 선택하여 Deadline Cloud 모니터를 엽니다.

1. 모니터 페이지에서 작업자 상태를 봅니다.

**작은 정보**  
호스트 구성 스크립트를 테스트할 때 스크립트에서 반복하는 동안 여러 작업자가 시작되지 않도록 플릿의 최대 작업자 수를 1로 설정합니다.

중요 정보:
+ 오류로 인해 종료된 작업자는 모니터의 작업자 목록에서 사용할 수 없습니다. CloudWatch Logs를 사용하여 다음 로그 그룹의 작업자 로그를 봅니다.

  ```
  /aws/deadline/farm-{{XXXXX}}/fleet-{{YYYYY}}
  ```

  해당 로그 그룹 내에서 라는 스트림을 찾습니다`worker-{{ZZZZZ}}`.
+ CloudWatch Logs는 구성된 보존 기간에 따라 작업자 로그를 보존합니다.

### 호스트 구성 스크립트 실행 모니터링
<a name="smf-admin-monitoring"></a>

호스트 구성 스크립트를 사용하면 Deadline Cloud 작업자를 완벽하게 제어할 수 있습니다. 소프트웨어 패키지를 설치하거나, 운영 체제 파라미터를 재구성하거나, 공유 파일 시스템을 탑재할 수 있습니다. 이 고급 기능과 수천 명의 작업자로 확장할 수 있는 Deadline Cloud의 기능을 사용하면 구성 스크립트가 성공적으로 실행되거나 실패한 시기를 모니터링할 수 있습니다.

호스트 구성 스크립트 실행을 모니터링하려면 다음 솔루션을 사용하는 것이 좋습니다.

#### CloudWatch Logs 모니터링
<a name="smf-admin-cloudwatch-logs"></a>

모든 플릿 호스트 구성 로그는 플릿의 CloudWatch 로그 그룹, 특히 작업자의 CloudWatch 로그 스트림으로 스트리밍됩니다. 예를 들어 `/aws/deadline/farm-123456789012/fleet-777788889999`는 팜 `123456789012`, 플릿에 대한 로그 그룹입니다`777788889999`.

각 작업자는와 같은 전용 로그 스트림을 프로비저닝합니다`worker-123456789012`. 호스트 구성 로그에는 호스트 구성 *스크립트 실행 및 호스트 구성* *스크립트 실행 완료, 종료 코드: 0*과 같은 로그 배너가 포함됩니다. 스크립트의 종료 코드는 완료된 배너에 포함되며 CloudWatch 도구를 사용하여 쿼리할 수 있습니다.

#### CloudWatch Logs Insights
<a name="smf-admin-log-insights"></a>

CloudWatch Logs Insights는 로그 정보를 분석하는 고급 기능을 제공합니다. 예를 들어 다음 Log Insights 쿼리는 호스트 구성 종료 코드에 대한 구문 분석을 시간별로 정렬합니다.

```
fields @timestamp, @message, @logStream, @log
| filter @message like /Finished running Host Configuration Script/
| parse @message /exit code: (?<exit_code>\d+)/
| display @timestamp, exit_code
| sort @timestamp desc
```

CloudWatch Logs Insights에 대한 자세한 내용은 Amazon CloudWatch Logs 사용 설명서에서 [CloudWatch Logs Insights를 사용하여 로그 데이터 분석하기](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax.html)를 참조하세요.

##### 작업자 에이전트 구조화 로깅
<a name="smf-admin-structured-logging"></a>

Deadline Cloud의 작업자 에이전트는 구조화된 JSON 로그를 CloudWatch에 게시합니다. 작업자 에이전트는 작업자 상태를 분석하기 위한 다양한 구조화된 로그를 제공합니다. 자세한 내용은 GitHub의 [Deadline Cloud 작업자 에이전트 로깅](https://github.com/aws-deadline/deadline-cloud-worker-agent/blob/mainline/docs/logging.md)을 참조하세요.

구조화된 로그의 속성은 Log Insights의 필드에 압축이 풀립니다. 이 CloudWatch 기능을 사용하여 호스트 구성 시작 실패를 계산하고 분석할 수 있습니다. 예를 들어 개수 및 빈 쿼리를 사용하여 실패 발생 빈도를 확인할 수 있습니다.

```
fields @timestamp, @message, @logStream, @log
| sort @timestamp desc
| filter message like /Worker Agent host configuration failed with exit code/
| stats count(*) by exit_code, bin(1h)
```

#### 지표 및 경보에 대한 CloudWatch 지표 필터
<a name="smf-admin-metric-filters"></a>

CloudWatch 지표 필터를 설정하여 로그에서 CloudWatch 지표를 생성할 수 있습니다. 지표 필터를 사용하면 호스트 구성 스크립트 실행을 모니터링하기 위한 경보 및 대시보드를 생성할 수 있습니다.

**지표 필터를 생성하려면**

1. CloudWatch 콘솔을 엽니다.

1. 탐색 창에서 **로그**를 선택한 다음 **로그 그룹을** 선택합니다.

1. 플릿의 로그 그룹을 선택합니다.

1. **지표 필터 생성**을 선택합니다.

1. 다음 중 하나를 사용하여 필터 패턴을 정의합니다.
   + **성공 지표의 경우:**

     ```
     {$.message = "*Worker Agent host configuration succeeded.*"}
     ```
   + **실패 지표의 경우:**

     ```
     {$.exit_code != 0 && $.message = "*Worker Agent host configuration failed with exit code*"}
     ```

1. **다음을** 선택하여 다음 값으로 지표를 생성합니다.
   + **지표 네임스페이스:** 지표 네임스페이스(예: **MyDeadlineFarm**)
   + **지표 이름:** 요청한 지표 이름(예: **host\_config\_failure**)
   + **지표 값:** **1** (각 인스턴스는 1개)
   + **기본값:** 비워 둡니다.
   + **단위:** **Count**

지표 필터를 생성한 후 승격된 호스트 구성 실패율에 대한 조치를 취하도록 표준 CloudWatch 경보를 구성하거나 day-to-day 운영 및 모니터링을 위해 CloudWatch 대시보드에 지표를 추가할 수 있습니다.

자세한 내용은 *Amazon CloudWatch Logs 사용 설명서*의 [필터 및 패턴 구문](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/FilterAndPatternSyntax.html)을 참조하세요.