配置 Amazon IoT Greengrass 核心软件 - Amazon IoT Greengrass
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

配置 Amazon IoT Greengrass 核心软件

C Amazon IoT Greengrass ore 软件提供了可用于配置软件的选项。您可以创建部署以在每台 Amazon IoT Greengrass 核心设备上配置核心软件。

部署 Greengrass nucleus 组件

Amazon IoT Greengrass 将 C Amazon IoT Greengrass ore 软件作为组件提供,您可以将其部署到 Greengrass 核心设备上。您可以创建一个部署,将相同的配置应用于多个 Greengrass 核心设备。有关更多信息,请参阅 Greengrass 核更新Amazon IoT Greengrass核心软件 (OTA)

将 Greengrass 核心配置为系统服务

要执行以下操作,您必须在设备的初始化系统中将 C Amazon IoT Greengrass ore 软件配置为系统服务:

  • 设备启动时启动 Amazon IoT Greengrass Core 软件。如果您管理大量设备,这是一种很好的做法。

  • 安装并运行插件组件。 Amazon提供的几个组件是插件组件,这使它们能够直接与 Greengrass 核接口。有关组件类型的更多信息,请参阅 组件类型

  • 对核心设备的 Amazon IoT Greengrass 核心软件应用 over-the-air (OTA) 更新。有关更多信息,请参阅 更新Amazon IoT Greengrass核心软件 (OTA)

  • 允许组件在部署将组件更新到新版本或更新某些配置参数时重新启动 Amazon IoT Greengrass 核心软件或核心设备。有关更多信息,请参阅引导生命周期步骤

重要

在 Windows 核心设备上,必须将 Amazon IoT Greengrass 核心软件设置为系统服务。

将核心配置为系统服务 (Linux)

Linux 设备支持不同的初始化系统,例如 initd、systemd 和 systemV。在安装 Amazon IoT Greengrass Core 软件时,您可以使用--setup-system-service true参数将 nucleus 作为系统服务启动,并将其配置为在设备启动时启动。安装程序使用 systemd 将 Amazon IoT Greengrass 核心软件配置为系统服务。

您也可以手动将 nucleus 配置为作为系统服务运行。以下示例是用于 systemd 的服务文件。

[Unit] Description=Greengrass Core [Service] Type=simple PIDFile=/greengrass/v2/alts/loader.pid RemainAfterExit=no Restart=on-failure RestartSec=10 ExecStart=/bin/sh /greengrass/v2/alts/current/distro/bin/loader [Install] WantedBy=multi-user.target

配置系统服务后,您可以运行以下命令来配置启动设备以及启动或停止 Amazon IoT Greengrass Core 软件。

  • 检查服务的状态 (systemd)

    sudo systemctl status greengrass.service
  • 使原子核能够在设备启动时启动。

    sudo systemctl enable greengrass.service
  • 在设备启动时阻止原子核启动。

    sudo systemctl disable greengrass.service
  • 启动 Amazon IoT Greengrass 核心软件。

    sudo systemctl start greengrass.service
  • 停止 C Amazon IoT Greengrass ore 软件。

    sudo systemctl stop greengrass.service

将 nucleus 配置为系统服务 (Windows)

在安装 Amazon IoT Greengrass Core 软件时,您可以使用--setup-system-service true参数将 nucleus 作为 Windows 服务启动,并将其配置为在设备启动时启动。

配置服务后,您可以运行以下命令来配置启动设备以及启动或停止 Amazon IoT Greengrass Core 软件。必须运行命令提示符或以管理员 PowerShell 身份运行这些命令。

Windows Command Prompt (CMD)
  • 检查服务状态

    sc query "greengrass"
  • 使原子核能够在设备启动时启动。

    sc config "greengrass" start=auto
  • 在设备启动时阻止原子核启动。

    sc config "greengrass" start=disabled
  • 启动 Amazon IoT Greengrass 核心软件。

    sc start "greengrass"
  • 停止 C Amazon IoT Greengrass ore 软件。

    sc stop "greengrass"
    注意

    在 Windows 设备上, Amazon IoT Greengrass 酷睿软件在关闭 Greengrass 组件进程时会忽略此关闭信号。如果您运行此命令时, Amazon IoT Greengrass Core 软件忽略了关机信号,请等待几秒钟,然后重试。

