

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

# IDT for AWS IoT Greengrass V2 문제 해결
<a name="idt-troubleshooting"></a>

IDT for AWS IoT Greengrass V2는 오류 유형에 따라 다양한 위치에 오류를 기록합니다. IDT는 콘솔, 로그 파일 및 테스트 보고서에 오류를 작성합니다.

## 오류를 찾을 수 있는 곳
<a name="where-to-look"></a>

상위 수준의 오류는 테스트를 실행하는 동안 콘솔에 표시되고, 실패한 테스트의 요약은 모든 테스트가 완료될 때 표시됩니다. `awsiotdevicetester_report.xml`에 테스트 실패의 원인이 되는 모든 오류에 대한 요약이 들어 있습니다. IDT는 각 테스트 실행에 대한 로그 파일을 테스트 실행에 대한 UUID가 포함된 디렉터리에 저장하고, 테스트 실행 도중 콘솔에 표시됩니다.

IDT 테스트 로그 디렉터리는 `{{<device-tester-extract-location>}}/results/{{<execution-id>}}/logs/`입니다. 이 디렉터리에는 테이블에 표시된 다음 파일이 포함되어 있습니다. 이는 디버깅에 유용합니다.


| 파일 | 설명 | 
| --- | --- | 
| test\_manager.log | 테스트가 실행되는 동안 콘솔에 기록된 로그. 이 파일의 끝에 있는 결과 요약에는 실패한 테스트 목록이 포함되어 있습니다.<br />이 파일의 경고 및 오류 로그에서 실패에 대한 일부 정보를 확인할 수 있습니다. | 
| {{test-group-id}}/{{test-case-id}}/{{test-name}}.log | 테스트 그룹의 특정 테스트에 대한 상세 로그. Greengrass 구성 요소를 배포하는 테스트의 경우 테스트 사례 로그 파일을 greengrass-test-run.log라고 합니다. | 
| {{test-group-id}}/{{test-case-id}}/greengrass.log |  AWS IoT Greengrass 코어 소프트웨어에 대한 세부 로그입니다. IDT는 디바이스에 AWS IoT Greengrass 코어 소프트웨어를 설치하는 테스트를 실행할 때 테스트 중인 디바이스에서이 파일을 복사합니다. 이 로그 파일의 메시지에 대한 자세한 내용은 [문제 해결 AWS IoT Greengrass V2](troubleshooting.md)의 내용을 참조하세요. | 
| {{test-group-id}}/{{test-case-id}}/{{component-name}}.log | 테스트 실행 중에 배포된 Greengrass 구성 요소에 대한 상세 로그. IDT는 특정 구성 요소를 배포하는 테스트를 실행할 때 테스트 중인 디바이스에서 구성 요소 로그 파일을 복사합니다. 각 구성 요소 로그 파일의 이름은 배포된 구성 요소의 이름에 해당합니다. 이 로그 파일의 메시지에 대한 자세한 내용은 [문제 해결 AWS IoT Greengrass V2](troubleshooting.md)의 내용을 참조하세요. | 

## IDT for AWS IoT Greengrass V2 오류 해결
<a name="idt-gg-resolve-errors"></a>

용 IDT를 실행하기 전에 AWS IoT Greengrass올바른 구성 파일을 준비하십시오. 구문 분석 및 구성 오류가 발생할 경우 첫 번째 단계는 환경에 적합한 구성 템플릿을 찾아서 사용하는 것입니다.

그래도 문제가 발생할 경우 다음 디버깅 프로세스를 참조하십시오.

