

지원 종료 공지: 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)을 참조하세요.

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

# 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"`을 지정합니다.