IDT 테스트를 실행하도록 장치 구성 - AWS IoT Greengrass

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

IDT 테스트를 실행하도록 장치 구성

IDT에서 장치 검증 테스트를 실행할 수 있도록 하려면 장치에 액세스하도록 호스트 컴퓨터를 구성하고 장치에 대한 사용자 권한을 구성해야 합니다.

호스트 컴퓨터에 Java를 설치합니다.

IDT v4.2.0부터 선택적 검증 테스트를 AWS IoT Greengrass 실행하려면 Java를 실행해야 합니다.

Java 버전 8 이상을 사용할 수 있습니다. Amazon Corretto 또는 OpenJDK 장기 지원 버전을 사용하는 것이 좋습니다. 버전 8 이상이 필요합니다.

테스트 대상 장치에 액세스하도록 호스트 컴퓨터 구성

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

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

  2. device.json 파일의 각 장치에 사용자 이름 및 암호를 제공합니다. 자세한 정보는 device.json 구성을 참조하세요.

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

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

SSH-KEYGEN을 사용하여 SSH 키를 생성하려면
  1. SSH 키를 생성합니다,

    공개 SSH ssh-keygen 명령을 사용하여 SSH 키 페어를 생성할 수 있습니다. 이미 호스트 컴퓨터에 SSH 키 페어가 있는 경우 IDT 전용 SSH 키 페어를 생성하는 것이 가장 좋습니다. 그러면 테스트를 완료한 후 호스트 컴퓨터가 더 이상 암호 없이 장치에 연결할 수 없습니다. 또한 원하는 사용자만 원격 장치에 액세스할 수 있도록 제한할 수 있습니다.

    참고

    Windows에는 SSH 클라이언트가 설치되어 있지 않습니다. Windows에 SSH 클라이언트 설치에 대한 내용은 SSH 클라이언트 소프트웨어 다운로드를 참조하십시오.

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

    메시지가 표시되면 SSH 키를 보호하기 위한 키 구문을 입력합니다. 자세한 내용은 새 SSH 키 생성을 참조하십시오.

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

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

    $ 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 ~/my/path/myKey.pub). SSH 키 생성 및 퍼블릭 키 복사에 대한 자세한 내용은 SSH-COPY-ID를 참조하십시오.

PuTTYgen을 사용하여 SSH 키를 생성하려면(Windows만 해당)
  1. 테스트 대상 장치에 OpenSSH 서버 및 클라이언트가 설치되어 있는지 확인합니다. 자세한 내용은 OpenSSH를 참조하십시오.

  2. 테스트 대상 장치에 PuTTYgen을 설치합니다.

  3. PuTTYgen을 엽니다.

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

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

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

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

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

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

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

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

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

  7. 각 테스트 대상 장치에 대해 사용자 이름, IP 주소, 방금 호스트 컴퓨터에 저장한 프라이빗 키 파일의 경로로 device.json 파일을 업데이트합니다. 자세한 정보는 device.json 구성을 참조하세요. 프라이빗 키에 전체 경로 및 파일 이름을 제공하고 슬래시('/')를 사용해야 합니다. 예를 들어 Windows 경로 C:\DT\privatekey.pem의 경우 device.json 파일에 C:/DT/privatekey.pem을 사용합니다.

Windows 장치의 사용자 자격 증명을 구성합니다.

Windows 기반 장치를 검증하려면 테스트 대상 장치의 LocalSystem 계정에서 다음 사용자에 대한 사용자 자격 증명을 구성해야 합니다.

  • 기본 Greengrass 사용자 ()ggc_user.

  • 테스트 대상 기기에 연결하는 데 사용하는 사용자. device.json파일에서 이 사용자를 구성합니다.

테스트 대상 장치의 LocalSystem 계정에서 각 사용자를 만든 다음 해당 LocalSystem 계정의 Credential Manager 인스턴스에 해당 사용자의 사용자 이름과 암호를 저장해야 합니다.

Windows 장치에서 사용자를 구성하려면
  1. 관리자로 Windows 명령 프롬프트 (cmd.exe) 를 엽니다.

  2. Windows 디바이스의 LocalSystem 계정에 사용자를 생성합니다. 만들려는 각 사용자에 대해 다음 명령을 실행합니다. 기본 Greengrass 사용자의 경우 사용자 이름을 로 대체합니다. ggc_user 비밀번호를 보안 비밀번호로 대체하십시오.

    net user /add user-name password
  3. Microsoft에서 PsExec유틸리티를 다운로드하여 장치에 설치합니다.

  4. PsExec 유틸리티를 사용하여 기본 사용자의 사용자 이름과 암호를 LocalSystem 계정의 Credential Manager 인스턴스에 저장합니다.

    자격 증명 관리자에서 구성하려는 각 사용자에 대해 다음 명령을 실행합니다. 기본 Greengrass 사용자의 경우 사용자 이름을 로 대체합니다. ggc_user 비밀번호를 이전에 설정한 사용자 비밀번호로 대체합니다.

    psexec -s cmd /c cmdkey /generic:user-name /user:user-name /pass:password

    PsExec License Agreement열리면 라이선스에 Accept동의하도록 선택하고 명령을 실행합니다.

    참고

    Windows 장치에서는 LocalSystem 계정이 Greengrass nucleus를 실행하므로 PsExec 유틸리티를 사용하여 계정에 사용자 정보를 저장해야 합니다. LocalSystem 자격 증명 관리자 애플리케이션을 사용하면 계정 대신 현재 로그온한 사용자의 Windows 계정에 이 정보가 저장됩니다. LocalSystem

