

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

# Raspberry Pi 上的托管集成中心 SDK Docker 容器
<a name="raspberrypi-container-docker-sdk"></a>

**注意**  
 Raspberry Pi 上的 AWS IoT Hub SDK 的实现是一个演示项目，仅用于学习和测试目的，不打算在生产环境中使用。在本演示中，为了便于开发，请设置以下配置：  
 **AWS 凭证存储**：仅出于演示目的，凭证和证书存储在可访问的位置，便于测试和开发。生产环境必须使用安全的存储解决方案 AWS Secrets Manager，例如或 Systems Manager Parameter Store。他们必须实现静态加密，并遵循 AWS IoT 安全准则。  
 **容器权限**：该演示以提升的权限运行，允许不受限制地访问主机资源并简化开发工作流程。在生产环境中，容器应以最低要求的权限运行。  
 **网桥配置**：该演示使用网络桥接配置，该配置可公开内部网络流量，便于调试和监控。在生产环境中，实施适当的网络隔离和分段，以防止未经授权访问内部网络流量。  
 **USB 设备权限**：启用不受限制的 USB 设备访问权限，便于轻松连接开发外围设备和测试设备。在生产环境中，实施严格的 USB 设备控制和验证，以防止设备欺骗攻击。  
 这些配置支持直接测试，不得在生产环境中使用。部署到生产环境时，请遵循安全最佳实践，以防止主机系统受损和未经授权访问凭证。

## 先决条件
<a name="required-hardware-software"></a>

