

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

# 管理核心设备端点
<a name="manage-core-device-endpoints"></a>

使用云发现时，会将核心设备的 MQTT 代理端点存储在 AWS IoT Greengrass 云服务中。客户端设备连接到 AWS IoT Greengrass 以检索这些端点及其关联核心设备的其他信息。

对于每台核心设备，都可以自动或手动管理端点。
+ **使用 IP 检测器自动管理端点**

  如果您的网络设置不复杂，例如客户端设备与核心设备位于同一网络中，则可以部署 [IP 检测器组件](ip-detector-component.md)来为您自动管理核心设备端点。例如，如果核心设备位于将 MQTT 代理端口转发到核心设备的路由器后面，则无法使用 IP 检测器组件。

  将 IP 检测器组件部署到事务组也会很有用，因为它可以管理事物组中所有核心设备的端点。有关更多信息，请参阅 [使用 IP 检测器自动管理端点](#use-ip-detector)。
+ **手动管理端点**

  如果无法使用 IP 检测器组件，则必须手动管理核心设备端点。您可以使用控制台或 API 更新这些端点。有关更多信息，请参阅 [手动管理端点](#manually-manage-endpoints)。

**Topics**
+ [使用 IP 检测器自动管理端点](#use-ip-detector)
+ [手动管理端点](#manually-manage-endpoints)

## 使用 IP 检测器自动管理端点
<a name="use-ip-detector"></a>

如果您的网络设置很简单，例如客户端设备与核心设备位于同一网络中，则可以部署 [IP 检测器组件](ip-detector-component.md)来执行以下操作：
+ 监控 Greengrass 核心设备的本地网络连接信息。此信息包括核心设备的网络端点和 MQTT 代理运行的端口。
+ 向 AWS IoT Greengrass 云服务报告核心设备的连接信息。

IP 检测器组件会覆盖您手动设置的端点。

**重要**  
核心设备的 AWS IoT 策略必须允许使用 IP 检测器组件的`greengrass:UpdateConnectivityInfo`权限。有关更多信息，请参阅[AWS IoT 数据平面操作策略](device-auth.md#iot-policies)和[配置 AWS IoT 事物策略](connect-client-devices.md#configure-iot-policy-requirement)。

您可以执行以下任一操作来部署 IP 检测器组件：
+ 使用控制台中的**配置发现**页面。有关更多信息，请参阅 [配置云发现（控制台）](connect-client-devices.md#configure-cloud-discovery-console)。
+ 创建和修改部署以包含 IP 检测器。您可以使用控制台或 AWS API 来管理部署。 AWS CLI有关更多信息，请参阅 [创建部署](create-deployments.md)。

### 部署 IP 检测器组件（控制台）
<a name="deploy-ip-detector-console"></a>

1. 在 [AWS IoT Greengrass 控制台](https://console.aws.amazon.com/greengrass)导航菜单中，选择**组件**。

1. 在**组件**页面上，选择**公有组件**选项卡，然后选择 **aws.greengrass.clientdevices.IPDetector**。

1. 在 **aws.greengrass.clientdevices.IPDetector** 页面上，选择**部署**。

1. <a name="deploy-component-choose-deployment-step"></a>从**添加到部署**中，选择要修改的现有部署，或者选择创建新部署，然后选择**下一步**。

1. <a name="deploy-component-choose-target-step"></a>如果您选择创建新部署，请为部署选择目标核心设备或事物组。在**指定目标**页面的**部署目标**下面，选择核心设备或事物组，然后选择**下一步**。

1. 在**选择组件**页面上，确认已选择 **aws.greengrass.clientdevices.IPDetector** 组件，然后选择**下一步**。

1. 在**配置组件**页面上，选择 **aws.greengrass.clientdevices.IPDetector**，然后执行以下操作：

   1. 选择**配置组件**。

   1. 在**配置 aws.greengrass.clientdevices.IPDetector** 模式的**配置更新**下，在**要合并的配置**中输入配置更新来配置 IP 检测器组件。您可以指定以下任意配置选项：
      + `defaultPort` –<a name="ip-detector-component-configuration-default-port-definition"></a>（可选）此组件检测到 IP 地址时要报告的 MQTT 代理端口。如果您将 MQTT 代理配置为使用默认端口 8883 以外的端口，则必须指定此参数。
      + `includeIPv4LoopbackAddrs`—<a name="ip-detector-component-configuration-include-ipv4-loopback-addrs-definition"></a>（可选）您可以启用此选项来检测和报告 IPv4 环回地址。这些是 IP 地址（例如 `localhost`），设备可以在此与自身通信。在核心设备和客户端设备运行于同一系统的测试环境中使用此选项。
      + `includeIPv4LinkLocalAddrs`—<a name="ip-detector-component-configuration-include-ipv4-link-local-addrs-definition"></a>（可选）您可以启用此选项来检测和报告 IPv4 [链路本地地址](https://en.wikipedia.org/wiki/Link-local_address)。如果核心设备的网络没有动态主机配置协议（DHCP）或静态分配的 IP 地址，请使用此选项。
      + `includeIPv6LoopbackAddrs`—<a name="ip-detector-component-configuration-include-ipv6-loopback-addrs-definition"></a>（可选）您可以启用此选项来检测和报告 IPv6 环回地址。这些是 IP 地址（例如 `localhost`），设备可以在此与自身通信。在核心设备和客户端设备运行于同一系统的测试环境中使用此选项。您必须将 `includeIPv4Addrs` 设置为 `false` 并将 `includeIPv6Addrs` 设置为 `true` 才能使用此选项。您必须具有 IP 检测器 v2.2.0 或更高版本才能使用此选项。
      + `includeIPv6LinkLocalAddrs`—<a name="ip-detector-component-configuration-include-ipv6-link-local-addrs-definition"></a>（可选）您可以启用此选项来检测和报告 IPv6 [链路本地地址](https://en.wikipedia.org/wiki/Link-local_address)。如果核心设备的网络没有动态主机配置协议（DHCP）或静态分配的 IP 地址，请使用此选项。您必须将 `includeIPv4Addrs` 设置为 `false` 并将 `includeIPv6Addrs` 设置为 `true` 才能使用此选项。您必须具有 IP 检测器 v2.2.0 或更高版本才能使用此选项。
      + `includeIPv4Addrs` –<a name="ip-detector-component-configuration-include-ipv4-addrs-definition"></a>（可选）默认值设置为 true。您可以启用此选项来发布在核心设备上找到 IPv4 的地址。您必须具有 IP 检测器 v2.2.0 或更高版本才能使用此选项。
      + `includeIPv6Addrs`—<a name="ip-detector-component-configuration-include-ipv6-addrs-definition"></a>（可选）您可以启用此选项以发布在核心设备上找到 IPv6 的地址。将 `includeIPv4Addrs` 设置为 `false` 以使用此选项。您必须具有 IP 检测器 v2.2.0 或更高版本才能使用此选项。

      配置更新可能与以下示例类似。

      ```
      {
        "defaultPort": "8883",
        "includeIPv4LoopbackAddrs": false,
        "includeIPv4LinkLocalAddrs": false
      }
      ```

   1. 选择**确认**以关闭模式，然后选择**下一步**。

1. <a name="deploy-component-configure-advanced-settings-step"></a>在**配置高级设置**页面上，保留默认配置设置，然后选择**下一步**。

1. <a name="deploy-component-review-and-deploy-step"></a>在 **检查** 页上，选择 **部署**。

   完成部署可能最多需要 1 分钟。

### 部署 IP 检测器组件（AWS CLI）
<a name="deploy-ip-detector-cli"></a>

要部署 IP 检测器组件，请创建 `components` 对象中包含 `aws.greengrass.clientdevices.IPDetector` 的部署文档，并指定该组件的配置更新。按照 [创建部署](create-deployments.md) 中的说明创建新部署或修改现有部署。

在创建部署文档时，您可以指定以下任意选项来配置 IP 检测器组件：
+ `defaultPort` –<a name="ip-detector-component-configuration-default-port-definition"></a>（可选）此组件检测到 IP 地址时要报告的 MQTT 代理端口。如果您将 MQTT 代理配置为使用默认端口 8883 以外的端口，则必须指定此参数。
+ `includeIPv4LoopbackAddrs`—<a name="ip-detector-component-configuration-include-ipv4-loopback-addrs-definition"></a>（可选）您可以启用此选项来检测和报告 IPv4 环回地址。这些是 IP 地址（例如 `localhost`），设备可以在此与自身通信。在核心设备和客户端设备运行于同一系统的测试环境中使用此选项。
+ `includeIPv4LinkLocalAddrs`—<a name="ip-detector-component-configuration-include-ipv4-link-local-addrs-definition"></a>（可选）您可以启用此选项来检测和报告 IPv4 [链路本地地址](https://en.wikipedia.org/wiki/Link-local_address)。如果核心设备的网络没有动态主机配置协议（DHCP）或静态分配的 IP 地址，请使用此选项。
+ `includeIPv6LoopbackAddrs`—<a name="ip-detector-component-configuration-include-ipv6-loopback-addrs-definition"></a>（可选）您可以启用此选项来检测和报告 IPv6 环回地址。这些是 IP 地址（例如 `localhost`），设备可以在此与自身通信。在核心设备和客户端设备运行于同一系统的测试环境中使用此选项。您必须将 `includeIPv4Addrs` 设置为 `false` 并将 `includeIPv6Addrs` 设置为 `true` 才能使用此选项。您必须具有 IP 检测器 v2.2.0 或更高版本才能使用此选项。
+ `includeIPv6LinkLocalAddrs`—<a name="ip-detector-component-configuration-include-ipv6-link-local-addrs-definition"></a>（可选）您可以启用此选项来检测和报告 IPv6 [链路本地地址](https://en.wikipedia.org/wiki/Link-local_address)。如果核心设备的网络没有动态主机配置协议（DHCP）或静态分配的 IP 地址，请使用此选项。您必须将 `includeIPv4Addrs` 设置为 `false` 并将 `includeIPv6Addrs` 设置为 `true` 才能使用此选项。您必须具有 IP 检测器 v2.2.0 或更高版本才能使用此选项。
+ `includeIPv4Addrs` –<a name="ip-detector-component-configuration-include-ipv4-addrs-definition"></a>（可选）默认值设置为 true。您可以启用此选项来发布在核心设备上找到 IPv4 的地址。您必须具有 IP 检测器 v2.2.0 或更高版本才能使用此选项。
+ `includeIPv6Addrs`—<a name="ip-detector-component-configuration-include-ipv6-addrs-definition"></a>（可选）您可以启用此选项以发布在核心设备上找到 IPv6 的地址。将 `includeIPv4Addrs` 设置为 `false` 以使用此选项。您必须具有 IP 检测器 v2.2.0 或更高版本才能使用此选项。

以下示例部分部署文档指定将端口 8883 报告为 MQTT 代理端口。

```
{
  {{...}},
  "components": {
    {{...}},
    "aws.greengrass.clientdevices.IPDetector": {
      "componentVersion": "2.1.1",
      "configurationUpdate": {
        "merge": "{\"defaultPort\":\"8883\",}"
      }
    }
  }
}
```

## 手动管理端点
<a name="manually-manage-endpoints"></a>

您可以手动管理核心设备 MQTT 代理端点。

每个 MQTT 代理端点都具有以下信息：

**端点** (`HostAddress`)  
客户端设备可以连接到核心设备上 MQTT 代理的 IP 地址或 DNS 地址。

**端口** (`PortNumber`)  
MQTT 代理在核心设备上运行的端口。  
您可以在 [Moquette MQTT 代理组件](mqtt-broker-moquette-component.md)上配置此端口，默认使用端口 8883。

**元数据** (`Metadata`)  
要提供给连接到此端点的客户端设备的其他元数据。

**Topics**
+ [管理端点（控制台）](#manually-manage-endpoints-console)
+ [管理端点（AWS CLI）](#manually-manage-endpoints-cli)
+ [管理端点（API）](#manually-manage-endpoints-api)

### 管理端点（控制台）
<a name="manually-manage-endpoints-console"></a>

您可以使用 AWS IoT Greengrass 控制台查看、更新和移除核心设备的端点。

**管理核心设备端点（控制台）**

1. <a name="navigate-greengrass-console"></a>导航至 [AWS IoT Greengrass 控制台](https://console.aws.amazon.com/greengrass)。

1. 选择**核心设备**。

1. 选择托管管理的核心设备。

1. 在核心设备的详细信息页面上，请选择**客户端设备**选项卡。

1. 在 **MQTT 代理端点**部分，您可以看到核心设备的 MQTT 代理端点。选择**管理端点**。

1. 在**管理端点**模式中，添加或删除核心设备的 MQTT 代理端点。

1. 选择**更新**。

### 管理端点（AWS CLI）
<a name="manually-manage-endpoints-cli"></a>

您可以使用 AWS Command Line Interface (AWS CLI) 来管理核心设备的端点。

**注意**  
由于中的 AWS IoT Greengrass V2 客户端设备支持向后兼容 AWS IoT Greengrass V1，因此您可以使用 AWS IoT Greengrass V2 或 AWS IoT Greengrass V1 API 操作来管理核心设备端点。

**获取核心设备端点（AWS CLI）**
+ 使用以下命令之一：
  + [greengrassv2： get-connectivity-info](https://docs.aws.amazon.com/cli/latest/reference/greengrassv2/get-connectivity-info.html)
  + [greengrass: get-connectivity-info](https://docs.aws.amazon.com/cli/latest/reference/greengrass/get-connectivity-info.html)

**更新核心设备端点（AWS CLI）**
+ 使用以下命令之一：
  + [greengrassv2： update-connectivity-info](https://docs.aws.amazon.com/cli/latest/reference/greengrassv2/update-connectivity-info.html)
  + [greengrass: update-connectivity-info](https://docs.aws.amazon.com/cli/latest/reference/greengrass/update-connectivity-info.html)

### 管理端点（API）
<a name="manually-manage-endpoints-api"></a>

您可以使用 AWS API 来管理核心设备的终端节点。

**注意**  
由于中的 AWS IoT Greengrass V2 客户端设备支持向后兼容 AWS IoT Greengrass V1，因此您可以使用 AWS IoT Greengrass V2 或 AWS IoT Greengrass V1 API 操作来管理核心设备端点。

**获取核心设备的终端节点 (AWS API)**
+ 请使用以下任一操作：
  + [V2: GetConnectivityInfo](https://docs.aws.amazon.com/greengrass/v2/APIReference/API_GetConnectivityInfo.html)
  + [V1: GetConnectivityInfo](https://docs.aws.amazon.com/greengrass/v1/apireference/getconnectivityinfo-get.html)

**更新核心设备的终端节点 (AWS API)**
+ 请使用以下任一操作：
  + [V2: UpdateConnectivityInfo](https://docs.aws.amazon.com/greengrass/v2/APIReference/API_UpdateConnectivityInfo.html)
  + [V1: UpdateConnectivityInfo](https://docs.aws.amazon.com/greengrass/v1/apireference/updateconnectivityinfo-put.html)