

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 预备人
<a name="managedintegrations-sdk-device-provisionee"></a>

provisionee 是托管集成的组成部分，支持按声明进行队列配置。使用配置者，您可以安全地配置您的设备。SDK 为设备配置创建了必要的资源，其中包括从托管集成云中获取的设备证书和私钥。当您想要配置设备时，或者如果有任何更改可能需要您重新配置设备，则可以使用预配者。

**Topics**
+ [置备人工作流程](#managedintegrations-sdk-device-provisionee-how)
+ [设置环境变量](#sdk-provisionee-envvars)
+ [注册自定义终端节点](#sdk-provisionee-endpoint-create)
+ [创建配置文件](#sdk-provisionee-template-create)
+ [创建托管事物](#sdk-provisionee-managed-thing-create)
+ [SDK 用户 Wi-Fi 配置](#sdk-provisionee-endpoint-wifi)
+ [按索赔提供舰队](#sdk-provisionee-endpoint-claim)
+ [托管式事物功能](#sdk-provisionee-endpoint-update)

## 置备人工作流程
<a name="managedintegrations-sdk-device-provisionee-how"></a>

该过程需要在云端和设备端进行设置。客户配置云需求，例如自定义端点、配置文件和托管事物。设备首次开机时，供应者：

1. 使用声明证书连接到托管集成端点

1. 通过队列配置挂钩验证设备参数

1. 在设备上获取并存储永久证书和私钥

1. 设备使用永久证书重新连接

1. 发现设备功能并将其上传到托管集成

成功配置后，设备将直接与托管集成进行通信。预配者仅在重新配置任务时激活。

## 设置环境变量
<a name="sdk-provisionee-envvars"></a>

在您的云环境中设置以下 AWS 凭据：

```
$ export AWS_ACCESS_KEY_ID=YOUR-ACCOUNT-ACCESS-KEY-ID
$ export AWS_SECRET_ACCESS_KEY=YOUR-ACCOUNT-SECRET-ACCESS-KEY
$ export AWS_DEFAULT_REGION=YOUR-DEFAULT-REGION
```

## 注册自定义终端节点
<a name="sdk-provisionee-endpoint-create"></a>

在您的云环境中使用 [RegisterCustomEndpoint](https://docs.aws.amazon.com/iot-mi/latest/APIReference/API_RegisterCustomEndpoint.html)API 命令创建用于 device-to-cloud通信的自定义终端节点。

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

**响应示例**

```
{ "EndpointAddress":"[ACCOUNT-PREFIX]-ats.iot.AWS-REGION.amazonaws.com" }
```

**注意**  
 存储用于配置配置参数的端点地址。使用 `GetCustomEndpoint` API 返回端点信息。有关更多信息，请参阅[GetCustomEndpoint](https://docs.aws.amazon.com/iot-mi/latest/APIReference/API_GetCustomEndpoint.html)《*托管集成 [RegisterCustomEndpoint](https://docs.aws.amazon.com/iot-mi/latest/APIReference/API_RegisterCustomEndpoint.html)API 参考指南》中的 API 和 API。*

## 创建配置文件
<a name="sdk-provisionee-template-create"></a>

创建用于定义您的队列配置方法的配置文件。在您的云环境中运行 [CreateProvisioningProfile](https://docs.aws.amazon.com/iot-mi/latest/APIReference/API_CreateProvisioningProfile.html)API 以返回用于设备身份验证的声明证书和私钥：

```
aws iot-managed-integrations create-provisioning-profile \
--provisioning-type "FLEET_PROVISIONING" \
--name "PROVISIONING-PROFILE-NAME"
```

**响应示例**

```
{ "Arn":"arn:aws:iot-managed-integrations:AWS-REGION:YOUR-ACCOUNT-ID:provisioning-profile/PROFILE_NAME",
    "ClaimCertificate":"string",
    "ClaimCertificatePrivateKey":"string",
    "Name":"ProfileName",
    "ProvisioningType":"FLEET_PROVISIONING"}
```

您可以实现核心PKCS11 平台抽象库 (PAL)，使核心PKCS11 库与您的设备配合使用。核心 PKCS11 PAL 端口必须提供存储索赔证书和私钥的位置。使用此功能，您可以安全地存储设备的私钥和证书。您可以将私钥和证书存储在硬件安全模块 (HSM) 或可信平台模块 (TPM) 上。

## 创建托管事物
<a name="sdk-provisionee-managed-thing-create"></a>

使用 [CreateManagedThing](https://docs.aws.amazon.com/iot-mi/latest/APIReference/API_CreateManagedThing.html)API 将您的设备注册到托管集成云。包括设备的序列号 (SN) 和通用产品代码 (UPC)：

```
aws iot-managed-integrations create-managed-thing —role DEVICE \
  --authentication-material-type WIFI_SETUP_QR_BAR_CODE \
  --authentication-material "SN:DEVICE-SN;UPC:DEVICE-UPC;"
```

以下显示了 API 响应示例。

```
{
   "Arn":"arn:aws:iot-managed-integrations:AWS-REGION:ACCOUNT-ID:managed-thing/59d3c90c55c4491192d841879192d33f",
   "CreatedAt":1.730960226491E9,
   "Id":"59d3c90c55c4491192d841879192d33f"
}
```

API 返回可用于配置验证的**托管事物 ID**。您需要提供设备序列号 (SN) 和通用产品代码 (UPC)，这些序列号和通用产品代码 (UPC) 在置备交易期间与批准的托管事物相匹配。该交易返回的结果类似于以下内容：

```
/**
 * @brief Device info structure.
 */
typedef struct iotmiDev_DeviceInfo 
{
    char serialNumber[ IOTMI_DEVICE_MAX_SERIAL_NUMBER_LENGTH + 1U ];
    char universalProductCode[ IOTMI_DEVICE_MAX_UPC_LENGTH + 1U ];
    char internationalArticleNumber[ IOTMI_DEVICE_MAX_EAN_LENGTH + 1U ];
} iotmiDev_DeviceInfo_t;
```

## SDK 用户 Wi-Fi 配置
<a name="sdk-provisionee-endpoint-wifi"></a>

设备制造商和解决方案提供商拥有自己的专有Wi-Fi配置服务，用于接收和配置Wi-Fi凭证。Wi-Fi 配置服务包括使用专用的移动应用程序、低功耗蓝牙 (BLE) 连接和其他专有协议，在初始设置过程中安全地传输 Wi-Fi 凭证。

终端设备 SDK 的使用者必须实现 Wi-Fi 配置服务，设备才能连接到 Wi-Fi 网络。

## 按索赔提供舰队
<a name="sdk-provisionee-endpoint-claim"></a>

使用 provisionee，最终用户可以配置唯一的证书，并使用按声明配置将其注册到托管集成。

客户端 ID 可以从配置模板响应或设备证书中获取 `<common name>“_”<serial number>`

## 托管式事物功能
<a name="sdk-provisionee-endpoint-update"></a>

预配者发现托管事物功能，然后将这些功能上传到托管集成。它使应用程序和其他服务可以使用这些功能进行访问。设备、其他 Web 客户端和服务可以使用 MQTT 和保留的 MQTT 主题更新功能，也可以使用 REST API 使用 HTTP 来更新功能。