

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

# 허브를 관리형 통합에 온보딩
<a name="managedintegrations-sdk-v2-cookbook-usinghub"></a>

필요한 디렉터리 구조, 인증서 및 디바이스 구성 파일을 구성하여 관리형 통합과 통신하도록 허브 디바이스를 설정합니다. 이 섹션에서는 허브 온보딩 하위 시스템 구성 요소가 함께 작동하는 방법, 인증서 및 구성 파일을 저장할 위치, 디바이스 구성 파일을 생성하고 수정하는 방법, 허브 프로비저닝 프로세스를 완료하는 단계를 설명합니다.

## 허브 온보딩 하위 시스템
<a name="managedintegrations-sdk-v2-cookbook-hubsubsystem"></a>

허브 온보딩 하위 시스템은 다음과 같은 핵심 구성 요소를 사용하여 디바이스 프로비저닝 및 구성을 관리합니다.

**허브 온보딩 구성 요소**  
허브 상태, 프로비저닝 접근 방식 및 인증 자료를 조정하여 허브 온보딩 프로세스를 관리합니다.

**디바이스 구성 파일**  
다음을 포함한 필수 허브 구성 데이터를 디바이스에 저장합니다.  
+ 디바이스 프로비저닝 상태(프로비저닝됨 또는 프로비저닝되지 않음) 
+ 인증서 및 키 위치 
+ 인증 정보 MQTT 프록시와 같은 다른 SDK 프로세스는이 파일을 참조하여 허브 상태 및 연결 설정을 결정합니다.

**인증서 핸들러 인터페이스**  
디바이스 인증서 및 키를 읽고 쓸 수 있는 유틸리티 인터페이스를 제공합니다. 이 인터페이스를 구현하여 다음 작업을 수행할 수 있습니다.  
+ 파일 시스템 스토리지 
+ 하드웨어 보안 모듈(HSM) 
+ 신뢰할 수 있는 플랫폼 모듈(TPM) 
+ 사용자 지정 보안 스토리지 솔루션 

**MQTT 프록시 구성 요소**  
다음을 사용하여 device-to-cloud 통신을 관리합니다.  
+ 프로비저닝된 클라이언트 인증서 및 키 
+ 구성 파일의 디바이스 상태 정보 
+ 관리형 통합에 대한 MQTT 연결 

다음 다이어그램은 허브 온보딩 하위 시스템 아키텍처와 해당 구성 요소를 설명합니다. 를 사용하지 않는 경우 다이어그램의 해당 구성 요소를 무시할 AWS IoT Greengrass수 있습니다.

