AWS IoT Greengrass용 IDT 문제 해결 - AWS IoT Greengrass

AWS IoT Greengrass Version 1 2023년 6월 30일에 수명 연장 단계에 들어갔습니다. AWS IoT Greengrass V1 관리형 정책에 대한 자세한 정보는 섹션을 참조하세요. 이 날짜 이후에는 기능, 개선 사항, 버그 수정 또는 보안 패치를 제공하는 업데이트가 AWS IoT Greengrass V1 릴리스되지 않습니다. 에서 실행되는 기기는 AWS IoT Greengrass V1 중단되지 않으며 계속 작동하고 클라우드에 연결됩니다. 새로운 기능이 크게 추가되고 추가 플랫폼에 대한 지원이 추가되는 으로 마이그레이션하는 AWS IoT Greengrass Version 2 것이 좋습니다.

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

AWS IoT Greengrass용 IDT 문제 해결

AWS IoT Greengrass용 IDT는 이러한 오류를 해당 오류 유형에 따라 여러 위치에 작성합니다. 오류는 콘솔, 로그 파일 및 테스트 보고서에 작성됩니다.

오류 코드

다음 표에는 AWS IoT Greengrass용 IDT에서 생성되는 오류 코드가 나와 있습니다.

오류 코드 오류 코드 이름 가능한 근본 원인 문제 해결

101

InternalError

내부 오류가 발생했습니다.

<device-tester-extract-location>/results 디렉터리에서 로그를 확인합니다. 이 문제를 디버깅할 수 없을 경우 AWS 개발자 지원에 문의하십시오.

102

TimeoutError

제한된 시간 범위 내에 테스트를 완료할 수 없습니다. 이 문제는 다음 경우에 발생할 수 있습니다.

  • 테스트 시스템과 디바이스 간에 네트워크 연결이 느립니다(예: VPN 네트워크를 사용하는 경우).

  • 느린 네트워크로 인해 디바이스와 클라우드 간의 통신이 지연됩니다.

  • 테스트 구성 파일(test.json)의 timeout 필드가 잘못 수정되었습니다.

  • 네트워크 연결과 속도를 확인합니다.

  • /test 디렉터리에 있는 파일을 수정하지 않았는지 확인합니다.

  • "--group-id" 플래그를 사용하여 실패한 테스트 그룹을 수동으로 실행해 봅니다.

  • 테스트 제한 시간을 늘려 테스트 제품군을 실행해 봅니다. 자세한 내용은 제한 시간 오류 섹션을 참조하세요.

103

PlatformNotSupportError

device.json에 지정된 OS/아키텍처 조합이 잘못되었습니다.

지원되는 조합 중 하나로 구성을 변경합니다.

  • Linux, x86_64

  • Linux, ARMv6l

  • Linux, ARMv7l

  • Linux, AArch64

  • Ubuntu, x86_64

  • OpenWRT, ARMv7l

  • OpenWRT, AArch64

자세한 내용은 device.json 구성 섹션을 참조하세요.

104

VersionNotSupportError

사용 중인 IDT 버전에서 AWS IoT Greengrass 코어 소프트웨어 버전이 지원되지 않습니다.

device_tester_bin version 명령을 사용하여 지원되는 AWS IoT Greengrass 코어 소프트웨어 버전을 찾습니다. 예를 들어, macOS를 사용하는 경우 ./devicetester_mac_x86_64 version를 사용합니다.

사용 중인 AWS IoT Greengrass 코어 소프트웨어 버전을 찾으려면:

  • 사전 설치된 AWS IoT Greengrass 코어 소프트웨어로 테스트를 실행 중인 경우 SSH를 사용하여 AWS IoT Greengrass 코어 디바이스에 연결하고 <path-to-preinstalled-greengrass-location>/greengrass/ggc/core/greengrassd --version을 실행합니다.

  • 다른 버전의 AWS IoT Greengrass 코어 소프트웨어로 테스트를 실행하는 경우 devicetester_greengrass_ <os>/products/greengrass/gcc 디렉터리로 이동합니다. AWS IoT Greengrass 코어 소프트웨어 버전이 .zip 파일 이름의 일부입니다.