docker 容器需要满足以下先决条件。
+ 下载并安装 [Raspberry Pi 成像器。](https://www.raspberrypi.com/software/)
+ 获取 S [D 卡](https://www.amazon.com/dp/B0CWPPDS3D?ref=ppx_yo2ov_dt_b_fed_asin_title)。
+ 设置[配备 2.4Ghz 64 位四核 CPU（8GB RAM）的 Raspberry Pi 5](https://www.amazon.com/CanaKit-Raspberry-Starter-Kit-PRO/dp/B0CRSNCJ6Y/)。
+ 连接 [Sonoff Zigbee](https://www.amazon.com/Plus-ZBDongle-Interface-Pre-Installed-Coordinated-Zigbee2MQTT/dp/B0B6P22YJC/) USB 加密狗。
+ [将固件刷入 Sonoff Zigbee USB 加密狗](supported-raspberry.md#sonoff-zigbee-firmware-flashing).
+ 连接 [Silicon Labs SLUSB001A 加密狗](https://www.digikey.com/en/products/detail/silicon-labs/SLUSB001A/9867108)。
+ [注册一个 AWS 账户](https://docs.aws.amazon.com/iot-mi/latest/devguide/setting-up.html#sign-up-for-aws)。
+ [AWS CLI 从《托管集成 AWS CLI 命令参考》中](https://docs.aws.amazon.com/cli/latest/reference/iot-managed-integrations/)安装最新版本的。
+ 使用 IP 地址或主机名通过 SSH 访问树莓派。

## 在 Raspberry Pi 上使用托管集成中心 SDK Docker 容器
<a name="docker-container-deployment"></a>

1. 下载[管理集成 Raspberry Pi Hub SDK Docker](https://d2no7dt1utuyzo.cloudfront.net/IotMI-HubSDK-RaspberryPi/1.0.0/IotMI-HubSDK-Docker-v1.0.0.tar.gz)

1. 使用 SCP 将文件复制到 Raspberry Pi：

   ```
   scp ~/path/to/IotMI-HubSDK-Docker-v1.0.0.tar.gz [username]@raspberrypi.local:~
   ```

1. 通过 SSH 连接到 Raspberry Pi：

   ```
   ssh hub123456@raspberrypi.local
   ```

1. 如果没有，请安装 Docker：

   ```
   # Install Docker
   cd
   curl -fsSL https://get.docker.com | sudo sh
   
   # Add your user to docker group
   sudo usermod -aG docker $USER
   exit # exit ssh
   
   # Log in again
   ```

1. 如果没有，请安装 Docker Compose：

   ```
   # Install Docker Compose
   sudo apt-get update
   sudo apt-get install -y docker-compose-plugin
   ```

1. 提取 Hub SDK 文件：

   ```
   # Navigate to the home directory
   cd
   
   # Extract the hub-docker.tar.gz file
   tar -xzf IotMI-HubSDK-Docker-v1.0.0.tar.gz
   ```

1. 导航到 hub-docker 目录：

   ```
   cd IotMI-HubSDK-Docker
   ```

1. 完成 [Hub 入门设置](https://docs.aws.amazon.com/iot-mi/latest/devguide/managedintegrations-sdk-v2-cookbook-hubsetup.html)以配置身份验证和设置。
**注意**  
您必须处于`YUL`或`DUB`所在地区才能执行此步骤。

1. 启动 Docker 容器：

   ```
   # The first time it's called, it will build the container
   docker compose up -d
   docker compose logs -f
   ```

**预期输出**：

```
[+] Running 1/1
 ✔ Container iotmi-hubsdk-docker-hubsdk-1  Started
hubsdk-1  | -\-\-\-\-\-\-Checking USB dongles-\-\-\-\-\-\-\-\-\-\-\-\-
hubsdk-1  | -\-\-\-\-\-\-Stopping SDK running processes-\-\-
hubsdk-1  | iotmi_mqtt_proxy: no process found
hubsdk-1  | ace_eventmgr: no process found
hubsdk-1  | ace_zigbee_service: no process found
hubsdk-1  | zwave_svc: no process found
hubsdk-1  | iotmi_cdmb: no process found
hubsdk-1  | iotmi_device_agent: no process found
hubsdk-1  | iotmi_lpw_provisioner: no process found
hubsdk-1  | iotmi_log_daemon: no process found
hubsdk-1  | -\-\-\-\-\-\-Starting Hub SDK-\-\-\-\-\-\-\-\-\-\-\-\-
hubsdk-1  | -\-\-\-\-\-\-Creating logs directory-\-\-\-\-\-\-\-\-\-
hubsdk-1  | Logs directory created.
hubsdk-1  | -\-\-\-\-\-\-Verifying Middleware paths-\-\-\-\-\-\-
hubsdk-1  | All middleware libraries exist
hubsdk-1  | -\-\-\-\-\-\-Verifying Middleware pre reqs-\-\-
hubsdk-1  | AIPC and KVstroage directories exist
hubsdk-1  | -\-\-\-\-\-\-Starting HubOnboarding-\-\-\-\-\-\-\-\-\-\-
hubsdk-1  | -\-\-\-\-\-\-Starting MQTT Proxy-\-\-\-\-\-\-\-\-\-\-
hubsdk-1  | -\-\-\-\-\-\-Staring Log Daemon-\-\-
hubsdk-1  | -\-\-\-\-\-\-Starting Event Manager-\-\-\-\-\-\-\-\-\-\-
hubsdk-1  | -\-\-\-\-\-\-Starting Zigbee Service-\-\-\-\-\-\-\-\-\-
hubsdk-1  | -\-\-\-\-\-\-Starting Zwave Service-\-\-\-\-\-\-\-\-\-
hubsdk-1  | /data/aws/iotmi/middleware/AceZwave/bin /data/aws/iotmi
hubsdk-1  | /data/aws/iotmi
hubsdk-1  | -\-\-\-\-\-\-Starting CDMB-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
hubsdk-1  | -\-\-\-\-\-\-Starting Agent-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
hubsdk-1  | -\-\-\-\-\-\-Starting Provisioner-\-\-\-\-\-\-\-\-\-\-\-\-\-
hubsdk-1  | -\-\-\-\-\-\-Checking SDK status-\-\-\-\-\-\-\-\-\-\-\-\-\-\-
hubsdk-1  | root         105  0.2  0.2 1093488 16608 ?       Sl   20:51   0:00 ./iotmi_mqtt_proxy -C /data/aws/iotmi/config/iotmi_config.json
hubsdk-1  | Process 'iotmi_mqtt_proxy' is running.
hubsdk-1  | root         183  0.0  0.0 236272  3152 ?        Sl   20:51   0:00 ./middleware/AceCommon/bin/ace_eventmgr
hubsdk-1  | Process 'ace_eventmgr' is running.
hubsdk-1  | root         190 12.0  0.1 319264  8352 ?        Sl   20:51   0:04 ./middleware/AceZigbee/bin/ace_zigbee_service
hubsdk-1  | Process 'ace_zigbee_service' is running.
hubsdk-1  | root         200  0.0  0.1 1365792 12480 ?       Sl   20:51   0:00 ./zwave_svc
hubsdk-1  | Process 'zwave_svc' is running.
hubsdk-1  | root         233  0.0  0.0 1198704 5760 ?        Sl   20:51   0:00 ./iotmi_cdmb
hubsdk-1  | Process 'iotmi_cdmb' is running.
hubsdk-1  | root         268  0.2  0.2 2017424 21968 ?       Sl   20:51   0:00 ./iotmi_device_agent
hubsdk-1  | Process 'iotmi_device_agent' is running.
hubsdk-1  | root         311  0.1  0.1 1523072 13008 ?       Sl   20:51   0:00 ./iotmi_lpw_provisioner
hubsdk-1  | Process 'iotmi_lpw_provisioner' is running.
hubsdk-1  | root         132  0.0  0.0 875024  7232 ?        Sl   20:51   0:00 ./iotmi_log_daemon
hubsdk-1  | Process 'iotmi_log_daemon' is running.
hubsdk-1  | -\-\-\-\-\-Successfully Started Hub SDK-\-\-\-
```

成功启动 Hub SDK 后，请通过继续进行设备加载和管理。[在用户指导下进行设备加载和操作的设置](managedintegrations-sdk-v2-cookbook-ugs.md)

**注意**  
要访问 Docker 容器 bash 外壳，请运行以下命令：  

  ```
  docker compose exec hubsdk bash
  ```
要在重启后重新启动容器，请运行以下命令：  

  ```
  docker compose up -d
  ```
要更新 Hub SDK，请替换以下文件夹中的二进制文件：  

  ```
  hub-docker/iotmi
  ```
要在保留数据的同时安全地重启容器，请执行以下操作：  

  ```
  docker compose down
  docker compose up -d
  docker compose logs -f
  ```