PowerShell
  • 检查服务状态

    Get-Service -Name "greengrass"
  • 使原子核能够在设备启动时启动。

    Set-Service -Name "greengrass" -Status stopped -StartupType automatic
  • 在设备启动时阻止原子核启动。

    Set-Service -Name "greengrass" -Status stopped -StartupType disabled
  • 启动 Amazon IoT Greengrass 核心软件。

    Start-Service -Name "greengrass"
  • 停止 C Amazon IoT Greengrass ore 软件。

    Stop-Service -Name "greengrass"
    注意

    在 Windows 设备上, Amazon IoT Greengrass 酷睿软件在关闭 Greengrass 组件进程时会忽略此关闭信号。如果您运行此命令时, Amazon IoT Greengrass Core 软件忽略了关机信号,请等待几秒钟,然后重试。

使用 JVM 选项控制内存分配

如果您在内存有限的设备 Amazon IoT Greengrass 上运行,则可以使用 Java 虚拟机 (JVM) 选项来控制最大堆大小、垃圾收集模式和编译器选项,这些选项控制 Amazon IoT Greengrass 核心软件使用的内存量。JVM 中的堆大小决定了在垃圾收集发生之前或应用程序耗尽内存之前,应用程序可以使用的内存量。最大堆大小指定了在占用大量内存的活动期间扩展堆时,JVM 可分配的最大内存量。

要控制内存分配,请创建新部署或修改包含 nucleus 组件的现有部署,然后在 nuc leus 组件配置的jvmOptions配置参数中指定您的 JVM 选项。

根据您的要求,您可以在减少内存分配或最小内存分配的情况下运行 C Amazon IoT Greengrass ore 软件。

减少内存分配

要在减少内存分配的情况下运行 Amazon IoT Greengrass Core 软件,我们建议您使用以下示例配置合并更新在 nucleus 配置中设置 JVM 选项:

{ "jvmOptions": "-Xmx64m -XX:+UseSerialGC -XX:TieredStopAtLevel=1" }
最小内存分配

要以最少的内存分配运行 Amazon IoT Greengrass Core 软件,我们建议您使用以下示例配置合并更新在 nucleus 配置中设置 JVM 选项:

{ "jvmOptions": "-Xmx32m -XX:+UseSerialGC -Xint" }

这些示例配置合并更新使用以下 JVM 选项:

-XmxNNm

设置最大 JVM 堆大小。

要减少内存分配,请使用-Xmx64m作为起始值,将堆大小限制为 64 MB。要获得最小内存分配,请使用-Xmx32m作为起始值,将堆大小限制为 32 MB。

您可以根据实际需求增加或减少该-Xmx值;但是,我们强烈建议您不要将最大堆大小设置为 16 MB 以下。如果最大堆大小对于您的环境来说太低,则 Amazon IoT Greengrass Core 软件可能会因为内存不足而遇到意外错误。

-XX:+UseSerialGC

指定对 JVM 堆空间使用串行垃圾收集。与其他 JVM 垃圾收集实现相比,串行垃圾收集器速度较慢,但占用的内存更少。

-XX:TieredStopAtLevel=1

指示 JVM 使用一次 Java just-in-time (JIT) 编译器。由于 JIT 编译后的代码占用设备内存中的空间,因此多次使用 JIT 编译器比单次编译消耗更多的内存。

-Xint

指示 JVM 不要使用 just-in-time (JIT) 编译器。相反,JVM 在仅解释模式下运行。此模式比运行 JIT 编译后的代码慢;但是,编译后的代码不占用任何内存空间。

有关创建配置合并更新的信息,请参阅更新组件配置

配置运行组件的用户

Amazon IoT Greengrass Core 软件可以以不同于运行该软件的系统用户和组的身份运行组件进程。这可以提高安全性,因为您可以以 root 用户或管理员用户身份运行 C Amazon IoT Greengrass ore 软件,而无需将这些权限授予在核心设备上运行的组件。