다른 버전의 AWS IoT Greengrass 코어 소프트웨어를 테스트할 수 있습니다. 자세한 내용은 AWS IoT Greengrass 시작하기 섹션을 참조하세요.

105

LanguageNotSupportError

IDT는 AWS IoT Greengrass용 Python 라이브러리 및 SDK만 지원합니다.

다음을 확인하십시오.

  • devicetester_greengrass_<os>/products/greengrass/ggsdk 아래의 SDK 패키지가 Python SDK여야 합니다.

  • devicetester_greengrass_<os> /tests/GGQ_1.0.0/suite/resources/run.runtimefarm/bin 아래의 bin 폴더 내용이 변경되지 않았는지 확인합니다.

106

ValidationError

device.json 또는 config.json의 일부 필드가 잘못되었습니다.

보고서에서 오류 코드 오른쪽에 표시되는 오류 메시지를 확인합니다.

  • 디바이스에 대한 인증 유형이 잘못되었습니다. 디바이스에 연결할 올바른 방법을 지정하십시오. 자세한 내용은 device.json 구성 섹션을 참조하세요.

  • 잘못된 프라이빗 키 경로: 프라이빗 키에 올바른 경로를 지정합니다. 자세한 내용은 device.json 구성 섹션을 참조하세요.

  • 유효하지 않은 AWS 리전: config.json 파일에 유효한 AWS 리전을 지정하십시오. 자세한 내용은 AWS 서비스 엔드포인트를 참조하세요.

  • AWS 자격 증명: 환경 변수 또는 credentials 파일을 사용하여 테스트 시스템에서 유효한 AWS 자격 증명을 설정합니다. auth 필드가 제대로 구성되었는지 확인합니다. 자세한 내용은 AWS 계정 생성 및 구성 섹션을 참조하세요.

  • HSM 입력이 잘못되었습니다. device.jsonp11Provider, privateKeyLabel, slotLabel, slotUserPinopenSSLEngine 필드를 확인하십시오.

107

SSHConnectionFailed

테스트 시스템이 구성된 디바이스에 연결할 수 없습니다.

device.json 파일에서 다음 필드가 올바른지 확인합니다.

  • ip

  • user

  • privKeyPath

  • password

자세한 내용은 device.json 구성 섹션을 참조하세요.

108

RunCommandError

테스트가 테스트 대상 디바이스에서 명령을 실행하지 못했습니다.

device.json에서 구성된 사용자의 루트 액세스가 허용되는지 확인합니다.

일부 디바이스에서는 루트 액세스로 명령을 실행할 때 암호가 필요합니다. 암호 없이 루트 액세스가 허용되는지 확인합니다. 자세한 내용은 해당 디바이스에 대한 설명서를 참조하십시오.

디바이스에서 실패하는 명령을 수동으로 실행하여 오류가 발생하는지 확인합니다.

109

PermissionDeniedError

루트 액세스가 없습니다.

디바이스에서 구성된 사용자의 루트 액세스를 설정합니다.

110

CreateFileError

파일을 만들 수 없습니다.

디바이스의 디스크 공간과 디렉터리 권한을 확인합니다.

111

CreateDirError

디렉터리를 만들 수 없습니다.

디바이스의 디스크 공간과 디렉터리 권한을 확인합니다.

112

InvalidPathError

AWS IoT Greengrass 코어 소프트웨어 경로가 잘못되었습니다.

오류 메시지에 있는 경로가 유효한지 확인합니다. devicetester_greengrass_<os> 디렉터리에 있는 파일을 편집하지 마십시오.

113

InvalidFileError

파일이 잘못되었습니다.

오류 메시지에 있는 파일이 유효한지 확인합니다.

114

ReadFileError

지정된 로그 파일을 읽을 수 없습니다.

다음을 확인합니다.

  • 파일 권한이 올바릅니다.

  • limits.config가 충분한 파일을 열 수 있도록 허용합니다.

  • 오류 메시지에 지정된 파일이 존재하며 유효합니다.

