

지원 종료 공지: 2026년 10월 7일에는에 대한 지원을 중단할 AWS 예정입니다 AWS IoT Greengrass Version 1. 2026년 10월 7일 이후에는 더 이상 AWS IoT Greengrass V1 리소스에 액세스할 수 없습니다. 자세한 내용은 [에서 마이그레이션 AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html)을 참조하세요.

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

# IDT를 사용하여 AWS IoT Greengrass 검증 제품군 실행
<a name="idt-gg-qualification"></a>

용 AWS IoT 디바이스 테스터(IDT) AWS IoT Greengrass 를 사용하여 AWS IoT Greengrass 코어 소프트웨어가 하드웨어에서 실행되고와 통신할 수 있는지 확인할 수 있습니다 AWS 클라우드. 또한 이 IDT는 AWS IoT Core와의 엔드 투 엔드 테스트를 수행합니다. 예를 들어 장치가 MQTT 메시지를 송수신하고 올바르게 처리할 수 있는지 확인합니다.

 AWS IoT Greengrass Version 1 가 [유지 관리 모드로](https://docs.aws.amazon.com/greengrass/v1/developerguide/maintenance-policy.html) 전환되었으므로 용 IDT는 더 이상 서명된 검증 보고서를 생성 AWS IoT Greengrass V1 하지 않습니다. AWS Partner Device Catalog에 하드웨어를 추가하려면 AWS IoT Greengrass V2 검증 제품군을 실행하여 제출할 수 있는 테스트 보고서를 생성합니다 AWS IoT. 자세한 내용은 [AWS 장치 검증 프로그램](https://aws.amazon.com/partners/dqp/) 및 [AWS IoT Greengrass V2지원 IDT 버전](https://docs.aws.amazon.com/greengrass/v2/developerguide/dev-test-versions.html)을 참조하십시오.

디바이스 테스트 외에도 용 IDT는 검증 프로세스를 용이하게 AWS 계정 하기 위해에 리소스(예: AWS IoT 사물, AWS IoT Greengrass 그룹, Lambda 함수 등)를 AWS IoT Greengrass 생성합니다.

<a name="idt-aws-credentials"></a>이러한 리소스를 생성하기 위해 용 IDT AWS IoT Greengrass 는 `config.json` 파일에 구성된 AWS 자격 증명을 사용하여 사용자를 대신하여 API를 호출합니다. 이러한 리소스는 테스트 중 다양한 시점에서 프로비저닝됩니다.

용 IDT AWS IoT Greengrass 를 사용하여 AWS IoT Greengrass 검증 제품군을 실행하는 경우 IDT는 다음 단계를 수행합니다.

1. 장치 및 자격 증명 구성을 로드하고 검증합니다.

1. 필수 로컬 및 클라우드 리소스를 사용하여 선택한 테스트를 수행합니다.

1. 로컬 및 클라우드 리소스를 정리합니다.

1. 장치에서 검증에 필요한 테스트를 통과했는지를 나타내는 테스트 보고서를 생성합니다.

## 테스트 제품군 버전
<a name="idt-test-suite-versions"></a>

용 IDT는 테스트를 테스트 제품군 및 테스트 그룹으로 AWS IoT Greengrass 구성합니다.<a name="idt-test-suites-groups"></a>
+ 테스트 제품군은 장치가 AWS IoT Greengrass의 특정 버전에서 작동하는지 확인하는 데 사용되는 테스트 그룹 집합입니다.
+ 테스트 그룹은 Greengrass 그룹 배포 및 MQTT 메시징 같은 특정 기능과 관련된 개별 테스트 집합입니다.

IDT v3.0.0부터는 `major.minor.patch` 형식(예: `GGQ_1.0.0`)을 사용하여 테스트 제품군의 버전이 관리됩니다. IDT를 다운로드하면 패키지에 최신 테스트 제품군 버전이 포함됩니다.

**중요**  
IDT는 장치 검증을 위해 세 가지 최신 테스트 제품군 버전을 지원합니다. 자세한 내용은 [용 AWS IoT 디바이스 테스터에 대한 지원 정책 AWS IoT Greengrass V1](idt-support-policy.md) 단원을 참조하십시오.  
를 실행`list-supported-products`하여 현재 버전의 IDT에서 지원하는 AWS IoT Greengrass 및 테스트 제품군의 버전을 나열할 수 있습니다. 지원되지 않는 테스트 제품군 버전의 테스트는 장치 검증에 유효하지 않습니다. IDT는 지원되지 않는 버전에 대한 검증 보고서를 인쇄하지 않습니다.

### IDT 구성 설정에 대한 업데이트
<a name="idt-test-suite-versions-config-changes"></a>

새로운 테스트에서는 새로운 IDT 구성 설정을 도입할 수 있습니다.
+ 설정이 선택 사항인 경우 IDT는 테스트를 계속 실행합니다.
+ 설정이 필요한 경우 IDT는 사용자에게 이를 알리고 실행을 중지합니다. 설정을 구성한 후 테스트 실행을 다시 시작하십시오.

  구성 설정은 `<device-tester-extract-location>/configs` 폴더에 있습니다. 자세한 내용은 [AWS IoT Greengrass 검증 제품군을 실행하도록 IDT 설정 구성](set-config.md) 단원을 참조하십시오.

업데이트된 테스트 제품군 버전이 구성 설정을 추가하는 경우 IDT는 `<device-tester-extract-location>/configs`에 원래 구성 파일의 복사본을 만듭니다.

## 테스트 그룹 설명
<a name="dt-test-groups"></a>

------
#### [ IDT v2.0.0 and later ]

**코어 검증을 위한 필수 테스트 그룹**  
이러한 테스트 그룹은 AWS IoT Greengrass 디바이스가 AWS Partner Device Catalog에 적합한지 검증하는 데 필요합니다.    
AWS IoT Greengrass 핵심 종속성  
디바이스가 AWS IoT Greengrass 코어 소프트웨어의 모든 소프트웨어 및 하드웨어 요구 사항을 충족하는지 확인합니다.  
이 테스트 그룹의 `Software Packages Dependencies` 테스트 케이스는 [Docker 컨테이너](docker-config-setup.md)에서 테스트하는 경우 적용할 수 없습니다.  
배포  
장치에 Lambda 함수를 배포할 수 있는지 검증합니다.  
MQTT  
Greengrass 코어와 로컬 IoT 디바이스인 클라이언트 디바이스 간의 로컬 통신을 확인하여 AWS IoT Greengrass 메시지 라우터 기능을 확인합니다.  
무선(OTA)  
디바이스가 AWS IoT Greengrass 코어 소프트웨어의 OTA 업데이트를 성공적으로 수행할 수 있는지 확인합니다.  
<a name="n-a-docker"></a>이 테스트 그룹은 [Docker 컨테이너](docker-config-setup.md)에서 테스트하는 경우 적용할 수 없습니다.  
버전  
 AWS IoT Greengrass 제공된 버전이 사용 중인 AWS IoT 디바이스 테스터 버전과 호환되는지 확인합니다.

**선택적 테스트 그룹**  
이러한 테스트 그룹은 선택 사항입니다. 선택적 테스트에 적합한 것으로 선택하면 디바이스 카탈로그에 추가 기능이 포함된 AWS Partner 디바이스가 나열됩니다.    
컨테이너 종속성  
<a name="description-container"></a>장치가 Greengrass 코어에서 컨테이너 모드로 Lambda 함수를 실행하기 위한 모든 소프트웨어 및 하드웨어 요구 사항을 충족하는지 여부를 검증합니다.  
<a name="n-a-docker"></a>이 테스트 그룹은 [Docker 컨테이너](docker-config-setup.md)에서 테스트하는 경우 적용할 수 없습니다.  
배포 컨테이너  
<a name="description-deployment-container"></a>장치에 Lambda 함수를 배포하고 Greengrass 코어에서 컨테이너 모드로 실행할 수 있는지 검증합니다.  
<a name="n-a-docker"></a>이 테스트 그룹은 [Docker 컨테이너](docker-config-setup.md)에서 테스트하는 경우 적용할 수 없습니다.  
Docker 종속성(IDT v2.2.0 이상에서 지원됨)  
<a name="description-docker"></a>장치가 Greengrass Docker 애플리케이션 배포 커넥터를 사용하여 컨테이너를 실행하는 데 필요한 모든 기술 종속성을 충족하는지 검증합니다.  
<a name="n-a-docker"></a>이 테스트 그룹은 [Docker 컨테이너](docker-config-setup.md)에서 테스트하는 경우 적용할 수 없습니다.  
HSI(하드웨어 보안 통합)  
<a name="description-hsi"></a>제공된 HSI 공유 라이브러리가 하드웨어 보안 모듈(HSM)과 인터페이스할 수 있고 필요한 PKCS\$111 API를 올바로 구현하는지 확인합니다. HSM 및 공유 라이브러리가 CSR에 서명하고 TLS 작업을 수행하며 올바른 키 길이와 퍼블릭 키 알고리즘을 제공할 수 있어야 합니다.  
스트림 관리자 종속성(IDT v2.2.0 이상에서 지원됨)  
<a name="description-sm"></a>디바이스가 AWS IoT Greengrass 스트림 관리자를 실행하는 데 필요한 모든 기술적 종속성을 충족하는지 확인합니다.  
기계 학습 종속성(IDT v3.1.0 이상에서 지원됨)  
<a name="description-ml"></a>장치가 로컬로 ML 추론을 실행하는 데 필요한 모든 기술적 종속성을 충족하는지 검증합니다.  
기계 학습 추론 테스트(IDT v3.1.0 이상에서 지원됨)  
<a name="description-mlit"></a>ML 추론이 테스트 중인 지정된 장치에서 수행될 수 있는지 검증합니다. 자세한 내용은 [선택 사항: ML 검증을 위해 장치 구성](idt-ml-qualification.md) 단원을 참조하십시오.  
기계 학습 추론 컨테이너 테스트(IDT v3.1.0 이상에서 지원됨)  
<a name="description-mlict"></a>ML 추론이 테스트 중인 지정된 장치에서 수행될 수 있는지와 Greengrass 코어에서 컨테이너 모드로 실행될 수 있는지 검증합니다. 자세한 내용은 [선택 사항: ML 검증을 위해 장치 구성](idt-ml-qualification.md) 단원을 참조하십시오.

------
#### [ IDT v1.3.3 and earlier ]

**코어 검증을 위한 필수 테스트 그룹**  
이러한 테스트는 AWS IoT Greengrass 디바이스가 AWS Partner Device Catalog에 적합한지 검증하는 데 필요합니다.    
AWS IoT Greengrass 핵심 종속성  
디바이스가 AWS IoT Greengrass 코어 소프트웨어의 모든 소프트웨어 및 하드웨어 요구 사항을 충족하는지 확인합니다.  
조합(장치 보안 상호 작용)  
Greengrass 클라우드의 그룹에서 연결 정보를 변경하여 Greengrass 코어 장치에서 장치 인증서 관리자 및 IP 감지 기능을 확인합니다. 테스트 그룹은 AWS IoT Greengrass 서버 인증서를 교체하고가 연결을 AWS IoT Greengrass 허용하는지 확인합니다.  
배포(IDT v1.2 및 이전 버전에 필요)  
장치에 Lambda 함수를 배포할 수 있는지 검증합니다.  
Device Certificate Manager(DCM)  
 AWS IoT Greengrass 디바이스 인증서 관리자가 시작 시 서버 인증서를 생성하고 인증서가 만료에 가까워지면 교체할 수 있는지 확인합니다.  
IPD(IP 감지)  
Greengrass 코어 장치에서 IP 주소가 변경될 때 코어 연결 정보가 업데이트되는지 확인합니다. 자세한 내용은 [자동 IP 감지 활성화](gg-core.md#ip-auto-detect) 단원을 참조하십시오.  
로깅  
 AWS IoT Greengrass 로깅 서비스가 Python으로 작성된 사용자 Lambda 함수를 사용하여 로그 파일에 쓸 수 있는지 확인합니다.  
MQTT  
두 Lambda 함수로 라우팅되는 주제에 대한 메시지를 전송하여 AWS IoT Greengrass 메시지 라우터 기능을 확인합니다.  
기본  
가 네이티브(컴파일된) Lambda 함수를 실행할 AWS IoT Greengrass 수 있는지 확인합니다.  
무선(OTA)  
디바이스가 AWS IoT Greengrass 코어 소프트웨어의 OTA 업데이트를 성공적으로 수행할 수 있는지 확인합니다.  
침투  
하드 링크/소프트 링크 보호 및 [seccomp](https://www.kernel.org/doc/Documentation/prctl/seccomp_filter.txt)가 활성화되지 않은 경우 AWS IoT Greengrass 코어 소프트웨어가 시작되지 않는지 확인합니다. 이 그룹은 기타 보안 관련 기능을 확인하는 데도 사용됩니다.  
섀도우  
로컬 섀도우와 섀도우 클라우드의 동기화 기능을 확인합니다.  
스풀러  
MQTT 메시지가 기본 스풀러 구성으로 대기되었는지 확인합니다.  
토큰 교환 서비스(TES)  
가 코어 인증서를 유효한 AWS 자격 증명으로 교환할 AWS IoT Greengrass 수 있는지 확인합니다.  
버전  
 AWS IoT Greengrass 제공된 버전이 사용 중인 AWS IoT 디바이스 테스터 버전과 호환되는지 확인합니다.

**선택적 테스트 그룹**  
이러한 테스트는 선택 사항입니다. 선택적 테스트에 적합한 것으로 선택하면 디바이스 카탈로그에 추가 기능이 포함된 AWS Partner 디바이스가 나열됩니다.    
컨테이너 종속성  
장치가 Lambda 함수를 컨테이너 모드로 실행하는 데 필요한 모든 종속성을 충족하는지 확인합니다.  
HSI(하드웨어 보안 통합)  
제공된 HSI 공유 라이브러리가 하드웨어 보안 모듈(HSM)과 인터페이스할 수 있고 필요한 PKCS\$111 API를 올바로 구현하는지 확인합니다. HSM 및 공유 라이브러리가 CSR에 서명하고 TLS 작업을 수행하며 올바른 키 길이와 퍼블릭 키 알고리즘을 제공할 수 있어야 합니다.  
로컬 리소스 액세스  
다양한 Linux 사용자 및 그룹이 소유한 로컬 파일 및 디렉터리에 대한 액세스를 LRA APIs를 통해 컨테이너화된 Lambda 함수에 AWS IoT Greengrass 제공하여 AWS IoT Greengrass 의 로컬 리소스 액세스(LRA) 기능을 확인합니다. Lambda 함수는 로컬 리소스 액세스 구성을 기반으로 로컬 리소스에 대한 액세스를 허용하거나 거부해야 합니다.  
Network  
Lambda 함수에서 소켓 연결을 설정할 수 있는지 확인합니다. 이러한 소켓 연결은 Greengrass 코어 구성에 기반하여 허용되거나 거부되어야 합니다.

------

# AWS IoT Greengrass 검증 제품군을 실행하기 위한 사전 조건
<a name="dev-tst-prereqs"></a>

이 섹션에서는 용 AWS IoT 디바이스 테스터(IDT)를 사용하여 AWS IoT Greengrass 검증 제품군을 실행 AWS IoT Greengrass 하기 위한 사전 조건을 설명합니다.

## 용 AWS IoT 디바이스 테스터의 최신 버전 다운로드 AWS IoT Greengrass
<a name="install-dev-tst-gg"></a>

[최신 버전](dev-test-versions.md)의 IDT를 다운로드하여 읽기 및 쓰기 권한이 있는 파일 시스템의 위치에 소프트웨어의 압축을 풉니다.

**참고**  
<a name="unzip-package-to-local-drive"></a>여러 사용자가 NFS 디렉터리 또는 Windows 네트워크 공유 폴더와 같은 공유 위치에서 IDT를 실행하는 것은 지원되지 않습니다. 로컬 드라이브에 IDT 패키지의 압축을 풀고 로컬 워크스테이션에서 IDT 바이너리를 실행하는 것이 좋습니다.  
Windows의 경우 260자의 경로 길이 제한이 있습니다. Windows를 사용하는 경우 경로를 260자 제한 아래로 유지하도록 IDT 압축을 `C:\ ` 또는 `D:\` 같은 루트 디렉터리에 풉니다.

## 생성 및 구성 AWS 계정
<a name="config-aws-account-for-idt"></a>

에 IDT를 사용하려면 먼저 다음 단계를 수행해야 AWS IoT Greengrass합니다.

1. [를 생성합니다 AWS 계정.]() 가 이미 있는 경우 2단계로 AWS 계정건너뜁니다.

1. [IDT에 대한 권한을 구성합니다.]()

이러한 계정 권한을 통해 IDT는 사용자를 대신하여 AWS 서비스에 액세스하고 AWS IoT 사물, Greengrass 그룹 및 Lambda 함수와 같은 AWS 리소스를 생성할 수 있습니다.

<a name="idt-aws-credentials"></a>이러한 리소스를 생성하기 위해 용 IDT AWS IoT Greengrass 는 `config.json` 파일에 구성된 AWS 자격 증명을 사용하여 사용자를 대신하여 API를 호출합니다. 이러한 리소스는 테스트 중 다양한 시점에서 프로비저닝됩니다.

**참고**  <a name="free-tier-tests"></a>
대부분의 테스트에서 [Amazon Web Services 프리 티어](https://aws.amazon.com/free)를 사용할 수 있지만 AWS 계정에 가입할 때는 신용 카드를 등록해야 합니다. 자세한 내용은 [계정에 프리 티어가 적용되는데 결제 방법이 필요한 이유는 무엇입니까?](https://aws.amazon.com/premiumsupport/knowledge-center/free-tier-payment-method/)를 참조하세요.

### 1단계: 생성 AWS 계정
<a name="create-aws-account-for-idt"></a>

이 단계에는 AWS 계정을 생성하고 구성합니다. 가 이미 있는 경우 로 AWS 계정건너뜁니다[2단계: IDT에 대한 권한 구성](#configure-idt-permissions).

#### 에 가입 AWS 계정
<a name="sign-up-for-aws"></a>

이 없는 경우 다음 단계를 AWS 계정완료하여 생성합니다.

**에 가입하려면 AWS 계정**

1. [https://portal.aws.amazon.com/billing/signup](https://portal.aws.amazon.com/billing/signup)을 엽니다.

1. 온라인 지시 사항을 따르세요.

   등록 절차 중 전화 또는 텍스트 메시지를 받고 전화 키패드로 확인 코드를 입력하는 과정이 있습니다.

   에 가입하면 AWS 계정*AWS 계정 루트 사용자*이 생성됩니다. 루트 사용자에게는 계정의 모든 AWS 서비스 및 리소스에 액세스할 권한이 있습니다. 보안 모범 사례는 사용자에게 관리 액세스 권한을 할당하고, 루트 사용자만 사용하여 [루트 사용자 액세스 권한이 필요한 작업](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html#root-user-tasks)을 수행하는 것입니다.

AWS 는 가입 프로세스가 완료된 후 확인 이메일을 보냅니다. 언제든지 [https://aws.amazon.com/](https://aws.amazon.com/)으로 이동하고 **내 계정**을 선택하여 현재 계정 활동을 확인하고 계정을 관리할 수 있습니다.

#### 관리자 액세스 권한이 있는 사용자 생성
<a name="create-an-admin"></a>

에 가입한 후 일상적인 작업에 루트 사용자를 사용하지 않도록 관리 사용자를 AWS 계정보호 AWS IAM Identity Center, AWS 계정 루트 사용자활성화 및 생성합니다.

**보안 AWS 계정 루트 사용자**

1.  **루트 사용자를** 선택하고 AWS 계정 이메일 주소를 입력하여 계정 소유자[AWS Management Console](https://console.aws.amazon.com/)로에 로그인합니다. 다음 페이지에서 비밀번호를 입력합니다.

   루트 사용자를 사용하여 로그인하는 데 도움이 필요하면 *AWS Sign-In 사용 설명서*의 [루트 사용자로 로그인](https://docs.aws.amazon.com/signin/latest/userguide/console-sign-in-tutorials.html#introduction-to-root-user-sign-in-tutorial)을 참조하세요.

1. 루트 사용자의 다중 인증(MFA)을 활성화합니다.

   지침은 *IAM 사용 설명서*의 [AWS 계정 루트 사용자(콘솔)에 대한 가상 MFA 디바이스 활성화를 참조하세요](https://docs.aws.amazon.com/IAM/latest/UserGuide/enable-virt-mfa-for-root.html).

**관리자 액세스 권한이 있는 사용자 생성**

1. IAM Identity Center를 활성화합니다.

   지침은 *AWS IAM Identity Center 사용 설명서*의 [AWS IAM Identity Center설정](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-set-up-for-idc.html)을 참조하세요.

1. IAM Identity Center에서 사용자에게 관리 액세스 권한을 부여합니다.

   를 자격 증명 소스 IAM Identity Center 디렉터리 로 사용하는 방법에 대한 자습서는 사용 *AWS IAM Identity Center 설명서*[의 기본값으로 사용자 액세스 구성을 IAM Identity Center 디렉터리](https://docs.aws.amazon.com//singlesignon/latest/userguide/quick-start-default-idc.html) 참조하세요.

**관리 액세스 권한이 있는 사용자로 로그인**
+ IAM IDentity Center 사용자로 로그인하려면 IAM Identity Center 사용자를 생성할 때 이메일 주소로 전송된 로그인 URL을 사용합니다.

  IAM Identity Center 사용자를 사용하여 로그인[하는 데 도움이 필요하면 사용 설명서의 AWS 액세스 포털에 로그인](https://docs.aws.amazon.com/signin/latest/userguide/iam-id-center-sign-in-tutorial.html)을 참조하세요. *AWS Sign-In * 

**추가 사용자에게 액세스 권한 할당**

1. IAM Identity Center에서 최소 권한 적용 모범 사례를 따르는 권한 세트를 생성합니다.

   지침은 *AWS IAM Identity Center 사용 설명서*의 [Create a permission set](https://docs.aws.amazon.com//singlesignon/latest/userguide/get-started-create-a-permission-set.html)를 참조하세요.

1. 사용자를 그룹에 할당하고, 그룹에 Single Sign-On 액세스 권한을 할당합니다.

   지침은 *AWS IAM Identity Center 사용 설명서*의 [그룹 추가](https://docs.aws.amazon.com//singlesignon/latest/userguide/addgroups.html)를 참조하세요.

### 2단계: IDT에 대한 권한 구성
<a name="configure-idt-permissions"></a>

이 단계에서는 용 IDT가 테스트를 실행하고 IDT 사용 데이터를 수집하는 데 AWS IoT Greengrass 사용하는 권한을 구성합니다. AWS Management Console 또는 AWS Command Line Interface (AWS CLI)를 사용하여 IDT에 대한 IAM 정책 및 테스트 사용자를 생성한 다음 사용자에게 정책을 연결할 수 있습니다. IDT에 대한 테스트 사용자를 이미 작성한 경우 [IDT 테스트를 실행하도록 장치 구성](device-config-setup.md) 또는 [선택 사항: 용 IDT용 Docker 컨테이너 구성 AWS IoT Greengrass](docker-config-setup.md) 단계로 건너뜁니다.
+ [IDT에 대한 권한 구성(콘솔)](#configure-idt-permissions-console)
+ [IDT에 대한 권한 구성(AWS CLI)](#configure-idt-permissions-cli)<a name="configure-idt-permissions-console"></a>

**IDT에 대한 권한을 구성하려면(콘솔)**

콘솔을 사용하여 AWS IoT Greengrass용 IDT에 대한 권한을 구성하려면 다음 단계를 수행하세요.

1. [IAM 콘솔](https://console.aws.amazon.com/iam)에 로그인합니다.

1. 특정 권한으로 역할을 생성하는 권한을 부여하는 고객 관리형 정책을 만듭니다.

   1. 탐색 창에서 **정책**을 선택한 후 **정책 생성**을 선택합니다.

   1. **JSON** 탭에서 자리 표시자 콘텐츠를 다음 정책으로 바꿉니다.

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

****  

      ```
      {
          "Version":"2012-10-17",		 	 	 
          "Statement": [
              {
                  "Sid": "ManageRolePoliciesForIDTGreengrass",
                  "Effect": "Allow",
                  "Action": [
                      "iam:DetachRolePolicy",
                      "iam:AttachRolePolicy"
                  ],
                  "Resource": [
                      "arn:aws:iam::*:role/idt-*",
                      "arn:aws:iam::*:role/GreengrassServiceRole"
                  ],
                  "Condition": {
                      "ArnEquals": {
                          "iam:PolicyARN": [
                              "arn:aws:iam::aws:policy/service-role/AWSGreengrassResourceAccessRolePolicy",
                              "arn:aws:iam::aws:policy/service-role/GreengrassOTAUpdateArtifactAccess",
                              "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
                          ]
                      }
                  }
              },
              {
                  "Sid": "ManageRolesForIDTGreengrass",
                  "Effect": "Allow",
                  "Action": [
                      "iam:CreateRole",
                      "iam:DeleteRole",
                      "iam:PassRole",
                      "iam:GetRole"
                  ],
                  "Resource": [
                    "arn:aws:iam::123456789012:role/idt-*",
                    "arn:aws:iam::123456789012:role/GreengrassServiceRole"
                  ]
              }
          ]
      }
      ```

------
**중요**  <a name="policy-grants-role-perms"></a>
다음 정책은 AWS IoT Greengrass에서 IDT에 필요한 역할을 생성하고 관리하는 권한을 부여합니다. 여기에는 다음 AWS 관리형 정책을 연결할 수 있는 권한이 포함됩니다.  
[AWSGreengrassResourceAccessRolePolicy](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/service-role/AWSGreengrassResourceAccessRolePolicy)
[GreengrassOTAUpdateArtifactAccess](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/service-role/GreengrassOTAUpdateArtifactAccess)
[AWSLambdaBasicExecutionRole](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole)

   1. **다음: 태그**를 선택합니다.

   1. **다음: 검토**를 선택합니다.

   1. **이름**에 **IDTGreengrassIAMPermissions**를 입력합니다. **Summary(요약)** 아래에서 정책에 의해 부여된 권한을 검토합니다.

   1. **정책 생성**을 선택합니다.

1. IAM 사용자를 만들고 AWS IoT Greengrass용 IDT에 필요한 권한을 연결합니다.

   1. IAM 사용자를 생성합니다. *IAM 사용 설명서*에서 [IAM 사용자 생성(콘솔)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users_create.html#id_users_create_console)의 1\$15단계를 따르세요.

   1. IAM 사용자에게 권한을 연결합니다.

      1. **권한 설정** 페이지에서 **기존 정책 직접 연결**을 선택합니다.

      1. 이전 단계에서 만든 **IDTGreengrassIAMPermissions** 정책을 검색합니다. 확인란을 선택합니다.

      1. **AWSIoTDeviceTesterForGreengrassFullAccess** 정책을 검색합니다. 확인란을 선택합니다.
**참고**  <a name="AWSIoTDeviceTesterForGreengrassFullAccess"></a>
[AWSIoTDeviceTesterForGreengrassFullAccess](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTDeviceTesterForGreengrassFullAccess)는 IDT가 테스트에 사용되는 AWS 리소스를 생성하고 액세스하는 데 필요한 권한을 정의하는 AWS 관리형 정책입니다. 자세한 내용은 [AWS AWS IoT 디바이스 테스터에 대한 관리형 정책](#idt-managed-policy) 단원을 참조하십시오.

   1. **다음: 태그**를 선택합니다.

   1. **Next: Review(다음: 검토)**를 선택하여 선택 사항의 요약을 봅니다.

   1. **사용자 생성**을 선택합니다.

   1. 사용자의 액세스 키(액세스 키 ID와 비밀 액세스 키)를 보려면 암호와 액세스 키 옆에 있는 **Show(표시)**를 선택합니다. 액세스 키를 저장하려면 **Download .csv(csv 다운로드)**를 선택한 후 안전한 위치에 파일을 저장합니다. 나중에 이 정보를 사용하여 AWS 자격 증명 파일을 구성합니다.

1. <a name="aws-account-config-next-steps"></a>다음 단계: [물리적 장치](device-config-setup.md)를 구성합니다.

 <a name="configure-idt-permissions-cli"></a>

**IDT에 대한 권한을 구성하려면(AWS CLI)**

다음 단계에 따라 AWS CLI 를 사용하여 IDT에 대한 권한을 구성합니다 AWS IoT Greengrass. 콘솔에서 권한을 이미 구성한 경우 [IDT 테스트를 실행하도록 장치 구성](device-config-setup.md) 또는 [선택 사항: 용 IDT용 Docker 컨테이너 구성 AWS IoT Greengrass](docker-config-setup.md) 단계로 건너뜁니다.

1. 아직 설치되지 않은 AWS CLI 경우 컴퓨터에를 설치하고 구성합니다. *AWS Command Line Interface 사용 설명서* [AWS CLI설치](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) 단계를 따르세요.
**참고**  
 AWS CLI 는 명령줄 셸의 서비스와 상호 작용하는 데 사용할 수 있는 AWS 오픈 소스 도구입니다.

1. IDT 및 AWS IoT Greengrass 역할을 관리할 수 있는 권한을 부여하는 고객 관리형 정책을 만듭니다.

------
#### [ Linux, macOS, or Unix ]

   ```
   aws iam create-policy --policy-name IDTGreengrassIAMPermissions --policy-document '{
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Sid": "ManageRolePoliciesForIDTGreengrass",
               "Effect": "Allow",
               "Action": [
                   "iam:DetachRolePolicy",
                   "iam:AttachRolePolicy"
               ],
               "Resource": [
                   "arn:aws:iam::*:role/idt-*",
                   "arn:aws:iam::*:role/GreengrassServiceRole"
               ],
               "Condition": {
                   "ArnEquals": {
                       "iam:PolicyARN": [
                           "arn:aws:iam::aws:policy/service-role/AWSGreengrassResourceAccessRolePolicy",
                           "arn:aws:iam::aws:policy/service-role/GreengrassOTAUpdateArtifactAccess",
                           "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
                       ]
                   }
               }
           },
           {
               "Sid": "ManageRolesForIDTGreengrass",
               "Effect": "Allow",
               "Action": [
                   "iam:CreateRole",
                   "iam:DeleteRole",
                   "iam:PassRole",
                   "iam:GetRole"
               ],
               "Resource": [
                 "arn:aws:iam::123456789012:role/idt-*",
                 "arn:aws:iam::123456789012:role/GreengrassServiceRole"
               ]
           }
       ]
   }'
   ```

------
#### [ Windows command prompt ]

   ```
   aws iam create-policy --policy-name IDTGreengrassIAMPermissions --policy-document '{\"Version\": \"2012-10-17\",		 	 	  \"Statement\": [{\"Sid\": \"ManageRolePoliciesForIDTGreengrass\",\"Effect\": \"Allow\",\"Action\": [\"iam:DetachRolePolicy\", \"iam:AttachRolePolicy\"], \"Resource\": [\"arn:aws:iam::*:role/idt-*\",\"arn:aws:iam::*:role/GreengrassServiceRole\"],\"Condition\": {\"ArnEquals\": {\"iam:PolicyARN\": [\"arn:aws:iam::aws:policy/service-role/AWSGreengrassResourceAccessRolePolicy\",\"arn:aws:iam::aws:policy/service-role/GreengrassOTAUpdateArtifactAccess\",\"arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole\"]}}},{\"Sid\": \"ManageRolesForIDTGreengrass\",\"Effect\": \"Allow\",\"Action\": [\"iam:CreateRole\",\"iam:DeleteRole\", \"iam:PassRole\", \"iam:GetRole\"],\"Resource\": [\"arn:aws:iam::*:role/idt-*\",\"arn:aws:iam::*:role/GreengrassServiceRole\"]}]}'
   ```

**참고**  
Linux, macOS 또는 Unix 터미널 명령과 다른 JSON 구문을 사용하기 때문에 이 단계에는 Windows 명령 프롬프트 예제가 포함되어 있습니다.

------

1. IAM 사용자를 만들고 AWS IoT Greengrass용 IDT에 필요한 권한을 연결합니다.

   1. IAM 사용자를 생성합니다. 이 예제 설정에서 사용자의 이름은 `IDTGreengrassUser`입니다.

      ```
      aws iam create-user --user-name IDTGreengrassUser
      ```

   1. 2단계에서 생성한 `IDTGreengrassIAMPermissions` 정책을 IAM 사용자에게 연결합니다. 명령의 *<account-id>*를의 ID로 바꿉니다 AWS 계정.

      ```
      aws iam attach-user-policy --user-name IDTGreengrassUser --policy-arn arn:aws:iam::<account-id>:policy/IDTGreengrassIAMPermissions
      ```

   1. `AWSIoTDeviceTesterForGreengrassFullAccess` 정책을 IAM 사용자에게 연결합니다.

      ```
      aws iam attach-user-policy --user-name IDTGreengrassUser --policy-arn arn:aws:iam::aws:policy/AWSIoTDeviceTesterForGreengrassFullAccess
      ```
**참고**  <a name="AWSIoTDeviceTesterForGreengrassFullAccess"></a>
[AWSIoTDeviceTesterForGreengrassFullAccess](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTDeviceTesterForGreengrassFullAccess)는 IDT가 테스트에 사용되는 AWS 리소스를 생성하고 액세스하는 데 필요한 권한을 정의하는 AWS 관리형 정책입니다. 자세한 내용은 [AWS AWS IoT 디바이스 테스터에 대한 관리형 정책](#idt-managed-policy) 단원을 참조하십시오.

1. 사용자에 대한 비밀 액세스 키를 만듭니다.

   ```
   aws iam create-access-key --user-name IDTGreengrassUser
   ```

   출력을 안전한 위치에 저장합니다. 나중에이 정보를 사용하여 AWS 자격 증명 파일을 구성합니다.

1. <a name="aws-account-config-next-steps"></a>다음 단계: [물리적 장치](device-config-setup.md)를 구성합니다.

## AWS AWS IoT 디바이스 테스터에 대한 관리형 정책
<a name="idt-managed-policy"></a>

[AWSIoTDeviceTesterForGreengrassFullAccess](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AWSIoTDeviceTesterForGreengrassFullAccess) 관리형 정책을 통해 IDT는 작업을 실행하고 사용량 지표를 수집할 수 있습니다. 이 정책은 다음 IDT 권한을 부여합니다.
+ `iot-device-tester:CheckVersion`. 세트 AWS IoT Greengrass, 테스트 제품군 및 IDT 버전이 호환되는지 확인합니다.
+ `iot-device-tester:DownloadTestSuite`. 테스트 제품군을 다운로드합니다.
+ `iot-device-tester:LatestIdt`. 다운로드할 수 있는 최신 IDT 버전에 대한 정보를 가져옵니다.
+ `iot-device-tester:SendMetrics`. IDT가 테스트에 대해 수집하는 사용량 데이터를 게시합니다.
+ `iot-device-tester:SupportedVersion`. IDT에서 지원하는 AWS IoT Greengrass 및 테스트 제품군 버전의 목록을 가져옵니다. 이 정보는 명령줄 창에 표시됩니다.

# IDT 테스트를 실행하도록 장치 구성
<a name="device-config-setup"></a>

디바이스를 구성하려면 AWS IoT Greengrass 종속성을 설치하고, AWS IoT Greengrass 코어 소프트웨어를 구성하고, 디바이스에 액세스하도록 호스트 컴퓨터를 구성하고, 디바이스에 대한 사용자 권한을 구성해야 합니다.

## 테스트 중인 디바이스에 대한 AWS IoT Greengrass 종속성 확인
<a name="install-gg-dependencies"></a>

용 IDT AWS IoT Greengrass 가 디바이스를 테스트하려면 먼저 [시작하기 AWS IoT Greengrass](https://docs.aws.amazon.com/greengrass/latest/developerguide/gg-gs.html)에 설명된 대로 디바이스를 설정해야 합니다. 지원되는 플랫폼에 대한 자세한 내용은 [지원되는 플랫폼](https://docs.aws.amazon.com/greengrass/latest/developerguide/what-is-gg.html#gg-platforms)을 참조하십시오.

## AWS IoT Greengrass 소프트웨어 구성
<a name="config-gg"></a>

용 IDT는 디바이스의 특정 버전과의 호환성을 AWS IoT Greengrass 테스트합니다 AWS IoT Greengrass. IDT는 디바이스 AWS IoT Greengrass 에서 테스트할 수 있는 두 가지 옵션을 제공합니다.
+ [AWS IoT Greengrass 코어 소프트웨어](what-is-gg.md#gg-core-download-tab)의 한 버전을 다운로드하여 사용합니다. IDT에서 자동으로 해당 소프트웨어를 설치합니다.
+ 디바이스에 이미 설치된 AWS IoT Greengrass 코어 소프트웨어 버전을 사용합니다.

**참고**  
의 각 버전 AWS IoT Greengrass 에는 해당 IDT 버전이 있습니다. 사용 중인 버전에 해당하는 IDT 버전을 다운로드 AWS IoT Greengrass 해야 합니다.

다음 단원에서는 이러한 옵션에 대해 설명합니다. 이러한 옵션 중 하나만 수행해야 합니다.

### 옵션 1: AWS IoT Greengrass 코어 소프트웨어 다운로드 및 이를 사용하도록 AWS IoT 디바이스 테스터 구성
<a name="download-gg"></a>

 AWS IoT Greengrass 코어 소프트웨어 다운로드 페이지에서 [AWS IoT Greengrass 코어 소프트웨어를](what-is-gg.md#gg-core-download-tab) 다운로드할 수 있습니다.

1. 올바른 아키텍처와 Linux 배포를 찾은 다음 **Download(다운로드)**를 선택합니다.

1. tar.gz 파일을 `<device-tester-extract-location>/products/greengrass/ggc`에 복사합니다.

**참고**  
 AWS IoT Greengrass tar.gz 파일의 이름을 변경하지 마십시오. 동일한 운영 체제 및 아키텍처에 대해 이 디렉터리에 여러 파일을 배치하지 마세요. 예를 들어 해당 디렉터리에 `greengrass-linux-armv7l-1.7.1.tar.gz` 파일과 `greengrass-linux-armv7l-1.8.1.tar.gz` 파일이 모두 있으면 테스트가 실패합니다.

### 옵션 2: AWS IoT 디바이스 테스터와 AWS IoT Greengrass 함께의 기존 설치 사용
<a name="existing-gg"></a>

`<device-tester-extract-location>/configs` 폴더에 있는 `device.json` 파일에 `greengrassLocation` 속성을 추가하여 디바이스에 설치된 AWS IoT Greengrass 코어 소프트웨어를 테스트하도록 IDT를 구성합니다. 예제:

```
"greengrassLocation" : "<path-to-greengrass-on-device>"
```

`device.json` 파일에 대한 자세한 내용은 [device.json 구성](set-config.md#device-config)를 참조하세요.

Linux 디바이스에서 AWS IoT Greengrass 코어 소프트웨어의 기본 위치는 입니다`/greengrass`.

**참고**  
디바이스에 시작되지 않은 AWS IoT Greengrass 코어 소프트웨어가 설치되어 있어야 합니다.  
장치에 `ggc_user` 사용자 및 `ggc_group`을 추가했는지 확인합니다. 자세한 내용은 [AWS IoT Greengrass에 대한 환경 설정](https://docs.aws.amazon.com/greengrass/latest/developerguide/module1.html)을 참조하십시오.

## 테스트 대상 장치에 액세스하도록 호스트 컴퓨터 구성
<a name="configure-host"></a>

IDT는 호스트 컴퓨터에서 실행되며, SSH를 사용하여 장치에 연결할 수 있어야 합니다. IDT가 테스트 대상 장치에 대한 SSH 액세스를 획득하도록 허용하는 옵션은 두 가지가 있습니다.

1. 여기에서 설명하는 지침에 따라 SSH 키 페어를 생성하고 해당 키가 암호를 지정하지 않고 테스트 대상 장치에 로그인할 수 있도록 권한을 부여합니다.

1. `device.json` 파일의 각 장치에 사용자 이름 및 암호를 제공합니다. 자세한 내용은 [device.json 구성](set-config.md#device-config) 단원을 참조하십시오.

임의의 SSL 구현을 사용하여 SSH 키를 생성할 수 있습니다. 다음 지침은 [SSH-KEYGEN](https://www.ssh.com/ssh/keygen/) 또는 [ PuTTYgen](https://www.ssh.com/ssh/putty/windows/puttygen)(Windows)을 사용하는 방법을 보여줍니다. 다른 SSL 구현을 사용 중인 경우 해당 구현에 대한 설명서를 참조하십시오.

IDT는 SSH 키를 사용하여 테스트 대상 장치에 인증합니다.

**SSH-KEYGEN을 사용하여 SSH 키를 생성하려면**

1. SSH 키를 생성합니다,

   공개 SSH **ssh-keygen** 명령을 사용하여 SSH 키 페어를 생성할 수 있습니다. 이미 호스트 컴퓨터에 SSH 키 페어가 있는 경우 IDT 전용 SSH 키 페어를 생성하는 것이 가장 좋습니다. 그러면 테스트를 완료한 후 호스트 컴퓨터가 더 이상 암호 없이 장치에 연결할 수 없습니다. 또한 원하는 사용자만 원격 장치에 액세스할 수 있도록 제한할 수 있습니다.
**참고**  
Windows에는 SSH 클라이언트가 설치되어 있지 않습니다. Windows에 SSH 클라이언트 설치에 대한 내용은 [SSH 클라이언트 소프트웨어](https://www.ssh.com/ssh/#sec-Download-client-software) 다운로드를 참조하십시오.

   **ssh-keygen** 명령은 키 페어 저장 이름과 경로를 입력하라는 메시지를 표시합니다. 기본적으로 키 페어 파일은 `id_rsa`(프라이빗 키) 및 `id_rsa.pub`(퍼블릭 키)로 이름 지정됩니다. macOS와 Linux에서 이러한 파일의 기본 위치는 `~/.ssh/`입니다. Windows에서 기본 위치는 `C:\Users\<user-name>\.ssh`입니다.

   메시지가 표시되면 SSH 키를 보호하기 위한 키 구문을 입력합니다. 자세한 내용은 [새 SSH 키 생성](https://www.ssh.com/ssh/keygen/)을 참조하십시오.

1. 테스트 대상 장치에 권한 있는 SSH 키를 추가합니다,

   IDT는 SSH 프라이빗 키를 사용하여 테스트 대상 장치에 로그인해야 합니다. 테스트 대상 장치에 로그인하도록 SSH 프라이빗 키를 승인하려면 호스트 컴퓨터의 **ssh-copy-id** 명령을 사용합니다. 이 명령은 테스트 대상 장치에서 `~/.ssh/authorized_keys` 파일에 퍼블릭 키를 추가합니다. 예제:

   **\$1 ssh-copy-id *<remote-ssh-user>*@*<remote-device-ip>***

   여기서 *remote-ssh-user*는 테스트 대상 장치에 로그인하는 데 사용하는 사용자 이름이고, *remote-device-ip*는 테스트를 실행할 테스트 대상 장치의 IP 주소입니다. 예제:

   **ssh-copy-id pi@192.168.1.5**

   메시지가 표시되면 **ssh-copy-id** 명령에서 지정한 사용자 이름에 대한 암호를 입력합니다.

   **ssh-copy-id**는 퍼블릭 키가 `id_rsa.pub`로 이름 지정되고 기본 위치에 저장된다고 가정합니다(macOS와 Linux에서는 `~/.ssh/`, Windows에서는 `C:\Users\<user-name>\.ssh`) 퍼블릭 키의 이름을 다르게 지정하거나 다른 위치에 저장한 경우, **ssh-copy-id**에 **-i** 옵션을 사용하여 SSH 퍼블릭 키의 정규화된 경로를 지정해야 합니다(예: **ssh-copy-id -i \$1/my/path/myKey.pub**). SSH 키 생성 및 퍼블릭 키 복사에 대한 자세한 내용은 [SSH-COPY-ID](https://www.ssh.com/ssh/copy-id)를 참조하십시오.

**PuTTYgen을 사용하여 SSH 키를 생성하려면(Windows만 해당)**

1. 테스트 대상 장치에 OpenSSH 서버 및 클라이언트가 설치되어 있는지 확인합니다. 자세한 내용은 [OpenSSH](https://www.openssh.com/)를 참조하십시오.

1. 테스트 대상 장치에 [PuTTYgen](https://www.puttygen.com/)을 설치합니다.

1. PuTTYgen을 엽니다.

1. **생성**을 선택하고 마우스를 상자 안으로 이동하여 프라이빗 키를 생성합니다.

1. **Conversions(변환)** 메뉴에서 **Export OpenSSH key(OpenSSH 키 내보내기)**를 선택하고 프라이빗 키를 `.pem` 파일 확장명으로 저장합니다.

1. 테스트 대상 장치에서 `/home/<user>/.ssh/authorized_keys` 파일에 퍼블릭 키를 추가합니다.

   1. PuTTYgen 창에서 퍼블릭 키 텍스트를 복사합니다.

   1. PuTTY를 사용하여 테스트 대상 장치에서 세션을 생성합니다.

      1. 명령 프롬프트 또는 Windows Powershell 창에서 다음 명령을 실행합니다.

         **C:/*<path-to-putty>*/putty.exe -ssh *<user>*@*<dut-ip-address>***

      1. 메시지가 표시되면 장치의 암호를 입력합니다.

      1. vi 또는 다른 텍스트 편집기를 사용하여 테스트 대상 장치의 `/home/<user>/.ssh/authorized_keys` 파일에 퍼블릭 키를 추가합니다.

1. 각 테스트 대상 장치에 대해 사용자 이름, IP 주소, 방금 호스트 컴퓨터에 저장한 프라이빗 키 파일의 경로로 `device.json` 파일을 업데이트합니다. 자세한 내용은 [device.json 구성](set-config.md#device-config) 단원을 참조하십시오. 프라이빗 키에 전체 경로 및 파일 이름을 제공하고 슬래시('/')를 사용해야 합니다. 예를 들어 Windows 경로 `C:\DT\privatekey.pem`의 경우 `device.json` 파일에 `C:/DT/privatekey.pem`을 사용합니다.

## 장치에서 사용자 권한 구성
<a name="root-access"></a>

IDT는 테스트 대상 장치에서 다양한 디렉터리와 파일에 대해 작업을 수행합니다. 이러한 작업 중 일부는 승격된 권한(**sudo** 사용)이 필요합니다. 이러한 작업을 자동화하려면 IDT for가 암호를 입력하라는 메시지 없이 sudo로 명령을 실행할 수 있어야 AWS IoT Greengrass 합니다.

암호 입력 메시지 없이 sudo 액세스를 허용하려면 테스트 대상 장치에서 다음 단계를 수행합니다.

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

**sudo 그룹에 사용자를 추가하려면**

1. 테스트 대상 장치에서 `sudo usermod -aG sudo <username>`을 실행합니다.

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

1. 사용자 이름이 성공적으로 추가되었는지 확인하려면 **sudo echo test**를 실행합니다. 암호 입력 메시지가 표시되지 않으면 사용자가 제대로 구성된 것입니다.

1. `/etc/sudoers` 파일을 열고 파일 끝에 다음 줄을 추가합니다.

   `<ssh-username> ALL=(ALL) NOPASSWD: ALL`

## 선택적 기능을 테스트하도록 장치 구성
<a name="optional-feature-config"></a>

다음 주제에서는 선택적 기능에 대한 IDT 테스트를 실행하도록 장치를 구성하는 방법을 설명합니다. 이러한 기능을 테스트하려는 경우에만 다음 구성 단계를 수행하세요. 그렇지 않은 경우 [AWS IoT Greengrass 검증 제품군을 실행하도록 IDT 설정 구성](set-config.md)를 계속 진행합니다.

**Topics**
+ [테스트 중인 디바이스에 대한 AWS IoT Greengrass 종속성 확인](#install-gg-dependencies)
+ [AWS IoT Greengrass 소프트웨어 구성](#config-gg)
+ [테스트 대상 장치에 액세스하도록 호스트 컴퓨터 구성](#configure-host)
+ [장치에서 사용자 권한 구성](#root-access)
+ [선택적 기능을 테스트하도록 장치 구성](#optional-feature-config)
+ [선택 사항: 용 IDT용 Docker 컨테이너 구성 AWS IoT Greengrass](docker-config-setup.md)
+ [선택 사항: ML 검증을 위해 장치 구성](idt-ml-qualification.md)

# 선택 사항: 용 IDT용 Docker 컨테이너 구성 AWS IoT Greengrass
<a name="docker-config-setup"></a>

AWS IoT Greengrass 는 Docker 컨테이너에서 AWS IoT Greengrass 코어 소프트웨어를 더 쉽게 실행할 수 있도록 Docker 이미지와 Dockerfile을 제공합니다. AWS IoT Greengrass 컨테이너를 설정한 후 IDT 테스트를 실행할 수 있습니다. 현재 AWS IoT Greengrass에서 IDT를 실행하는 데는 x86\$164 도커 아키텍처만 지원됩니다.

이 기능을 사용하려면 IDT v2.3.0 이상이 필요합니다.

IDT 테스트를 실행하도록 Docker 컨테이너를 설정하는 프로세스는에서 제공하는 Docker 이미지 또는 Dockerfile을 사용하는지 여부에 따라 달라집니다 AWS IoT Greengrass.
+ [도커 이미지 사용](#docker-config-setup-docker-image). Docker 이미지에는 AWS IoT Greengrass 코어 소프트웨어 및 종속성이 설치되어 있습니다.
+ [도커 파일 사용](#docker-config-setup-dockerfile). Dockerfile에는 사용자 지정 AWS IoT Greengrass 컨테이너 이미지를 빌드하는 데 사용할 수 있는 소스 코드가 포함되어 있습니다. 다른 플랫폼 아키텍처에서 실행하거나 이미지 크기를 줄이기 위해 이미지를 수정할 수 있습니다.
**참고**  
AWS IoT Greengrass 는 AWS IoT Greengrass 코어 소프트웨어 버전 1.11.1에 대한 Dockerfiles 또는 Docker 이미지를 제공하지 않습니다. 자체 사용자 지정 컨테이너 이미지에서 IDT 테스트를 실행하려면 이미지에에서 제공하는 Dockerfile에 정의된 종속성이 포함되어야 합니다 AWS IoT Greengrass.

Docker 컨테이너 AWS IoT Greengrass 에서를 실행할 때는 다음 기능을 사용할 수 없습니다.<a name="docker-image-unsupported-features"></a>
+ [Greengrass 컨테이너](connectors.md) 모드에서 실행되는 **커넥터** Docker 컨테이너에서 커넥터를 실행하려면 커넥터가 **컨테이너 없음** 모드로 실행되어야 합니다. **컨테이너 없음** 모드를 지원하는 커넥터를 찾으려면 [AWS에서 제공한 Greengrass 커넥터](connectors-list.md) 단원을 참조하십시오. 이러한 커넥터 중 일부에는 **컨테이너 없음**으로 설정해야 하는 격리 모드 파라미터가 있습니다.
+ [로컬 장치 및 볼륨 리소스](access-local-resources.md). Docker 컨테이너에서 실행되는 사용자 정의 Lambda 함수는 코어의 장치 및 볼륨에 직접 액세스해야 합니다.

## 에서 제공하는 Docker 이미지 구성 AWS IoT Greengrass
<a name="docker-config-setup-docker-image"></a>

다음 단계에 따라 IDT 테스트를 실행하도록 AWS IoT Greengrass Docker 이미지를 구성합니다.

**사전 조건**

이 자습서를 시작하기 전에 다음 작업을 수행해야 합니다.<a name="docker-image-prereq-list"></a>
+ 선택한 AWS Command Line Interface (AWS CLI) 버전에 따라 호스트 컴퓨터에 다음 소프트웨어 및 버전을 설치해야 합니다.

------
#### [ AWS CLI version 2 ]
  + [Docker](https://docs.docker.com/install/), 버전 18.09 이상. 이전 버전도 작동할 수 있지만 18.09 이상을 사용하는 것이 좋습니다.
  + AWS CLI 버전 2.0.0 이상.
    +  AWS CLI 버전 2를 설치하려면 [AWS CLI 버전 2 설치를 참조하세요](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2.html).
    + 를 구성하려면 구성을 AWS CLI참조하세요. [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) 
**참고**  
Windows 컴퓨터에서 이후 AWS CLI 버전 2로 업그레이드하려면 [MSI 설치](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2-windows.html) 프로세스를 반복해야 합니다.

------
#### [ AWS CLI version 1 ]
  + [Docker](https://docs.docker.com/install/), 버전 18.09 이상. 이전 버전도 작동할 수 있지만 18.09 이상을 사용하는 것이 좋습니다.
  + [Python](https://www.python.org/downloads/), 버전 3.6 이상.
  + [pip](https://pip.pypa.io/en/stable/installing) 버전 18.1 이상
  + AWS CLI 버전 1.17.10 이상
    +  AWS CLI 버전 1을 설치하려면 [AWS CLI 버전 1 설치를 참조하세요](https://docs.aws.amazon.com/cli/latest/userguide/install-cliv1.html).
    + 를 구성하려면 구성을 AWS CLI참조하세요. [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html) 
    +  AWS CLI 버전 1의 최신 버전으로 업그레이드하려면 다음 명령을 실행합니다.

      ```
      pip install awscli --upgrade --user
      ```
**참고**  
Windows에서 AWS CLI 버전 1의 [MSI 설치를](https://docs.aws.amazon.com/cli/latest/userguide/install-windows.html#msi-on-windows) 사용하는 경우 다음 사항에 유의하세요.  
 AWS CLI 버전 1 설치가 botocore를 설치하지 못하면 [Python 및 pip 설치를](https://docs.aws.amazon.com/cli/latest/userguide/awscli-install-windows.html#awscli-install-windows-pip) 사용해 보세요.
이후 AWS CLI 버전 1로 업그레이드하려면 MSI 설치 프로세스를 반복해야 합니다.

------
+ Amazon Elastic Container Registry(Amazon ECR) 리소스에 액세스하려면 다음 권한을 부여해야 합니다.
  + Amazon ECR을 사용하려면 사용자가 AWS Identity and Access Management (IAM) 정책을 통해 `ecr:GetAuthorizationToken` 권한을 부여해야 레지스트리에 인증하고 Amazon ECR 리포지토리에서 이미지를 푸시하거나 가져올 수 있습니다. 자세한 내용은 *Amazon Elastic Container Registry 사용 설명서*의 [Amazon ECR 리포지토리 정책 예시](https://docs.aws.amazon.com/AmazonECR/latest/userguide/repository-policy-examples.html) 및 [One Amazon ECR 리포지토리 액세스](https://docs.aws.amazon.com/AmazonECR/latest/userguide/security_iam_id-based-policy-examples.html#security_iam_id-based-policy-examples-access-one-bucket)를 참조하십시오.

 

1. 도커 이미지를 다운로드하고 컨테이너를 구성합니다. [Docker Hub](https://hub.docker.com/r/amazon/aws-iot-greengrass) 또는 [Amazon Elastic Container Registry(Amazon ECR)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/what-is-ecr.html)에서 사전 작성 이미지를 다운로드하고 Windows, macOS 및 Linux(x86\$164) 플랫폼에서 이 이미지를 실행할 수 있습니다.

   [1단계: Amazon ECR에서 AWS IoT Greengrass 컨테이너 이미지 가져오기](run-gg-in-docker-container.md#docker-pull-image)에서 Docker 이미지를 다운로드하려면 의 모든 단계를 완료합니다. 그런 다음 이 항목으로 돌아와 구성을 계속합니다.

1. <a name="docker-linux-non-root"></a>Linux 사용자만 해당: IDT를 실행하는 사용자에게 도커 명령을 실행할 권한이 있는지 확인하십시오. 자세한 내용은 도커 설명서의 [도커를 루트가 아닌 사용자로 관리](https://docs.docker.com/install/linux/linux-postinstall/#manage-docker-as-a-non-root-user)를 참조하십시오.

1. <a name="docker-run-gg-container"></a> AWS IoT Greengrass 컨테이너를 실행하려면 운영 체제에 대한 명령을 사용합니다.

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

   ```
   docker run --rm --init -it -d --name aws-iot-greengrass \
   -p 8883:8883 \
   -v <host-path-to-kernel-config-file>:<container-path> \
   <image-repository>:<tag>
   ```
   + *<host-path-to-kernel-config-file>*을 호스트의 커널 구성 파일 경로로 대체하고 *<container-path>*를 볼륨이 컨테이너에 탑재된 경로로 대체합니다.

     호스트의 커널 구성 파일은 일반적으로 `/proc/config.gz` 또는 `/boot/config-<kernel-release-date>`에 있습니다. `uname -r`을 실행하여 *<kernel-release-date>* 값을 확인할 수 있습니다.

     **예:** `/boot/config-<kernel-release-date>`에서 구성 파일을 탑재하려면 다음 명령을 실행합니다.

     ```
     -v /boot/config-4.15.0-74-generic:/boot/config-4.15.0-74-generic \
     ```

     **예:** `proc/config.gz`에서 구성 파일을 탑재하려면 다음 명령을 실행합니다.

     ```
     -v /proc/config.gz:/proc/config.gz \
     ```
   + 명령에서 *<image-repository>*:*<tag>*를 대상 이미지의 리포지토리 및 태그 이름으로 대체합니다.

     **예:** AWS IoT Greengrass 코어 소프트웨어의 최신 버전을 가리키는 방법

     ```
     216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest
     ```

      AWS IoT Greengrass Docker 이미지 목록을 가져오려면 다음 명령을 실행합니다.

     ```
     aws ecr list-images --region us-west-2 --registry-id 216483018798 --repository-name aws-iot-greengrass
     ```

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

   ```
   docker run --rm --init -it -d --name aws-iot-greengrass \
   -p 8883:8883 \
   <image-repository>:<tag>
   ```
   + 명령에서 *<image-repository>*:*<tag>*를 대상 이미지의 리포지토리 및 태그 이름으로 대체합니다.

     **예:** AWS IoT Greengrass 코어 소프트웨어의 최신 버전을 가리키는 방법

     ```
     216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest
     ```

      AWS IoT Greengrass Docker 이미지 목록을 가져오려면 다음 명령을 실행합니다.

     ```
     aws ecr list-images --region us-west-2 --registry-id 216483018798 --repository-name aws-iot-greengrass
     ```

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

   ```
   docker run --rm --init -it -d --name aws-iot-greengrass \
   -p 8883:8883 \
   <image-repository>:<tag>
   ```
   + 명령에서 *<image-repository>*:*<tag>*를 대상 이미지의 리포지토리 및 태그 이름으로 대체합니다.

     **예:** AWS IoT Greengrass 코어 소프트웨어의 최신 버전을 가리키는 방법

     ```
     216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest
     ```

      AWS IoT Greengrass Docker 이미지 목록을 가져오려면 다음 명령을 실행합니다.

     ```
     aws ecr list-images --region us-west-2 --registry-id 216483018798 --repository-name aws-iot-greengrass
     ```

------
**중요**  
IDT를 사용하여 테스트할 때는 일반적인 AWS IoT Greengrass 용도로 이미지를 실행하는 데 사용되는 `--entrypoint /greengrass-entrypoint.sh \` 인수를 포함하지 마십시오.

1. <a name="docker-config-next-steps"></a>다음 단계: [자격 AWS 증명과 `device.json` 파일을 구성합니다](set-config.md).

## 에서 제공하는 dockerfile 구성 AWS IoT Greengrass
<a name="docker-config-setup-dockerfile"></a>

다음 단계에 따라 IDT 테스트를 실행하도록 Dockerfile에서 빌드된 AWS IoT Greengrass Docker 이미지를 구성합니다.

1. [AWS IoT Greengrass Docker 소프트웨어](what-is-gg.md#gg-docker-download)에서 도커 파일 패키지를 호스트 컴퓨터에 다운로드하고 압축을 풉니다.

1. `README.md`를 엽니다. 다음 세 단계에서는 이 파일의 섹션을 참조합니다.

1. **Prerequisites(사전 조건)** 섹션의 요구 사항을 충족하는지 확인합니다.

1. Linux 사용자만 해당: **Enable Symlink and Hardlink Protection(symlink 및 hardlink 보호 활성화)** 및 **Enable IPv4 Network Forwarding(IPv4 네트워크 전달 활성화)** 단계를 완료합니다.

1. Docker 이미지를 작성하려면 **1단계. AWS IoT Greengrass Docker 이미지를 빌드합니다**. 그런 다음 이 항목으로 돌아와 구성을 계속합니다.

1. <a name="docker-run-gg-container"></a> AWS IoT Greengrass 컨테이너를 실행하려면 운영 체제에 대한 명령을 사용합니다.

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

   ```
   docker run --rm --init -it -d --name aws-iot-greengrass \
   -p 8883:8883 \
   -v <host-path-to-kernel-config-file>:<container-path> \
   <image-repository>:<tag>
   ```
   + *<host-path-to-kernel-config-file>*을 호스트의 커널 구성 파일 경로로 대체하고 *<container-path>*를 볼륨이 컨테이너에 탑재된 경로로 대체합니다.

     호스트의 커널 구성 파일은 일반적으로 `/proc/config.gz` 또는 `/boot/config-<kernel-release-date>`에 있습니다. `uname -r`을 실행하여 *<kernel-release-date>* 값을 확인할 수 있습니다.

     **예:** `/boot/config-<kernel-release-date>`에서 구성 파일을 탑재하려면 다음 명령을 실행합니다.

     ```
     -v /boot/config-4.15.0-74-generic:/boot/config-4.15.0-74-generic \
     ```

     **예:** `proc/config.gz`에서 구성 파일을 탑재하려면 다음 명령을 실행합니다.

     ```
     -v /proc/config.gz:/proc/config.gz \
     ```
   + 명령에서 *<image-repository>*:*<tag>*를 대상 이미지의 리포지토리 및 태그 이름으로 대체합니다.

     **예:** AWS IoT Greengrass 코어 소프트웨어의 최신 버전을 가리키는 방법

     ```
     216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest
     ```

      AWS IoT Greengrass Docker 이미지 목록을 가져오려면 다음 명령을 실행합니다.

     ```
     aws ecr list-images --region us-west-2 --registry-id 216483018798 --repository-name aws-iot-greengrass
     ```

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

   ```
   docker run --rm --init -it -d --name aws-iot-greengrass \
   -p 8883:8883 \
   <image-repository>:<tag>
   ```
   + 명령에서 *<image-repository>*:*<tag>*를 대상 이미지의 리포지토리 및 태그 이름으로 대체합니다.

     **예:** AWS IoT Greengrass 코어 소프트웨어의 최신 버전을 가리키는 방법

     ```
     216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest
     ```

      AWS IoT Greengrass Docker 이미지 목록을 가져오려면 다음 명령을 실행합니다.

     ```
     aws ecr list-images --region us-west-2 --registry-id 216483018798 --repository-name aws-iot-greengrass
     ```

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

   ```
   docker run --rm --init -it -d --name aws-iot-greengrass \
   -p 8883:8883 \
   <image-repository>:<tag>
   ```
   + 명령에서 *<image-repository>*:*<tag>*를 대상 이미지의 리포지토리 및 태그 이름으로 대체합니다.

     **예:** AWS IoT Greengrass 코어 소프트웨어의 최신 버전을 가리키는 방법

     ```
     216483018798.dkr.ecr.us-west-2.amazonaws.com/aws-iot-greengrass:latest
     ```

      AWS IoT Greengrass Docker 이미지 목록을 가져오려면 다음 명령을 실행합니다.

     ```
     aws ecr list-images --region us-west-2 --registry-id 216483018798 --repository-name aws-iot-greengrass
     ```

------
**중요**  
IDT를 사용하여 테스트할 때는 일반적인 AWS IoT Greengrass 용도로 이미지를 실행하는 데 사용되는 `--entrypoint /greengrass-entrypoint.sh \` 인수를 포함하지 마십시오.

1. <a name="docker-config-next-steps"></a>다음 단계: [자격 AWS 증명과 `device.json` 파일을 구성합니다](set-config.md).

## 용 IDT에 대한 Docker 컨테이너 설정 문제 해결 AWS IoT Greengrass
<a name="docker-config-setup-troubleshooting"></a>

다음 정보를 사용하여 AWS IoT Greengrass 테스트용 IDT용 Docker 컨테이너 실행 관련 문제를 해결할 수 있습니다.

### WARNING: Error loading config file:/home/user/.docker/config.json - stat /home/<user>/.docker/config.json: permission denied
<a name="docker-config-permissions-linux"></a>

Linux에서 `docker` 명령을 실행할 때 이 오류가 발생하면 다음 명령을 실행합니다. 다음 명령에서 *<user>*를 IDT를 실행하는 사용자로 대체합니다.

```
sudo chown <user>:<user> /home/<user>/.docker -R
sudo chmod g+rwx /home/<user>/.docker -R
```

# 선택 사항: ML 검증을 위해 장치 구성
<a name="idt-ml-qualification"></a>

용 IDT AWS IoT Greengrass 는 기계 학습(ML) 검증 테스트를 제공하여 디바이스가 클라우드 훈련 모델을 사용하여 로컬에서 ML 추론을 수행할 수 있는지 검증합니다.

ML 검증 테스트를 실행하려면 먼저 [IDT 테스트를 실행하도록 장치 구성](device-config-setup.md)에 설명된 대로 장치를 구성해야 합니다. 그런 다음 이 주제의 단계를 수행하여 실행할 ML 프레임워크에 대한 종속 항목을 설치합니다.

ML 검증 테스트를 실행하려면 IDT v3.1.0 이상이 필요합니다.

## ML 프레임워크 종속 항목 설치
<a name="ml-qualification-framework-dependencies"></a>

모든 ML 프레임워크 종속 항목은 `/usr/local/lib/python3.x/site-packages` 디렉터리 아래에 설치해야 합니다. 올바른 디렉터리에 설치되도록 하려면 종속 항목을 설치할 때 `sudo` 루트 권한을 사용하는 것이 좋습니다. 가상 환경은 검증 테스트에서 지원되지 않습니다.

**참고**  
[컨테이너화](lambda-group-config.md#lambda-containerization-considerations)(**Greengrass 컨테이너** 모드)로 실행되는 Lambda 함수를 테스트하는 경우 `/usr/local/lib/python3.x` 아래에 Python 라이브러리에 대한 심볼릭 링크를 생성하는 것은 지원되지 않습니다. 오류를 방지하려면 올바른 디렉터리 아래에 종속 항목을 설치해야 합니다.

대상 프레임워크에 대한 종속 항목을 설치하는 단계를 따르세요.
+ [MXNet 종속성 설치](#ml-qualification-mxnet-dependencies)
+ [TensorFlow 종속 항목 설치](#ml-qualification-tensorflow-dependencies)
+ [DLR 종속 항목 설치](#ml-qualification-dlr-dependencies)

 

## Apache MXNet 종속 항목 설치
<a name="ml-qualification-mxnet-dependencies"></a>

<a name="test-framework-dependencies"></a>이 프레임워크에 대한 IDT 검증 테스트에는 다음과 같은 종속 항목이 있습니다.
+ <a name="ml-qualification-python-req"></a>Python 3.6 또는 Python 3.7.
**참고**  <a name="python-symlink-command"></a>
Python 3.6을 사용하고 있다면 Python 3.7에서 Python 3.6 바이너리로의 심볼 링크를 생성해야 합니다. 이렇게 하면 AWS IoT Greengrass에 대한 Python 요구 사항을 충족하도록 장치가 구성됩니다. 예시:  

  ```
  sudo ln -s path-to-python-3.6/python3.6 path-to-python-3.7/python3.7
  ```
+ Apache MXNet v1.2.1 이상.
+ NumPy. 버전은 MXNet 버전과 호환되어야 합니다.

### MXnet 설치
<a name="ml-qualification-mxnet-install"></a>

MXNet 설명서의 지침에 따라 [MXNet을 설치](https://mxnet.apache.org/get_started/?platform=linux&language=python&processor=cpu&environ=pip&)합니다.

**참고**  
<a name="run-python3-commands"></a>Python 2.x와 Python 3.x가 모두 장치에 설치되어 있는 경우, 종속 항목을 설치하기 위해 실행하는 명령에서 Python 3.x를 사용합니다.

### MXNet 설치 검증
<a name="ml-qualification-mxnet-validate"></a>

다음 옵션 중 하나를 선택하여 MXNet 설치를 검증합니다.

#### 옵션 1: 장치에 SSH 및 스크립트 실행
<a name="ml-qualification-validate-mxnet-option-1"></a>

1. <a name="ssh-validate-framework-install-ssh"></a>장치에 SSH합니다.

1. <a name="ssh-validate-framework-install-run-scripts"></a>종속 항목이 올바르게 설치되었는지 확인하려면 다음 스크립트를 실행합니다.

   ```
   sudo python3.7 -c "import mxnet; print(mxnet.__version__)"
   ```

   ```
   sudo python3.7 -c "import numpy; print(numpy.__version__)"
   ```

   <a name="ssh-passed-mldependencies"></a>출력은 버전 번호를 인쇄하고 스크립트는 오류 없이 종료되어야 합니다.

#### 옵션 2: IDT 종속 항목 테스트 실행
<a name="ml-qualification-validate-mxnet-option-2"></a>

1. <a name="idt-validate-framework-install-check-config"></a>`device.json`이 ML 검증에 대해 구성되어 있는지 확인합니다. 자세한 내용은 [ML 검증을 위해 device.json 구성](set-config.md#device-json-ml-qualification) 단원을 참조하십시오.

1. <a name="idt-validate-framework-install-run-test"></a>프레임워크에 대한 종속 항목 테스트를 실행합니다.

   ```
   devicetester_[linux | mac | win_x86-64] run-suite --group-id mldependencies --test-id mxnet_dependency_check
   ```

   <a name="idt-passed-mldependencies"></a>테스트 요약에 `mldependencies`에 대한 `PASSED` 결과가 표시됩니다.

 

## TensorFlow 종속 항목 설치
<a name="ml-qualification-tensorflow-dependencies"></a>

<a name="test-framework-dependencies"></a>이 프레임워크에 대한 IDT 검증 테스트에는 다음과 같은 종속 항목이 있습니다.
+ <a name="ml-qualification-python-req"></a>Python 3.6 또는 Python 3.7.
**참고**  <a name="python-symlink-command"></a>
Python 3.6을 사용하고 있다면 Python 3.7에서 Python 3.6 바이너리로의 심볼 링크를 생성해야 합니다. 이렇게 하면 AWS IoT Greengrass에 대한 Python 요구 사항을 충족하도록 장치가 구성됩니다. 예시:  

  ```
  sudo ln -s path-to-python-3.6/python3.6 path-to-python-3.7/python3.7
  ```
+ TensorFlow 1.x.

### TensorFlow 설치
<a name="ml-qualification-tensorflow-install"></a>

TensorFlow 설명서의 지침에 따라 [pip](https://www.tensorflow.org/install/pip)를 통해 또는 [소스에서](https://www.tensorflow.org/install/source) TensorFlow 1.x를 설치합니다.

**참고**  
<a name="run-python3-commands"></a>Python 2.x와 Python 3.x가 모두 장치에 설치되어 있는 경우, 종속 항목을 설치하기 위해 실행하는 명령에서 Python 3.x를 사용합니다.

### TensorFlow 설치 검증
<a name="ml-qualification-tensorflow-validate"></a>

다음 옵션 중 하나를 선택하여 TensorFlow 설치를 검증합니다.

#### 옵션 1: 장치에 SSH 및 스크립트 실행
<a name="ml-qualification-validate-tensorflow-option-1"></a>

1. <a name="ssh-validate-framework-install-ssh"></a>장치에 SSH합니다.

1. 종속 항목이 올바르게 설치되었는지 확인하려면 다음 스크립트를 실행합니다.

   ```
   sudo python3.7 -c "import tensorflow; print(tensorflow.__version__)"
   ```

   <a name="ssh-passed-mldependencies"></a>출력은 버전 번호를 인쇄하고 스크립트는 오류 없이 종료되어야 합니다.

#### 옵션 2: IDT 종속 항목 테스트 실행
<a name="ml-qualification-validate-tensorflow-option-2"></a>

1. <a name="idt-validate-framework-install-check-config"></a>`device.json`이 ML 검증에 대해 구성되어 있는지 확인합니다. 자세한 내용은 [ML 검증을 위해 device.json 구성](set-config.md#device-json-ml-qualification) 단원을 참조하십시오.

1. <a name="idt-validate-framework-install-run-test"></a>프레임워크에 대한 종속 항목 테스트를 실행합니다.

   ```
   devicetester_[linux | mac | win_x86-64] run-suite --group-id mldependencies --test-id tensorflow_dependency_check
   ```

   <a name="idt-passed-mldependencies"></a>테스트 요약에 `mldependencies`에 대한 `PASSED` 결과가 표시됩니다.

 

## Amazon SageMaker AI Neo DLR(Deep Learning Runtime) 종속성 설치
<a name="ml-qualification-dlr-dependencies"></a>

<a name="test-framework-dependencies"></a>이 프레임워크에 대한 IDT 검증 테스트에는 다음과 같은 종속 항목이 있습니다.
+ <a name="ml-qualification-python-req"></a>Python 3.6 또는 Python 3.7.
**참고**  <a name="python-symlink-command"></a>
Python 3.6을 사용하고 있다면 Python 3.7에서 Python 3.6 바이너리로의 심볼 링크를 생성해야 합니다. 이렇게 하면 AWS IoT Greengrass에 대한 Python 요구 사항을 충족하도록 장치가 구성됩니다. 예시:  

  ```
  sudo ln -s path-to-python-3.6/python3.6 path-to-python-3.7/python3.7
  ```
+ SageMaker AI Neo DLR.
+ numpy.

DLR 테스트 종속 항목을 설치한 후에는 [모델을 컴파일](#ml-qualification-dlr-compile-model)해야 합니다.

### DLR 설치
<a name="ml-qualification-dlr-install"></a>

MXNet 설명서의 지침에 따라 [Neo DLR을 설치](https://neo-ai-dlr.readthedocs.io/en/latest/install.html#building-on-linux)합니다.

**참고**  
<a name="run-python3-commands"></a>Python 2.x와 Python 3.x가 모두 장치에 설치되어 있는 경우, 종속 항목을 설치하기 위해 실행하는 명령에서 Python 3.x를 사용합니다.

### DLR 설치 검증
<a name="ml-qualification-dlr-validate"></a>

다음 옵션 중 하나를 선택하여 DLR 설치를 검증합니다.

#### 옵션 1: 장치에 SSH 및 스크립트 실행
<a name="ml-qualification-validate-dlr-option-1"></a>

1. <a name="ssh-validate-framework-install-ssh"></a>장치에 SSH합니다.

1. <a name="ssh-validate-framework-install-run-scripts"></a>종속 항목이 올바르게 설치되었는지 확인하려면 다음 스크립트를 실행합니다.

   ```
   sudo python3.7 -c "import dlr; print(dlr.__version__)"
   ```

   ```
   sudo python3.7 -c "import numpy; print(numpy.__version__)"
   ```

   <a name="ssh-passed-mldependencies"></a>출력은 버전 번호를 인쇄하고 스크립트는 오류 없이 종료되어야 합니다.

#### 옵션 2: IDT 종속 항목 테스트 실행
<a name="ml-qualification-validate-dlr-option-2"></a>

1. <a name="idt-validate-framework-install-check-config"></a>`device.json`이 ML 검증에 대해 구성되어 있는지 확인합니다. 자세한 내용은 [ML 검증을 위해 device.json 구성](set-config.md#device-json-ml-qualification) 단원을 참조하십시오.

1. <a name="idt-validate-framework-install-run-test"></a>프레임워크에 대한 종속 항목 테스트를 실행합니다.

   ```
   devicetester_[linux | mac | win_x86-64] run-suite --group-id mldependencies --test-id dlr_dependency_check
   ```

   <a name="idt-passed-mldependencies"></a>테스트 요약에 `mldependencies`에 대한 `PASSED` 결과가 표시됩니다.

## DLR 모델 컴파일
<a name="ml-qualification-dlr-compile-model"></a>

ML 검증 테스트에 DLR 모델을 사용하려면 먼저 DLR 모델을 컴파일해야 합니다. 단계에서 다음 옵션 중 하나를 선택합니다.

### 옵션 1: Amazon SageMaker AI를 사용하여 모델 컴파일
<a name="ml-qualification-compile-dlr-option-1"></a>

다음 단계에 따라 SageMaker AI를 사용하여 IDT에서 제공하는 ML 모델을 컴파일합니다. 이 모델은 Apache MXNet을 사용하여 사전 교육되어 있습니다.

1. 디바이스 유형이 SageMaker AI에서 지원되는지 확인합니다. 자세한 내용은 Amazon SageMaker AI API 참조의 [대상 디바이스 옵션을](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_OutputConfig.html#sagemaker-Type-OutputConfig-TargetDevice) 참조하세요. *Amazon SageMaker * 현재 SageMaker AI에서 디바이스 유형을 지원하지 않는 경우의 단계를 따릅니다[옵션 2: TVM을 사용하여 DLR 모델 컴파일](#ml-qualification-compile-dlr-option-2).
**참고**  
SageMaker AI에서 컴파일한 모델로 DLR 테스트를 실행하는 데 4\$15분이 걸릴 수 있습니다. 이 시간 동안 IDT를 중지하지 마시기 바랍니다.

1. <a name="compile-dlr-download-uncompiled-model"></a>DLR용 컴파일되지 않은 사전 교육된 MXNet 모델이 포함된 tarball 파일을 다운로드합니다.
   + [dlr-noncompiled-model-1.0.tar.gz](https://docs.aws.amazon.com/greengrass/latest/developerguide/download-dlr-noncompiled-model-1.0.html)

1. <a name="compile-dlr-decompress-uncompiled-model"></a>tarball의 압축을 풉니다. 이 명령은 다음과 같은 디렉터리 구조를 생성합니다.  
![\[resnet18 디렉터리에는 3개의 파일이 있습니다.\]](http://docs.aws.amazon.com/ko_kr/greengrass/v1/developerguide/images/idt/idt-ml-qualification-dlr-uncompiled.png)

1. `resnet18` 디렉터리에서 `synset.txt`를 이동합니다. 새 위치를 기록해 둡니다. 나중에 컴파일된 모델 디렉터리에 이 파일을 복사합니다.

1. `resnet18` 디렉터리의 내용을 압축합니다.

   ```
   tar cvfz model.tar.gz resnet18v1-symbol.json resnet18v1-0000.params
   ```

1. 압축된 파일을의 Amazon S3 버킷에 업로드 AWS 계정한 다음 [모델 컴파일(콘솔)](https://docs.aws.amazon.com/sagemaker/latest/dg/neo-job-compilation-console.html)의 단계에 따라 컴파일 작업을 생성합니다.

   1. **입력 구성**에 다음 값을 사용합니다.
      + **데이터 입력 구성**에 `{"data": [1, 3, 224, 224]}`를 입력합니다.
      + **기계 학습 프레임워크**에서 `MXNet`을 선택합니다.

   1. **출력 구성**에 다음 값을 사용합니다.
      + **S3 출력 위치**에 컴파일된 모델을 저장할 Amazon S3 버킷 또는 폴더의 경로를 입력합니다.
      + **대상 장치**에서 장치 유형을 선택합니다.

1. 지정한 출력 위치에서 컴파일된 모델을 다운로드한 다음 파일의 압축을 풉니다.

1. `synset.txt`를 컴파일된 모델 디렉터리에 복사합니다.

1. 컴파일된 모델 디렉터리의 이름을 `resnet18`로 변경합니다.

   컴파일된 모델 디렉터리는 디렉터리 구조가 다음과 같아야 합니다.  
![\[resnet18 컴파일된 모델 디렉터리에 4개의 파일이 포함되어 있습니다.\]](http://docs.aws.amazon.com/ko_kr/greengrass/v1/developerguide/images/idt/idt-ml-qualification-dlr-compiled-sm.png)

### 옵션 2: TVM을 사용하여 DLR 모델 컴파일
<a name="ml-qualification-compile-dlr-option-2"></a>

다음 단계에 따라 TVM을 사용하여 IDT에서 제공하는 ML 모델을 컴파일합니다. 이 모델은 Apache MXNet을 사용하여 사전 교육되어 있으므로 모델을 컴파일하는 컴퓨터나 장치에 MXNet을 설치해야 합니다. MXNet을 설치하려면 [ MXNet 설명서](https://mxnet.apache.org/get_started/?platform=linux&language=python&processor=cpu&environ=pip&)의 지침을 따르세요.

**참고**  
대상 장치에서 모델을 컴파일하는 것이 좋습니다. 이 방법은 선택 사항이지만 호환성을 보장하고 잠재적인 문제를 완화하는 데 도움이 될 수 있습니다.

 

1. <a name="compile-dlr-download-uncompiled-model"></a>DLR용 컴파일되지 않은 사전 교육된 MXNet 모델이 포함된 tarball 파일을 다운로드합니다.
   + [dlr-noncompiled-model-1.0.tar.gz](https://docs.aws.amazon.com/greengrass/latest/developerguide/download-dlr-noncompiled-model-1.0.html)

1. <a name="compile-dlr-decompress-uncompiled-model"></a>tarball의 압축을 풉니다. 이 명령은 다음과 같은 디렉터리 구조를 생성합니다.  
![\[resnet18 디렉터리에는 3개의 파일이 있습니다.\]](http://docs.aws.amazon.com/ko_kr/greengrass/v1/developerguide/images/idt/idt-ml-qualification-dlr-uncompiled.png)

1. TVM 설명서의 지침에 따라 [플랫폼에 대한 소스에서 TVM을 빌드하고 설치](https://docs.tvm.ai/install/from_source.html)합니다.

1. TVM이 빌드된 후 resnet18 모델에 대한 TVM 컴파일을 실행합니다. 다음 단계는 TVM 설명서의 [ 딥 러닝 모델 컴파일을 위한 빠른 시작 자습서](https://tvm.apache.org/docs/tutorial/relay_quick_start.html#sphx-glr-tutorials-get-started-relay-quick-start-py)를 기반으로 합니다.

   1. 복제된 TVM 리포지토리에서 `relay_quick_start.py` 파일을 엽니다.

   1. [릴레이의 신경망을 정의](https://tvm.apache.org/docs/tutorial/relay_quick_start.html#define-neural-network-in-relay)하는 코드를 업데이트합니다. 다음 옵션 중 하나를 사용할 수 있습니다.
      + 옵션 1: `mxnet.gluon.model_zoo.vision.get_model`을 사용하여 릴레이 모듈 및 파라미터를 가져옵니다.

        ```
        from mxnet.gluon.model_zoo.vision import get_model
        block = get_model('resnet18_v1', pretrained=True)
        mod, params = relay.frontend.from_mxnet(block, {"data": data_shape})
        ```
      + 옵션 2: 1단계에서 다운로드한 컴파일되지 않은 모델에서 `relay_quick_start.py` 파일과 동일한 디렉터리에 다음 파일을 복사합니다. 이러한 파일에는 릴레이 모듈 및 파라미터가 포함되어 있습니다.
        + `resnet18v1-symbol.json`
        + `resnet18v1-0000.params`

   1. 다음 코드를 사용하도록 [컴파일된 모듈을 저장하고 로드](https://tvm.apache.org/docs/tutorial/relay_quick_start.html#save-and-load-compiled-module)하는 코드를 업데이트합니다.

      ```
      from tvm.contrib import util
      path_lib = "deploy_lib.so"
      #  Export the model library based on your device architecture
      lib.export_library("deploy_lib.so", cc="aarch64-linux-gnu-g++")
      with open("deploy_graph.json", "w") as fo:
          fo.write(graph)
      with open("deploy_param.params", "wb") as fo:
          fo.write(relay.save_param_dict(params))
      ```

   1. 모델을 빌드합니다.

      ```
      python3 tutorials/relay_quick_start.py --build-dir ./model
      ```

      이 명령은 다음과 같은 파일을 생성합니다.
      + `deploy_graph.json`
      + `deploy_lib.so`
      + `deploy_param.params`

1. 생성된 모델 파일을 `resnet18`이라는 디렉터리에 복사합니다. 이 디렉터리는 컴파일된 모델 디렉터리입니다.

1. 컴파일된 모델 디렉터리를 호스트 컴퓨터에 복사합니다. 그런 다음 1단계에서 다운로드한 컴파일되지 않은 모델에서 `synset.txt`를 컴파일된 모델 디렉터리에 복사합니다.

   컴파일된 모델 디렉터리는 디렉터리 구조가 다음과 같아야 합니다.  
![\[resnet18 컴파일된 모델 디렉터리에 4개의 파일이 포함되어 있습니다.\]](http://docs.aws.amazon.com/ko_kr/greengrass/v1/developerguide/images/idt/idt-ml-qualification-dlr-compiled-tvm.png)

그런 다음 자격 [AWS 증명과 `device.json` 파일을 구성합니다](set-config.md).

# AWS IoT Greengrass 검증 제품군을 실행하도록 IDT 설정 구성
<a name="set-config"></a>

테스트를 실행하기 전에 호스트 컴퓨터에서 AWS 자격 증명 및 디바이스에 대한 설정을 구성해야 합니다.

## 자격 AWS 증명 구성
<a name="cfg-aws-gg"></a>

`<device-tester-extract-location> /configs/config.json` 파일에서 IAM 사용자 보안 인증을 구성해야 합니다. 에서 생성된 AWS IoT Greengrass 사용자의 IDT에 대한 자격 증명을 사용합니다[생성 및 구성 AWS 계정](dev-tst-prereqs.md#config-aws-account-for-idt). 두 가지 방법 중 하나로 자격 증명을 지정할 수 있습니다.
+ 보안 인증 파일
+ 환경 변수

### AWS 자격 증명 파일을 사용하여 자격 증명 구성
<a name="config-cred-file"></a>

IDT는 AWS CLI와 동일한 자격 증명 파일을 사용합니다. 자세한 내용은 [구성 및 자격 증명 파일](https://docs.aws.amazon.com/cli/latest/userguide/cli-config-files.html)을 참조하십시오.

자격 증명 파일의 위치는 사용하는 운영 체제에 따라 달라집니다.
+ macOS, Linux의 경우: `~/.aws/credentials`
+ Windows: `C:\Users\UserName\.aws\credentials`

다음 형식으로 자격 AWS 증명을 `credentials` 파일에 추가합니다.

```
[default]
aws_access_key_id = <your_access_key_id>
aws_secret_access_key = <your_secret_access_key>
```

`credentials` 파일의 AWS 자격 증명을 사용하도록 IDT AWS IoT Greengrass 를 구성하려면 다음과 같이 `config.json` 파일을 편집합니다.

```
{
	"awsRegion": "us-west-2",
	"auth": {
		"method": "file",
		"credentials": {
			"profile": "default"
		}
	}
}
```

**참고**  
`default` AWS 프로필을 사용하지 않는 경우 `config.json` 파일에서 프로필 이름을 변경해야 합니다. 자세한 내용은 [명명된 프로필](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-profiles.html)을 참조하십시오.

### 환경 변수를 사용하여 AWS 자격 증명 구성
<a name="config-env-vars"></a>

환경 변수는 운영 체제에서 유지 관리하고 시스템 명령에서 사용하는 변수입니다. 이들은 SSH 세션을 닫으면 저장되지 않습니다. 용 IDT AWS IoT Greengrass 는 `AWS_ACCESS_KEY_ID` 및 `AWS_SECRET_ACCESS_KEY` 환경 변수를 사용하여 AWS 자격 증명을 저장할 수 있습니다.

Linux, macOS 또는 Unix에서 이러한 변수를 설정하려면 **export**를 사용합니다.

```
export AWS_ACCESS_KEY_ID=<your_access_key_id>
export AWS_SECRET_ACCESS_KEY=<your_secret_access_key>
```

Windows에서 이러한 변수를 설정하려면 **set**을 사용합니다.

```
set AWS_ACCESS_KEY_ID=<your_access_key_id>
set AWS_SECRET_ACCESS_KEY=<your_secret_access_key>
```

환경 변수를 사용하도록 IDT를 구성하려면 `config.json` 파일에서 `auth` 섹션을 편집합니다. 다음 예를 참고하세요

```
{
	"awsRegion": "us-west-2",
	"auth": {
		"method": "environment"
	}
}
```

## device.json 구성
<a name="device-config"></a>

IDT for 에는 AWS 자격 증명 외에도 테스트가 실행되는 디바이스에 대한 정보(예: IP 주소, 로그인 정보, 운영 체제 및 CPU 아키텍처)가 AWS IoT Greengrass 필요합니다.

` <device_tester_extract_location>/configs/device.json`에 있는 `device.json` 템플릿을 사용하여 이 정보를 제공해야 합니다.

------
#### [ Physical device ]

```
[
  {
    "id": "<pool-id>",
    "sku": "<sku>",
    "features": [
      {
        "name": "os",
        "value": "linux | ubuntu | openwrt"
      },
      {
        "name": "arch",
        "value": "x86_64 | armv6l | armv7l | aarch64"
      },
      {
        "name": "container",
        "value": "yes | no"
      },
      {
        "name": "docker",
        "value": "yes | no"
      },
      {
        "name": "streamManagement",
        "value": "yes | no"
      },
      {
        "name": "hsi",
        "value": "yes | no"
      },
      {
        "name": "ml",
        "value": "mxnet | tensorflow | dlr | mxnet,dlr,tensorflow | no"
      },
      *********** Remove the section below if the device is not qualifying for ML **************,
      {
        "name": "mlLambdaContainerizationMode",
        "value": "container | process | both"
      },
      {
        "name": "processor",
        "value": "cpu | gpu"
      },
      ******************************************************************************************
    ],
    *********** Remove the section below if the device is not qualifying for HSI ***************
    "hsm": {
      "p11Provider": "/path/to/pkcs11ProviderLibrary",
      "slotLabel": "<slot_label>",
      "slotUserPin": "<slot_pin>",
      "privateKeyLabel": "<key_label>",
      "openSSLEngine": "/path/to/openssl/engine"
    },
    ********************************************************************************************
    *********** Remove the section below if the device is not qualifying for ML ****************
    "machineLearning": {
      "dlrModelPath": "/path/to/compiled/dlr/model",
      "environmentVariables": [
        {
          "key": "<environment-variable-name>",
          "value": "<Path:$PATH>"
        }
      ],
      "deviceResources": [
        {
          "name": "<resource-name>",
          "path": "<resource-path>",
          "type": "device | volume"
        }
      ]
    },
    ******************************************************************************************
    "kernelConfigLocation": "",
    "greengrassLocation": "",
    "devices": [
      {
        "id": "<device-id>",
        "connectivity": {
          "protocol": "ssh",
          "ip": "<ip-address>",
          "port": 22,
          "auth": {
            "method": "pki | password",
            "credentials": {
              "user": "<user-name>",
              "privKeyPath": "/path/to/private/key",
              "password": "<password>"
            }
          }
        }
      }
    ]
  }
]
```

**참고**  
`method`가 `pki`로 설정된 경우에만 `privKeyPath`를 지정합니다.  
`method`가 `password`로 설정된 경우에만 `password`를 지정합니다.

------
#### [ Docker container ]

```
[
  {
    "id": "<pool-id>",
    "sku": "<sku>",
    "features": [
      {
        "name": "os",
        "value": "linux | ubuntu | openwrt"
      },
      {
        "name": "arch",
        "value": "x86_64"
      },
      {
        "name": "container",
        "value": "no"
      },
      {
        "name": "docker",
        "value": "no"
      },
      {
        "name": "streamManagement",
        "value": "yes | no"
      },
      {
        "name": "hsi",
        "value": "no"
      },
      {
        "name": "ml",
        "value": "mxnet | tensorflow | dlr | mxnet,dlr,tensorflow | no"
      },
      *********** Remove the section below if the device is not qualifying for ML **************,
      {
        "name": "mlLambdaContainerizationMode",
        "value": "process"
      },
      {
        "name": "processor",
        "value": "cpu | gpu"
      },
      ******************************************************************************************
    ],
    *********** Remove the section below if the device is not qualifying for ML ****************
    "machineLearning": {
      "dlrModelPath": "/path/to/compiled/dlr/model",
      "environmentVariables": [
        {
          "key": "<environment-variable-name>",
          "value": "<Path:$PATH>"
        }
      ],
      "deviceResources": [
        {
          "name": "<resource-name>",
          "path": "<resource-path>",
          "type": "device | volume"
        }
      ]
    },
    ******************************************************************************************
    "kernelConfigLocation": "",
    "greengrassLocation": "",
    "devices": [
      {
        "id": "<device-id>",
        "connectivity": {
          "protocol": "docker",
          "containerId": "<container-name | container-id>",
          "containerUser": "<user>"
        }
      }
    ]
  }
]
```

------

여기 설명된 것처럼 값이 포함된 모든 필드는 필수입니다.

`id`  
*디바이스 풀*이라고 하는 디바이스 모음을 고유하게 식별하는 사용자 정의 영숫자 ID입니다. 풀에 속한 디바이스의 하드웨어는 서로 동일해야 합니다. 테스트 제품군을 실행할 때 풀에 있는 디바이스는 워크로드를 병렬화하는 데 사용됩니다. 다양한 테스트를 실행하기 위해 여러 디바이스가 사용됩니다.

`sku`  
테스트 대상 장치를 고유하게 식별하는 영숫자 값입니다. SKU는 적격 보드를 추적하는 데 사용됩니다.  
 AWS Partner Device Catalog에 보드를 나열하려면 여기에서 지정하는 SKU가 나열 프로세스에서 사용하는 SKU와 일치해야 합니다.

`features`  
장치의 지원되는 기능이 포함된 배열입니다. 모든 기능이 필요합니다.    
`os` 및 `arch`  
  
지원되는 운영 체제(OS) 및 아키텍처 조합:  
+ `linux`, `x86_64`
+ `linux`, `armv6l`
+ `linux`, `armv7l`
+ `linux`, `aarch64`
+ `ubuntu`, `x86_64`
+ `openwrt`, `armv7l`
+ `openwrt`, `aarch64`
IDT를 사용하여 Docker 컨테이너에서 AWS IoT Greengrass 실행을 테스트하는 경우 x86\$164 Docker 아키텍처만 지원됩니다.  
`container`  
<a name="description-container"></a>장치가 Greengrass 코어에서 컨테이너 모드로 Lambda 함수를 실행하기 위한 모든 소프트웨어 및 하드웨어 요구 사항을 충족하는지 여부를 검증합니다.  
유효한 값은 `yes` 또는 `no`입니다.  
`docker`  
<a name="description-docker"></a>장치가 Greengrass Docker 애플리케이션 배포 커넥터를 사용하여 컨테이너를 실행하는 데 필요한 모든 기술 종속성을 충족하는지 검증합니다.  
유효한 값은 `yes` 또는 `no`입니다.  
`streamManagement`  
<a name="description-sm"></a>디바이스가 AWS IoT Greengrass 스트림 관리자를 실행하는 데 필요한 모든 기술적 종속성을 충족하는지 확인합니다.  
유효한 값은 `yes` 또는 `no`입니다.  
`hsi`  
<a name="description-hsi"></a>제공된 HSI 공유 라이브러리가 하드웨어 보안 모듈(HSM)과 인터페이스할 수 있고 필요한 PKCS\$111 API를 올바로 구현하는지 확인합니다. HSM 및 공유 라이브러리가 CSR에 서명하고 TLS 작업을 수행하며 올바른 키 길이와 퍼블릭 키 알고리즘을 제공할 수 있어야 합니다.  
유효한 값은 `yes` 또는 `no`입니다.  
`ml`  
<a name="description-ml"></a>장치가 로컬로 ML 추론을 실행하는 데 필요한 모든 기술적 종속성을 충족하는지 검증합니다.  
유효한 값은 `mxnet`, `tensorflow`, `dlr`, `no`(예: `mxnet`, `mxnet,tensorflow`, `mxnet,tensorflow,dlr`, `no`)의 모든 조합일 수 있습니다.  
`mlLambdaContainerizationMode`  
Greengrass 장치가 로컬로 ML 추론을 실행하는 데 필요한 모든 기술적 종속성을 충족하는지 검증합니다.  
유효한 값은 `container`, `process`, 또는 `both`의 값입니다.  
`processor`  
장치가 지정된 프로세서 유형에 대한 모든 하드웨어 요구 사항을 충족하는지 확인합니다.  
유효한 값은 `cpu` 또는 `gpu`입니다.
`container`, `docker`, `streamManager`, `hsi`, `ml` 기능을 사용하지 않으려면 해당하는 `value`을(를) `no`(으)로 설정할 수 있습니다.  
Docker는 `streamManagement` 및 `ml`에 대한 기능 검증만 지원합니다.

`machineLearning`  
선택 사항. ML 검증 테스트를 위한 구성 정보입니다. 자세한 내용은 [ML 검증을 위해 device.json 구성](#device-json-ml-qualification) 단원을 참조하십시오.

`hsm`  
선택 사항. AWS IoT Greengrass 하드웨어 보안 모듈(HSM)을 사용하여 테스트하기 위한 구성 정보입니다. 그렇지 않으면 `hsm` 속성을 생략해야 합니다. 자세한 내용은 [하드웨어 보안 통합](hardware-security.md) 단원을 참조하십시오.  
<a name="connectivity-protocol-ssh-only"></a>이 속성은 `connectivity.protocol`이 `ssh`로 설정된 경우에만 적용됩니다.    
`hsm.p11Provider`  
PKCS\$111 구현의 libdl 로드 가능 라이브러리에 대한 절대 경로입니다.  
`hsm.slotLabel`  
하드웨어 모듈을 식별하는 데 사용되는 슬롯 레이블입니다.  
`hsm.slotUserPin`  
모듈에 대한 AWS IoT Greengrass 코어를 인증하는 데 사용되는 사용자 PIN입니다.  
`hsm.privateKeyLabel`  
하드웨어 모듈에서 키를 식별하는 데 사용되는 레이블입니다.  
`hsm.openSSLEngine`  
OpenSSL에서 PKCS\$111을 지원할 수 있게 해주는 OpenSSL 엔진 `.so` 파일의 절대 경로입니다. AWS IoT Greengrass OTA 업데이트 에이전트가 사용합니다.

`devices.id`  
테스트 대상 디바이스의 고유한 사용자 정의 식별자입니다.

`connectivity.protocol`  
이러한 장치와 통신하는 데 사용되는 통신 프로토콜입니다. 현재 지원되는 값은 `ssh`(물리적 장치의 경우) 및 `docker`(도커 컨테이너의 경우)입니다.

`connectivity.ip`  
테스트 대상 장치의 IP 입니다.  
<a name="connectivity-protocol-ssh-only"></a>이 속성은 `connectivity.protocol`이 `ssh`로 설정된 경우에만 적용됩니다.

`connectivity.containerId`  
테스트 대상 Docker 컨테이너의 컨테이너 ID 또는 이름입니다.  
<a name="connectivity-protocol-docker-only"></a>이 속성은 `connectivity.protocol`이 `docker`로 설정된 경우에만 적용됩니다.

`connectivity.auth`  
연결에 대한 인증 정보입니다.  
<a name="connectivity-protocol-ssh-only"></a>이 속성은 `connectivity.protocol`이 `ssh`로 설정된 경우에만 적용됩니다.    
`connectivity.auth.method`  
지정된 연결 프로토콜을 통해 디바이스에 액세스하는 데 사용되는 인증 방법입니다.  
지원되는 값은 다음과 같습니다.  
+ `pki`
+ `password`  
`connectivity.auth.credentials`  
인증에 사용되는 자격 증명입니다.    
`connectivity.auth.credentials.password`  
테스트 대상 디바이스에 로그인하기 위해 사용하는 암호입니다.  
이 값은 `connectivity.auth.method`가 `password`로 설정된 경우에만 적용됩니다.  
`connectivity.auth.credentials.privKeyPath`  
테스트 대상 디바이스에 로그인하는 데 사용하는 프라이빗 키의 전체 경로입니다.  
이 값은 `connectivity.auth.method`가 `pki`로 설정된 경우에만 적용됩니다.  
`connectivity.auth.credentials.user`  
테스트 대상 장치에 로그인하기 위한 사용자 이름입니다.  
`connectivity.auth.credentials.privKeyPath`  
테스트 대상 장치에 로그인하는 데 사용하는 프라이빗 키의 전체 경로입니다.

`connectivity.port`  
선택 사항. SSH 연결하는 데 사용하는 포트 번호입니다.  
기본값은 22입니다.  
이 속성은 `connectivity.protocol`이 `ssh`로 설정된 경우에만 적용됩니다.

`greengrassLocation`  
디바이스에서 AWS IoT Greengrass 코어 소프트웨어의 위치입니다.  
물리적 디바이스의 경우이 값은의 기존 설치를 사용하는 경우에만 사용됩니다 AWS IoT Greengrass. 이 속성을 사용하여 장치에 설치된 AWS IoT Greengrass 코어 소프트웨어 버전을 사용하도록 IDT에 알립니다.  
에서 제공하는 Docker 이미지 또는 Dockerfile의 Docker 컨테이너에서 테스트를 실행할 때이 값을 로 AWS IoT Greengrass설정합니다`/greengrass`.

`kernelConfigLocation`  
선택 사항. 커널 구성 파일의 경로입니다. AWS IoT 디바이스 테스터는이 파일을 사용하여 디바이스에 필요한 커널 기능이 활성화되어 있는지 확인합니다. 지정하지 않으면 IDT는 다음 경로를 사용하여 커널 구성 파일을 검색합니다. `/proc/config.gz` 및 `/boot/config-<kernel-version>`. AWS IoT 장치 테스터는 검색된 첫 번째 경로를 사용합니다.

## ML 검증을 위해 device.json 구성
<a name="device-json-ml-qualification"></a>

이 단원에서는 ML 검증에 적용되는 장치 구성 파일의 선택적 속성에 대해 설명합니다. ML 검증에 대한 테스트를 실행하려면 사용 사례에 적용되는 속성을 정의해야 합니다.

`device-ml.json` 템플릿을 사용하여 장치의 구성 설정을 정의할 수 있습니다. 이 템플릿에는 선택적 ML 속성이 포함되어 있습니다. 또한 `device.json`을 사용하고 ML 검증 속성을 추가할 수 있습니다. 이러한 파일은 `<device-tester-extract-location>/configs`에 있으며 ML 검증 속성을 포함합니다. `device-ml.json`을 사용하는 경우 IDT 테스트를 실행하기 전에 파일 이름을 `device.json`으로 변경해야 합니다.

ML 검증에 적용되지 않는 장치 구성 속성에 대한 자세한 내용은 [device.json 구성](#device-config) 단원을 참조하십시오.

 

`features` 배열의 `ml`  
보드에서 지원하는 ML 프레임워크입니다. <a name="idt-version-ml-qualification"></a>이 속성에는 IDT v3.1.0 이상이 필요합니다.  
+ 보드에서 하나의 프레임워크만 지원하는 경우 프레임워크를 지정하세요. 예제:

  ```
  {
      "name": "ml",
      "value": "mxnet"
  }
  ```
+ 보드에서 여러 프레임워크를 지원하는 경우 프레임워크를 쉼표로 구분된 목록으로 지정하세요. 예제:

  ```
  {
      "name": "ml",
      "value": "mxnet,tensorflow"
  }
  ```

`features` 배열의 `mlLambdaContainerizationMode`  
테스트하는 데 사용할 [컨테이너화 모드](lambda-group-config.md#lambda-containerization-considerations)입니다. <a name="idt-version-ml-qualification"></a>이 속성에는 IDT v3.1.0 이상이 필요합니다.  
+ 컨테이너화되지 않은 Lambda 함수로 ML 추론 코드를 실행하려면 `process`를 선택합니다. 이 옵션에는 AWS IoT Greengrass v1.10.x 이상이 필요합니다.
+ 컨테이너화된 Lambda 함수로 ML 추론 코드를 실행하려면 `container`를 선택합니다.
+ 두 모드로 ML 추론 코드를 실행하려면 `both`를 선택합니다. 이 옵션에는 AWS IoT Greengrass v1.10.x 이상이 필요합니다.

`features` 배열의 `processor`  
보드에서 지원하는 하드웨어 액셀러레이터를 나타냅니다. <a name="idt-version-ml-qualification"></a>이 속성에는 IDT v3.1.0 이상이 필요합니다.  
+ 보드에서 CPU를 프로세서로 사용하는 경우 `cpu`를 선택합니다.
+ 보드에서 GPU를 프로세서로 사용하는 경우 `gpu`를 선택합니다.

`machineLearning`  
선택 사항. ML 검증 테스트를 위한 구성 정보입니다. <a name="idt-version-ml-qualification"></a>이 속성에는 IDT v3.1.0 이상이 필요합니다.    
`dlrModelPath`  
`dlr` 프레임워크를 사용하는 데 필요합니다. DLR 컴파일된 모델 디렉터리의 절대 경로로, 이름을 `resnet18`로 지정해야 합니다. 자세한 내용은 [DLR 모델 컴파일](idt-ml-qualification.md#ml-qualification-dlr-compile-model) 단원을 참조하십시오.  
`/Users/<user>/Downloads/resnet18`은 macOS의 경로 예입니다.  
`environmentVariables`  
설정을 ML 추론 테스트에 동적으로 전달할 수 있는 키-값 페어입니다. CPU 장치의 경우 선택 사항입니다. 이 단원을 사용하여 장치 유형에 필요한 프레임워크별 환경 변수를 추가할 수 있습니다. 이러한 요구 사항에 대한 자세한 내용은 프레임워크 또는 장치의 공식 웹 사이트를 참조하십시오. 예를 들어, 일부 장치에서 MXNet 추론 테스트를 실행하려면 다음 환경 변수가 필요할 수 있습니다.  

```
"environmentVariables": [
    ...
    {
        "key": "PYTHONPATH",      
        "value": "$MXNET_HOME/python:$PYTHONPATH"    
    },
    {
        "key": "MXNET_HOME",
        "value": "$HOME/mxnet/"
    },
    ...
]
```
`value` 필드는 MXNet 설치에 따라 다를 수 있습니다.
GPU 장치에서 [컨테이너화](lambda-group-config.md#lambda-containerization-considerations)와 함께 실행되는 Lambda 함수를 테스트하는 경우 GPU 라이브러리용 환경 변수를 추가하십시오. 이렇게 하면 GPU가 계산을 수행할 수 있습니다. 다른 GPU 라이브러리를 사용하려면 라이브러리 또는 장치의 공식 설명서를 참조하십시오.  
`mlLambdaContainerizationMode` 기능이 `container` 또는 `both`로 설정된 경우 다음 키를 구성하세요.

```
"environmentVariables": [
    {
        "key": "PATH",      
        "value": "<path/to/software/bin>:$PATH"    
    },
    {
        "key": "LD_LIBRARY_PATH",      
        "value": "<path/to/ld/lib>"    
    },
    ...
]
```  
`deviceResources`  
GPU 장치에 필요합니다. Lambda 함수로 액세스할 수 있는 [로컬 리소스](access-local-resources.md#lra-resource-types)를 포함합니다. 이 섹션을 사용하여 로컬 장치 및 볼륨 리소스를 추가합니다.  
+ 장치 리소스의 경우 `"type": "device"`를 지정합니다. GPU 장치의 경우 장치 리소스는 `/dev` 아래의 GPU 관련 장치 파일이어야 합니다.
**참고**  
`/dev/shm` 디렉터리는 예외입니다. 볼륨 리소스로만 구성할 수 있습니다.
+ 볼륨 리소스의 경우 `"type": "volume"`을 지정합니다.

# AWS IoT Greengrass 검증 제품군 실행
<a name="run-tests"></a>

[필수 구성을 설정](set-config.md)한 후 테스트를 시작할 수 있습니다. 전체 테스트 제품군의 실행 시간은 하드웨어에 따라 다릅니다. 참조를 위해, Raspberry Pi 3B에서 전체 테스트 제품군을 완료하는 데 약 30분이 걸립니다.

다음 `run-suite` 명령 예제는 장치 풀에 대한 자격 테스트를 실행하는 방법을 보여 줍니다. 장치 풀은 동일한 장치의 집합입니다.

------
#### [ IDT v3.0.0 and later ]

지정된 테스트 제품군에 있는 모든 테스트 그룹을 실행합니다.  

```
devicetester_[linux | mac | win_x86-64] run-suite --suite-id GGQ_1.0.0 --pool-id <pool-id>
```
`list-suites` 명령을 사용하여 `tests` 폴더에 있는 테스트 제품군을 나열합니다.

테스트 제품군에서 특정 테스트 그룹을 실행합니다.  

```
devicetester_[linux | mac | win_x86-64] run-suite --suite-id GGQ_1.0.0 --group-id <group-id> --pool-id <pool-id>
```
`list-groups` 명령을 사용하여 테스트 제품군의 테스트 그룹을 나열합니다.

테스트 그룹에서 특정 테스트 케이스를 실행합니다.  

```
devicetester_[linux | mac | win_x86-64] run-suite --group-id <group-id> --test-id <test-id>
```

테스트 그룹에서 여러 테스트 사례를 실행합니다.  

```
devicetester_[linux | mac | win_x86-64] run-suite --group-id <group-id> --test-id <test-id1>,<test-id2>
```

테스트 그룹의 테스트 사례를 나열합니다.  

```
devicetester_[linux | mac | win_x86-64] list-test-cases --group-id <group-id>
```

`run-suite` 명령에 대한 옵션은 선택 사항입니다. 예를 들어 `device.json` 파일에 하나의 장치 풀만 정의되어 있는 경우에는 `pool-id`를 생략할 수 있습니다. 또는 `tests` 폴더에서 최신 테스트 제품군 버전을 실행하려면 `suite-id`를 생략할 수 있습니다.

**참고**  
상위 테스트 제품군 버전이 온라인으로 제공되는 경우 IDT가 메시지를 표시합니다. 자세한 내용은 [기본 업데이트 동작 설정](#idt-update-behavior) 단원을 참조하십시오.

`run-suite` 및 기타 IDT 명령에 대한 자세한 내용은 [AWS IoT Greengrass 명령용 IDT](#bk-cli) 단원을 참조하십시오.

------
#### [ IDT v2.3.0 and earlier ]

지정된 제품군의 모든 테스트 그룹을 실행합니다.  

```
devicetester_[linux | mac | win_x86-64] run-suite --suite-id GGQ_1 --pool-id <pool-id>
```

특정 테스트 그룹을 실행합니다.  

```
devicetester_[linux | mac | win_x86-64] run-suite --suite-id GGQ_1 --group-id <group-id> --pool-id <pool-id>
```
단일 장치 풀에서 단일 테스트 제품군을 실행 중인 경우 `suite-id` 및 `pool-id`는 선택 사항입니다. 즉, `device.json` 파일에 하나의 장치 풀만 정의되어 있습니다.

------

## Greengrass 종속성 확인하기
<a name="idt-dependency-checker"></a>

관련 테스트 그룹을 실행하기 전에 종속성 확인 프로그램 테스트 그룹을 실행하여 모든 Greengrass 종속성이 설치되어 있는지 확인하는 것이 좋습니다. 예시:
+ 코어 자격 테스트 그룹을 실행하기 전에 `ggcdependencies`를 실행합니다.
+ 컨테이너별 테스트 그룹을 실행하기 전에 `containerdependencies`를 실행하십시오.
+ 도커별 테스트 그룹을 실행하기 전에 `dockerdependencies`를 실행하십시오.
+ 스트림 관리자별 테스트 그룹을 실행하기 전에 `ggcstreammanagementdependencies`를 실행합니다.

## 기본 업데이트 동작 설정
<a name="idt-update-behavior"></a>

테스트 실행을 시작하면 IDT가 최신 테스트 제품군 버전을 온라인으로 확인합니다. 사용 가능한 버전이 있으면 IDT가 사용 가능한 최신 버전으로 업데이트하라는 메시지를 표시합니다. `upgrade-test-suite`(또는 `u`) 플래그를 설정하여 기본 업데이트 동작을 제어할 수 있습니다. 유효한 값은 다음과 같습니다.
+ `y`. IDT는 사용 가능한 최신 버전을 다운로드하고 사용합니다.
+ `n` (default). IDT는 `suite-id` 옵션에 지정된 버전을 사용합니다. `suite-id`를 지정하지 않으면 IDT가 `tests` 폴더의 최신 버전을 사용합니다.

`upgrade-test-suite` 플래그를 포함하지 않으면 업데이트를 사용할 수 있을 때 IDT가 메시지를 표시하고 30초 동안 입력(`y` 또는 `n`)을 기다립니다. 입력이 되지 않으면 기본적으로 `n`으로 설정되고 테스트가 계속 실행됩니다.

다음 예는 이 기능의 일반적인 사용 사례를 보여줍니다.

**테스트 그룹에 사용할 수 있는 최신 테스트를 자동으로 사용합니다.**  

```
devicetester_linux run-suite -u y --group-id mqtt --pool-id DevicePool1
```

**특정 테스트 제품군 버전에서 테스트를 실행합니다.**  

```
devicetester_linux run-suite -u n --suite-id GGQ_1.0.0 --group-id mqtt --pool-id DevicePool1
```

**런타임에 업데이트하라는 메시지를 표시합니다.**  

```
devicetester_linux run-suite --pool-id DevicePool1
```

## AWS IoT Greengrass 명령용 IDT
<a name="bk-cli"></a>

IDT 명령은 `<device-tester-extract-location>/bin` 디렉터리에 있습니다. 다음 작업에 사용합니다.

------
#### [ IDT v3.0.0 and later ]

`help`  <a name="idt-command-help"></a>
지정된 명령에 대한 정보를 나열합니다.

`list-groups`  <a name="idt-command-list-groups"></a>
지정된 테스트 제품군에 있는 그룹을 나열합니다.

`list-suites`  <a name="idt-command-list-suites"></a>
사용 가능한 테스트 제품군을 나열합니다.

`list-supported-products`  
지원되는 제품,이 경우 AWS IoT Greengrass 버전 및 현재 IDT 버전에 대한 테스트 제품군 버전을 나열합니다.

`list-test-cases`  
주어진 테스트 그룹의 테스트 사례를 나열합니다. 다음 옵션이 지원됩니다.  
+ `group-id`. 검색할 테스트 그룹입니다. 이 옵션은 필수이며 단일 그룹을 지정해야 합니다.

`run-suite`  
장치의 풀에 대해 테스트 제품군을 실행합니다. 지원되는 몇 가지 옵션은 다음과 같습니다.  
+ `suite-id`. 실행할 테스트 제품군 버전입니다. 지정하지 않으면 IDT는 `tests` 폴더의 최신 버전을 사용합니다.
+ `group-id`. 실행할 테스트 그룹(쉼표로 구분된 목록). 지정하지 않으면 IDT는 테스트 제품군의 모든 테스트 그룹을 실행합니다.
+ `test-id`. 실행할 테스트 케이스(쉼표로 구분된 목록). 지정된 경우, `group-id`은(는) 단일 그룹을 지정해야 합니다.
+ `pool-id`. 테스트할 장치 풀. `device.json` 파일에 여러 장치 풀이 정의되어 있는 경우 하나의 풀을 지정해야 합니다.
+ `upgrade-test-suite`. 테스트 제품군 버전 업데이트가 처리되는 방식을 제어합니다. IDT v3.0.0부터는 IDT가 업데이트된 테스트 제품군 버전을 온라인으로 확인합니다. 자세한 내용은 [테스트 제품군 버전](idt-gg-qualification.md#idt-test-suite-versions) 단원을 참조하십시오.
+ `stop-on-first-failure`. 첫 번째 실패 시 실행을 중지하도록 IDT를 구성합니다. 이 옵션은 지정된 테스트 그룹을 디버깅하는 데 `group-id`와(과) 함께 사용해야 합니다. 전체 테스트 제품군을 실행하여 검증 보고서를 생성할 때는 이 옵션을 사용하지 마시기 바랍니다.
+ `update-idt`. IDT를 업데이트하라는 프롬프트에 대한 응답을 설정합니다. 입력이 `Y`일 경우 IDT가 최신 버전을 감지하면 테스트 실행이 중지됩니다. 입력이 `N`일 경우 테스트 실행이 계속됩니다.
+ 입력이 `update-managed-policy`. `Y`일 경우 IDT가 사용자의 관리형 정책이 업데이트되지 않았음을 감지하면 테스트 실행이 중지됩니다. 입력이 `N`일 경우 테스트 실행이 계속됩니다.
`run-suite` 옵션에 대한 자세한 내용은 다음 `help` 옵션을 사용하십시오.  

```
devicetester_[linux | mac | win_x86-64] run-suite -h
```

------
#### [ IDT v2.3.0 and earlier ]

`help`  <a name="idt-command-help"></a>
지정된 명령에 대한 정보를 나열합니다.

`list-groups`  <a name="idt-command-list-groups"></a>
지정된 테스트 제품군에 있는 그룹을 나열합니다.

`list-suites`  <a name="idt-command-list-suites"></a>
사용 가능한 테스트 제품군을 나열합니다.

`run-suite`  
장치의 풀에 대해 테스트 제품군을 실행합니다.  
`run-suite` 옵션에 대한 자세한 내용은 다음 `help` 옵션을 사용하십시오.  

```
devicetester_[linux | mac | win_x86-64] run-suite -h
```

------

# 결과 및 로그 이해
<a name="results-logs"></a>

이 단원에서는 IDT 결과 보고서 및 로그를 보고 해석하는 방법을 설명합니다.

## 결과 보기
<a name="view-results"></a>

실행하는 동안 IDT는 콘솔, 로그 파일 및 테스트 보고서에 오류를 작성합니다. IDT는 자격 테스트 제품군을 완료한 후 두 개의 테스트 보고서를 생성합니다. 이러한 보고서는 `<device-tester-extract-location>/results/<execution-id>/`에서 확인할 수 있습니다. 두 보고서 모두 검증 테스트 세트의 실행 결과를 캡처합니다.

`awsiotdevicetester_report.xml`는 AWS Partner 디바이스 카탈로그에 디바이스를 나열 AWS 하기 위해 제출하는 검증 테스트 보고서입니다. 보고서에는 다음 요소가 포함됩니다.
+ IDT 버전
+ 테스트된 AWS IoT Greengrass 버전입니다.
+ `device.json` 파일에 지정된 SKU 및 장치 풀 이름
+ `device.json` 파일에 지정된 장치 풀의 기능
+ 테스트 결과의 집계 요약
+ 장치 기능(예: 로컬 리소스 액세스, 섀도우, MQTT 등)을 기반으로 테스트된 라이브러리별 테스트 결과의 분석

`GGQ_Result.xml` 보고서는 [JUnit XML 형식](https://llg.cubic.org/docs/junit/)입니다. [Jenkins](https://jenkins.io/), [Bamboo](https://www.atlassian.com/software/bamboo) 등과 같은 지속적 통합 및 배포 플랫폼에 이 보고서를 통합할 수 있습니다. 보고서에는 다음 요소가 포함됩니다.
+ 테스트 결과의 집계 요약
+ 테스트된 AWS IoT Greengrass 기능별 테스트 결과 분석.

## IDT 보고서 해석
<a name="interpreting-results-gg"></a>

`awsiotdevicetester_report.xml` 또는 `awsiotdevicetester_report.xml`의 보고서 섹션에는 실행된 테스트 및 결과가 나열됩니다.

첫 번째 XML 태그 `<testsuites>`에는 테스트 실행의 요약이 포함됩니다. 예시:

```
<testsuites name="GGQ results" time="2299" tests="28" failures="0" errors="0" disabled="0">
````<testsuites>` 태그에 사용되는 속성

`name`  
테스트 제품군의 이름입니다.

`time`  
검증 세트를 실행하는 데 걸린 시간(초)

`tests`  
실행된 테스트의 수입니다.

`failures`  
실행되었지만 통과하지 못한 테스트의 수입니다.

`errors`  
IDT에서 실행하지 못한 테스트의 수입니다.

`disabled`  
이 속성은 사용되지 않으므로 무시해도 좋습니다.

`awsiotdevicetester_report.xml` 파일에는 테스트하는 제품에 대한 정보와 테스트 제품군을 실행한 후 확인된 제품 기능에 대한 정보를 포함하는 `<awsproduct>` 태그가 포함되어 있습니다.`<awsproduct>` 태그에 사용되는 속성

`name`  
테스트하는 제품의 이름입니다.

`version`  
테스트하는 제품의 버전입니다.

`features`  
확인된 기능입니다. `required`로 표시된 기능은 자격에 대한 보드를 제출하는 데 필요합니다. 다음 코드 조각은 `awsiotdevicetester_report.xml` 파일에 이 정보가 나타나는 방식을 보여 줍니다.  

```
<feature name="aws-iot-greengrass-no-container" value="supported" type="required"></feature>
```
`optional`로 표시된 기능은 자격에 필수 기능이 아닙니다. 다음 코드 조각은 선택적 기능을 보여 줍니다.  

```
<feature name="aws-iot-greengrass-container" value="supported" type="optional"></feature> 
<feature name="aws-iot-greengrass-hsi" value="not-supported" type="optional"></feature>
```

필요한 기능에 대한 테스트 실패 또는 오류가 없는 경우 디바이스는 실행을 위한 기술 요구 사항을 충족 AWS IoT Greengrass 하고 서비스와 상호 작용 AWS IoT 할 수 있습니다. 디바이스 카탈로그에 AWS Partner 디바이스를 나열하려면이 보고서를 검증 증거로 사용할 수 있습니다.

테스트 실패 또는 오류의 경우 `<testsuites>` XML 태그를 검토하여 실패한 테스트를 식별할 수 있습니다. `<testsuites>` 태그 내부의 `<testsuite>` XML 태그는 테스트 그룹에 대한 테스트 결과 요약을 보여 줍니다. 예시:

```
<testsuite name="combination" package="" tests="1" failures="0" time="161" disabled="0" errors="0" skipped="0">
```

형식은 `<testsuites>` 태그와 비슷하지만, 사용되지 않고 무시할 수 있는 `skipped` 속성이 있습니다. 각 `<testsuite>` XML 태그 내부에는 테스트 그룹에 실행된 각 테스트에 대한 `<testcase>` 태그가 있습니다. 예시:

```
<testcase classname="Security Combination (IPD + DCM) Test Context" name="Security Combination IP Change Tests sec4_test_1: Should rotate server cert when IPD disabled and following changes are made:Add CIS conn info and Add another CIS conn info" attempts="1"></testcase>>
````<testcase>` 태그에 사용되는 속성

`name`  
테스트의 이름입니다.

`attempts`  
IDT에서 테스트 사례를 실행한 횟수입니다.

테스트가 실패하거나 오류가 발생하는 경우 문제 해결에 대한 정보와 함께 `<failure>` 또는 `<error>` 태그가 `<testcase>` 태그에 추가됩니다. 예시:

```
<testcase classname="mcu.Full_MQTT" name="AFQP_MQTT_Connect_HappyCase" attempts="1">
	<failure type="Failure">Reason for the test failure</failure>
	<error>Reason for the test execution error</error>
</testcase>
```

## 로그 보기
<a name="view-logs-gg"></a>

IDT는 `<devicetester-extract-location>/results/<execution-id>/logs`에서 테스트 실행 로그를 생성합니다. 두 개의 로그 세트가 생성됩니다.

`test_manager.log`  
 AWS IoT Device Tester의 Test Manager 구성 요소에서 생성된 로그(예: 구성, 테스트 시퀀싱 및 보고서 생성과 관련된 로그).

`<test_case_id>.log (for example, ota.log)`  
테스트 대상 장치의 로그를 포함한 테스트 그룹의 로그입니다. 테스트가 실패하면 테스트에 대한 테스트 대상 장치의 로그가 포함된 tar.gz 파일이 생성됩니다(예: `ota_prod_test_1_ggc_logs.tar.gz`).

자세한 내용은 [AWS IoT Greengrass 문제 해결을 위한 IDT](idt-troubleshooting.md) 단원을 참조하십시오.