下表显示了 Amazon IoT Greengrass 核心软件可以以您指定的用户身份运行哪些类型的组件。有关更多信息,请参阅 组件类型

组件类型 配置组件用户

插件

通用

Lambda(非容器化)

Lambda(集装箱化)

必须先创建组件用户,然后才能在部署配置中指定该用户。在基于 Windows 的设备上,您还必须将用户的用户名和密码存储在账户的凭据管理器实例中。 LocalSystem 有关更多信息,请参阅 在 Windows 设备上设置组件用户

在基于 Linux 的设备上配置组件用户时,也可以选择指定组。您可以按以下格式指定由冒号 (:) 分隔的用户和组:user:group。如果您未指定群组,则 Amazon IoT Greengrass Core 软件将默认为该用户的主群组。您可以使用名称或 ID 来识别用户和组。

在基于 Linux 的设备上,您还可以以不存在的系统用户(也称为未知用户)的身份运行组件,以提高安全性。Linux 进程可以向同一用户运行的任何其他进程发出信号。未知用户不会运行其他进程,因此您可以以未知用户身份运行组件,以防止组件向核心设备上的其他组件发出信号。要以未知用户身份运行组件,请指定核心设备上不存在的用户 ID。您也可以指定不存在的群组 ID 以未知群组的身份运行。

您可以为每个组件和每个核心设备配置用户。

  • 为组件进行配置

    您可以将每个组件配置为使用该组件特定的用户运行。创建部署时,可以在该组件的runWith配置中为每个组件指定用户。如果您配置组件, Amazon IoT Greengrass Core 软件将以指定用户身份运行组件。否则,它将默认以您为核心设备配置的默认用户身份运行组件。有关在部署配置中指定组件用户的更多信息,请参阅中的runWith配置参数创建部署

  • 为核心设备配置默认用户

    您可以配置一个默认用户, Amazon IoT Greengrass Core 软件使用该用户来运行组件。当 Amazon IoT Greengrass Core 软件运行某个组件时,它会检查您是否为该组件指定了用户,并使用它来运行该组件。如果组件未指定用户,则 Amazon IoT Greengrass Core 软件将以您为核心设备配置的默认用户身份运行该组件。有关更多信息,请参阅 配置默认组件用户

注意

在基于 Windows 的设备上,必须至少指定一个默认用户才能运行组件。

在基于 Linux 的设备上,如果您未将用户配置为运行组件,则需要考虑以下注意事项:

  • 如果您以 root 用户身份运行 Amazon IoT Greengrass Core 软件,则该软件将无法运行组件。如果您以 root 身份运行,则必须指定默认用户来运行组件。

  • 如果您以非 root 用户身份运行 Amazon IoT Greengrass Core 软件,则该软件将以该用户身份运行组件。

在 Windows 设备上设置组件用户

在基于 Windows 的设备上设置组件用户
  1. 在设备上的 LocalSystem 帐户中创建组件用户。

    net user /add component-user password
  2. 使用 Microsoft 的 PsExec 实用程序将组件用户的用户名和密码存储在 LocalSystem 帐户的凭据管理器实例中。

    psexec -s cmd /c cmdkey /generic:component-user /user:component-user /pass:password
    注意

    在基于 Windows 的设备上,该 LocalSystem 帐户运行 Greengrass 核,您必须使用该 PsExec 实用程序将组件用户信息存储在帐户中。 LocalSystem使用凭据管理器应用程序将此信息存储在当前登录用户的 Windows 帐户中,而不是 LocalSystem帐户中。

配置默认组件用户

您可以使用部署在核心设备上配置默认用户。在此部署中,您将更新 n ucleus 组件配置。

注意

在安装 C Amazon IoT Greengrass ore 软件时,也可以使用--component-default-user选项设置默认用户。有关更多信息,请参阅 安装 Amazon IoT Greengrass Core 软件

创建一个部署,为该aws.greengrass.Nucleus组件指定以下配置更新。

