

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

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

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

## config.json에서 AWS 자격 증명 구성
<a name="cfg-aws-gg"></a>

`<device_tester_extract_location>/configs/config.json` 파일에서 IAM 사용자 보안 인증을 구성해야 합니다. 에서 생성된 IDT for AWS IoT Greengrass V2 사용자의 자격 증명을 사용합니다[생성 및 구성 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 for AWS IoT Greengrass V2를 구성하려면 다음과 같이 `config.json` 파일을 편집합니다.

```
{
  "awsRegion": "region",
  "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 for AWS IoT Greengrass V2는 `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": "region",
  "auth": {
    "method": "environment"
  }
}
```

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

**참고**  
IDT v4.9.3은 `ml`, `docker`, `streamManagement` 기능 테스트를 지원합니다. IDT v4.9.4 이상 버전은 `docker` 테스트를 지원합니다. 이러한 기능을 테스트하지 않으려면 해당 값을 `no`로 설정합니다.

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

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

------
#### [ IDT v4.9.3 ]

```
[
  {
    "id": "<pool-id>",
    "sku": "<sku>",
    "features": [
      {
        "name": "arch",
        "value": "x86_64 | armv6l | armv7l | aarch64"
      },
      {
        "name": "ml",
        "value": "dlr | tensorflowlite | dlr,tensorflowlite | no"
      },
      {
        "name": "docker",
        "value": "yes | no"
      },
      {
        "name": "streamManagement",
        "value": "yes | no"
      }, 
      {
        "name": "hsi", 
        "value": "hsm | no" 
      }
    ],
    "devices": [
      {
        "id": "<device-id>",
        "operatingSystem": "Linux | Windows",
        "connectivity": {
          "protocol": "ssh",
          "ip": "<ip-address>",
          "port": 22,
          "publicKeyPath": "<public-key-path>",
          "auth": {
            "method": "pki | password",
            "credentials": {
              "user": "<user-name>",
              "privKeyPath": "/path/to/private/key",
              "password": "<password>"
            }
          }
        }
      }
    ]
  }
]
```

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

여기에 설명된 대로 값을 포함하는 모든 속성은 필수입니다.

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

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

`features`  
장치의 지원되는 기능이 포함된 배열입니다. 모든 기능이 필요합니다.    
`arch`  
테스트 실행이 검증하는 지원되는 운영 체제 아키텍처. 유효값은 다음과 같습니다.  
+ `x86_64`
+ `armv6l`
+ `armv7l`
+ `aarch64`  
`ml`  
<a name="description-ml"></a>디바이스가 AWS제공 기계 학습(ML) 구성 요소를 사용하는 데 필요한 모든 기술 종속성을 충족하는지 확인합니다.  
또한 이 기능을 활성화하면 <a name="description-ml-inference-phrase"></a>디바이스가 [딥 러닝 런타임](https://github.com/neo-ai/neo-ai-dlr) 및 [TensorFlow Lite](https://www.tensorflow.org/lite/guide/python) ML 프레임워크를 사용하여 ML 추론을 수행할 수 있는지 검증합니다.  
유효한 값은 `dlr` 및 `tensorflowlite` 또는 `no`의 모든 조합입니다.  
`docker`  
<a name="description-docker"></a>디바이스가 AWS제공 Docker 애플리케이션 관리자(`aws.greengrass.DockerApplicationManager`) 구성 요소를 사용하는 데 필요한 모든 기술 종속성을 충족하는지 확인합니다.  
또한 이 기능을 활성화하면 <a name="description-docker-app-manager-qual-phrase"></a>디바이스가 Amazon ECR에서 Docker 컨테이너 이미지를 다운로드할 수 있는지 검증합니다.  
유효한 값은 `yes` 또는 `no`의 모든 조합입니다.  
`streamManagement`  
<a name="description-sm"></a>디바이스가 [AWS IoT Greengrass 스트림 관리자](manage-data-streams.md)를 다운로드, 설치 및 실행할 수 있는지 확인합니다.  
유효한 값은 `yes` 또는 `no`의 모든 조합입니다.  
`hsi`  
<a name="description-hsi"></a>디바이스가 하드웨어 보안 모듈(HSM)에 저장된 프라이빗 키와 인증서를 사용하여 AWS IoT 및 AWS IoT Greengrass 서비스에 대한 연결을 인증할 수 있는지 확인합니다. 또한이 테스트는 AWS제공 [PKCS\$111 공급자 구성 요소가](pkcs11-provider-component.md) 공급업체 제공 PKCS\$111 라이브러리를 사용하여 HSM과 인터페이스할 수 있는지 확인합니다. 자세한 내용은 [하드웨어 보안 통합](hardware-security.md) 단원을 참조하십시오.  
유효한 값은 `hsm` 또는 `no`입니다.
`hsi` 테스트는 IDT v4.9.3 이상 버전에서만 사용할 수 있습니다.

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

`devices.operatingSystem`  
디바이스 운영 체제. 지원되는 값은 `Linux` 및 `Windows`입니다.

`connectivity.protocol`  
이러한 디바이스와 통신하는 데 사용되는 통신 프로토콜입니다. 현재 지원되는 유일한 값은 물리적 디바이스에 대한 `ssh` 값입니다.

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

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

`connectivity.publicKeyPath`  
선택 사항. 테스트 대상 디바이스에 대한 연결을 인증하는 데 사용되는 퍼블릭 키의 전체 경로입니다.  
`publicKeyPath`를 지정하면 IDT가 테스트 대상 디바이스에 SSH 연결을 설정할 때 디바이스의 퍼블릭 키를 검증합니다. 이 값을 지정하지 않으면 IDT는 SSH 연결을 생성하지만 디바이스의 퍼블릭 키를 확인하지는 않습니다.  
퍼블릭 키의 경로를 지정하고 안전한 방법을 사용하여 이 퍼블릭 키를 가져오는 것이 좋습니다. 표준 명령줄 기반 SSH 클라이언트의 경우 퍼블릭 키는 `known_hosts` 파일에 제공됩니다. 별도의 퍼블릭 키 파일을 지정하는 경우 이 파일은 `known_hosts` 파일과 동일한 형식, 즉, ` ip-address key-type public-key`을 사용해야 합니다. 동일한 IP 주소가 있는 항목이 여러 개 있는 경우 IDT에서 사용하는 키 유형에 대한 항목이 파일의 다른 항목보다 앞에 있어야 합니다.

`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`  
테스트 대상 디바이스에 로그인하기 위한 사용자 이름입니다.

------
#### [ IDT v4.9.4 ]

```
[
  {
    "id": "<pool-id>",
    "sku": "<sku>",
    "features": [
      {
        "name": "arch",
        "value": "x86_64 | armv6l | armv7l | aarch64"
      },
      {
        "name": "docker",
        "value": "yes | no"
      }, 
      {
        "name": "hsi", 
        "value": "hsm | no" 
      }
    ],
    "devices": [
      {
        "id": "<device-id>",
        "operatingSystem": "Linux | Windows",
        "connectivity": {
          "protocol": "ssh",
          "ip": "<ip-address>",
          "port": 22,
          "publicKeyPath": "<public-key-path>",
          "auth": {
            "method": "pki | password",
            "credentials": {
              "user": "<user-name>",
              "privKeyPath": "/path/to/private/key",
              "password": "<password>"
            }
          }
        }
      }
    ]
  }
]
```

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

여기에 설명된 대로 값을 포함하는 모든 속성은 필수입니다.

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

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

`features`  
장치의 지원되는 기능이 포함된 배열입니다. 모든 기능이 필요합니다.    
`arch`  
테스트 실행이 검증하는 지원되는 운영 체제 아키텍처. 유효값은 다음과 같습니다.  
+ `x86_64`
+ `armv6l`
+ `armv7l`
+ `aarch64`  
`docker`  
<a name="description-docker"></a>디바이스가 AWS제공 Docker 애플리케이션 관리자(`aws.greengrass.DockerApplicationManager`) 구성 요소를 사용하는 데 필요한 모든 기술 종속성을 충족하는지 확인합니다.  
또한 이 기능을 활성화하면 <a name="description-docker-app-manager-qual-phrase"></a>디바이스가 Amazon ECR에서 Docker 컨테이너 이미지를 다운로드할 수 있는지 검증합니다.  
유효한 값은 `yes` 또는 `no`의 모든 조합입니다.  
`hsi`  
<a name="description-hsi"></a>디바이스가 하드웨어 보안 모듈(HSM)에 저장된 프라이빗 키와 인증서를 사용하여 AWS IoT 및 AWS IoT Greengrass 서비스에 대한 연결을 인증할 수 있는지 확인합니다. 또한이 테스트는 AWS제공 [PKCS\$111 공급자 구성 요소가](pkcs11-provider-component.md) 공급업체 제공 PKCS\$111 라이브러리를 사용하여 HSM과 인터페이스할 수 있는지 확인합니다. 자세한 내용은 [하드웨어 보안 통합](hardware-security.md) 단원을 참조하십시오.  
유효한 값은 `hsm` 또는 `no`입니다.
`hsi` 테스트는 IDT v4.9.3 이상 버전에서만 사용할 수 있습니다.

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

`devices.operatingSystem`  
디바이스 운영 체제. 지원되는 값은 `Linux` 및 `Windows`입니다.

`connectivity.protocol`  
이러한 디바이스와 통신하는 데 사용되는 통신 프로토콜입니다. 현재 지원되는 유일한 값은 물리적 디바이스에 대한 `ssh` 값입니다.

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

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

`connectivity.publicKeyPath`  
선택 사항. 테스트 대상 디바이스에 대한 연결을 인증하는 데 사용되는 퍼블릭 키의 전체 경로입니다.  
`publicKeyPath`를 지정하면 IDT가 테스트 대상 디바이스에 SSH 연결을 설정할 때 디바이스의 퍼블릭 키를 검증합니다. 이 값을 지정하지 않으면 IDT는 SSH 연결을 생성하지만 디바이스의 퍼블릭 키를 확인하지는 않습니다.  
퍼블릭 키의 경로를 지정하고 안전한 방법을 사용하여 이 퍼블릭 키를 가져오는 것이 좋습니다. 표준 명령줄 기반 SSH 클라이언트의 경우 퍼블릭 키는 `known_hosts` 파일에 제공됩니다. 별도의 퍼블릭 키 파일을 지정하는 경우 이 파일은 `known_hosts` 파일과 동일한 형식, 즉, ` ip-address key-type public-key`을 사용해야 합니다. 동일한 IP 주소가 있는 항목이 여러 개 있는 경우 IDT에서 사용하는 키 유형에 대한 항목이 파일의 다른 항목보다 앞에 있어야 합니다.

`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`  
테스트 대상 디바이스에 로그인하기 위한 사용자 이름입니다.

------

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

또한 IDT for AWS IoT Greengrass V2에는 테스트 아티팩트 및 AWS IoT Greengrass 소프트웨어의 위치에 대한 추가 정보가 필요합니다.

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

```
{
    "TempResourcesDirOnDevice": "/path/to/temp/folder",
    "InstallationDirRootOnDevice": "/path/to/installation/folder",
    "GreengrassNucleusZip": "/path/to/aws.greengrass.nucleus.zip",
    "PreInstalled": "yes/no",
    "GreengrassV2TokenExchangeRole": "custom-iam-role-name",
	"hsm": {
        "greengrassPkcsPluginJar": "/path/to/aws.greengrass.crypto.Pkcs11Provider-latest.jar",
        "pkcs11ProviderLibrary": "/path/to/pkcs11-vendor-library",
        "slotId": "slot-id",
        "slotLabel": "slot-label",
        "slotUserPin": "slot-pin",
        "keyLabel": "key-label",
        "preloadedCertificateArn": "certificate-arn"
        "rootCA": "path/to/root-ca"
    }
}
```

여기에 설명된 대로 값을 포함하는 모든 속성은 필수입니다.

`TempResourcesDirOnDevice`  
테스트 아티팩트를 저장할 테스트 대상 디바이스의 임시 폴더 전체 경로. 이 디렉터리에 쓰는 데 sudo 권한이 필요하지 않은지 확인합니다.  
IDT는 테스트 실행이 완료되면 이 폴더의 콘텐츠를 삭제합니다.

`InstallationDirRootOnDevice`  
 AWS IoT Greengrass를 설치할 디바이스의 폴더의 전체 경로. 사전 설치된 Greengrass의 경우 이는 Greengrass 설치 디렉터리의 경로입니다.  
이 폴더에 필요한 파일 권한을 설정해야 합니다. 설치 경로의 각 폴더에 대해 다음 명령을 실행합니다.  

```
sudo chmod 755 folder-name
```

`GreengrassNucleusZip`  
호스트 컴퓨터의 Greengrass nucleus ZIP(`greengrass-nucleus-latest.zip`) 파일의 전체 경로. 이 필드는 사전 설치된 Greengrass를 사용한 테스트에는 필요하지 않습니다.  
용 IDT용 Greengrass nucleus의 지원되는 버전에 대한 자세한 내용은 섹션을 AWS IoT Greengrass참조하세요[AWS IoT Greengrass V2의 최신 IDT 버전](dev-test-versions.md#idt-latest-version). 최신 Greengrass 소프트웨어를 다운로드하려면 [AWS IoT Greengrass 소프트웨어 다운로드를](https://docs.aws.amazon.com/greengrass/v2/developerguide/dev-tst-prereqs.html#config-gg) 참조하세요.

`PreInstalled`  
이 기능은 Linux 디바이스의 IDT v4.5.8 이상 버전에서만 사용할 수 있습니다.  
(선택 사항) 값이 *Yes*인 경우 IDT는 `InstallationDirRootOnDevice`에 언급된 경로를 Greengrass가 설치된 디렉터리라고 가정합니다.  
디바이스에 Greengrass를 설치하는 방법에 대한 자세한 내용은 [자동 리소스 프로비저닝을 사용하여 AWS IoT Greengrass 코어 소프트웨어 설치](quick-installation.md) 섹션을 참조하세요. [수동 프로비저닝을 사용하여를 설치하는](https://docs.aws.amazon.com/greengrass/v2/developerguide/manual-installation.html) 경우 AWS IoT 사물을 수동으로 생성할 때 “새 사물 또는 기존 사물 그룹에 [AWS IoT 사물](https://docs.aws.amazon.com/greengrass/v2/developerguide/manual-installation.html#create-iot-thing) 추가” 단계를 포함합니다. IDT는 설치 설정 중에 사물 그룹이 생성된다고 가정합니다. 이러한 값이 `effectiveConfig.yaml` 파일에 반영되어 있는지 확인합니다. IDT는 `<InstallationDirRootOnDevice>/config/effectiveConfig.yaml`에서 `effectiveConfig.yaml` 파일을 확인합니다.  
HSM을 사용하여 테스트를 실행하려면 `aws.greengrass.crypto.Pkcs11Provider` 필드가 `effectiveConfig.yaml`에서 업데이트되었는지 확인합니다.

  `GreengrassV2TokenExchangeRole`  
(선택 사항) 테스트 중인 디바이스가 AWS 리소스와 상호 작용하기 위해 수임하는 토큰 교환 역할로 사용할 사용자 지정 IAM 역할.  
IDT는 테스트 실행 중에 기본 토큰 교환 역할을 생성하는 대신 이 사용자 지정 IAM 역할을 사용합니다. 사용자 지정 역할을 사용하는 경우 [테스트 사용자에 대한 IAM 권한](dev-tst-prereqs.md#configure-idt-permissions)을 업데이트하여 사용자가 IAM 역할 및 정책을 생성하고 삭제할 수 있도록 허용하는 `iamResourcesUpdate` 문을 제외할 수 있습니다.
사용자 지정 IAM 역할을 토큰 교환 역할로 생성하는 방법에 대한 자세한 내용은 [사용자 지정 토큰 교환 역할 구성](device-config-setup.md#configure-custom-tes-role-for-idt) 섹션을 참조하세요.

`hsm`  
이 기능은 IDT v4.5.1 이상에서 사용할 수 있습니다.  
(선택 사항) AWS IoT Greengrass 하드웨어 보안 모듈(HSM)을 사용하여 테스트하기 위한 구성 정보. 그렇지 않으면 `hsm` 속성을 생략해야 합니다. 자세한 내용은 [하드웨어 보안 통합](hardware-security.md) 단원을 참조하십시오.  
<a name="connectivity-protocol-ssh-only"></a>이 속성은 `connectivity.protocol`이 `ssh`로 설정된 경우에만 적용됩니다.  
하드웨어 보안 모듈이 IDT와 다른 시스템 간에 공유되는 경우 HSM 구성은 민감한 데이터로 간주될 수 있습니다. 이러한 경우 구성 값을 AWS Parameter·Store SecureString 파라미터에 저장하고 테스트 실행 중에 가져오도록 IDT를 구성하여 일반 텍스트로 보호하지 않을 수 있습니다. 자세한 내용은 [AWS 파라미터 스토어에서 구성 가져오기](#fetch-config) 섹션을 참조하세요.  
`hsm.greengrassPkcsPluginJar`  
IDT 호스트 시스템에 다운로드하는 [PKCS\$111 공급자 구성 요소](pkcs11-provider-component.md)의 전체 경로. AWS IoT Greengrass 는 이 구성 요소를 설치하는 중 프로비저닝 플러그인으로 지정하기 위해 다운로드할 수 있는 JAR 파일로 제공합니다. 다음 URL([https://d2s8p88vqu9w66.cloudfront.net/releases/Pkcs11Provider/aws.greengrass.crypto.Pkcs11Provider-latest.jar](https://d2s8p88vqu9w66.cloudfront.net/releases/Pkcs11Provider/aws.greengrass.crypto.Pkcs11Provider-latest.jar))에서 최신 버전의 구성 요소 JAR 파일을 다운로드할 수 있습니다.  
`hsm.pkcs11ProviderLibrary`  
하드웨어 보안 모듈(HSM) 공급업체가 HSM과 상호 작용하기 위해 제공하는 PKCS\$111 라이브러리의 전체 경로.  
`hsm.slotId`  
키와 인증서를 로드하는 HSM 슬롯을 식별하는 데 사용되는 슬롯 ID.  
`hsm.slotLabel`  
키와 인증서를 로드하는 HSM 슬롯을 식별하는 데 사용되는 슬롯 레이블.  
`hsm.slotUserPin`  
IDT가 AWS IoT Greengrass 코어 소프트웨어를 HSM에 인증하는 데 사용하는 사용자 PIN입니다.  
보안 모범 사례로 프로덕션 디바이스에서 동일한 사용자 PIN을 사용하지 마세요.  
`hsm.keyLabel`  
하드웨어 모듈에서 키를 식별하는 데 사용되는 레이블입니다. 키와 인증서 모두 동일한 키 레이블을 사용해야 합니다.  
`hsm.preloadedCertificateArn`  
 AWS IoT 클라우드에 업로드한 디바이스 인증서의 Amazon 리소스 이름(ARN).  
이전에 HSM의 키를 사용하여이 인증서를 생성하고 HSM으로 가져온 다음 AWS IoT 클라우드에 업로드해야 합니다. 인증서 생성 및 가져오기에 대한 자세한 내용은 HSM에 대한 설명서를 참조하세요.  
인증서를 [config.json](#cfg-aws-gg)에 제공한 것과 동일한 계정 및 리전에 인증서를 업로드해야 합니다. 인증서를에 업로드하는 방법에 대한 자세한 내용은 *AWS IoT 개발자 안내서*의 [수동으로 클라이언트 인증서 등록](https://docs.aws.amazon.com/iot/latest/developerguide/manual-cert-registration.html)을 AWS IoT참조하세요.  
`hsm.rootCAPath`  
(선택 사항) 인증서를 서명한 루트 인증 기관(CA)에 대한 IDT 호스트 컴퓨터의 전체 경로. 이는 생성한 HSM의 인증서가 Amazon 루트 CA에 의해 서명하지 않은 경우에 필요합니다.

## AWS 파라미터 스토어에서 구성 가져오기
<a name="fetch-config"></a>

AWS IoT 디바이스 테스터(IDT)에는 [AWS Systems Manager 파라미터 스토어](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html)에서 구성 값을 가져오는 선택적 기능이 포함되어 있습니다. AWS 파라미터 스토어는 안전하고 암호화된 구성 저장을 허용합니다. 구성된 경우 IDT는 파라미터를 `userdata.json` 파일 내부의 일반 텍스트로 저장하는 대신 파라미터 AWS 스토어에서 파라미터를 가져올 수 있습니다. 이는 암호, PIN, 기타 보안 암호와 같이 암호화된 상태로 저장해야 하는 민감한 데이터에 유용합니다.

1. 이 기능을 사용하려면 [IDT 사용자](https://docs.aws.amazon.com/greengrass/v2/developerguide/dev-tst-prereqs.html)를 생성하는 데 사용되는 권한을 업데이트하여 IDT가 사용하도록 구성된 파라미터에 대한 GetParameter 작업을 허용해야 합니다. 다음은 IDT 사용자에게 추가할 수 있는 권한 문의 예제입니다. 자세한 내용은 [AWS Systems Manager 사용 설명서](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-access.html)를 참조하세요.

   ```
   {
          "Sid":"parameterStoreResources",
          "Effect": "Allow",
           "Action": [
               "ssm:GetParameter"
           ],
           "Resource": "arn:aws:ssm:*:*:parameter/IDT*"
   }
   ```

   위 권한은 와일드카드 문자(`IDT`)를 사용하여 이름이 `*`로 시작하는 모든 파라미터를 가져올 수 있도록 구성되었습니다. 사용 중인 파라미터의 이름에 따라 IDT가 구성되어 있는 파라미터를 가져올 수 있도록 필요에 따라 이를 사용자 지정해야 합니다.

1.  AWS Paramater Store 내에 구성 값을 저장해야 합니다. 이 작업은 AWS 콘솔 또는 AWS CLI에서 수행할 수 있습니다. AWS Parameter Store를 사용하면 암호화되거나 암호화되지 않은 스토리지를 선택할 수 있습니다. 보안 암호, PIN 등 민감한 값을 저장하려면 SecureString의 파라미터 유형인 암호화된 옵션을 사용해야 합니다. AWS CLI를 사용하여 파라미터를 업로드하려면 다음 명령을 사용할 수 있습니다.

   ```
   aws ssm put-parameter --name IDT-example-name --value IDT-example-value --type SecureString
   ```

   다음 명령을 사용하여 파라미터가 저장되었는지 확인할 수 있습니다. (선택 사항) `--with-decryption` 플래그를 사용하여 해독된 SecureString 파라미터를 가져옵니다.

   ```
   aws ssm get-parameter --name IDT-example-name
   ```

    AWS CLI를 사용하면 현재 CLI 사용자의 AWS 리전에 파라미터가 업로드되고 IDT는에 구성된 리전에서 파라미터를 가져옵니다`config.json`. AWS CLI에서 리전을 확인하려면 다음을 사용합니다.

   ```
   aws configure get region
   ```

1.  AWS 클라우드에 구성 값이 있으면 IDT 구성 내의 모든 값을 업데이트하여 AWS 클라우드에서 가져올 수 있습니다. 이렇게 하려면 양식의 IDT 구성에 자리 표시자를 사용하여 파라미터 스토어에서 해당 이름으로 AWS 파라미터를 `{{AWS.Parameter.parameter_name}}` 가져옵니다.

   예를 들어 2단계의 `IDT-example-name` 파라미터를 HSM 구성의 HSM keyLabel로 사용하려는 경우를 가정해 보겠습니다. 이렇게 하려면 다음과 같이 `userdata.json`을 업데이트하면 됩니다.

   ```
   "hsm": {
           "keyLabel": "{{AWS.Parameter.IDT-example-name}}",
           [...]
       }
   ```

   IDT는 2단계에서 `IDT-example-value`로 설정된 런타임에서 이 파라미터의 값을 가져옵니다. 이 구성은 설정과 유사`"keyLabel": "IDT-example-value"`하지만 대신 해당 값은 AWS 클라우드에 암호화된 상태로 저장됩니다.