macOS에서 테스트하는 경우 열린 파일 제한을 늘리십시오. 기본 제한은 256이며, 이 값은 테스트에 충분합니다.

115

FileNotFoundError

필요한 파일을 찾을 수 없습니다.

다음을 확인합니다.

  • 압축된 Greengrass 파일은 devicetester_greengrass_<os>/products/greengrass/ggc 아래에 존재합니다. AWS IoT Greengrass 코어 소프트웨어 다운로드 페이지에서 AWS IoT Greengrass 코어 tar 파일을 다운로드할 수 있습니다.

  • SDK 패키지가 devicetester_greengrass_<os>/products/greengrass/ggsdk에 있습니다.

  • devicetester_greengrass_<os>/tests에 있는 파일이 수정되지 않았습니다.

116

OpenFileFailed

지정된 파일을 열 수 없습니다.

다음을 확인합니다.

  • 오류 메시지에 지정된 파일이 존재하며 유효합니다.

  • limits.config가 충분한 파일을 열 수 있도록 허용합니다.

macOS에서 테스트하는 경우 열린 파일 제한을 늘리십시오. 기본 제한은 256이며, 이 값은 테스트에 충분합니다.

117

WriteFileFailed

파일에 쓰지 못했습니다(테스트 중인 디바이스 또는 테스트 시스템일 수 있음).

오류 메시지에 지정된 디렉터리가 존재하며 쓰기 권한이 있는지 확인합니다.

118

FileCleanUpError

테스트가 지정된 파일 또는 디렉터리를 제거하지 못했거나 원격 디바이스에서 지정된 파일을 마운트 해제하지 못했습니다.

이진 파일이 아직 실행 중이면 파일이 잠겨 있을 수 있습니다. 프로세스를 종료하고 지정된 파일을 삭제합니다.

119

InvalidInputError

구성이 잘못되었습니다.

suite.json 파일이 유효한지 확인합니다.

120

InvalidCredentialError

유효하지 않은 AWS 자격 증명.

  • AWS 자격 증명을 확인합니다. 자세한 내용은 AWS 보안 인증 구성 섹션을 참조하세요.

  • 네트워크 연결을 확인하고 테스트 그룹을 다시 실행합니다. 네트워크 문제로 인해 이 오류가 발생할 수도 있습니다.

121

AWSSessionError

AWS 세션을 생성하지 못했습니다.

이 오류는 AWS 자격 증명이 잘못되었거나 인터넷 연결이 불안정한 경우에 발생할 수 있습니다. AWS CLI를 사용하여 AWS API 작업을 호출해 봅니다.

122

AWSApiCallError

AWS API 오류가 발생했습니다.

이 오류는 네트워크 문제가 원인일 수 있습니다. 네트워크를 확인하고 테스트 그룹을 다시 시도합니다.

123

IpNotExistError

연결 정보에 IP 주소가 포함되지 않습니다.

인터넷 연결을 확인하십시오. AWS IoT Greengrass 콘솔을 사용하여 테스트에 사용 중인 AWS IoT Greengrass 코어 사물에 대한 연결 정보를 확인할 수 있습니다. 연결 정보에 엔드포인트 10개가 포함되어 있으면 일부 또는 전부를 제거하고 테스트를 다시 실행할 수 있습니다. 자세한 내용은 연결 정보를 참조하십시오.

124

OTAJobNotCompleteError

OTA 작업이 완료되지 않았습니다.

인터넷 연결을 확인하고 OTA 테스트 그룹을 다시 시도합니다.

125

CreateGreengrassServiceRoleError

다음 중 하나가 발생했습니다.

  • 역할을 생성하는 동안 오류가 발생했습니다.

  • 정책을 AWS IoT Greengrass 서비스 역할에 연결하는 동안 오류가 발생했습니다.

  • 서비스 역할에 연결된 정책이 잘못되었습니다.

  • 역할을 AWS 계정과 연결할 때 오류가 발생했습니다.

AWS IoT Greengrass 서비스 역할을 구성합니다. 자세한 내용은 Greengrass 서비스 역할 섹션을 참조하세요.

126

DependenciesNotPresentError