Linux
{ "runWithDefault": { "posixUser": "ggc_user:ggc_group" } }
Windows
{ "runWithDefault": { "windowsUser": "ggc_user" } }
注意

您指定的用户必须存在,并且该用户的用户名和密码必须存储在您的 Windows 设备上该 LocalSystem 帐户的凭据管理器实例中。有关更多信息,请参阅 在 Windows 设备上设置组件用户

以下示例定义了配置ggc_user为默认用户和ggc_group默认组的基于 Linux 的设备的部署。merge配置更新需要序列化的 JSON 对象。

{ "components": { "aws.greengrass.Nucleus": { "version": "2.12.5", "configurationUpdate": { "merge": "{\"runWithDefault\":{\"posixUser\":\"ggc_user:ggc_group\"}}" } } } }

为组件配置系统资源限制

注意

此功能适用于 Greengrass nucleus 组件的 v2.4.0 及更高版本。 Amazon IoT Greengrass 目前不支持在 Windows 核心设备上使用此功能。

您可以配置每个组件的进程可以在核心设备上使用的最大 CPU 和 RAM 使用量。

下表显示了支持系统资源限制的组件类型。有关更多信息,请参阅 组件类型

组件类型 配置系统资源限制

插件

通用

Lambda(非容器化)

Lambda(集装箱化)

您可以为每个组件和每个核心设备配置系统资源限制。

  • 为组件进行配置

    您可以为每个组件配置特定于该组件的系统资源限制。创建部署时,可以为部署中的每个组件指定系统资源限制。如果组件支持系统资源限制,则 Amazon IoT Greengrass Core 软件会将限制应用于该组件的进程。如果您没有为组件指定系统资源限制,则 Amazon IoT Greengrass Core 软件将使用您为核心设备配置的任何默认值。有关更多信息,请参阅 创建部署

  • 为核心设备配置默认值

    您可以配置 C Amazon IoT Greengrass ore 软件应用于支持这些限制的组件的默认系统资源限制。当 Amazon IoT Greengrass 核心软件运行某个组件时,它会应用您为该组件指定的系统资源限制。如果该组件未指定系统资源限制,则 Amazon IoT Greengrass Core 软件将应用您为核心设备配置的默认系统资源限制。如果您未指定默认的系统资源限制,则默认情况下, Amazon IoT Greengrass Core 软件不会应用任何系统资源限制。有关更多信息,请参阅 配置默认的系统资源限制

配置默认的系统资源限制

您可以部署 Greengrass nucleus 组件来配置核心设备的默认系统资源限制。要配置默认的系统资源限制,请创建一个为aws.greengrass.Nucleus组件指定以下配置更新的部署

{ "runWithDefault": { "systemResourceLimits": { "cpu": cpuTimeLimit, "memory": memoryLimitInKb } } }

以下示例定义了一个部署,该部署将 CPU 时间限制配置为2,相当于具有 4 个 CPU 内核的设备上的 50% 使用率。此示例还将内存使用量配置为 100 MB。

{ "components": { "aws.greengrass.Nucleus": { "version": "2.12.5", "configurationUpdate": { "merge": "{\"runWithDefault\":{\"systemResourceLimits\":\"cpus\":2,\"memory\":102400}}}" } } } }

通过端口 443 或网络代理进行连接

Amazon IoT Greengrass 核心设备 Amazon IoT Core 使用带有 TLS 客户端身份验证的 MQTT 消息协议与之通信。按照惯例,基于 TLS 的 MQTT 使用端口 8883。但是,作为一项安全措施,限制性环境可能会将入站和出站流量限制到一个较小的 TCP 端口范围。例如,企业防火墙可能会为 HTTPS 流量打开端口 443,但关闭不常用协议使用的其他端口,例如用于 MQTT 流量的端口 8883。其他限制性环境可能要求所有流量在连接到互联网之前都要通过代理。

注意

运行 Greengrass 核心组件 v2.0.3 及更早版本的 Greengrass 核心设备使用端口 8443 连接到数据平面端点。 Amazon IoT Greengrass 这些设备必须能够通过端口 8443 连接到此端点。有关更多信息,请参阅 允许设备流量通过代理或防火墙