장치에서 사용자 권한 구성

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

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

참고

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

sudo 그룹에 사용자를 추가하려면
  1. 테스트 대상 장치에서 sudo usermod -aG sudo <username>을 실행합니다.

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

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

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

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

사용자 지정 토큰 교환 역할을 구성하세요.

사용자 지정 IAM 역할을 테스트 대상 기기가 리소스와 상호 작용하는 것으로 가정하는 토큰 교환 역할로 AWS 사용할 수 있습니다. IAM 역할 생성에 대한 자세한 내용은 IAM 사용 설명서의 IAM 역할 생성 단원을 참조하세요.

IDT가 사용자 지정 IAM 역할을 사용하도록 허용하려면 다음 요구 사항을 충족해야 합니다. 이 역할에는 필요한 최소 정책 조치만 추가하는 것이 좋습니다.

  • 매개변수를 로 설정하려면 userdata.json 구성 파일을 업데이트해야 합니다. GreengrassV2TokenExchangeRole true

  • 사용자 지정 IAM 역할은 다음과 같은 최소 신뢰 정책으로 구성되어야 합니다.

    { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":[ "credentials.iot.amazonaws.com", "lambda.amazonaws.com", "sagemaker.amazonaws.com" ] }, "Action":"sts:AssumeRole" } ] }
  • 사용자 지정 IAM 역할은 다음과 같은 최소 권한 정책으로 구성해야 합니다.

    { "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "iot:DescribeCertificate", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams", "iot:Connect", "iot:Publish", "iot:Subscribe", "iot:Receive", "iot:ListThingPrincipals", "iot:GetThingShadow", "iot:UpdateThingShadow", "s3:GetBucketLocation", "s3:GetObject", "s3:PutObject", "s3:AbortMultipartUpload", "s3:ListMultipartUploadParts" ], "Resource":"*" } ] }
  • 사용자 지정 IAM 역할의 이름은 테스트 사용자의 IAM 권한에 지정하는 IAM 역할 리소스와 일치해야 합니다. 기본적으로 테스트 사용자 정책은 역할 이름에 idt- 접두사가 있는 IAM 역할에 대한 액세스를 허용합니다. IAM 역할 이름에 이 접두사를 사용하지 않는 경우 다음 예와 같이 테스트 사용자 정책의 명령문 및 passRoleForResources 명령문에 arn:aws:iam::*:role/custom-iam-role-name 리소스를 추가하십시오. roleAliasResources

    passRoleForResources 명령문
    { "Sid":"passRoleForResources", "Effect":"Allow", "Action":"iam:PassRole", "Resource":"arn:aws:iam::*:role/custom-iam-role-name", "Condition":{ "StringEquals":{ "iam:PassedToService":[ "iot.amazonaws.com", "lambda.amazonaws.com", "greengrass.amazonaws.com" ] } } }
    roleAliasResources 명령문
    { "Sid":"roleAliasResources", "Effect":"Allow", "Action":[ "iot:CreateRoleAlias", "iot:DescribeRoleAlias", "iot:DeleteRoleAlias", "iot:TagResource", "iam:GetRole" ], "Resource":[ "arn:aws:iot:*:*:rolealias/idt-*", "arn:aws:iam::*:role/custom-iam-role-name" ] }

선택적 기능을 테스트하도록 장치 구성

이 섹션에서는 선택적 Docker 및 기계 학습 (ML) 기능에 대한 IDT 테스트를 실행하기 위한 기기 요구 사항을 설명합니다. ML 기능은 IDT v4.9.3에서만 지원됩니다. 이러한 기능을 테스트하려는 경우에만 장치가 이러한 요구 사항을 충족하는지 확인해야 합니다. 그렇지 않은 경우 AWS IoT Greengrass 검증 제품군을 실행하도록 IDT 설정을 구성합니다.를 계속 진행합니다.

Docker 자격 요구 사항

AWS IoT Greengrass V2용 IDT는 사용자 지정 Docker 컨테이너 구성 요소를 사용하여 사용자 지정 Docker 컨테이너 구성 요소를 사용하여 실행할 수 있는 Docker 컨테이너 이미지를 장치에서 다운로드할 수 있는지 확인하는 Docker 검증 테스트를 제공합니다. AWS사용자 지정 Docker 구성 요소를 만드는 방법에 대한 자세한 내용은 을 참조하십시오. 도커 컨테이너 실행

