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하는 것이 좋습니다. 이 마이그레이션하면 추가 플랫폼 에 대한 중요한 새 기능과 지원이 추가됩니다. https://docs.aws.amazon.com/greengrass/v2/developerguide/operating-system-feature-support-matrix.html

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

AWS IoT Greengrass 검증 도구 모음을 실행하기 위한 IDT 설정 구성.

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

AWS 보안 인증 구성

<device-tester-extract-location> /configs/config.json 파일에서 IAM 사용자 보안 인증을 구성해야 합니다. 생성 및 구성 AWS 계정에서 생성된 AWS IoT Greengrass용 IDT 사용자에 대해 자격 증명을 사용합니다. 두 가지 방법 중 하나로 자격 증명을 지정할 수 있습니다.

  • 보안 인증 파일

  • 환경 변수

IDT는 AWS CLI와 동일한 자격 증명 파일을 사용합니다. 자세한 내용은 구성 및 자격 증명 파일을 참조하십시오.

자격 증명 파일의 위치는 사용하는 운영 체제에 따라 달라집니다.

  • macOS, Linux의 경우: ~/.aws/credentials

  • Windows: C:\Users\UserName\.aws\credentials

credentials 파일에 AWS 보안 인증을 다음 형식으로 추가합니다.

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

AWS IoT Greengrass용 IDT에서 AWS 파일의 credentials 보안 인증을 사용하도록 구성하려면 config.json 파일을 다음과 같이 편집합니다.

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

default AWS 프로필을 사용하지 않는 경우 config.json 파일에서 프로필 이름을 변경해야 합니다. 자세한 내용은 명명된 프로필을 참조하십시오.

환경 변수는 운영 체제에서 유지 관리하고 시스템 명령에서 사용하는 변수입니다. 이들은 SSH 세션을 닫으면 저장되지 않습니다. AWS IoT Greengrass용 IDT는 AWS_ACCESS_KEY_IDAWS_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 구성

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

<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>" } } } } ] } ]
참고

methodpki로 설정된 경우에만 privKeyPath를 지정합니다.

methodpassword로 설정된 경우에만 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 디바이스 카탈로그에 보드를 등록하려면 여기서 지정하는 SKU가 목록 등록 프로세스에 사용하는 SKU와 일치해야 합니다.

features

디바이스의 지원되는 기능이 포함된 배열입니다. 모든 기능이 필요합니다.

osarch

지원되는 운영 체제(OS) 및 아키텍처 조합:

  • linux, x86_64

  • linux, armv6l

  • linux, armv7l

  • linux, aarch64

  • ubuntu, x86_64

  • openwrt, armv7l

  • openwrt, aarch64

참고

IDT를 사용하여 Docker 컨테이너에서 실행되는 AWS IoT Greengrass을(를) 테스트하는 경우 x86_64 DockerDocker 아키텍처만 지원됩니다.

container

디바이스가 Greengrass 코어에서 컨테이너 모드로 Lambda 함수를 실행하기 위한 모든 소프트웨어 및 하드웨어 요구 사항을 충족하는지 여부를 검증합니다.

유효한 값은 yes 또는 no입니다.

docker

디바이스가 Greengrass Docker 애플리케이션 배포 커넥터를 사용하여 컨테이너를 실행하는 데 필요한 모든 기술 종속성을 충족하는지 검증합니다.

유효한 값은 yes 또는 no입니다.

streamManagement

디바이스가 AWS IoT Greengrass 스트림 관리자를 실행하는 데 필요한 모든 기술적 종속성을 충족하는지 검증합니다.

유효한 값은 yes 또는 no입니다.

hsi

제공된 HSI 공유 라이브러리가 하드웨어 보안 모듈(HSM)과 인터페이스할 수 있고 필요한 PKCS#11 API를 올바로 구현하는지 확인합니다. HSM 및 공유 라이브러리가 CSR에 서명하고 TLS 작업을 수행하며 올바른 키 길이와 퍼블릭 키 알고리즘을 제공할 수 있어야 합니다.

유효한 값은 yes 또는 no입니다.

ml

디바이스가 로컬로 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는 streamManagementml에 대한 기능 검증만 지원합니다.

machineLearning

선택 사항. ML 검증 테스트를 위한 구성 정보입니다. 자세한 내용은 ML 검증을 위해 device.json 구성 섹션을 참조하세요.

hsm

선택 사항. AWS IoT Greengrass 하드웨어 보안 모듈(HSM)을 사용하여 테스트하기 위한 구성 정보입니다. 그렇지 않으면 hsm 속성을 생략해야 합니다. 자세한 내용은 하드웨어 보안 통합 섹션을 참조하세요.

이 속성은 connectivity.protocolssh로 설정된 경우에만 적용됩니다.

hsm.p11Provider

PKCS#11 구현의 libdl 로드 가능 라이브러리에 대한 절대 경로입니다.

hsm.slotLabel

하드웨어 모듈을 식별하는 데 사용되는 슬롯 레이블입니다.

hsm.slotUserPin

