配置 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 核接口。有关组件类型的更多信息,请参阅 组件类型

  • 将 over-the-air (OTA) 更新应用于核心设备的 Amazon IoT Greengrass 核心软件。有关更多信息,请参阅 更新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 virtual machine (JVM) 选项来控制最大堆大小、垃圾收集模式和编译器选项,这些选项控制 Amazon IoT Greengrass 核心软件使用的内存量。中的堆大小JVM决定了在垃圾回收之前或应用程序耗尽内存之前,应用程序可以使用的内存量。最大堆大小指定了在繁忙活动期间扩展堆时JVM可以分配的最大内存量。

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

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

减少内存分配

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

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

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

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

以最少的内存分配运行 Amazon 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选项配置您的。然后,使用 jcm d 实用工具中的VM.native_memory命令请求来测量您当前的堆使用情况。

如果不能对堆进行测量,则使用-Xmx64m作为起始值,将堆大小限制为 64 MB。然后,您可以从那里逐渐减小最大堆大小。要获得最小内存分配,请使用-Xmx32m作为起始值,将堆大小限制为 32 MB。

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

-Xint

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

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

配置运行组件的用户

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配置参数创建部署

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

    您可以配置 C Amazon IoT Greengrass ore 软件用来运行组件的默认用户。当 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.13.0", "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.13.0", "configurationUpdate": { "merge": "{\"runWithDefault\":{\"systemResourceLimits\":\"cpus\":2,\"memory\":102400}}}" } } } }

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

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

注意

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

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

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

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

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

    重要

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

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

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

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

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

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

MQTT通过端口 443 进行配置

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

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

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

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

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

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

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

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

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

HTTPS通过端口 443 进行配置

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

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

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

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

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

{ "greengrassDataPlanePort": 443 }

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

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

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

在 Amazon IoT Greengrass 核心设备HTTPS上安装 Core 软件时,您可以通过端口 443 进行配置。使用--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.13.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\"}}}" } } } }

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

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

使用 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 核心设备将忽略和字段。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。C Amazon IoT Greengrass ore 软件管理组件的MQTT消息。当核心设备失去与的连接时 Amazon Web Services 云,软件会缓存MQTT消息,以便稍后在连接恢复后重试。您可以配置诸如消息超时和缓存大小之类的设置。有关更多信息,请参阅 Greengrass nucleus 组件mqttmqtt.spooler配置参数。

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