Docker 검증 테스트를 실행하려면 테스트 대상 장치가 다음 요구 사항을 충족하여 Docker 애플리케이션 관리자 구성 요소를 배포해야 합니다.

  • 도커 엔진 1.9.1 이상이 그린그래스 코어 디바이스에 설치되었습니다. 버전 20.10은 Core 소프트웨어와 호환이 검증된 최신 버전입니다. AWS IoT Greengrass Docker 컨테이너를 실행하는 구성 요소를 배포하려면 먼저 코어 디바이스에 Docker를 직접 설치해야 합니다.

  • Docker 데몬은 이 구성 요소를 배포하기 전에 코어 디바이스에서 시작되어 실행되었습니다.

  • Docker 컨테이너 구성 요소를 실행하는 시스템 사용자에게 루트 또는 관리자 권한이 있거나 루트 또는 관리자가 아닌 사용자로 실행하도록 Docker를 구성해야 합니다.

    • Linux 디바이스에서는 docker 그룹에 사용자를 추가하여 없이 명령을 docker 호출할 수 있습니다. sudo

    • Windows 장치에서는 관리자 권한 없이 docker 명령을 호출할 사용자를 docker-users 그룹에 추가할 수 있습니다.

    Linux or Unix

    Docker 컨테이너 구성 요소를 실행하는 데 사용하는 사용자 또는 루트가 아닌 사용자를 docker 그룹에 추가하려면 ggc_user 다음 명령어를 실행합니다.

    sudo usermod -aG docker ggc_user

    자세한 내용은 루트가 아닌 사용자로 Docker 관리를 참조하십시오.

    Windows Command Prompt (CMD)

    Docker 컨테이너 구성 요소를 실행하는 데 사용하는 사용자 또는 사용자를 docker-users 그룹에 추가하려면 ggc_user 관리자로 다음 명령을 실행합니다.

    net localgroup docker-users ggc_user /add
    Windows PowerShell

    Docker 컨테이너 구성 요소를 실행하는 데 사용하는 사용자 또는 사용자를 docker-users 그룹에 추가하려면 ggc_user 관리자로 다음 명령을 실행합니다.

    Add-LocalGroupMember -Group docker-users -Member ggc_user

ML 자격 요구 사항

참고

기계 학습 기능은 IDT v4.9.3에서만 지원됩니다.

IDT for AWS IoT Greengrass V2는 장치가 AWS제공된 기계 학습 구성 요소를 사용하여 딥 러닝 런타임 또는 Lite ML 프레임워크를 사용하여 로컬에서 ML 추론을 수행할 수 있는지 검증하는 ML 검증 테스트를 제공합니다. TensorFlow Greengrass 디바이스에서 ML 추론을 실행하는 방법에 대한 자세한 내용은 을 참조하십시오. 기계 학습 추론 수행

ML 자격 테스트를 실행하려면 테스트 대상 장치가 다음 요구 사항을 충족하여 기계 학습 구성 요소를 배포해야 합니다.

  • Amazon Linux 2 또는 우분투 18.04를 실행하는 Greengrass 코어 디바이스의 경우 GNU C 라이브러리 (glibc) 버전 2.27 이상이 디바이스에 설치되어 있습니다.

  • 라즈베리 파이와 같은 ARMv7L 디바이스에서는 OpenCV-Python에 대한 종속성이 디바이스에 설치되어 있습니다. 다음 명령을 실행하여 종속 항목을 설치합니다.

    sudo apt-get install libopenjp2-7 libilmbase23 libopenexr-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libgtk-3-0 libwebp-dev
  • 라즈베리파이 OS 불스아이를 실행하는 라즈베리파이 디바이스는 다음 요구사항을 충족해야 합니다.

    • NumPy 1.22.4 이상이 디바이스에 설치되었습니다. Raspberry Pi OS Bullseye에는 이전 버전이 포함되어 있으므로 다음 명령을 실행하여 디바이스에서 업그레이드할 수 있습니다. NumPy NumPy

      pip3 install --upgrade numpy
    • 기기에서 레거시 카메라 스택이 활성화되었습니다. Raspberry Pi OS Bullseye에는 기본적으로 활성화되고 호환되지 않는 새로운 카메라 스택이 포함되어 있으므로 레거시 카메라 스택을 활성화해야 합니다.

      레거시 카메라 스택을 활성화하려면
      1. 다음 명령을 실행하여 Raspberry Pi 구성 도구를 엽니다.

        sudo raspi-config
      2. 인터페이스 옵션을 선택합니다.

      3. 레거시 카메라를 선택하여 레거시 카메라 스택을 활성화합니다.

      4. Raspberry Pi를 재부팅합니다.

HSM 자격 요구 사항

AWS IoT Greengrass 장치의 PKCS 하드웨어 보안 모듈 (HSM) 과 통합하기 위한 PKCS #11 공급자 구성 요소를 제공합니다. HSM 설정은 장치 및 선택한 HSM 모듈에 따라 다릅니다. IDT 구성 설정에 설명된 대로 예상 HSM 구성이 제공되는 한, IDT는 이 선택적 기능 검증 테스트를 실행하는 데 필요한 정보를 보유하게 됩니다.