为了在这些情况下启用通信, Amazon IoT Greengrass 提供了以下配置选项:

  • 通过端口 443 进行 MQTT 通信。如果您的网络允许连接到端口 443,则可以将 Greengrass 核心设备配置为使用端口 443 来处理 MQTT 流量,而不是默认端口 8883。这可以是与端口 443 的直接连接,也可以是通过网络代理服务器的连接。与使用基于证书的客户端身份验证的默认配置不同,端口 443 上的 MQTT 使用设备服务角色进行身份验证。

    有关更多信息,请参阅 通过端口 443 配置 MQTT

  • 通过端口 443 进行 HTTPS 通信。默认情况下, Amazon IoT Greengrass 核心软件通过端口 8443 发送 HTTPS 流量,但您可以将其配置为使用端口 443。 Amazon IoT Greengrass 使用应用层协议网络 (ALPN) TLS 扩展来启用此连接。与默认配置一样,端口 443 上的 HTTPS 使用基于证书的客户端身份验证。

    重要

    要使用 ALPN 并通过端口 443 启用 HTTPS 通信,您的核心设备必须运行 Java 8 更新 252 或更高版本。Java 版本 9 及更高版本的所有更新也支持 ALPN。

    有关更多信息,请参阅 通过端口 443 配置 HTTPS

  • 通过网络代理连接。您可以将网络代理服务器配置为连接到 Greengrass 核心设备的中介。 Amazon IoT Greengrass 支持 HTTP 和 HTTPS 代理的基本身份验证。

    Greengrass 核心设备必须运行 Greengrass nucleus v2.5.0 或更高版本才能使用 HTTPS 代理

    C Amazon IoT Greengrass ore 软件通过ALL_PROXYHTTP_PROXYHTTPS_PROXY、和NO_PROXY环境变量将代理配置传递给组件。组件必须使用这些设置才能通过代理进行连接。组件使用常用库(例如 boto3、curl 和 python requests 包),默认情况下,这些库通常使用这些环境变量来建立连接。如果组件还指定了这些环境变量,则 Amazon IoT Greengrass 不会覆盖它们。

    有关更多信息,请参阅 配置网络代理

通过端口 443 配置 MQTT

您可以在现有核心设备上通过端口 443 配置 MQTT,也可以在新的核心设备上安装 Amazon IoT Greengrass Core 软件时配置 MQTT。

在现有核心设备上通过端口 443 配置 MQTT

您可以使用部署在单核设备或一组核心设备上通过端口 443 配置 MQTT。在此部署中,您将更新 n ucleus 组件配置。当您更新其mqtt配置时,原子核会重新启动。

要通过端口 443 配置 MQTT,请创建一个为组件指定以下配置更新的部署aws.greengrass.Nucleus

{ "mqtt": { "port": 443 } }

以下示例定义了通过端口 443 配置 MQTT 的部署。merge配置更新需要序列化的 JSON 对象。

{ "components": { "aws.greengrass.Nucleus": { "version": "2.12.5", "configurationUpdate": { "merge": "{\"mqtt\":{\"port\":443}}" } } } }

在安装过程中通过端口 443 配置 MQTT

在核心设备上安装 Amazon IoT Greengrass 核心软件时,可以通过端口 443 配置 MQTT。使用--init-config安装程序参数通过端口 443 配置 MQTT。在使用手动配置、队列配置或自定义配置进行安装时,您可以指定此参数。

通过端口 443 配置 HTTPS

此功能需要 Greengrass 核 v2.0.4 或更高版本。

您可以在现有核心设备上或在新的核心设备上安装 Amazon IoT Greengrass 核心软件时通过端口 443 配置 HTTPS。

在现有核心设备上通过端口 443 配置 HTTPS

您可以使用部署在单核设备或一组核心设备上通过端口 443 配置 HTTPS。在此部署中,您将更新 n ucleus 组件配置。

要通过端口 443 配置 HTTPS,请创建一个为aws.greengrass.Nucleus组件指定以下配置更新的部署

{ "greengrassDataPlanePort": 443 }