해당 테스트에 필요한 하나 이상의 종속성이 디바이스에 없습니다.

테스트 로그(<device-tester-extract-location>/results/<execution-id>/logs/<test-case-name.log>)를 확인하여 디바이스에서 누락된 종속성이 무엇인지 파악합니다.

127

InvalidHSMConfiguration

제공된 HSM/PKCS 구성 파일이 올바르지 않습니다.

device.json 파일에서 PKCS#11을 사용하여 HSM과 상호 작용하는 데 필요한 구성을 제공합니다.

128

OTAJobNotSuccededError

OTA 작업이 성공하지 못했습니다.

  • ota 테스트 그룹을 개별적으로 실행한 경우 ggcdependencies 테스트 그룹을 실행하여 모든 종속성(예: wget)이 있는지 확인합니다. 그런 다음 ota 테스트 그룹을 다시 시도하십시오.

  • 문제 해결 및 오류 정보는 <device-tester-extract-location>/results/<execution-id>/logs/에서 자세한 로그를 확인하십시오. 특히 다음 로그를 확인하십시오.

    • 콘솔 로그(test_manager.log)

    • OTA 테스트 케이스 로그(ota_test.log)

    • GGC 대몬 로그(ota_test_ggc_logs.tar.gz)

    • OTA 에이전트 로그(ota_test_ota_logs.tar.gz)

  • 인터넷 연결을 확인하고 ota 테스트 그룹을 다시 시도하십시오.

  • 문제가 지속될 경우 AWS 개발자 지원에 문의하십시오.

129

NoConnectivityError

호스트 에이전트가 인터넷에 연결하지 못합니다.

네트워크 연결 및 방화벽 설정을 확인하십시오. 연결 문제가 해결되면 테스트 그룹을 다시 시도하십시오.

130

NoPermissionError

AWS IoT Greengrass용 IDT를 실행하는 데 사용하는 IAM 사용자가 IDT를 실행하는 데 필요한 AWS 리소스를 생성할 권한이 없습니다.

AWS IoT Greengrass용 IDT를 실행하는 데 필요한 권한을 부여하는 정책 템플릿은 권한 정책 템플릿을 참조하십시오.

131

LeftoverAgentExistError

AWS IoT Greengrass용 IDT를 시작하려고 시도할 때 디바이스가 AWS IoT Greengrass 프로세스를 실행합니다.

디바이스에서 실행 중인 기존 Greengrass 대몬(daemon)이 없는지 확인합니다.

  • sudo ./<absolute-path-to-greengrass-daemon>/greengrassd stop 명령을 사용하여 대몬(daemon)을 중지할 수 있습니다.

  • PID를 기준으로 Greengrass 대몬(daemon)을 종료할 수도 있습니다.

참고

재부팅 후 자동으로 시작하도록 구성된 AWS IoT Greengrass의 기존 설치를 사용하는 경우 재부팅 후 테스트 제품군을 실행하기 전에 대몬(daemon)을 중지해야 합니다.

132

DeviceTimeOffsetError

디바이스의 시간이 잘못되었습니다.

디바이스를 올바른 시간으로 설정하세요.

133

InvalidMLConfiguration

제공된 ML 구성이 잘못되었습니다.

device.json 파일에서 ML 추론 테스트를 실행하는 데 필요한 올바른 구성을 제공하세요. 자세한 내용은 선택 사항: ML 검증을 위해 디바이스 구성 섹션을 참조하세요.

AWS IoT Greengrass용 IDT 오류 해결

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

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

오류는 어디서 찾을 수 있나요?

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

테스트 로그 디렉터리는 <device-tester-extract-location>/results/<execution-id>/logs/에 있습니다. 이 디렉터리에는 디버깅에 유용한 다음 파일이 포함되어 있습니다.

파일 설명
test_manager.log

테스트를 실행하는 동안 콘솔에 작성된 모든 로그입니다. 결과 요약은 실패한 테스트 목록을 포함하는 이 파일의 끝에 있습니다.

이 파일의 경고 및 오류 로그에서 실패에 대한 일부 정보를 확인할 수 있습니다.