**Topics**
+ [별칭 확인 오류](#alias-resolution-errors)
+ [충돌 오류](#conflict-error)
+ [테스트를 시작할 수 없음 오류](#could-not-start-test)
+ [Docker 검증 이미지에 오류가 있음](#docker-qualification-image-exists)
+ [자격 증명 읽기 실패](#failed-to-read-credential-windows)
+ [사전 설치된 Greengrass의 Guice 오류](#guice-errors)
+ [잘못된 서명 예외](#invalid-signature-exception-lambda)
+ [기계 학습 검증 오류](#machine-learning-qualification-failure)
+ [OTF(Open Test Framework) 배포 실패](#otf-deployment-failure)
+ [구문 분석 오류](#parse-error)
+ [권한 거부 오류](#permission-denied-pwd-sudo)
+ [검증 보고서 생성 오류](#qualification-report-policy-error)
+ [필수 파라미터 누락 오류](#required-param-missing)
+ [macOS에서의 보안 예외](#security-exception-macos)
+ [SSH 연결 오류](#ssh-connect-errors)
+ [스트림 관리자 검증 오류](#stream-manager-qualification-failure)
+ [제한 시간 오류](#test-timeout)
+ [버전 확인 오류](#version-compatibility-check-failure)

### 별칭 확인 오류
<a name="alias-resolution-errors"></a>

사용자 지정 테스트 제품군을 실행하면 콘솔 및 `test_manager.log`에서 다음 오류가 표시될 수 있습니다.

```
Couldn't resolve placeholders: couldn't do a json lookup: index out of range
```

이 오류는 IDT 테스트 오케스트레이터에 구성된 별칭이 올바르게 확인되지 않거나 확인된 값이 구성 파일에 없는 경우 발생할 수 있습니다. 이 오류를 해결하려면 `device.json` 및 `userdata.json `에 테스트 제품군에 필요한 올바른 정보가 포함되어 있어야 합니다. AWS IoT Greengrass 검증에 필요한 구성에 대한 자세한 내용은 섹션을 참조하세요[AWS IoT Greengrass 검증 제품군을 실행하도록 IDT 설정 구성](set-config.md).

### 충돌 오류
<a name="conflict-error"></a>

두 개 이상의 디바이스에서 AWS IoT Greengrass 검증 제품군을 동시에 실행하면 다음 오류가 표시될 수 있습니다.

```
ConflictException: Component [com.example.IDTHelloWorld : 1.0.0] for account [{{account-id}}] already exists with state: [DEPLOYABLE] { RespMetadata: { StatusCode: 409, RequestID: “{{id}}” }, Message_: “Component [com.example.IDTHelloWorld : 1.0.0] for account [{{account-id}}] already exists with state: [DEPLOYABLE]” }
```

 AWS IoT Greengrass 검증 제품군에 대한 동시 테스트 실행은 아직 지원되지 않습니다. 각 디바이스에 대해 순차적으로 검증 제품군을 실행하세요.

### 테스트를 시작할 수 없음 오류
<a name="could-not-start-test"></a>

테스트 시작을 시도할 때 발생한 실패를 가리키는 오류가 발생할 수 있습니다. 몇 가지 원인이 있을 수 있으므로 다음을 수행하십시오.
+ 실행 명령의 풀 이름이 실제로 존재하는지 확인합니다. IDT는 `device.json` 파일에서 풀 이름을 직접 참조합니다.
+ 풀에 있는 장치에 올바른 구성 파라미터가 있는지 확인합니다.

### Docker 검증 이미지에 오류가 있음
<a name="docker-qualification-image-exists"></a>

Docker 애플리케이션 관리자 검증 테스트는 Amazon ECR의 `amazon/amazon-ec2-metadata-mock` 컨테이너 이미지를 사용하여 테스트 중인 디바이스를 검증합니다.

이미지가 테스트 중인 디바이스의 Docker 컨테이너에 이미 있는 경우 다음 오류가 발생할 수 있습니다.

```
The Docker image amazon/amazon-ec2-metadata-mock:{{version}} already exists on the device.
```

이전에 이 이미지를 다운로드하고 디바이스에서 `amazon/amazon-ec2-metadata-mock` 컨테이너를 실행한 경우 검증 테스트를 실행하기 전에 테스트 중인 디바이스에서 이 이미지를 제거해야 합니다.

### 자격 증명 읽기 실패
<a name="failed-to-read-credential-windows"></a>

Windows 디바이스를 테스트할 때 테스트 중인 디바이스에 연결하는 데 사용하는 사용자가 해당 디바이스의 자격 증명 관리자에 설정되지 않은 경우 `greengrass.log` 파일에 `Failed to read credential` 오류가 발생할 수 있습니다.

이 오류를 해결하려면 테스트 중인 디바이스의 자격 증명 관리자에서 IDT 사용자의 사용자와 암호를 구성합니다.

자세한 내용은 [Windows 디바이스에 대한 사용자 자격 증명 구성](device-config-setup.md#configure-windows-user-for-idt) 단원을 참조하십시오.

### 사전 설치된 Greengrass의 Guice 오류
<a name="guice-errors"></a>

사전 설치된 Greengrass로 IDT를 실행하는 동안 `Guice` 또는 `ErrorInCustomProvider` 오류가 발생하면 `userdata.json` 파일에서 `InstalledDirRootOnDevice`가 Greengrass 설치 폴더로 설정되어 있는지 확인합니다. IDT는 `<InstallationDirRootOnDevice>/config/effectiveConfig.yaml`에서 `effectiveConfig.yaml` 파일을 확인합니다.

자세한 내용은 [Windows 디바이스에 대한 사용자 자격 증명 구성](device-config-setup.md#configure-windows-user-for-idt) 단원을 참조하십시오.

### 잘못된 서명 예외
<a name="invalid-signature-exception-lambda"></a>

Lambda 검증 테스트를 실행할 때 IDT 호스트 시스템에 네트워크 액세스 문제가 발생하는 경우 `invalidsignatureexception` 오류가 발생할 수 있습니다. 라우터를 재설정하고 테스트를 다시 실행하세요.

### 기계 학습 검증 오류
<a name="machine-learning-qualification-failure"></a>

기계 학습(ML) 검증 테스트를 실행할 때 디바이스가 AWS제공 ML 구성 요소를 배포하기 위한 [요구](dlr-component.md#dlr-component-requirements) 사항을 충족하지 않는 경우 검증 실패가 발생할 수 있습니다. 다음을 수행하여 ML 검증 오류 해결: 
+ 테스트 실행 중에 배포된 구성 요소의 구성 요소 로그에서 오류 세부 정보를 찾습니다. 구성 요소 로그는 `{{<device-tester-extract-location>}}/results/{{<execution-id>}}/logs/{{<test-group-id>}}` 디렉터리에 있습니다.
+ 실패한 테스트 사례의 `test.json` 파일에 `-Dgg.persist=installed.software` 인수를 추가합니다. `test.json` 파일은 `{{<device-tester-extract-location>}}/tests/GGV2Q_{{version}} directory. `에 있습니다.

### OTF(Open Test Framework) 배포 실패
<a name="otf-deployment-failure"></a>

OTF 테스트에서 배포를 완료하지 못하는 경우 `TempResourcesDirOnDevice` 및 `InstallationDirRootOnDevice`의 상위 폴더에 설정된 권한이 원인일 수 있습니다. 이 폴더의 권한을 올바르게 설정하려면 다음 명령을 실행합니다. `{{folder-name}}`을 상위 폴더의 이름으로 바꿉니다.

```
sudo chmod 755 {{folder-name}}
```

### 구문 분석 오류
<a name="parse-error"></a>

JSON 구성의 오타로 인해 구문 분석 오류가 발생할 수 있습니다. 대부분의 경우 문제는 JSON 파일에서 대괄호, 쉼표 또는 따옴표를 생략한 결과입니다. IDT는 JSON 확인을 수행하고 디버깅 정보를 인쇄합니다. IDT는 오류가 발생한 줄, 줄 번호, 구문 오류의 열 번호를 인쇄합니다. 이 정보만 있으면 오류를 수정할 수 있지만, 여전히 오류를 찾을 수 없는 경우 IDE나 텍스트 편집기(예: Atom 또는 Sublime)에서 또는 온라인 도구(예: JSONLint)를 통해 수동으로 확인을 수행할 수 있습니다.

### 권한 거부 오류
<a name="permission-denied-pwd-sudo"></a>

IDT는 테스트 대상 장치에서 다양한 디렉터리와 파일에 대해 작업을 수행합니다. 이러한 작업 일부에는 루트 액세스가 필요합니다. 이러한 작업을 자동화하기 위해서는 IDT가 암호 입력 없이 sudo를 사용하여 명령을 실행할 수 있어야 합니다.

암호 입력 없이 sudo 액세스를 허용하려면 다음 단계를 수행합니다.

**참고**  
`user` 및 `username`은 IDT가 테스트 대상 장치에 액세스하는 데 사용하는 SSH 사용자를 나타냅니다.

1. sudo 그룹에 SSH 사용자를 추가하려면 **sudo usermod -aG sudo {{<ssh-username>}}**을 사용하십시오.

1. 변경 사항을 적용하려면 로그아웃했다가 로그인하십시오.

1. `/etc/sudoers` 파일을 열고 파일 끝에 다음 줄을 추가합니다. `{{<ssh-username>}} ALL=(ALL) NOPASSWD: ALL` 
**참고**  
모범 사례로, `/etc/sudoers`를 편집할 때는 **sudo visudo**를 사용하는 것이 좋습니다.

### 검증 보고서 생성 오류
<a name="qualification-report-policy-error"></a>

IDT는 AWS IoT Greengrass V2 검증 제품군(GGV2Q)의 네 가지 최신 `{{major}}.{{minor}}` 버전을 지원하여 AWS Partner 디바이스 카탈로그에 디바이스를 포함 AWS Partner Network 하기 위해 제출할 수 있는 검증 보고서를 생성합니다. 이전 버전의 검증 제품군은 검증 보고서를 생성하지 않습니다.

지원 정책에 대해 궁금한 점이 있으면 [AWS Support](https://aws.amazon.com/contact-us/)에 문의하세요.

### 필수 파라미터 누락 오류
<a name="required-param-missing"></a>

IDT에서 새 기능을 추가하면 구성 파일이 변경될 수 있습니다. 기존 구성 파일을 사용하면 구성이 손상될 수 있습니다. 이 문제가 발생할 경우 `/results/{{<execution-id>}}/logs` 아래의 `{{<test_case_id>}}.log` 파일에 누락된 모든 파라미터가 명시적으로 나열됩니다. 또한 IDT는 JSON 구성 파일 스키마를 검사하여 지원되는 최신 버전이 사용되었는지 확인합니다.

### macOS에서의 보안 예외
<a name="security-exception-macos"></a>

macOS 호스트 컴퓨터에서 IDT를 실행하면 IDT 실행이 차단됩니다. IDT를 실행하려면 IDT 런타임 기능의 일부인 실행 파일에 보안 예외를 부여합니다. 호스트 컴퓨터에 경고 메시지가 표시되면 해당하는 각 실행 파일에 대해 다음을 수행합니다.

**IDT 실행 파일에 보안 예외 부여**

1. macOS 컴퓨터의 Apple 메뉴에서 **시스템 기본 설정**을 엽니다.

1. **보안 및 개인 정보 보호**를 선택한 다음 **일반** 탭에서 잠금 아이콘을 선택하여 보안 설정을 변경합니다.

1. `devicetester_mac_x86-64`가 차단된 경우 `"devicetester_mac_x86-64" was blocked from use because it is not from an identified developer.` 메시지를 찾아 **모두 허용**을 선택합니다.

1. 관련된 모든 실행 파일을 테스트할 때까지 IDT 테스트를 재개합니다.

### SSH 연결 오류
<a name="ssh-connect-errors"></a>

IDT가 테스트 대상 디바이스에 연결할 수 없으면 연결 실패가 `/results/{{<execution-id>}}/logs/{{<test-case-id>}}.log`에 기록됩니다. 테스트 대상 디바이스에 대한 연결은 IDT가 수행하는 첫 번째 작업 중 하나이므로 SSH 메시지는 이 로그 파일의 맨 위에 표시됩니다.

대부분의 Windows 구성은 PuTTy 터미널 애플리케이션을 사용하여 Linux 호스트에 연결합니다. 이 애플리케이션에서는 표준 PEM 프라이빗 키 파일을 PPK라는 전용 Windows 형식으로 변환해야 합니다. `device.json` 파일에서 SSH를 구성하는 경우 PEM 파일을 사용하세요. PPK 파일을 사용하는 경우 IDT는 AWS IoT Greengrass 디바이스와의 SSH 연결을 생성할 수 없으며 테스트를 실행할 수 없습니다.

IDT v4.4.0부터 테스트 중인 디바이스에서 SFTP를 활성화하지 않은 경우 로그 파일에 다음 오류가 표시될 수 있습니다.

```
SSH connection failed with EOF
```

이 오류를 해결하려면 디바이스에서 SFTP를 활성화합니다.

### 스트림 관리자 검증 오류
<a name="stream-manager-qualification-failure"></a>

스트림 관리자 검증 테스트를 실행할 때 `com.aws.StreamManagerExport.log` 파일에 다음 오류가 표시될 수 있습니다.

```
Failed to upload data to S3
```

이 오류는 스트림 관리자가 IDT가 테스트 중인 디바이스로 내보내는 환경 AWS 자격 증명을 사용하는 대신 디바이스의 `~/root/.aws/credentials` 파일에 있는 자격 증명을 사용할 때 발생할 수 있습니다. 이 문제를 방지하려면 디바이스에서 `credentials` 파일을 삭제하고, 검증 테스트를 다시 실행합니다.

### 제한 시간 오류
<a name="test-timeout"></a>

각 테스트의 제한 시간 기본값에 적용되는 제한 시간 승수를 지정하여 각 테스트에 대한 제한 시간을 늘릴 수 있습니다. 이 플래그에 대해 구성된 값은 1.0보다 크거나 같아야 합니다.

제한 시간 승수를 사용하려면 테스트를 실행할 때 `--timeout-multiplier` 플래그를 사용합니다. 예제:

```
./devicetester_linux run-suite --suite-id GGV2Q_1.0.0 --pool-id DevicePool1 --timeout-multiplier 2.5
```

자세한 내용을 보려면 `run-suite --help`을(를) 실행하세요.

일부 제한 시간 오류는 구성 문제로 인해 IDT 테스트 사례를 완료할 수 없을 때 발생합니다. 제한 시간 승수를 늘려서 이러한 오류를 해결할 수는 없습니다. 테스트 실행의 로그를 사용하여 기본 구성 문제를 해결합니다.
+ MQTT 또는 Lambda 구성 요소 로그에 `Access denied` 오류가 있는 경우 Greengrass 설치 폴더에 올바른 파일 권한이 없을 수 있습니다. `userdata.json` 파일에 정의한 설치 경로의 각 폴더에 대해 다음 명령을 실행합니다.

  ```
  sudo chmod 755 {{folder-name}}
  ```
+ Greengrass 로그에 Greengrass CLI 배포가 완료되지 않은 것으로 표시되는 경우 다음을 수행합니다.
  + `bash`가 테스트 중인 디바이스에 설치되어 있는지 확인합니다.
  + `userdata.json` 파일에 `GreengrassCliVersion` 구성 파라미터가 포함된 경우 제거합니다. 이 파라미터는 IDT v4.1.0 이상 버전에서는 더 이상 사용되지 않습니다. 자세한 내용은 [userdata.json 구성](set-config.md#userdata-config) 단원을 참조하십시오.
+ “Lambda 게시 검사: 제한 시간” 오류 메시지와 함께 Lambda 배포 테스트가 실패하고 테스트 로그 파일(`idt-gg2-lambda-function-idt-{{<resource-id>}}.log`)에 `Error: Could not find or load main class com.amazonaws.greengrass.runtime.LambdaRuntime.` 오류가 표시되면 다음을 수행합니다.
  + `userdata.json` 파일에서 `InstallationDirRootOnDevice`에 사용된 폴더를 확인합니다.
  + 디바이스에 올바른 사용자 권한이 설정되어 있는지 확인합니다. 자세한 내용은 [디바이스에서 사용자 권한 구성](https://docs.aws.amazon.com/greengrass/v2/developerguide/device-config-setup.html#root-access)을 참조하세요.

### 버전 확인 오류
<a name="version-compatibility-check-failure"></a>

IDT 사용자의 AWS 사용자 자격 증명에 필요한 IAM 권한이 없는 경우 IDT에서 다음 오류가 발생합니다.

```
Failed to check version compatibility
```

필요한 IAM 권한이 없는 AWS 사용자입니다.