以下示例定义了通过端口 443 配置 HTTPS 的部署。merge配置更新需要序列化的 JSON 对象。

{ "components": { "aws.greengrass.Nucleus": { "version": "2.12.5", "configurationUpdate": { "merge": "{\"greengrassDataPlanePort\":443}" } } } }

在安装过程中通过端口 443 配置 HTTPS

在核心设备上安装 Amazon IoT Greengrass 核心软件时,可以通过端口 443 配置 HTTPS。使用--init-config安装程序参数通过端口 443 配置 HTTPS。在使用手动配置、队列配置或自定义配置进行安装时,您可以指定此参数。

配置网络代理

按照本节中的步骤将 Greengrass 核心设备配置为通过 HTTP 或 HTTPS 网络代理连接到互联网。有关核心设备使用的端点和端口的更多信息,请参阅允许设备流量通过代理或防火墙

重要

如果您的核心设备运行的版本低于 v2.4.0 的 Greengrass nucleus,则您的设备角色必须允许以下权限才能使用网络代理:

  • iot:Connect

  • iot:Publish

  • iot:Receive

  • iot:Subscribe

这是必要的,因为设备使用来自令牌交换服务的 Amazon 凭据来验证与 MQTT 的连接。 Amazon IoT设备使用 MQTT 接收和安装来自的部署 Amazon Web Services 云,因此,除非您对其角色定义这些权限,否则您的设备将无法运行。设备通常使用 X.509 证书对 MQTT 连接进行身份验证,但是设备在使用代理时无法使用此证书进行身份验证。

有关如何配置设备角色的更多信息,请参阅授权核心设备与 Amazon 服务交互

在现有核心设备上配置网络代理

您可以使用部署在单核设备或一组核心设备上配置网络代理。在此部署中,您将更新 n ucleus 组件配置。当您更新其networkProxy配置时,原子核会重新启动。

要配置网络代理,请为合并以下配置更新的aws.greengrass.Nucleus组件创建部署。此配置更新包含 NetworkProxy 对象

{ "networkProxy": { "noProxyAddresses": "http://192.168.0.1,www.example.com", "proxy": { "url": "https://my-proxy-server:1100" } } }

以下示例定义了配置网络代理的部署。merge配置更新需要序列化的 JSON 对象。

{ "components": { "aws.greengrass.Nucleus": { "version": "2.12.5", "configurationUpdate": { "merge": "{\"networkProxy\":{\"noProxyAddresses\":\"http://192.168.0.1,www.example.com\",\"proxy\":{\"url\":\"https://my-proxy-server:1100\",\"username\":\"Mary_Major\",\"password\":\"pass@word1357\"}}}" } } } }

在安装过程中配置网络代理

在 Amazon IoT Greengrass 核心设备上安装 Core 软件时,可以配置网络代理。使用--init-config安装程序参数配置网络代理。在使用手动配置、队列配置或自定义配置进行安装时,您可以指定此参数。

使核心设备能够信任 HTTPS 代理

将核心设备配置为使用 HTTPS 代理时,必须将代理服务器证书链添加到核心设备中,使其能够信任 HTTPS 代理。否则,核心设备在尝试通过代理路由流量时可能会遇到错误。将代理服务器 CA 证书添加到核心设备的 Amazon 根 CA 证书文件中。