모듈에 대해 AWS IoT Greengrass 코어를 인증하는 데 사용되는 사용자 PIN입니다.

hsm.privateKeyLabel

하드웨어 모듈에서 키를 식별하는 데 사용되는 레이블입니다.

hsm.openSSLEngine

OpenSSL에서 PKCS#11을 지원할 수 있게 해주는 OpenSSL 엔진 .so 파일의 절대 경로입니다. AWS IoT Greengrass OTA 업데이트 에이전트가 사용합니다.

devices.id

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

connectivity.protocol

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

connectivity.ip

테스트 대상 디바이스의 IP 입니다.

이 속성은 connectivity.protocolssh로 설정된 경우에만 적용됩니다.

connectivity.containerId

테스트 대상 Docker 컨테이너의 컨테이너 ID 또는 이름입니다.

이 속성은 connectivity.protocoldocker로 설정된 경우에만 적용됩니다.

connectivity.auth

연결에 대한 인증 정보입니다.

이 속성은 connectivity.protocolssh로 설정된 경우에만 적용됩니다.

connectivity.auth.method

지정된 연결 프로토콜을 통해 디바이스에 액세스하는 데 사용되는 인증 방법입니다.

지원되는 값은 다음과 같습니다.

  • pki

  • password

connectivity.auth.credentials

인증에 사용되는 자격 증명입니다.

connectivity.auth.credentials.password

테스트 대상 디바이스에 로그인하기 위해 사용하는 암호입니다.

이 값은 connectivity.auth.methodpassword로 설정된 경우에만 적용됩니다.

connectivity.auth.credentials.privKeyPath

테스트 대상 디바이스에 로그인하는 데 사용하는 프라이빗 키의 전체 경로입니다.

이 값은 connectivity.auth.methodpki로 설정된 경우에만 적용됩니다.

connectivity.auth.credentials.user

테스트 대상 디바이스에 로그인하기 위한 사용자 이름입니다.

connectivity.auth.credentials.privKeyPath

테스트 대상 디바이스에 로그인하는 데 사용하는 프라이빗 키의 전체 경로입니다.

connectivity.port

선택 사항. SSH 연결하는 데 사용하는 포트 번호입니다.

기본값은 22입니다.

이 속성은 connectivity.protocolssh로 설정된 경우에만 적용됩니다.

greengrassLocation

디바이스에서 AWS IoT Greengrass 코어 소프트웨어의 위치입니다.

물리적 디바이스의 경우 이 값은 AWS IoT Greengrass의 기존 설치를 사용할 때에만 사용됩니다. 이 속성을 사용하여 디바이스에 설치된 AWS IoT Greengrass 코어 소프트웨어 버전을 사용하도록 IDT에 알립니다.

AWS IoT Greengrass에서 제공하는 도커 이미지 또는 도커 파일을 통해 도커 컨테이너에서 테스트를 실행하는 경우 이 값을 /greengrass로 설정합니다.

kernelConfigLocation

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

ML 검증을 위해 device.json 구성

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

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

ML 검증에 적용되지 않는 디바이스 구성 속성에 대한 자세한 내용은 device.json 구성 단원을 참조하십시오.

 

features 배열의 ml

보드에서 지원하는 ML 프레임워크입니다. 이 속성에는 IDT v3.1.0 이상이 필요합니다.

  • 보드에서 하나의 프레임워크만 지원하는 경우 프레임워크를 지정하세요. 예:

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

    { "name": "ml", "value": "mxnet,tensorflow" }
features 배열의 mlLambdaContainerizationMode

테스트하는 데 사용할 컨테이너화 모드입니다. 이 속성에는 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

보드에서 지원하는 하드웨어 액셀러레이터를 나타냅니다. 이 속성에는 IDT v3.1.0 이상이 필요합니다.

  • 보드에서 CPU를 프로세서로 사용하는 경우 cpu를 선택합니다.

  • 보드에서 GPU를 프로세서로 사용하는 경우 gpu를 선택합니다.

machineLearning

선택 사항. ML 검증 테스트를 위한 구성 정보입니다. 이 속성에는 IDT v3.1.0 이상이 필요합니다.

dlrModelPath

dlr 프레임워크를 사용하는 데 필요합니다. DLR 컴파일된 모델 디렉터리의 절대 경로로, 이름을 resnet18로 지정해야 합니다. 자세한 내용은 DLR 모델 컴파일 섹션을 참조하세요.

참고

/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 함수를 테스트하는 경우 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 함수로 액세스할 수 있는 로컬 리소스를 포함합니다. 이 섹션을 사용하여 로컬 디바이스 및 볼륨 리소스를 추가합니다.

  • 디바이스 리소스의 경우 "type": "device"를 지정합니다. GPU 디바이스의 경우 디바이스 리소스는 /dev 아래의 GPU 관련 디바이스 파일이어야 합니다.

    참고

    /dev/shm 디렉터리는 예외입니다. 볼륨 리소스로만 구성할 수 있습니다.

  • 볼륨 리소스의 경우 "type": "volume"을 지정합니다.