

终止支持通知：2026 年 10 月 7 日， AWS 将停止对的支持。 AWS IoT Greengrass Version 1 2026 年 10 月 7 日之后，您将无法再访问这些 AWS IoT Greengrass V1 资源。如需了解更多信息，请访问[迁移自 AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html)。

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

# 测试通信
<a name="test-comms"></a>

1. <a name="ping-device"></a>确保您的计算机和 AWS IoT Greengrass 核心设备使用相同的网络连接到互联网。

   1. 在 AWS IoT Greengrass 核心设备上，运行以下命令以查找其 IP 地址。

      ```
      hostname -I
      ```

   1. 在计算机上，使用核心的 IP 地址运行以下命令。可以使用 Ctrl \$1 C 停止 **ping** 命令。

      ```
      ping IP-address
      ```

      类似于以下内容的输出表示计算机和 AWS IoT Greengrass 核心设备之间成功通信（丢包 0%）：  
![\[成功的 ping 命令输出。\]](http://docs.aws.amazon.com/zh_cn/greengrass/v1/developerguide/images/gg-get-started-075.5.png)
**注意**  
如果您无法 ping 正在运行的实例 AWS IoT Greengrass，请确保该 EC2 实例的入站安全组规则允许 [ECHO 请求](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-group-rules-reference.html#sg-rules-ping)消息的 ICMP 流量。有关更多信息，请参阅 *Amazon EC2 用户指南*中的[向安全组添加规则](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html#adding-security-group-rule)。  
在 Windows 主机上，在带有高级安全功能的 Windows 防火墙应用程序中，您可能还需要启用允许入站回显请求的入站规则（例如，**文件和打印机共享（Echo Request- ICMPv4-in）**），或者创建一个规则。

1. 获取您的 AWS IoT 终端节点。

   1. <a name="iot-settings"></a>从[AWS IoT 控制台](https://console.aws.amazon.com/iot/)导航窗格中，选择**设置**。

   1. <a name="iot-settings-endpoint"></a>在**设备数据端点**下，记下 **端点**的值。在以下步骤中，您可以使用此值来替换命令中的*AWS\$1IOT\$1ENDPOINT*占位符。
**注意**  
确保您的[终端节点与证书类型对应](gg-core.md#certificate-endpoints)。

1. 在您的计算机（不是 AWS IoT Greengrass 核心设备）上，打开两个[命令行](https://en.wikipedia.org/wiki/Command-line_interface)（终端或命令提示符）窗口。一个窗口代表 HelloWorld \$1Publisher 客户端设备，另一个窗口代表 HelloWorld \$1Subscriber 客户端设备。

   执行后，`basicDiscovery.py`尝试收集有关 AWS IoT Greengrass 核心端点位置的信息。在客户端设备发现并成功连接到核心后，将会存储此信息。这将允许未来的消息传递和操作可以在本地执行（无需 Internet 连接）。
**注意**  
 IDs 用于 MQTT 连接的客户端必须与客户端设备的事物名称相匹配。`basicDiscovery.py` 脚本将 MQTT 连接的客户端 ID 设置为您在运行脚本时指定的事物名称。  
从包含 `basicDiscovery.py` 文件的文件夹运行以下命令，以查看详细的脚本使用信息：  

   ```
   python basicDiscovery.py --help
   ```

1. 在 HelloWorld \$1Publisher 客户端设备窗口中，运行以下命令。
   + *path-to-certs-folder*替换为包含证书、密钥和的文件夹的路径`basicDiscovery.py`。
   + 替换*AWS\$1IOT\$1ENDPOINT*为您的终端节点。
   + 将这两个*publisherCertId*实例替换为您的 HelloWorld \$1Publisher 客户端设备文件名中的证书 ID。

   ```
   cd path-to-certs-folder
   python basicDiscovery.py --endpoint AWS_IOT_ENDPOINT --rootCA AmazonRootCA1.pem --cert publisherCertId-certificate.pem.crt --key publisherCertId-private.pem.key --thingName HelloWorld_Publisher --topic 'hello/world/pubsub' --mode publish --message 'Hello, World! Sent from HelloWorld_Publisher'
   ```

   您应该看到类似于以下内容的输出，其中包括诸如 `Published topic 'hello/world/pubsub': {"message": "Hello, World! Sent from HelloWorld_Publisher", "sequence": 1}` 的条目。
**注意**  
如果脚本返回 `error: unrecognized arguments` 消息，请针对 `--topic` 和 `--message` 参数将单引号更改为双引号，并再次运行该命令。  
要排查连接问题，您可以尝试使用[手动 IP 检测](#corp-network-manual-detection)。  
![\[publisher 输出的屏幕截图。\]](http://docs.aws.amazon.com/zh_cn/greengrass/v1/developerguide/images/gg-get-started-076.png)

1. 在 HelloWorld \$1Subscriber 客户端设备窗口中，运行以下命令。
   + *path-to-certs-folder*替换为包含证书、密钥和的文件夹的路径`basicDiscovery.py`。
   + 替换*AWS\$1IOT\$1ENDPOINT*为您的终端节点。
   + 将这两个*subscriberCertId*实例替换为您的 HelloWorld \$1Subscriber 客户端设备文件名中的证书 ID。

   ```
   cd path-to-certs-folder
   python basicDiscovery.py --endpoint AWS_IOT_ENDPOINT --rootCA AmazonRootCA1.pem --cert subscriberCertId-certificate.pem.crt --key subscriberCertId-private.pem.key --thingName HelloWorld_Subscriber --topic 'hello/world/pubsub' --mode subscribe
   ```

   您应该看到以下输出，其中包括诸如 `Received message on topic hello/world/pubsub: {"message": "Hello, World! Sent from HelloWorld_Publisher", "sequence": 1}` 的条目。  
![\[subscriber 输出的屏幕截图。\]](http://docs.aws.amazon.com/zh_cn/greengrass/v1/developerguide/images/gg-get-started-077.png)

关闭 HelloWorld\$1Publisher 窗口，用于阻止消息在中累积 HelloWorld\$1Subscriber 窗口。

在公司网络上进行测试可能会干扰与核心的连接。作为解决方法，您可以手动输入端点。这样可以确保`basicDiscovery.py`脚本连接到 AWS IoT Greengrass 核心设备的正确 IP 地址。

**手动输入端点**

1. <a name="console-gg-groups"></a>**在 AWS IoT 控制台导航窗格的**管理**下，展开 **Greengrass** 设备，然后选择群组 (V1)。**

1. 在 **Greengrass 组**下，选择您的组。

1. 配置核心，以手动管理 MQTT 代理端点。执行以下操作：

   1. 在组配置页面上，选择**Lambda 函数**选项卡。

   1. 在**系统 Lambda 函数**下，选择 **IP 检测器**，然后选择**编辑**。

   1. 在**编辑 IP 检测器设置**中，选择**手动管理 MQTT 代理端点**，然后选择**保存**。

1. 输入核心的 MQTT 代理端点。执行以下操作：

   1. 在**概述**下，选择 **Greengrass 核心**。

   1. 在 **MQTT 代理端点**下，选择**管理端点**。

   1. 选择**添加端点**，确保只有一个端点值。此值必须是 AWS IoT Greengrass 核心设备端口 8883 的 IP 地址端点（例如`192.168.1.4`）。

   1. 选择**更新**。