使核心设备能够信任 HTTPS 代理
  1. 在核心设备上找到 Amazon 根 CA 证书文件。

    • 如果您安装了具有自动配置功能的 C Amazon IoT Greengrass ore 软件,则 Amazon 根 CA 证书文件位于中/greengrass/v2/rootCA.pem

    • 如果您使用手动队列配置安装 Amazon IoT Greengrass 核心软件,则 Amazon 根 CA 证书文件可能存在于/greengrass/v2/AmazonRootCA1.pem

    如果这些地点不存在 Amazon 根 CA 证书,请查看system.rootCaPath房产/greengrass/v2/config/effectiveConfig.yaml以查找其位置。

  2. 将代理服务器 CA 证书文件的内容添加到 Amazon 根 CA 证书文件中。

    以下示例显示了添加到 Amazon 根 CA 证书文件中的代理服务器 CA 证书。

    -----BEGIN CERTIFICATE----- MIIEFTCCAv2gAwIQWgIVAMHSAzWG/5YVRYtRQOxXUTEpHuEmApzGCSqGSIb3DQEK \nCwUAhuL9MQswCQwJVUzEPMAVUzEYMBYGA1UECgwP1hem9uLmNvbSBJbmMuMRww ... content of proxy CA certificate ... +vHIRlt0e5JAm5\noTIZGoFbK82A0/nO7f/t5PSIDAim9V3Gc3pSXxCCAQoFYnui GaPUlGk1gCE84a0X\n7Rp/lND/PuMZ/s8YjlkY2NmYmNjMCAXDTE5MTEyN2cM216 gJMIADggEPADf2/m45hzEXAMPLE= -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIDQTCCAimgF6AwIBAgITBmyfz/5mjAo54vB4ikPmljZKyjANJmApzyMZFo6qBg ADA5MQswCQYDVQQGEwJVUzEPMA0tMVT8QtPHRh8jrdkGA1UEChMGDV3QQDExBBKW ... content of root CA certificate ... o/ufQJQWUCyziar1hem9uMRkwFwYVPSHCb2XV4cdFyQzR1KldZwgJcIQ6XUDgHaa 5MsI+yMRQ+hDaXJiobldXgjUka642M4UwtBV8oK2xJNDd2ZhwLnoQdeXeGADKkpy rqXRfKoQnoZsG4q5WTP46EXAMPLE -----END CERTIFICATE-----

网络代理对象

使用 networkProxy 对象指定有关网络代理的信息。该对象包含以下信息:

noProxyAddresses

(可选)以逗号分隔的 IP 地址或主机名列表,这些地址或主机名不受代理限制。

proxy

要连接的代理。该对象包含以下信息:

url

格式为代理服务器的 URL scheme://userinfo@host:port

  • scheme— 方案,必须是httphttps

    重要

    Greengrass 核心设备必须运行 Greengrass nucleus v2.5.0 或更高版本才能使用 HTTPS 代理

    如果您配置 HTTPS 代理,则必须将代理服务器 CA 证书添加到核心设备的 Amazon 根 CA 证书中。有关更多信息,请参阅 使核心设备能够信任 HTTPS 代理

  • userinfo—(可选)用户名和密码信息。如果您在中指定此信息url,Greengrass 核心设备将忽略和字段。username password

  • host— 代理服务器的主机名或 IP 地址。

  • port—(可选)端口号。如果您未指定端口,则 Greengrass 核心设备将使用以下默认值:

    • http— 80

    • https— 443

username

(可选)对代理服务器进行身份验证的用户名。

password

(可选)用于验证代理服务器的密码。

使用由私有 CA 签名的设备证书

如果您使用的是自定义私有证书颁发机构 (CA),则必须将 Greengrass 核心设置为。greengrassDataPlaneEndpoint iotdata可以在部署或安装期间使用安装--init-config程序参数设置此选项。

您可以自定义设备连接的 Greengrass 数据平面端点。您可以将此配置选项设置为,将 Greengrass 数据平面终端节点设置为与物联网数据端点相同的端点,您可以使用指定该端点。iotdata iotDataEndpoint

配置 MQTT 超时和缓存设置

在 Amazon IoT Greengrass 环境中,组件可以使用 MQTT 进行 Amazon IoT Core通信。 Amazon IoT Greengrass 核心软件管理组件的 MQTT 消息。当核心设备失去与的连接时 Amazon Web Services 云,软件会缓存 MQTT 消息,以便稍后在连接恢复后重试。您可以配置诸如消息超时和缓存大小之类的设置。有关更多信息,请参阅 Greengrass nucleus 组件mqttmqtt.spooler配置参数。

Amazon IoT Core 对其 MQTT 消息代理施加服务配额。这些配额可能适用于您在核心设备和之间发送的消息 Amazon IoT Core。有关更多信息,请参阅中的Amazon IoT Core 消息代理服务配额Amazon Web Services 一般参考