![\[허브 온보딩 하위 시스템 아키텍처.\]](http://docs.aws.amazon.com/ko_kr/iot-mi/latest/devguide/images/iot-managedintegrations-hub-onboarding-subsystem.png)


# 허브 온보딩 설정
<a name="managedintegrations-sdk-v2-cookbook-hubsetup"></a>

플릿 프로비저닝 온보딩 프로세스를 시작하기 전에 각 허브 디바이스에 대해 다음 설정 단계를 완료합니다. 이 섹션에서는 관리형 사물을 생성하고, 디렉터리 구조를 설정하고, 필요한 인증서를 구성하는 방법을 설명합니다.

**Topics**
+ [1단계: 사용자 지정 엔드포인트 등록](#managedintegrations-sdk-v2-cookbook-acc)
+ [2단계: 프로비저닝 프로필 생성](#managedintegrations-sdk-v2-cookbook-fleet-provision)
+ [3단계: 관리형 사물 생성(플릿 프로비저닝)](#managedintegrations-sdk-v2-cookbook-managedthing)
+ [4단계: 디렉터리 구조 생성](#managedintegrations-sdk-v2-cookbook-hubdir)
+ [5단계: 허브 디바이스에 인증 자료 추가](#managedintegrations-sdk-v2-cookbook-copycert)
+ [6단계: 디바이스 구성 파일 생성](#managedintegrations-sdk-v2-cookbook-genconfig)
+ [7단계: 구성 파일을 허브에 복사](#managedintegrations-sdk-v2-cookbook-copyconfig)

## 1단계: 사용자 지정 엔드포인트 등록
<a name="managedintegrations-sdk-v2-cookbook-acc"></a>

디바이스가 관리형 통합과 데이터를 교환하는 데 사용하는 전용 통신 엔드포인트를 생성합니다. 이 엔드포인트는 device-to-cloud 메시징에 대한 보안 연결 지점을 설정합니다.

**엔드포인트를 등록하려면**
+ [RegisterCustomEndpoint](https://docs.aws.amazon.com/iot-mi/latest/APIReference/API_RegisterCustomEndpoint.html) API를 사용하여 device-to-managed 통합 통신을 위한 엔드포인트를 생성합니다.

  **RegisterCustomEndpoint 요청 예제**

  ```
  aws iot-managed-integrations register-custom-endpoint  
  ```

  **응답**:

  ```
  {
    [ACCOUNT-PREFIX]-ats.iot.AWS-REGION.amazonaws.com
  }
  ```
**참고**  
엔드포인트 주소를 저장합니다. 향후 디바이스 통신에 필요합니다.

  엔드포인트 정보를 반환하려면 `GetCustomEndpoint` API를 사용합니다.

  자세한 내용은 관리형 통합 API 참조 안내서의 [RegisterCustomEndpoint](https://docs.aws.amazon.com/iot-mi/latest/APIReference/API_RegisterCustomEndpoint.html) API 및 [GetCustomEndpoint](https://docs.aws.amazon.com/iot-mi/latest/APIReference/API_GetCustomEndpoint.html) *API를 참조*하세요.

## 2단계: 프로비저닝 프로필 생성
<a name="managedintegrations-sdk-v2-cookbook-fleet-provision"></a>

프로비저닝 프로필에는 디바이스가 관리형 통합에 연결하는 데 필요한 보안 자격 증명 및 구성 설정이 포함되어 있습니다.

**플릿 프로비저닝 프로필을 생성하려면**
+ <a name="managedintegrations-sdk-v2-cookbook-provisioning"></a>[CreateProvisioningProfile](https://docs.aws.amazon.com/iot-mi/latest/APIReference/API_CreateProvisioningProfile.html) API를 호출하여 다음을 생성합니다.
  + 디바이스 연결 설정을 정의하는 프로비저닝 템플릿
  + 디바이스 인증을 위한 클레임 인증서 및 프라이빗 키
**중요**  
클레임 인증서, 프라이빗 키 및 템플릿 ID를 안전하게 저장합니다. 디바이스를 관리형 통합에 온보딩하려면 이러한 자격 증명이 필요합니다. 이러한 자격 증명을 분실한 경우 새 프로비저닝 프로파일을 생성해야 합니다.

**`CreateProvisioningProfile` 예제 요청**

```
aws iot-managed-integrations create-provisioning-profile \
    --provisioning-type FLEET_PROVISIONING \
    --name PROFILE_NAME
```

**응답**:

```
{
"Arn":"arn:aws:iotmanagedintegrations:AWS-REGION:ACCOUNT-ID:provisioning-profile/PROFILE-ID",
    "ClaimCertificate":
  "-----BEGIN CERTIFICATE-----
  MIICiTCCAfICCQD6m7.....w3rrszlaEXAMPLE=
  -----END CERTIFICATE-----",
    "ClaimCertificatePrivateKey":
  "-----BEGIN RSA PRIVATE KEY-----
  MIICiTCCAfICCQ...3rrszlaEXAMPLE=
 -----END RSA PRIVATE KEY-----",
    "Id": "PROFILE-ID",
    "PROFILE-NAME",
         "ProvisioningType": "FLEET_PROVISIONING"
}
```

## 3단계: 관리형 사물 생성(플릿 프로비저닝)
<a name="managedintegrations-sdk-v2-cookbook-managedthing"></a>

`CreateManagedThing` API를 사용하여 허브 디바이스에 대한 관리형 사물을 생성합니다. 각 허브에는 고유한 인증 자료가 있는 자체 관리형 사물이 필요합니다. 자세한 내용은 관리형 통합 API 참조의 [CreateManagedThing](https://docs.aws.amazon.com/iot-mi/latest/APIReference/API_CreateManagedThing.html) *API를 참조*하세요.

관리형 사물을 생성할 때 다음 파라미터를 지정합니다.
+ `Role`: 명령 및 제어를 지원하지 않는 허브의 `CONTROLLER` 경우이 값을 로 설정하고, 그렇지 않으면 로 설정합니다`DEVICE`.
+ `AuthenticationMaterialType`:이 값을 로 설정합니다`WIFI_SETUP_QR_BAR_CODE`.
+ `AuthenticationMaterial`: 다음 필드를 포함합니다. `UPC` 또는를 사용할 수 `EAN` 있지만 둘 다 사용할 수는 없습니다.
  + `SN`:이 디바이스의 고유 일련 번호
  + `UPC`:이 디바이스의 범용 제품 코드
  + `EAN`:이 디바이스의 국제 문서 번호

**중요**  
각 디바이스의 인증 자료에는 고유한 일련 번호(SN)가 있어야 합니다.

**`CreateManagedThing` 요청 예제**:

```
{ 
 "Role": "CONTROLLER",
 "AuthenticationMaterialType": "WIFI_SETUP_QR_BAR_CODE",
 "AuthenticationMaterial": "SN:123456789524;UPC:829576019524"
}
```

자세한 내용은 관리형 통합 API 참조의 [CreateManagedThing](https://docs.aws.amazon.com/iot-mi/latest/APIReference/API_CreateManagedThing.html)을 참조하세요. ** 

### (선택 사항) 관리형 사물 가져오기
<a name="managedintegrations-sdk-v2-cookbook-managedthing-get"></a>

`PRE_ASSOCIATED` 계속하려면 관리형 사물`ProvisioningStatus`의가 여야 합니다. ProvisioningStatus에 대한 자세한 내용은 [디바이스 프로비저닝을 참조하세요](https://docs.aws.amazon.com/iot-mi/latest/devguide/device-provisioning.html). `GetManagedThing` API를 사용하여 관리형 사물이 존재하고 프로비저닝할 준비가 되었는지 확인합니다. 자세한 내용은 관리형 통합 API 참조의 [GetManagedThing](https://docs.aws.amazon.com/iot-mi/latest/APIReference/API_GetManagedThing.html)을 참조하세요. ** 

## 4단계: 디렉터리 구조 생성
<a name="managedintegrations-sdk-v2-cookbook-hubdir"></a>

구성 파일 및 인증서의 디렉터리를 생성합니다. 기본적으로 허브 온보딩 프로세스는를 사용합니다`/data/aws/iotmi/config/iotmi_config.json`.

구성 파일에서 인증서 및 프라이빗 키에 대한 사용자 지정 경로를 지정할 수 있습니다. 이 가이드에서는 기본 경로를 사용합니다`/data/aws/iotmi/certs`.

```
mkdir -p /data/aws/iotmi/config
mkdir -p /data/aws/iotmi/certs

/data/
    aws/
        iotmi/
            config/
            certs/
```

## 5단계: 허브 디바이스에 인증 자료 추가
<a name="managedintegrations-sdk-v2-cookbook-copycert"></a>

인증서와 키를 허브 디바이스에 복사한 다음 디바이스별 구성 파일을 생성합니다. 이러한 파일은 프로비저닝 프로세스 중에 허브와 관리형 통합 간의 보안 통신을 설정합니다.

**클레임 인증서 및 키를 복사하려면**
+ `CreateProvisioningProfile` API 응답에서 허브 디바이스로 이러한 인증 파일을 복사합니다.
  + `claim_cert.pem`: 클레임 인증서(모든 디바이스에 공통)
  + `claim_pk.key`: 클레임 인증서의 프라이빗 키

  `/data/aws/iotmi/certs` 디렉터리에 두 파일을 모두 배치합니다.
**중요**  
 인증서와 프라이빗 키를 PEM 형식으로 저장할 때는 줄 바꿈 문자를 올바르게 처리하여 적절한 형식을 지정해야 합니다. PEM 인코딩 파일의 경우 줄 바꿈 문자를 실제 줄 구분자로 바꿔`(\n)`야 합니다. 이스케이프된 줄 바꿈을 저장하는 것만으로는 나중에 올바르게 검색되지 않기 때문입니다.
**참고**  
보안 스토리지를 사용하는 경우 이러한 자격 증명을 파일 시스템 대신 보안 스토리지 위치에 저장합니다. 자세한 내용은 [보안 스토리지를 위한 사용자 지정 인증서 핸들러 생성](managedintegrations-sdk-v2-cookbook-certhandler.md) 단원을 참조하십시오.

## 6단계: 디바이스 구성 파일 생성
<a name="managedintegrations-sdk-v2-cookbook-genconfig"></a>

고유한 디바이스 식별자, 인증서 위치 및 프로비저닝 설정이 포함된 구성 파일을 생성합니다. SDK는 허브 온보딩 중에이 파일을 사용하여 디바이스를 인증하고, 프로비저닝 상태를 관리하고, 연결 설정을 저장합니다.

**참고**  
각 허브 디바이스에는 고유한 디바이스별 값이 있는 자체 구성 파일이 필요합니다.

다음 절차에 따라 구성 파일을 생성하거나 수정하고 허브에 복사합니다.
+ <a name="managedintegrations-sdk-v2-cookbook-modifyconfig-fleet"></a>**구성 파일(플릿 프로비저닝)을 생성하거나 수정합니다**.

  디바이스 구성 파일에서 다음 필수 필드를 구성합니다.
  + 인증서 경로

    1. `iot_claim_cert_path`: 클레임 인증서의 위치(`claim_cert.pem`)

    1. `iot_claim_pk_path`: 프라이빗 키의 위치(`claim_pk.key`)

    1. 보안 스토리지 인증서 핸들러를 구현할 때 두 필드 모두에 `SECURE_STORAGE` 사용
  + 연결 설정

    1. `fp_template_name`: 이전의 `ProvisioningProfile` 이름입니다.

    1. `endpoint_url`: `RegisterCustomEndpoint` API 응답의 관리형 통합 엔드포인트 URL입니다(리전의 모든 디바이스에 대해 동일).
  + 디바이스 식별자

    1. `SN`: `CreateManagedThing` API 호출과 일치하는 디바이스 일련 번호(디바이스당 고유)

    1. `UPC``CreateManagedThing` API 직접 호출의 범용 제품 코드(이 제품의 모든 디바이스에서 동일) 

  ```
  {
      "ro": {
          "iot_provisioning_method": "FLEET_PROVISIONING",
          "iot_claim_cert_path": "<SPECIFY_THIS_FIELD>",
          "iot_claim_pk_path": "<SPECIFY_THIS_FIELD>",
          "fp_template_name": "<SPECIFY_THIS_FIELD>",        
          "endpoint_url": "<SPECIFY_THIS_FIELD>",
          "SN": "<SPECIFY_THIS_FIELD>",
          "UPC": "<SPECIFY_THIS_FIELD>"        
      },
      "rw": {
          "iot_provisioning_state": "NOT_PROVISIONED"
      }
  }
  ```

### 구성 파일의 내용
<a name="managedintegrations-sdk-v2-cookbook-config-contents"></a>

`iotmi_config.json` 파일의 내용을 검토합니다.


**내용**  

| Key(키) | 값 | 고객이 추가했나요? | Notes | 
| --- | --- | --- | --- | 
| iot\$1provisioning\$1method | FLEET\$1PROVISIONING | 예 | 사용할 프로비저닝 방법을 지정합니다. | 
| iot\$1claim\$1cert\$1path | 또는를 지정하는 파일 경로입니다SECURE\$1STORAGE. 예: /data/aws/iotmi/certs/claim\$1cert.pem | 예 | 또는를 사용할 파일 경로를 지정합니다SECURE\$1STORAGE. | 
| iot\$1claim\$1pk\$1path | 또는를 지정하는 파일 경로입니다SECURE\$1STORAGE. 예: /data/aws/iotmi/certs/claim\$1pk.pem | 예 | 또는를 사용할 파일 경로를 지정합니다SECURE\$1STORAGE. | 
| fp\$1template\$1name | 플릿 프로비저닝 템플릿 이름은 이전에 ProvisioningProfile 사용된의 이름과 같아야 합니다. | 예 | 이전에 ProvisioningProfile 사용된의 이름과 동일 | 
| endpoint\$1url | 관리형 통합을 위한 엔드포인트 URL입니다. | 예 | 디바이스는이 URL을 사용하여 관리형 통합 클라우드에 연결합니다. 이 정보를 얻으려면 [RegisterCustomEndpoint](https://docs.aws.amazon.com/iot-mi/latest/APIReference/API_RegisterCustomEndpoint.html) API를 사용합니다. | 
| SN | 디바이스 일련 번호입니다. 예를 들어 AIDACKCEVSQ6C2EXAMPLE입니다. | 예 | 각 디바이스에 대해이 고유한 정보를 제공해야 합니다. | 
| UPC | 디바이스 범용 제품 코드. 예를 들어 841667145075입니다. | 예 | 디바이스에 대해이 정보를 제공해야 합니다. | 
| managed\$1thing\$1id | 관리형 사물의 ID입니다. | 아니요 | 이 정보는 나중에 허브 프로비저닝 후 온보딩 프로세스에 의해 추가됩니다. | 
| iot\$1provisioning\$1state | 프로비저닝 상태입니다. | 예 | 프로비저닝 상태는 로 설정해야 합니다NOT\$1PROVISIONED. | 
| iot\$1permanent\$1cert\$1path | IoT 인증서 경로입니다. 예를 들어 /data/aws/iotmi/iot\$1cert.pem입니다. | 아니요 | 이 정보는 나중에 허브 프로비저닝 후 온보딩 프로세스에 의해 추가됩니다. | 
| iot\$1permanent\$1pk\$1path | IoT 프라이빗 키 파일 경로입니다. 예를 들어 /data/aws/iotmi/iot\$1pk.pem입니다. | 아니요 | 이 정보는 나중에 허브 프로비저닝 후 온보딩 프로세스에 의해 추가됩니다. | 
| client\$1id | MQTT 연결에 사용할 클라이언트 ID입니다. | 아니요 | 이 정보는 나중에 다른 구성 요소가 사용할 수 있도록 허브 프로비저닝 후 온보딩 프로세스에 의해 추가됩니다. | 
| mqtt\$1keep\$1alive\$1interval | 범위는 30\$11200이고 단위는 초 단위입니다. 기본값은 300입니다. | 예 | 이를 사용하여 MQTT 연결에 대한 연결 유지 간격을 설정합니다. | 
| event\$1manager\$1upper\$1bound | 기본값은 500입니다. | 아니요 | 이 정보는 나중에 다른 구성 요소가 사용할 수 있도록 허브 프로비저닝 후 온보딩 프로세스에 의해 추가됩니다. | 

## 7단계: 구성 파일을 허브에 복사
<a name="managedintegrations-sdk-v2-cookbook-copyconfig"></a>

구성 파일을 `/data/aws/iotmi/config` 또는 사용자 지정 디렉터리 경로에 복사합니다. 온보딩 프로세스 중에 바이`HubOnboarding`너리에 대한이 경로를 제공합니다.

**플릿 프로비저닝의 경우**

```
/data/
    aws/
        iotmi/
            config/
                iotmi_config.json
            certs/
                claim_cert.pem
                claim_pk.key
```