

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# ハブオンボーディングの設定
<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 を使用します。

  詳細については、「 Managed Integrations 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>

プロビジョニングプロファイルには、デバイスが Managed Integrations に接続するために必要なセキュリティ認証情報と設定が含まれています。

**フリートプロビジョニングプロファイルを作成するには**
+ <a name="managedintegrations-sdk-v2-cookbook-provisioning"></a>[CreateProvisioningProfile](https://docs.aws.amazon.com/iot-mi/latest/APIReference/API_CreateProvisioningProfile.html) API を呼び出して、以下を生成します。
  + デバイス接続設定を定義するプロビジョニングテンプレート
  + デバイス認証のクレーム証明書とプライベートキー
**重要**  
クレーム証明書、プライベートキー、テンプレート ID を安全に保存します。デバイスを Managed Integrations にオンボードするには、これらの認証情報が必要です。これらの認証情報を紛失した場合は、新しいプロビジョニングプロファイルを作成する必要があります。

**`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 を使用して、ハブデバイスのマネージド型モノを作成します。各ハブには、一意の認証マテリアルを持つ独自のマネージド型モノが必要です。詳細については、「 Managed Integrations 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"
}
```

詳細については、「 Managed Integrations *API リファレンス*」の[CreateManagedThing](https://docs.aws.amazon.com/iot-mi/latest/APIReference/API_CreateManagedThing.html)」を参照してください。

### (オプション) マネージドモノを取得する
<a name="managedintegrations-sdk-v2-cookbook-managedthing-get"></a>

マネージドモノ`ProvisioningStatus`の は、続行する`PRE_ASSOCIATED`前に である必要があります。ProvisioningStatus の詳細については、[「デバイスプロビジョニング](https://docs.aws.amazon.com/iot-mi/latest/devguide/device-provisioning.html)」を参照してください。`GetManagedThing` API を使用して、マネージドモノが存在し、プロビジョニングの準備が整っていることを確認します。詳細については、「 Managed Integrations *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>

証明書とキーをハブデバイスにコピーし、デバイス固有の設定ファイルを作成します。これらのファイルは、プロビジョニングプロセス中にハブと Managed Integrations 間の安全な通信を確立します。

**クレーム証明書とキーをコピーするには**
+ `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 Cert Handler を実装するときに両方のフィールドに `SECURE_STORAGE`を使用する
  + 接続の設定

    1. `fp_template_name`: 前の `ProvisioningProfile`の名前。

    1. `endpoint_url`: `RegisterCustomEndpoint` API レスポンスからの Managed Integrations エンドポイント 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` ファイルの内容を確認します。


**内容**  

| キー | 値 | 顧客によって追加されましたか? | コメント | 
| --- | --- | --- | --- | 
| iot\_provisioning\_method | FLEET\_PROVISIONING | はい | 使用するプロビジョニング方法を指定します。 | 
| iot\_claim\_cert\_path | または を指定するファイルパスSECURE\_STORAGE。例: /data/aws/iotmi/certs/claim\_cert.pem | はい | または を使用するファイルパスを指定しますSECURE\_STORAGE。 | 
| iot\_claim\_pk\_path | または を指定するファイルパスSECURE\_STORAGE。例: /data/aws/iotmi/certs/claim\_pk.pem | はい | または を使用するファイルパスを指定しますSECURE\_STORAGE。 | 
| fp\_template\_name | フリートプロビジョニングテンプレート名は、以前にProvisioningProfile使用された の名前と同じである必要があります。 | はい | 以前にProvisioningProfile使用された の名前と同じ | 
| endpoint\_url | マネージド統合のエンドポイント URL。 | はい | デバイスは、この URL を使用して Managed Integrations クラウドに接続します。この情報を取得するには、[RegisterCustomEndpoint](https://docs.aws.amazon.com/iot-mi/latest/APIReference/API_RegisterCustomEndpoint.html) API を使用します。 | 
| SN | デバイスのシリアル番号。例えば、AIDACKCEVSQ6C2EXAMPLE。 | はい | この一意の情報をデバイスごとに指定する必要があります。 | 
| UPC | デバイスユニバーサル製品コード。例えば、841667145075。 | はい | デバイスにこの情報を指定する必要があります。 | 
| managed\_thing\_id | マネージドモノの ID。 | いいえ | この情報は、ハブプロビジョニング後のオンボーディングプロセスによって後で追加されます。 | 
| iot\_provisioning\_state | プロビジョニング状態。 | はい | プロビジョニング状態は に設定する必要がありますNOT\_PROVISIONED。 | 
| iot\_permanent\_cert\_path | IoT 証明書パス。例えば、/data/aws/iotmi/iot\_cert.pem。 | いいえ | この情報は、ハブプロビジョニング後のオンボーディングプロセスによって後で追加されます。 | 
| iot\_permanent\_pk\_path | IoT プライベートキーファイルパス。例えば、/data/aws/iotmi/iot\_pk.pem。 | いいえ | この情報は、ハブプロビジョニング後のオンボーディングプロセスによって後で追加されます。 | 
| client\_id | MQTT 接続に使用されるクライアント ID。 | いいえ | この情報は、ハブプロビジョニング後のオンボーディングプロセスによって後で追加され、他のコンポーネントが消費します。 | 
| mqtt\_keep\_alive\_interval | 範囲は 30～1200 で、単位は秒単位です。デフォルト値は 300 です。 | はい | これを使用して、MQTT 接続のキープアライブ間隔を設定します。 | 
| event\_manager\_upper\_bound | デフォルト値は 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
```