<test-group-id>__<test-name>.log 특정 테스트에 대한 상세 로그입니다.
<test-name>_ggc_logs.tar.gz AWS IoT Greengrass 코어 대몬(daemon)이 테스트 중 생성한 모든 로그의 압축 모음입니다. 자세한 내용은 문제 해결AWS IoT Greengrass을 참조하세요.
<test-name>_ota_logs.tar.gz 테스트 중 AWS IoT Greengrass OTA 에이전트에 의해 생성된 로그의 압축 모음입니다. OTA 테스트만 해당됩니다.
<test-name>_basic_assertion_publisher_ggad_logs.tar.gz 테스트 중 AWS IoT 게시자 디바이스에 의해 생성된 로그의 압축 모음입니다.
<test-name>_basic_assertion_subscriber_ggad_logs.tar.gz 테스트 중 AWS IoT 구독자 디바이스에 의해 생성된 로그의 압축 모음입니다.

구문 분석 오류

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

필수 파라미터 누락 오류

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

테스트를 시작할 수 없음 오류

테스트 시작 중에 실패를 가리키는 오류가 발생할 수 있습니다. 몇 가지 원인이 있을 수 있으므로 다음을 수행하십시오.

  • 실행 명령에 포함한 풀 이름이 실제로 존재하는지 확인합니다. 풀 이름은 device.json 파일에서 직접 참조됩니다.

  • 풀에 있는 디바이스에 올바른 구성 파라미터가 있는지 확인합니다.

리소스 액세스 권한 없음 오류

터미널 출력 또는 /results/<execution-id>/logs아래 test_manager.log 파일에 <user or role> is not authorized to access this resource 오류 메시지가 나타날 수 있습니다. 이 문제를 해결하려면 AWSIoTDeviceTesterForGreengrassFullAccess 관리형 정책을 테스트 사용자에게 연결합니다. 자세한 내용은 AWS 계정 생성 및 구성 섹션을 참조하세요.

권한 거부 오류

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

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

참고

userusername은 IDT가 테스트 대상 디바이스에 액세스하는 데 사용하는 SSH 사용자를 나타냅니다.

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

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

  3. /etc/sudoers 파일을 열고 파일 끝에 다음 줄을 추가합니다. <ssh-username> ALL=(ALL) NOPASSWD: ALL

    참고

    모범 사례로, /etc/sudoers를 편집할 때는 sudo visudo를 사용하는 것이 좋습니다.

SSH 연결 오류

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

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

제한 시간 오류

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

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

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

자세한 내용을 보려면 run-suite --help를 실행하십시오.

테스트 도중 명령을 찾을 수 없음 오류

AWS IoT Greengrass 디바이스에서 테스트를 실행하려면 이전 버전의 OpenSSL 라이브러리(libssl1.0.0)가 필요합니다. 대부분의 최신 Linux 배포는 libssl 버전 1.0.2 이상(v1.1.0)을 사용합니다.

예를 들어 Raspberry Pi에서 다음 명령을 실행하여 필요한 libssl 버전을 설치합니다.

  1. wget http://ftp.us.debian.org/debian/pool/main/o/openssl/libssl1.0.0_1.0.2l-1~bpo8+1_armhf.deb
  2. sudo dpkg -i libssl1.0.0_1.0.2l-1~bpo8+1_armhf.deb

macOS에서의 보안 예외

macOS 10.15를 사용하는 호스트 컴퓨터에서 IDT를 실행하면 IDT에 대한 공증 티켓이 제대로 감지되지 않고 IDT 실행이 차단됩니다. IDT를 실행하려면 devicetester_mac_x86-64 실행 파일에 보안 예외를 부여해야 합니다.

IDT 실행 파일에 보안 예외를 부여하려면

  1. Apple 메뉴에서 시스템 기본 설정을 실행합니다.

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

  3. "devicetester_mac_x86-64" was blocked from use because it is not from an identified developer. 메시지를 찾아 모두 허용을 선택합니다.

  4. 보안 경고를 수락합니다.

IDT 지원 정책에 대해 궁금한 점이 있는 경우 AWS 고객 지원 센터에 문의하십시오.