配置 AWS IoT Greengrass 核心软件 - AWS IoT Greengrass

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

配置 AWS IoT Greengrass 核心软件

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

部署 Greengrass Nucleus 组件

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

将 Greengrass Nucleus 配置为系统服务

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

  • 设备启动时启动 AWS IoT Greengrass Core 软件。如果您管理大量设备,这是最佳实践。

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

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

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

重要

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

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

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

您还可以手动配置核心,使其作为系统服务运行。以下示例是用于 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

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

  • 检查服务的状态(systemd)

    sudo systemctl status greengrass.service
  • 让核心在设备开机时启动。

    sudo systemctl enable greengrass.service
  • 在设备开机时阻止核心启动。

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

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

    sudo systemctl stop greengrass.service

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

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

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

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

    sc query "greengrass"
  • 让核心在设备开机时启动。

    sc config "greengrass" start=auto
  • 在设备开机时阻止核心启动。

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

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

    sc stop "greengrass"
    注意

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

PowerShell
  • 检查服务状态

    Get-Service -Name "greengrass"
  • 让核心在设备开机时启动。

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

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

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

    Stop-Service -Name "greengrass"
    注意

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

使用JVM选项控制内存分配

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

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

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

减少内存分配

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

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

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

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

以最少的内存分配运行 AWS IoT Greengrass 酷睿软件可能会对低规格系统产生显著的性能影响,因为在使用更少的内存时,它们JVM会进行更多的处理。我们建议调整选项以平衡内存和性能需求。

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

-XX:+UseSerialGC

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

-XX:TieredStopAtLevel=1

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

-XmxNNm

设置最大JVM堆大小。

重要

将最大堆大小设置得太低可能会导致性能下降或出 out-of-memory错。我们建议先测量您当前的堆使用量,然后再使用 -XmxNNm 选项设置最大大小。JVM使用-XX:NativeMemoryTracking=detailJVM选项配置您的。然后,使用 jcmd 实用程序中的 VM.native_memory 命令请求来衡量您当前的堆使用量。

如果无法对堆进行衡量,请将 -Xmx64m 作为起始值,以将堆大小限制为 64 MB。然后,再在此基础上逐渐减小最大堆大小。对于最低内存分配,请使用 -Xmx32m 作为起始值,将堆大小限制为 32 MB。

您可以根据自己的实际需求增大或减小 -Xmx 值;但是我们强烈建议您不要将最大堆大小设置为 16 MB 以下。所需的JVM堆大小也可能随着时间的推移而变化,具体取决于部署到核心设备的插件组件。如果最大堆大小对于您的环境来说太低,则 AWS IoT Greengrass Core 软件可能会因为内存不足而遇到意外错误。如果由于内存不足而导致性能下降或遇到错误,请恢复到已知的正常设置。例如,如果您正常提交的堆大小为 41428KB,请使用 -Xmx40m 来略微限制堆的使用量。

-Xint

指示JVM不要使用 just-in-time (JIT) 编译器。相反,它们以仅限解释的模式JVM运行。此模式比运行JIT编译后的代码慢(在低端系统上部署可能慢20倍);但是,编译后的代码不占用任何内存空间。

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

配置运行组件的用户

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

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

组件类型 配置组件用户

Nucleus

没有

插件

没有

通用

Lambda(非容器化)

Lambda(容器化)

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

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

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

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

  • 为组件配置

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

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

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

注意

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

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

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

  • 如果您以非 root 用户身份运行 AWS 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帐户中。

配置默认组件用户

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

注意

在安装 C AWS IoT Greengrass ore 软件时,也可以使用--component-default-user选项设置默认用户。有关更多信息,请参阅 安装 AWS 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.14.0", "configurationUpdate": { "merge": "{\"runWithDefault\":{\"posixUser\":\"ggc_user:ggc_group\"}}" } } } }

配置组件的系统资源限制

注意

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

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

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

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

Nucleus

没有

插件

没有

通用

Lambda(非容器化)

Lambda(容器化)

没有

重要

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

  • 为组件配置

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

  • 为核心设备配置默认值

    您可以配置 C AWS IoT Greengrass ore 软件应用于支持这些限制的组件的默认系统资源限制。当 AWS IoT Greengrass 核心软件运行某个组件时,它会应用您为该组件指定的系统资源限制。如果该组件未指定系统资源限制,则 AWS IoT Greengrass Core 软件将应用您为核心设备配置的默认系统资源限制。如果您未指定默认的系统资源限制,则默认情况下, AWS 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.14.0", "configurationUpdate": { "merge": "{\"runWithDefault\":{\"systemResourceLimits\":\"cpus\":2,\"memory\":102400}}}" } } } }

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

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

注意

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

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

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

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

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

    重要

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

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

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

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

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

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

MQTT通过端口 443 进行配置

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

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

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

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

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

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

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

安装期间MQTT通过端口 443 进行配置

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

HTTPS通过端口 443 进行配置

此功能需要 Greengrass Nucleus v2.0.40 或更高版本。

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

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

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

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

{ "greengrassDataPlanePort": 443 }

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

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

安装期间HTTPS通过端口 443 进行配置

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

配置网络代理

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

重要

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

  • iot:Connect

  • iot:Publish

  • iot:Receive

  • iot:Subscribe

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

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

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

您可以使用某个部署在单个核心设备或一组核心设备上配置网络代理。在此部署中,您更新核心组件配置。当您更新核心的 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.14.0", "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\"}}}" } } } }

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

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

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

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

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

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

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

    如果这些位置不存在 Amazon 根 CA 证书,请查看 /greengrass/v2/config/effectiveConfig.yaml 中的 system.rootCaPath 属性,来查找其位置。

  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 物体

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

noProxyAddresses

(可选)不使用代理的 IP 地址或主机名的逗号分隔列表。

proxy

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

url

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

  • scheme – 方案,必须是 httphttps

    重要

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

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

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

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

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

    • http – 80

    • https – 443

username

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

password

(可选)用于对代理服务器进行身份验证的密码。

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

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

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

配置MQTT超时和缓存设置

在 AWS IoT Greengrass 环境中,组件可以MQTT用来与之通信 AWS IoT Core。C AWS IoT Greengrass ore 软件管理组件的MQTT消息。当核心设备失去与的连接时 AWS Cloud,软件会缓存MQTT消息,以便稍后在连接恢复后重试。您可以配置消息超时和缓存大小等设置。有关更多信息,请参阅 Greengrass Nucleus 组件mqttmqtt.spooler 配置参数。

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

在网络上配置 Greengrass Nucleus IPv6

Greengrass Nucleus 通过 Greengrass 与之交谈。 AWS IoT Core APIs双栈环境下支持 APIs Greengr IPv6 ass。

要启用双栈端点,请执行以下操作:IPv6

  • 添加系统属性aws.useDualstackEndpoint=true,并添加java.net.preferIPv6Addresses=truejvmOptions

  • s3EndpointType 设置为 DUALSTACK

部署期间设置此选项,或者使用--init-config安装程序参数手动配置它。有关更多详细信息,请参阅使用 Amazon S3 双堆栈终端节点。

例 部署代码:
{ "jvmOptions": "-Daws.useDualstackEndpoint=true", "s3EndpointType":"DUALSTACK" }
config.yaml通过手动配置:
--- system: ... services: aws.greengrass.Nucleus: ... configuration: ... jvmOptions: "-Daws.useDualstackEndpoint=true -Djava.net.preferIPv6Addresses=true" s3EndpointType: "DUALSTACK"