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

您正在查看Amazon IoT Greengrass Version 1.Amazon IoT Greengrass Version 2是最新的主要版本Amazon IoT Greengrass. 有关使用Amazon IoT Greengrass V2,请参阅Amazon IoT Greengrass Version 2开发人员指南.

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

配置 Amazon IoT Greengrass 核心

网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的Amazon IoT Greengrass核心是Amazon IoT事物(设备),在边缘环境中充当集线器或网关。与其他 Amazon IoT 设备一样,核心位于注册表中,具有设备影子,并使用设备证书在 Amazon IoT Core 和 Amazon IoT Greengrass 中进行身份验证。核心设备运行Amazon IoT Greengrass核心软件,以使其可以管理 Greengrass 组的本地进程,如通信、影子同步和令牌交换。

Amazon IoT Greengrass Core 软件提供了以下功能:

  • 连接器和 Lambda 函数的部署和本地运行。

  • 在本地处理数据流,并自动导出到 Amazon Web Services 云 .

  • 使用托管订阅通过本地网络在设备、连接器和 Lambda 函数之间进行的 MQTT 消息传递。

  • MQTT 消息传送Amazon IoT和设备、连接器和 Lambda 函数使用托管订阅。

  • 设备和 Amazon Web Services 云 使用设备身份验证和授权。

  • 设备的本地影子同步。影子可配置为与 Amazon Web Services 云 .

  • 对本地设备和卷资源的受控访问。

  • 用于运行本地推理的云训练机器学习模型的部署。

  • 使设备能够发现 Greengrass 核心设备的自动 IP 地址检测。

  • 全新的或更新的组配置的集中部署。下载配置数据后,核心设备将自动重启。

  • 用户定义的 Lambda 函数的安全、无线 (OTA) 软件更新。

Amazon IoT Greengrass 核心配置文件

Amazon IoT Greengrass 核心软件的配置文件为 config.json。它位于 /greengrass-root/config 目录中。

注意

greengrass-root 表示在您的设备上安装 Amazon IoT Greengrass 核心软件的路径。通常,这是 /greengrass 目录。

如果您将默认创建组选项Amazon IoT Greengrass控制台,然后在config.json文件部署到处于工作状态的核心设备。

您可以运行以下命令以查看该文件的内容:

cat /greengrass-root/config/config.json

下面是一个 config.json 示例文件。这是您从Amazon IoT Greengrass控制台。

GGC v1.11
{ "coreThing": { "caPath": "root.ca.pem", "certPath": "hash.cert.pem", "keyPath": "hash.private.key", "thingArn": "arn:partition:iot:region:account-id:thing/core-thing-name", "iotHost": "host-prefix-ats.iot.region.amazonaws.com", "ggHost": "greengrass-ats.iot.region.amazonaws.com", "keepAlive": 600, "ggDaemonPort": 8000, "systemComponentAuthTimeout": 5000 }, "runtime": { "maxWorkItemCount": 1024, "maxConcurrentLimit": 25, "lruSize": 25, "mountAllBlockDevices": "no", "cgroup": { "useSystemd": "yes" } }, "managedRespawn": false, "crypto": { "principals": { "SecretsManager": { "privateKeyPath": "file:///greengrass/certs/hash.private.key" }, "IoTCertificate": { "privateKeyPath": "file:///greengrass/certs/hash.private.key", "certificatePath": "file:///greengrass/certs/hash.cert.pem" } }, "caPath": "file:///greengrass/certs/root.ca.pem" }, "writeDirectory": "/var/snap/aws-iot-greengrass/current/ggc-write-directory", "pidFileDirectory": "/var/snap/aws-iot-greengrass/current/pidFileDirectory" }

config.json 文件支持以下属性:

coreThing

字段 说明 备注
caPath

Amazon IoT 根 CA 的相对于 /greengrass-root/certs 目录的路径。

用于向后兼容 1.7.0 之前的版本。此属性将忽略,当crypto对象存在。

注意
certPath

核心设备证书相对于 /greengrass-root/certs 目录的路径。

用于向后兼容 1.7.0 之前的版本。此属性将忽略,当crypto对象存在。
keyPath 核心私有密钥的相对于 /greengrass-root/certs 目录的路径。 用于向后兼容 1.7.0 之前的版本。此属性将忽略,当crypto对象存在。
thingArn 的 Amazon 资源名称 (ARN)Amazon IoT表示的事物Amazon IoT Greengrass核心设备。 查找适合您核心的 ARNAmazon IoT Greengrass控制台在核心,或者通过运行aws greengrass get-core-definition-versionCLI 命令。
iotHost 您的 Amazon IoT 终端节点。

在Amazon IoT控制台在设置,或者通过运行aws iot describe-endpoint --endpoint-type iot:Data-ATSCLI 命令。

此命令将返回 Amazon Trust Services (ATS) 终端节点。有关更多信息,请参阅服务器身份验证文档。

注意

确保您的终端节点与证书类型对应.

确保您的终端节点对应于 Amazon Web Services 区域 . 例如,在中国(北京)区域中,iotHost使用格式prefix.ats.iot.cn-north-1.amazonaws.com.cn. 对于该区域,在主机区段中,-ats将更改为.ats.

ggHost 您的 Amazon IoT Greengrass 终端节点。

这是您的 iotHost 终端节点,其主机前缀将替换为 greengrass(例如,greengrass-ats.iot.region.amazonaws.com)。使用相同的 Amazon Web Services 区域 作为iotHost.

注意

确保您的终端节点与证书类型对应.

确保您的终端节点对应于 Amazon Web Services 区域 . 例如,在中国(北京)区域中,ggHostgreengrass.ats.iot.cn-north-1.amazonaws.com.cn. 对于该区域,在主机区段中,-ats将更改为.ats.

iotMqttPort 可选。MQTT 与 Amazon IoT 进行通信时所使用的端口号。 有效值为 8883443。默认值为 8883。有关更多信息,请参阅 通过端口 443 或网络代理进行连接
iotHttpPort 可选。用于创建到 Amazon IoT 的 HTTPS 连接的端口号。 有效值为 8443443。默认值为 8443。有关更多信息,请参阅 通过端口 443 或网络代理进行连接
ggMqttPort 可选。用于通过本地网络进行 MQTT 通信的端口号。 有效值为 102465535。默认值为 8883。有关更多信息,请参阅 为本地消息收发配置 MQTT 端口
ggHttpPort 可选。用于创建到 Amazon IoT Greengrass 服务的 HTTPS 连接的端口号。 有效值为 8443443。默认值为 8443。有关更多信息,请参阅 通过端口 443 或网络代理进行连接
keepAlive 可选。MQTT KeepAlive 周期 (以秒为单位)。 有效范围在 30 到 1200 秒之间。默认值为 600
networkProxy 可选。一个对象,它定义要连接到的代理服务器。 代理服务器可以是 HTTP 或 HTTPS。有关更多信息,请参阅 通过端口 443 或网络代理进行连接
mqttOperationTimeout 可选。允许 Greengrass 核心在与 Amazon IoT Core 的 MQTT 连接中完成发布、订阅或取消订阅操作的时间(以秒为单位)。 默认值是 5。最小值为 5。
ggDaemonPort 可选。Greengrass 核心 IPC 端口号。

此属性可用于Amazon IoT Greengrassv1.11.0 或更高版本。

有效值在 1024 到 65535 之间。默认值为 8000。

systemComponentAuthTimeout 可选。允许 Greengrass 核心 IPC 完成身份验证的时间(以毫秒为单位)。

此属性可用于Amazon IoT Greengrassv1.11.0 或更高版本。

有效值在 500 到 5000 之间。默认值是 5000。

runtime

字段 说明 备注
maxWorkItemCount

可选。Greengrass 守护程序一次可以处理的最大工作项数。超过此限制的请求将被忽略。

工作项队列由系统组件、用户定义的 Lambda 函数和连接器共享。

默认值是 1024。最大值受设备硬件限制。

增加此值会增加 Amazon IoT Greengrass 使用的内存。如果您希望核心接收大量 MQTT 消息流量,则可以增加此值。

最大并发限制

可选。Greengrass 守护程序可以拥有的最大并发取消固定的 Lambda 工作程序数。您可以指定一个不同的整数以覆盖此参数。

默认值为 25。最小值由lruSize.

LRusize Optional. Defines the minimum value for 最大并发限制. The default value is 25.
安装所有块设备 Optional. Enables Amazon IoT Greengrass to use bind mounts to mount all block devices into a container after setting up the OverlayFS.

此属性可用于Amazon IoT Greengrassv1.11.0 或更高版本。

有效值为 yesno。默认值为 no

将该值设置为yes如果您的/usr目录不在/层次结构。

星际检查后超时 Optional. The time (in milliseconds) after starting that the Greengrass daemon waits for the health check to finish. The default timeout is 30 seconds (30000 ms).
cgroup
用户数据库 Indicates whether your device uses systemd. Valid values are or . Run the 检查相关性 script in 模块 1 to see if your device uses systemd.

crypto

crypto 包含一些属性,这些属性通过 PKCS # 11 和本地密钥存储支持硬件安全模块 (HSM) 上的私有密钥存储。有关更多信息,请参阅 Amazon IoT Greengrass 核心安全委托人硬件安全性集成将密钥部署到 Amazon IoT Greengrass 核心。支持 HSM 上或文件系统中的私有密钥存储的配置。

字段 说明 备注
Capath

Amazon IoT 根 CA 的绝对路径。

必须为以下格式的文件 URI:file:///absolute/path/to/file

注意
PKCS11
开放式连接

可选。OpenSSL 引擎 .so 文件(用于在 OpenSSL 上启用 PKCS # 11 支持)的绝对路径。

必须是文件系统上的文件的路径。

如果您使用 Greengrass OTA 更新代理程序来实现硬件安全性,则此属性是必需的。有关更多信息,请参阅 配置对无线更新的支持

P11 提供程序

PKCS#11 实施的 libdl-loadable 库的绝对路径。

必须是文件系统上的文件的路径。

插槽标签

用于标识硬件模块的槽标签。

必须符合 PKCS # 11 标签规范。

插槽用户 PIN

用于对模块的 Greengrass 核心进行身份验证的用户 PIN。

必须具有足够的权限才能使用配置的私有密钥执行 C_Sign。

principals
物联网证书 The certificate and private key that the core uses to make requests to Amazon IoT.
物联网证书。私有密钥路径

核心私有密钥的路径。

对于文件系统存储,必须为以下格式的文件 URI:file:///absolute/path/to/file

对于 HSM 存储,必须是指定对象标签的 RFC 7512 PKCS#11 路径。

物联证书。证书路径

核心设备证书的绝对路径。

必须为以下格式的文件 URI:file:///absolute/path/to/file

MQTT 服务器证书

可选。核心为充当 MQTT 服务器或网关而将其证书结合使用的私有密钥。

MQTT 服务器证书。私有密钥路径

本地 MQTT 服务器私有密钥的路径。

使用此值为本地 MQTT 服务器指定您自己的私有密钥。

对于文件系统存储,必须为以下格式的文件 URI:file:///absolute/path/to/file

对于 HSM 存储,必须是指定对象标签的 RFC 7512 PKCS#11 路径。

如果忽略此属性,Amazon IoT Greengrass 会根据轮换设置对密钥进行轮换。如果指定,客户将负责对密钥进行轮换。

SecretsManager The private key that secures the data key used for encryption. For more information, see 将密钥部署到 Amazon IoT Greengrass 核心.
SecretsManager .私有密钥路径

本地 Secrets Manager 私有密钥的路径。

仅支持 RSA 密钥。

对于文件系统存储,必须为以下格式的文件 URI:file:///absolute/path/to/file

对于 HSM 存储,必须是指定对象标签的 RFC 7512 PKCS#11 路径。必须使用 PKCS#1 v1.5 填充机制生成私有密钥。

此外,还支持以下配置属性:

字段 说明 备注
mqttMaxConnectionRetryInterval

可选。在 MQTT 连接断开时的最大连接重试间隔(以秒为单位)。

将该值指定为无符号整数。默认为 60

managedRespawn

可选。指示 OTA 代理在更新之前需要运行自定义代码。

有效值为 truefalse。有关更多信息,请参阅 Amazon IoT Greengrass Core 软件的 OTA 更新

writeDirectory

可选。写入目录Amazon IoT Greengrass创建所有读/写资源。

有关更多信息,请参阅 为 Amazon IoT Greengrass 配置写入目录

PID 文件目录

可选。Amazon IoT Greengrass将其进程 ID (PID) 存储在该目录下。

默认值为 /var/run

GGC v1.10
{ "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "hash.cert.pem", "keyPath" : "hash.private.key", "thingArn" : "arn:partition:iot:region:account-id:thing/core-thing-name", "iotHost" : "host-prefix-ats.iot.region.amazonaws.com", "ggHost" : "greengrass-ats.iot.region.amazonaws.com", "keepAlive" : 600, "systemComponentAuthTimeout": 5000 }, "runtime" : { "maxWorkItemCount" : 1024, "maxConcurrentLimit" : 25, "lruSize": 25, "cgroup" : { "useSystemd" : "yes" } }, "managedRespawn" : false, "crypto" : { "principals" : { "SecretsManager" : { "privateKeyPath" : "file:///greengrass/certs/hash.private.key" }, "IoTCertificate" : { "privateKeyPath" : "file:///greengrass/certs/hash.private.key", "certificatePath" : "file:///greengrass/certs/hash.cert.pem" } }, "caPath" : "file:///greengrass/certs/root.ca.pem" } }

config.json 文件支持以下属性:

coreThing

字段 说明 备注
caPath

Amazon IoT 根 CA 的相对于 /greengrass-root/certs 目录的路径。

用于向后兼容 1.7.0 之前的版本。此属性将忽略,当crypto对象存在。

注意
certPath

核心设备证书相对于 /greengrass-root/certs 目录的路径。

用于向后兼容 1.7.0 之前的版本。此属性将忽略,当crypto对象存在。
keyPath 核心私有密钥的相对于 /greengrass-root/certs 目录的路径。 用于向后兼容 1.7.0 之前的版本。此属性将忽略,当crypto对象存在。
thingArn 的 Amazon 资源名称 (ARN)Amazon IoT表示的事物Amazon IoT Greengrass核心设备。 查找适合您核心的 ARNAmazon IoT Greengrass控制台核心,或者通过运行aws greengrass get-core-definition-versionCLI 命令。
iotHost 您的 Amazon IoT 终端节点。

在Amazon IoT控制台设置,或者通过运行aws iot describe-endpoint --endpoint-type iot:Data-ATSCLI 命令。

此命令将返回 Amazon Trust Services (ATS) 终端节点。有关更多信息,请参阅服务器身份验证文档。

注意

确保您的终端节点与证书类型对应.

确保您的终端节点对应于 Amazon Web Services 区域 . 例如,在中国(北京)区域中,iotHost使用格式prefix.ats.iot.cn-north-1.amazonaws.com.cn. 对于该区域,在主机区段中,-ats将更改为.ats.

ggHost 您的 Amazon IoT Greengrass 终端节点。

这是您的 iotHost 终端节点,其主机前缀将替换为 greengrass(例如,greengrass-ats.iot.region.amazonaws.com)。使用相同的 Amazon Web Services 区域 作为iotHost.

注意

确保您的终端节点与证书类型对应.

确保您的终端节点对应于 Amazon Web Services 区域 . 例如,在中国(北京)区域中,ggHostgreengrass.ats.iot.cn-north-1.amazonaws.com.cn. 对于该区域,在主机区段中,-ats将更改为.ats.

iotMqttPort 可选。MQTT 与 Amazon IoT 进行通信时所使用的端口号。 有效值为 8883443。默认值为 8883。有关更多信息,请参阅 通过端口 443 或网络代理进行连接
iotHttpPort 可选。用于创建到 Amazon IoT 的 HTTPS 连接的端口号。 有效值为 8443443。默认值为 8443。有关更多信息,请参阅 通过端口 443 或网络代理进行连接
ggMqttPort 可选。用于通过本地网络进行 MQTT 通信的端口号。 有效值为 102465535。默认值为 8883。有关更多信息,请参阅 为本地消息收发配置 MQTT 端口
ggHttpPort 可选。用于创建到 Amazon IoT Greengrass 服务的 HTTPS 连接的端口号。 有效值为 8443443。默认值为 8443。有关更多信息,请参阅 通过端口 443 或网络代理进行连接
keepAlive 可选。MQTT KeepAlive 周期 (以秒为单位)。 有效范围在 30 到 1200 秒之间。默认值为 600
networkProxy 可选。一个对象,它定义要连接到的代理服务器。 代理服务器可以是 HTTP 或 HTTPS。有关更多信息,请参阅 通过端口 443 或网络代理进行连接
mqttOperationTimeout 可选。允许 Greengrass 核心在与 Amazon IoT Core 的 MQTT 连接中完成发布、订阅或取消订阅操作的时间(以秒为单位)。

此属性包含在 Amazon IoT Greengrass v1.10.2 及更高版本中。

默认值是 5。最小值为 5。

runtime

字段 说明 备注
maxWorkItemCount

可选。Greengrass 守护程序一次可以处理的最大工作项数。超过此限制的请求将被忽略。

工作项队列由系统组件、用户定义的 Lambda 函数和连接器共享。

默认值是 1024。最大值受设备硬件限制。

增加此值会增加 Amazon IoT Greengrass 使用的内存。如果您希望核心接收大量 MQTT 消息流量,则可以增加此值。

最大并发限制

可选。Greengrass 守护程序可以拥有的最大并发取消固定的 Lambda 工作程序数。您可以指定一个不同的整数以覆盖此参数。

默认值为 25。最小值由lruSize.

LRusize Optional. Defines the minimum value for 最大并发限制. The default value is 25.
星际检查后超时 Optional. The time (in milliseconds) after starting that the Greengrass daemon waits for the health check to finish. The default timeout is 30 seconds (30000 ms).
cgroup
用户数据库 Indicates whether your device uses systemd. Valid values are or . Run the 检查相关性 script in 模块 1 to see if your device uses systemd.

crypto

crypto 包含一些属性,这些属性通过 PKCS # 11 和本地密钥存储支持硬件安全模块 (HSM) 上的私有密钥存储。有关更多信息,请参阅 Amazon IoT Greengrass 核心安全委托人硬件安全性集成将密钥部署到 Amazon IoT Greengrass 核心。支持 HSM 上或文件系统中的私有密钥存储的配置。

字段 说明 备注
Capath

Amazon IoT 根 CA 的绝对路径。

必须为以下格式的文件 URI:file:///absolute/path/to/file

注意
PKCS11
开放式连接

可选。OpenSSL 引擎 .so 文件(用于在 OpenSSL 上启用 PKCS # 11 支持)的绝对路径。

必须是文件系统上的文件的路径。

如果您使用 Greengrass OTA 更新代理程序来实现硬件安全性,则此属性是必需的。有关更多信息,请参阅 配置对无线更新的支持

P11 提供程序

PKCS#11 实施的 libdl-loadable 库的绝对路径。

必须是文件系统上的文件的路径。

插槽标签

用于标识硬件模块的槽标签。

必须符合 PKCS # 11 标签规范。

插槽用户 PIN

用于对模块的 Greengrass 核心进行身份验证的用户 PIN。

必须具有足够的权限才能使用配置的私有密钥执行 C_Sign。

principals
物联网证书 The certificate and private key that the core uses to make requests to Amazon IoT.
物联网证书。私有密钥路径

核心私有密钥的路径。

对于文件系统存储,必须为以下格式的文件 URI:file:///absolute/path/to/file

对于 HSM 存储,必须是指定对象标签的 RFC 7512 PKCS#11 路径。

物联证书。证书路径

核心设备证书的绝对路径。

必须为以下格式的文件 URI:file:///absolute/path/to/file

MQTT 服务器证书

可选。核心为充当 MQTT 服务器或网关而将其证书结合使用的私有密钥。

MQTT 服务器证书。私有密钥路径

本地 MQTT 服务器私有密钥的路径。

使用此值为本地 MQTT 服务器指定您自己的私有密钥。

对于文件系统存储,必须为以下格式的文件 URI:file:///absolute/path/to/file

对于 HSM 存储,必须是指定对象标签的 RFC 7512 PKCS#11 路径。

如果忽略此属性,Amazon IoT Greengrass 会根据轮换设置对密钥进行轮换。如果指定,客户将负责对密钥进行轮换。

SecretsManager The private key that secures the data key used for encryption. For more information, see 将密钥部署到 Amazon IoT Greengrass 核心.
SecretsManager .私有密钥路径

本地 Secrets Manager 私有密钥的路径。

仅支持 RSA 密钥。

对于文件系统存储,必须为以下格式的文件 URI:file:///absolute/path/to/file

对于 HSM 存储,必须是指定对象标签的 RFC 7512 PKCS#11 路径。必须使用 PKCS#1 v1.5 填充机制生成私有密钥。

此外,还支持以下配置属性:

字段 说明 备注
mqttMaxConnectionRetryInterval

可选。在 MQTT 连接断开时的最大连接重试间隔(以秒为单位)。

将该值指定为无符号整数。默认为 60

managedRespawn

可选。指示 OTA 代理在更新之前需要运行自定义代码。

有效值为 truefalse。有关更多信息,请参阅 Amazon IoT Greengrass Core 软件的 OTA 更新

writeDirectory

可选。写入目录Amazon IoT Greengrass创建所有读/写资源。

有关更多信息,请参阅 为 Amazon IoT Greengrass 配置写入目录

Deprecated versions

以下版本的 Amazon IoT Greengrass 核心软件不受支持。此信息仅供参考。

GGC v1.9
{ "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "hash.cert.pem", "keyPath" : "hash.private.key", "thingArn" : "arn:partition:iot:region:account-id:thing/core-thing-name", "iotHost" : "host-prefix-ats.iot.region.amazonaws.com", "ggHost" : "greengrass-ats.iot.region.amazonaws.com", "keepAlive" : 600 }, "runtime" : { "cgroup" : { "useSystemd" : "yes" } }, "managedRespawn" : false, "crypto" : { "principals" : { "SecretsManager" : { "privateKeyPath" : "file:///greengrass/certs/hash.private.key" }, "IoTCertificate" : { "privateKeyPath" : "file:///greengrass/certs/hash.private.key", "certificatePath" : "file:///greengrass/certs/hash.cert.pem" } }, "caPath" : "file:///greengrass/certs/root.ca.pem" } }

config.json 文件支持以下属性:

coreThing

字段 说明 备注
caPath

Amazon IoT 根 CA 的相对于 /greengrass-root/certs 目录的路径。

用于向后兼容 1.7.0 之前的版本。此属性将忽略,当crypto对象存在。

注意
certPath

核心设备证书相对于 /greengrass-root/certs 目录的路径。

用于向后兼容 1.7.0 之前的版本。此属性将忽略,当crypto对象存在。
keyPath 核心私有密钥的相对于 /greengrass-root/certs 目录的路径。 用于向后兼容 1.7.0 之前的版本。此属性将忽略,当crypto对象存在。
thingArn 的 Amazon 资源名称 (ARN)Amazon IoT表示的事物Amazon IoT Greengrass核心设备。 查找适合您核心的 ARNAmazon IoT Greengrass控制台核心,或者通过运行aws greengrass get-core-definition-versionCLI 命令。
iotHost 您的 Amazon IoT 终端节点。

在Amazon IoT控制台设置,或者通过运行aws iot describe-endpoint --endpoint-type iot:Data-ATSCLI 命令。

此命令将返回 Amazon Trust Services (ATS) 终端节点。有关更多信息,请参阅服务器身份验证文档。

注意

确保您的终端节点与证书类型对应.

确保您的终端节点对应于 Amazon Web Services 区域 . 例如,在中国(北京)区域中,iotHost使用格式prefix.ats.iot.cn-north-1.amazonaws.com.cn. 对于该区域,在主机区段中,-ats将更改为.ats.

ggHost 您的 Amazon IoT Greengrass 终端节点。

这是您的 iotHost 终端节点,其主机前缀将替换为 greengrass(例如,greengrass-ats.iot.region.amazonaws.com)。使用相同的 Amazon Web Services 区域 作为iotHost.

注意

确保您的终端节点与证书类型对应.

确保您的终端节点对应于 Amazon Web Services 区域 . 例如,在中国(北京)区域中,ggHostgreengrass.ats.iot.cn-north-1.amazonaws.com.cn. 对于该区域,在主机区段中,-ats将更改为.ats.

iotMqttPort 可选。MQTT 与 Amazon IoT 进行通信时所使用的端口号。 有效值为 8883443。默认值为 8883。有关更多信息,请参阅 通过端口 443 或网络代理进行连接
iotHttpPort 可选。用于创建到 Amazon IoT 的 HTTPS 连接的端口号。 有效值为 8443443。默认值为 8443。有关更多信息,请参阅 通过端口 443 或网络代理进行连接
ggHttpPort 可选。用于创建到 Amazon IoT Greengrass 服务的 HTTPS 连接的端口号。 有效值为 8443443。默认值为 8443。有关更多信息,请参阅 通过端口 443 或网络代理进行连接
keepAlive 可选。MQTT KeepAlive 周期 (以秒为单位)。 有效范围在 30 到 1200 秒之间。默认值为 600
networkProxy 可选。一个对象,它定义要连接到的代理服务器。 代理服务器可以是 HTTP 或 HTTPS。有关更多信息,请参阅 通过端口 443 或网络代理进行连接

runtime

字段 说明 备注
最大并发限制

可选。Greengrass 守护程序可以拥有的最大并发取消固定的 Lambda 工作程序数。您可以指定一个不同的整数以覆盖此参数。

默认值为 25。最小值由lruSize.

LRusize Optional. Defines the minimum value for 最大并发限制. The default value is 25.
星际检查后超时 Optional. The time (in milliseconds) after starting that the Greengrass daemon waits for the health check to finish. The default timeout is 30 seconds (30000 ms).
cgroup
用户数据库 Indicates whether your device uses systemd. Valid values are or . Run the 检查相关性 script in 模块 1 to see if your device uses systemd.

crypto

在 v1.7.0 中新增了 crypto 对象。它引入了一些属性,这些属性通过 PKCS # 11 和本地密钥存储支持硬件安全模块 (HSM) 上的私有密钥存储。有关更多信息,请参阅 Amazon IoT Greengrass 核心安全委托人硬件安全性集成将密钥部署到 Amazon IoT Greengrass 核心。支持 HSM 上或文件系统中的私有密钥存储的配置。

字段 说明 备注
Capath

Amazon IoT 根 CA 的绝对路径。

必须为以下格式的文件 URI:file:///absolute/path/to/file

注意
PKCS11
开放式连接

可选。OpenSSL 引擎 .so 文件(用于在 OpenSSL 上启用 PKCS # 11 支持)的绝对路径。

必须是文件系统上的文件的路径。

如果您使用 Greengrass OTA 更新代理程序来实现硬件安全性,则此属性是必需的。有关更多信息,请参阅 配置对无线更新的支持

P11 提供程序

PKCS#11 实施的 libdl-loadable 库的绝对路径。

必须是文件系统上的文件的路径。

插槽标签

用于标识硬件模块的槽标签。

必须符合 PKCS # 11 标签规范。

插槽用户 PIN

用于对模块的 Greengrass 核心进行身份验证的用户 PIN。

必须具有足够的权限才能使用配置的私有密钥执行 C_Sign。

principals
物联网证书 The certificate and private key that the core uses to make requests to Amazon IoT.
物联网证书。私有密钥路径

核心私有密钥的路径。

对于文件系统存储,必须为以下格式的文件 URI:file:///absolute/path/to/file

对于 HSM 存储,必须是指定对象标签的 RFC 7512 PKCS#11 路径。

物联证书。证书路径

核心设备证书的绝对路径。

必须为以下格式的文件 URI:file:///absolute/path/to/file

MQTT 服务器证书

可选。核心为充当 MQTT 服务器或网关而将其证书结合使用的私有密钥。

MQTT 服务器证书。私有密钥路径

本地 MQTT 服务器私有密钥的路径。

使用此值为本地 MQTT 服务器指定您自己的私有密钥。

对于文件系统存储,必须为以下格式的文件 URI:file:///absolute/path/to/file

对于 HSM 存储,必须是指定对象标签的 RFC 7512 PKCS#11 路径。

如果忽略此属性,Amazon IoT Greengrass 会根据轮换设置对密钥进行轮换。如果指定,客户将负责对密钥进行轮换。

SecretsManager The private key that secures the data key used for encryption. For more information, see 将密钥部署到 Amazon IoT Greengrass 核心.
SecretsManager .私有密钥路径

本地 Secrets Manager 私有密钥的路径。

仅支持 RSA 密钥。

对于文件系统存储,必须为以下格式的文件 URI:file:///absolute/path/to/file

对于 HSM 存储,必须是指定对象标签的 RFC 7512 PKCS#11 路径。必须使用 PKCS#1 v1.5 填充机制生成私有密钥。

此外,还支持以下配置属性。

字段 说明 备注
mqttMaxConnectionRetryInterval

可选。在 MQTT 连接断开时的最大连接重试间隔(以秒为单位)。

将该值指定为无符号整数。默认为 60

managedRespawn

可选。指示 OTA 代理在更新之前需要运行自定义代码。

有效值为 truefalse。有关更多信息,请参阅 Amazon IoT Greengrass Core 软件的 OTA 更新

writeDirectory

可选。写入目录Amazon IoT Greengrass创建所有读/写资源。

有关更多信息,请参阅 为 Amazon IoT Greengrass 配置写入目录

GGC v1.8
{ "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "hash.cert.pem", "keyPath" : "hash.private.key", "thingArn" : "arn:aws:iot:region:account-id:thing/core-thing-name", "iotHost" : "host-prefix-ats.iot.region.amazonaws.com", "ggHost" : "greengrass-ats.iot.region.amazonaws.com", "keepAlive" : 600 }, "runtime" : { "cgroup" : { "useSystemd" : "yes" } }, "managedRespawn" : false, "crypto" : { "principals" : { "SecretsManager" : { "privateKeyPath" : "file:///greengrass/certs/hash.private.key" }, "IoTCertificate" : { "privateKeyPath" : "file:///greengrass/certs/hash.private.key", "certificatePath" : "file:///greengrass/certs/hash.cert.pem" } }, "caPath" : "file:///greengrass/certs/root.ca.pem" } }

这些区域有:config.json文件支持以下属性:

coreThing

字段 说明 备注
caPath

Amazon IoT 根 CA 的相对于 /greengrass-root/certs 目录的路径。

用于向后兼容 1.7.0 之前的版本。此属性将忽略,当crypto对象存在。

注意
certPath

核心设备证书相对于 /greengrass-root/certs 目录的路径。

用于向后兼容 1.7.0 之前的版本。此属性将忽略,当crypto对象存在。
keyPath 核心私有密钥的相对于 /greengrass-root/certs 目录的路径。 用于向后兼容 1.7.0 之前的版本。此属性将忽略,当crypto对象存在。
thingArn 的 Amazon 资源名称 (ARN)Amazon IoT表示的事物Amazon IoT Greengrass核心设备。 查找适合您核心的 ARNAmazon IoT Greengrass控制台在核心,或者通过运行aws greengrass get-core-definition-versionCLI 命令。
iotHost 您的 Amazon IoT 终端节点。

在Amazon IoT控制台在设置,或者通过运行aws iot describe-endpoint --endpoint-type iot:Data-ATSCLI 命令。

此命令将返回 Amazon Trust Services (ATS) 终端节点。有关更多信息,请参阅服务器身份验证文档。

ggHost 您的 Amazon IoT Greengrass 终端节点。

这是您的 iotHost 终端节点,其主机前缀将替换为 greengrass(例如,greengrass-ats.iot.region.amazonaws.com)。使用相同的 Amazon Web Services 区域 作为iotHost.

iotMqttPort 可选。MQTT 与 Amazon IoT 进行通信时所使用的端口号。 有效值为 8883443。默认值为 8883。有关更多信息,请参阅 通过端口 443 或网络代理进行连接
iotHttpPort 可选。用于创建到 Amazon IoT 的 HTTPS 连接的端口号。 有效值为 8443443。默认值为 8443。有关更多信息,请参阅 通过端口 443 或网络代理进行连接
ggHttpPort 可选。用于创建到 Amazon IoT Greengrass 服务的 HTTPS 连接的端口号。 有效值为 8443443。默认值为 8443。有关更多信息,请参阅 通过端口 443 或网络代理进行连接
keepAlive 可选。MQTT KeepAlive 周期 (以秒为单位)。 有效范围在 30 到 1200 秒之间。默认值为 600
networkProxy 可选。一个对象,它定义要连接到的代理服务器。 代理服务器可以是 HTTP 或 HTTPS。有关更多信息,请参阅 通过端口 443 或网络代理进行连接

runtime

字段 说明 备注
cgroup
用户数据库 Indicates whether your device uses systemd. Valid values are or . Run the 检查相关性 script in 模块 1 to see if your device uses systemd.

crypto

在 v1.7.0 中新增了 crypto 对象。它引入了一些属性,这些属性通过 PKCS # 11 和本地密钥存储支持硬件安全模块 (HSM) 上的私有密钥存储。有关更多信息,请参阅 Amazon IoT Greengrass 核心安全委托人硬件安全性集成将密钥部署到 Amazon IoT Greengrass 核心。支持 HSM 上或文件系统中的私有密钥存储的配置。

字段 说明 备注
Capath

Amazon IoT 根 CA 的绝对路径。

必须为以下格式的文件 URI:file:///absolute/path/to/file

注意
PKCS11
开放式连接

可选。OpenSSL 引擎 .so 文件(用于在 OpenSSL 上启用 PKCS # 11 支持)的绝对路径。

必须是文件系统上的文件的路径。

如果您使用 Greengrass OTA 更新代理程序来实现硬件安全性,则此属性是必需的。有关更多信息,请参阅 配置对无线更新的支持

P11 提供程序

PKCS#11 实施的 libdl-loadable 库的绝对路径。

必须是文件系统上的文件的路径。

插槽标签

用于标识硬件模块的槽标签。

必须符合 PKCS # 11 标签规范。

插槽用户 PIN

用于对模块的 Greengrass 核心进行身份验证的用户 PIN。

必须具有足够的权限才能使用配置的私有密钥执行 C_Sign。

principals
物联网证书 The certificate and private key that the core uses to make requests to Amazon IoT.
物联网证书。私有密钥路径

核心私有密钥的路径。

对于文件系统存储,必须为以下格式的文件 URI:file:///absolute/path/to/file

对于 HSM 存储,必须是指定对象标签的 RFC 7512 PKCS#11 路径。

物联证书。证书路径

核心设备证书的绝对路径。

必须为以下格式的文件 URI:file:///absolute/path/to/file

MQTT 服务器证书

可选。核心为充当 MQTT 服务器或网关而将其证书结合使用的私有密钥。

MQTT 服务器证书。私有密钥路径

本地 MQTT 服务器私有密钥的路径。

使用此值为本地 MQTT 服务器指定您自己的私有密钥。

对于文件系统存储,必须为以下格式的文件 URI:file:///absolute/path/to/file

对于 HSM 存储,必须是指定对象标签的 RFC 7512 PKCS#11 路径。

如果忽略此属性,Amazon IoT Greengrass 会根据轮换设置对密钥进行轮换。如果指定,客户将负责对密钥进行轮换。

SecretsManager The private key that secures the data key used for encryption. For more information, see 将密钥部署到 Amazon IoT Greengrass 核心.
SecretsManager .私有密钥路径

本地 Secrets Manager 私有密钥的路径。

仅支持 RSA 密钥。

对于文件系统存储,必须为以下格式的文件 URI:file:///absolute/path/to/file

对于 HSM 存储,必须是指定对象标签的 RFC 7512 PKCS#11 路径。必须使用 PKCS#1 v1.5 填充机制生成私有密钥。

此外,还支持以下配置属性:

字段 说明 备注
mqttMaxConnectionRetryInterval

可选。在 MQTT 连接断开时的最大连接重试间隔(以秒为单位)。

将该值指定为无符号整数。默认为 60

managedRespawn

可选。指示 OTA 代理在更新之前需要运行自定义代码。

有效值为 truefalse。有关更多信息,请参阅 Amazon IoT Greengrass Core 软件的 OTA 更新

writeDirectory

可选。写入目录Amazon IoT Greengrass创建所有读/写资源。

有关更多信息,请参阅 为 Amazon IoT Greengrass 配置写入目录

GGC v1.7
{ "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "hash.cert.pem", "keyPath" : "hash.private.key", "thingArn" : "arn:aws:iot:region:account-id:thing/core-thing-name", "iotHost" : "host-prefix-ats.iot.region.amazonaws.com", "ggHost" : "greengrass-ats.iot.region.amazonaws.com", "keepAlive" : 600 }, "runtime" : { "cgroup" : { "useSystemd" : "yes" } }, "managedRespawn" : false, "crypto" : { "principals" : { "SecretsManager" : { "privateKeyPath" : "file:///greengrass/certs/hash.private.key" }, "IoTCertificate" : { "privateKeyPath" : "file:///greengrass/certs/hash.private.key", "certificatePath" : "file:///greengrass/certs/hash.cert.pem" } }, "caPath" : "file:///greengrass/certs/root.ca.pem" } }

config.json 文件支持以下属性:

coreThing

字段 说明 备注
caPath

Amazon IoT 根 CA 的相对于 /greengrass-root/certs 目录的路径。

用于向后兼容 1.7.0 之前的版本。此属性将忽略,当crypto对象存在。

注意
certPath

核心设备证书相对于 /greengrass-root/certs 目录的路径。

用于向后兼容 1.7.0 之前的版本。此属性将忽略,当crypto对象存在。
keyPath 核心私有密钥的相对于 /greengrass-root/certs 目录的路径。 用于向后兼容 1.7.0 之前的版本。此属性将忽略,当crypto对象存在。
thingArn 的 Amazon 资源名称 (ARN)Amazon IoT表示的事物Amazon IoT Greengrass核心设备。 查找适合您核心的 ARNAmazon IoT Greengrass控制台在核心,或者通过运行aws greengrass get-core-definition-versionCLI 命令。
iotHost 您的 Amazon IoT 终端节点。

在Amazon IoT控制台在设置,或者通过运行aws iot describe-endpoint --endpoint-type iot:Data-ATSCLI 命令。

此命令将返回 Amazon Trust Services (ATS) 终端节点。有关更多信息,请参阅服务器身份验证文档。

ggHost 您的 Amazon IoT Greengrass 终端节点。

这是您的 iotHost 终端节点,其主机前缀将替换为 greengrass(例如,greengrass-ats.iot.region.amazonaws.com)。使用相同的 Amazon Web Services 区域 作为iotHost.

iotMqttPort 可选。MQTT 与 Amazon IoT 进行通信时所使用的端口号。 有效值为 8883443。默认值为 8883。有关更多信息,请参阅 通过端口 443 或网络代理进行连接
keepAlive 可选。MQTT KeepAlive 周期 (以秒为单位)。 有效范围在 30 到 1200 秒之间。默认值为 600
networkProxy 可选。一个对象,它定义要连接到的代理服务器。 代理服务器可以是 HTTP 或 HTTPS。有关更多信息,请参阅 通过端口 443 或网络代理进行连接

runtime

字段 说明 备注
cgroup
用户数据库 Indicates whether your device uses systemd. Valid values are or . Run the 检查相关性 script in 模块 1 to see if your device uses systemd.

crypto

crypto 对象(在版本 1.7.0 中添加)引入了一些属性,这些属性通过 PKCS # 11 和本地密钥存储支持硬件安全模块 (HSM) 上的私有密钥存储。有关更多信息,请参阅 硬件安全性集成将密钥部署到 Amazon IoT Greengrass 核心。支持 HSM 上或文件系统中的私有密钥存储的配置。

字段 说明 备注
Capath

Amazon IoT 根 CA 的绝对路径。

必须为以下格式的文件 URI:file:///absolute/path/to/file

注意
PKCS11
开放式连接

可选。OpenSSL 引擎 .so 文件(用于在 OpenSSL 上启用 PKCS # 11 支持)的绝对路径。

必须是文件系统上的文件的路径。

如果您使用 Greengrass OTA 更新代理程序来实现硬件安全性,则此属性是必需的。有关更多信息,请参阅 配置对无线更新的支持

P11 提供程序

PKCS#11 实施的 libdl-loadable 库的绝对路径。

必须是文件系统上的文件的路径。

插槽标签

用于标识硬件模块的槽标签。

必须符合 PKCS # 11 标签规范。

插槽用户 PIN

用于对模块的 Greengrass 核心进行身份验证的用户 PIN。

必须具有足够的权限才能使用配置的私有密钥执行 C_Sign。

principals
物联网证书 The certificate and private key that the core uses to make requests to Amazon IoT.
物联网证书。私有密钥路径

核心私有密钥的路径。

对于文件系统存储,必须为以下格式的文件 URI:file:///absolute/path/to/file

对于 HSM 存储,必须是指定对象标签的 RFC 7512 PKCS#11 路径。

物联证书。证书路径

核心设备证书的绝对路径。

必须为以下格式的文件 URI:file:///absolute/path/to/file

MQTT 服务器证书

可选。核心为充当 MQTT 服务器或网关而将其证书结合使用的私有密钥。

MQTT 服务器证书。私有密钥路径

本地 MQTT 服务器私有密钥的路径。

使用此值为本地 MQTT 服务器指定您自己的私有密钥。

对于文件系统存储,必须为以下格式的文件 URI:file:///absolute/path/to/file

对于 HSM 存储,必须是指定对象标签的 RFC 7512 PKCS#11 路径。

如果忽略此属性,Amazon IoT Greengrass 会根据轮换设置对密钥进行轮换。如果指定,客户将负责对密钥进行轮换。

SecretsManager The private key that secures the data key used for encryption. For more information, see 将密钥部署到 Amazon IoT Greengrass 核心.
SecretsManager .私有密钥路径

本地 Secrets Manager 私有密钥的路径。

仅支持 RSA 密钥。

对于文件系统存储,必须为以下格式的文件 URI:file:///absolute/path/to/file

对于 HSM 存储,必须是指定对象标签的 RFC 7512 PKCS#11 路径。必须使用 PKCS#1 v1.5 填充机制生成私有密钥。

此外,还支持以下配置属性:

字段 说明 备注
mqttMaxConnectionRetryInterval

可选。在 MQTT 连接断开时的最大连接重试间隔(以秒为单位)。

将该值指定为无符号整数。默认为 60

managedRespawn

可选。指示 OTA 代理在更新之前需要运行自定义代码。

有效值为 truefalse。有关更多信息,请参阅 Amazon IoT Greengrass Core 软件的 OTA 更新

writeDirectory

可选。写入目录Amazon IoT Greengrass创建所有读/写资源。

有关更多信息,请参阅 为 Amazon IoT Greengrass 配置写入目录

GGC v1.6
{ "coreThing": { "caPath": "root-ca-pem", "certPath": "cloud-pem-crt", "keyPath": "cloud-pem-key", "thingArn": "arn:aws:iot:region:account-id:thing/core-thing-name", "iotHost": "host-prefix.iot.region.amazonaws.com", "ggHost": "greengrass.iot.region.amazonaws.com", "keepAlive": 600, "mqttMaxConnectionRetryInterval": 60 }, "runtime": { "cgroup": { "useSystemd": "yes|no" } }, "managedRespawn": true, "writeDirectory": "/write-directory" }
注意

如果您将默认创建组选项Amazon IoT Greengrass控制台,然后在config.json文件部署到处于工作状态的核心设备中,该文件指定了默认配置。

config.json 文件支持以下属性:

字段 说明 备注
caPath

Amazon IoT 根 CA 的相对于 /greengrass-root/certs 目录的路径。

将该文件保存在 /greengrass-root/certs 中。

certPath

的路径Amazon IoT Greengrass核心证书相对于/greengrass-root/certs目录。

将该文件保存在 /greengrass-root/certs 中。
keyPath 的路径Amazon IoT Greengrass核心私有密钥的相对于/greengrass-root/certs目录。 将该文件保存在 /greengrass-root/certs 中。
thingArn 的 Amazon 资源名称 (ARN)Amazon IoT表示的事物Amazon IoT Greengrass核心设备。 查找适合您核心的 ARNAmazon IoT Greengrass控制台在核心,或者通过运行aws greengrass get-core-definition-versionCLI 命令。
iotHost 您的 Amazon IoT 终端节点。 在Amazon IoT控制台在设置,或者通过运行aws iot describe-endpointCLI 命令。
ggHost 您的 Amazon IoT Greengrass 终端节点。 该值使用 greengrass.iot.region.amazonaws.com 格式。使用与 iotHost 相同的区域。
keepAlive MQTT KeepAlive 周期 (以秒为单位)。 这是可选值。默认为 600
mqttMaxConnectionRetryInterval

在 MQTT 连接断开时的最大连接重试间隔(以秒为单位)。

将该值指定为无符号整数。这是可选值。默认为 60

useSystemd 指示您的设备是否使用 systemd 有效值为 yesno。运行check_ggc_dependencies模块 1 中的 脚本以查看您的设备是否使用 systemd
managedRespawn

一个可选的无线 (OTA) 更新功能,这指示 OTA 代理在更新之前需要运行自定义代码。

有效值为 truefalse。有关更多信息,请参阅 Amazon IoT Greengrass Core 软件的 OTA 更新

writeDirectory

写入目录Amazon IoT Greengrass创建所有读/写资源。

这是可选值。有关更多信息,请参阅 为 Amazon IoT Greengrass 配置写入目录

GGC v1.5
{ "coreThing": { "caPath": "root-ca-pem", "certPath": "cloud-pem-crt", "keyPath": "cloud-pem-key", "thingArn": "arn:aws:iot:region:account-id:thing/core-thing-name", "iotHost": "host-prefix.iot.region.amazonaws.com", "ggHost": "greengrass.iot.region.amazonaws.com", "keepAlive": 600 }, "runtime": { "cgroup": { "useSystemd": "yes|no" } }, "managedRespawn": true }

config.json 文件位于 /greengrass-root/config 中并包含以下参数:

字段 说明 备注
caPath

Amazon IoT 根 CA 的相对于 /greengrass-root/certs 文件夹的路径。

将此文件保存在 /greengrass-root/certs 文件夹下。

certPath

的路径Amazon IoT Greengrass核心证书相对于/greengrass-root/certsfolder。

将此文件保存在 /greengrass-root/certs 文件夹下。
keyPath 的路径Amazon IoT Greengrass核心私有密钥的相对于/greengrass-root/certsfolder。 将此文件保存在 /greengrass-root/certs 文件夹下。
thingArn 的 Amazon 资源名称 (ARN)Amazon IoT表示的事物Amazon IoT Greengrass核心设备。 查找适合您核心的 ARNAmazon IoT Greengrass控制台在核心,或者通过运行aws greengrass get-core-definition-versionCLI 命令。
iotHost 您的 Amazon IoT 终端节点。 在Amazon IoT控制台在设置,或者通过运行aws iot describe-endpoint命令。
ggHost 您的 Amazon IoT Greengrass 终端节点。 该值使用 greengrass.iot.region.amazonaws.com 格式。使用与 iotHost 相同的区域。
keepAlive MQTT KeepAlive 周期 (以秒为单位)。 这是可选值。默认值为 600 秒。
useSystemd 指示您的设备是否使用 systemd 有效值为 yesno。运行check_ggc_dependencies模块 1 中的 脚本以查看您的设备是否使用 systemd
managedRespawn

一个可选的无线 (OTA) 更新功能,这指示 OTA 代理在更新之前需要运行自定义代码。

有关更多信息,请参阅 Amazon IoT Greengrass Core 软件的 OTA 更新

GGC v1.3
{ "coreThing": { "caPath": "root-ca-pem", "certPath": "cloud-pem-crt", "keyPath": "cloud-pem-key", "thingArn": "arn:aws:iot:region:account-id:thing/core-thing-name", "iotHost": "host-prefix.iot.region.amazonaws.com", "ggHost": "greengrass.iot.region.amazonaws.com", "keepAlive": 600 }, "runtime": { "cgroup": { "useSystemd": "yes|no" } }, "managedRespawn": true }

config.json 文件位于 /greengrass-root/config 中并包含以下参数:

字段 说明 备注
caPath

Amazon IoT 根 CA 的相对于 /greengrass-root/certs 文件夹的路径。

将此文件保存在 /greengrass-root/certs 文件夹下。

certPath

的路径Amazon IoT Greengrass核心证书相对于/greengrass-root/certsfolder。

将此文件保存在 /greengrass-root/certs 文件夹下。
keyPath 的路径Amazon IoT Greengrass核心私有密钥的相对于/greengrass-root/certsfolder。 将此文件保存在 /greengrass-root/certs 文件夹下。
thingArn 的 Amazon 资源名称 (ARN)Amazon IoT表示的事物Amazon IoT Greengrass核心。 您可以在中找到此值。Amazon IoT Greengrass控制台的定义下Amazon IoT事物。
iotHost 您的 Amazon IoT 终端节点。 您可以在中找到此值。Amazon IoT控制台在设置.
ggHost 您的 Amazon IoT Greengrass 终端节点。 您可以在中找到此值。Amazon IoT控制台在设置替换为greengrass.前置。
keepAlive MQTT KeepAlive 周期 (以秒为单位)。 这是可选值。默认值为 600 秒。
useSystemd 二进制标志 (如果您的设备使用了 systemd)。 值为 yesno。使用模块 1 中的依赖项脚本中可以查看您的设备是否使用了 systemd
managedRespawn

一个可选的无线 (OTA) 更新功能,这指示 OTA 代理在更新之前需要运行自定义代码。

有关更多信息,请参阅 Amazon IoT Greengrass Core 软件的 OTA 更新

GGC v1.1
{ "coreThing": { "caPath": "root-ca-pem", "certPath": "cloud-pem-crt", "keyPath": "cloud-pem-key", "thingArn": "arn:aws:iot:region:account-id:thing/core-thing-name", "iotHost": "host-prefix.iot.region.amazonaws.com", "ggHost": "greengrass.iot.region.amazonaws.com", "keepAlive": 600 }, "runtime": { "cgroup": { "useSystemd": "yes|no" } } }

config.json 文件位于 /greengrass-root/config 中并包含以下参数:

字段 说明 备注
caPath

Amazon IoT 根 CA 的相对于 /greengrass-root/certs 文件夹的路径。

将此文件保存在 /greengrass-root/certs 文件夹下。

certPath

的路径Amazon IoT Greengrass核心证书相对于/greengrass-root/certsfolder。

将此文件保存在 /greengrass-root/certs 文件夹下。
keyPath 的路径Amazon IoT Greengrass核心私有密钥相对于/greengrass-root/certsfolder。 将此文件保存在 /greengrass-root/certs 文件夹下。
thingArn 的 Amazon 资源名称 (ARN)Amazon IoT表示的事物Amazon IoT Greengrass核心。 您可以在中找到此值。Amazon IoT Greengrass控制台的定义下方Amazon IoT事物。
iotHost 您的 Amazon IoT 终端节点。 您可以在中找到此值。Amazon IoT控制台在设置.
ggHost 您的 Amazon IoT Greengrass 终端节点。 您可以在中找到此值。Amazon IoT控制台在设置替换为greengrass.前置。
keepAlive MQTT KeepAlive 周期 (以秒为单位)。 这是可选值。默认值为 600 秒。
useSystemd 二进制标志 (如果您的设备使用了 systemd)。 值为 yesno。使用模块 1 中的依赖项脚本中可以查看您的设备是否使用了 systemd
GGC v1.0

在 Amazon IoT Greengrass 核心 v1.0 中,config.json 部署到 greengrass-root/configuration

{ "coreThing": { "caPath": "root-ca-pem", "certPath": "cloud-pem-crt", "keyPath": "cloud-pem-key", "thingArn": "arn:aws:iot:region:account-id:thing/core-thing-name", "iotHost": "host-prefix.iot.region.amazonaws.com", "ggHost": "greengrass.iot.region.amazonaws.com", "keepAlive": 600 }, "runtime": { "cgroup": { "useSystemd": "yes|no" } } }

config.json 文件位于 /greengrass-root/configuration 中并包含以下参数:

字段 说明 备注
caPath

Amazon IoT 根 CA 的相对于 /greengrass-root/configuration/certs 文件夹的路径。

将此文件保存在 /greengrass-root/configuration/certs 文件夹下。

certPath

的路径Amazon IoT Greengrass核心证书相对于/greengrass-root/configuration/certsfolder。

将此文件保存在 /greengrass-root/configuration/certs 文件夹下。
keyPath 的路径Amazon IoT Greengrass核心私有密钥相对于/greengrass-root/configuration/certsfolder。 将此文件保存在 /greengrass-root/configuration/certs 文件夹下。
thingArn 的 Amazon 资源名称 (ARN)Amazon IoT表示的事物Amazon IoT Greengrass核心。 您可以在中找到此值。Amazon IoT Greengrass控制台的定义下Amazon IoTHing.
iotHost 您的 Amazon IoT 终端节点。 您可以在中找到此值。Amazon IoT控制台在设置.
ggHost 您的 Amazon IoT Greengrass 终端节点。

您可以在中找到此值。Amazon IoT控制台在设置替换为greengrass.前置。

keepAlive MQTT KeepAlive 周期 (以秒为单位)。 这是可选值。默认值为 600 秒。
useSystemd 二进制标志 (如果您的设备使用了 systemd)。 值为 yesno。使用模块 1 中的依赖项脚本中可以查看您的设备是否使用了 systemd

服务终端节点必须与 CA 证书类型匹配

Amazon IoT Core 和 Amazon IoT Greengrass 终端节点必须与设备上的根 CA 证书的证书类型相对应。如果终端节点和证书类型不匹配,则设备与 Amazon IoT Core 或 Amazon IoT Greengrass 之间的身份验证尝试将失败。有关更多信息,请参阅 。服务器身份验证中的Amazon IoT开发人员指南.

如果您的设备使用 Amazon Trust Services (ATS) 根 CA 证书(首选方法),则设备还必须使用 ATS 终端节点执行设备管理和发现数据层面操作。ATS 终端节点包括 ats 分段,如 Amazon IoT Core 终端节点的以下语法所示。

prefix.ats.iot.region.amazonaws.com.cn
注意

为了实现向后兼容性,Amazon IoT Greengrass目前在某些中支持传统的 VeriSign 根 CA 证书和终端节点。 Amazon Web Services 区域 。如果您使用的是旧版 VeriSign 根 CA 证书,我们建议您创建 ATS 终端节点并改用 ATS 根 CA 证书。否则,请确保使用相应的旧终端节点。有关更多信息,请参阅 。支持的传统终端节点中的Amazon Web Services 一般参考.

注意

中国区域不支持传统终端节点。

config.json 中的终端节点

在 Greengrass 核心设备上,端点在coreThing对象在config.json文件。iotHost 属性表示 Amazon IoT Core 终端节点。ggHost 属性表示 Amazon IoT Greengrass 终端节点。在以下示例代码段中,这些属性指定 ATS 终端节点。

{ "coreThing" : { ... "iotHost" : "abcde1234uwxyz-ats.iot.us-west-2.amazonaws.com", "ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com", ... },
Amazon IoT Core endpoint

可以通过适当的 --endpoint-type 参数运行 aws iot describe-endpoint CLI 命令来获取您的 Amazon IoT Core 终端节点。

  • 要返回 ATS 签名的终端节点,请运行:

    aws iot describe-endpoint --endpoint-type iot:Data-ATS
  • 要返回传统 VeriSign 签名的终端节点,请运行:

    aws iot describe-endpoint --endpoint-type iot:Data
Amazon IoT Greengrass endpoint

您的Amazon IoT Greengrass终端节点是您的iotHost端点的主机前缀替换为greengrass. 例如,ATS 签名的终端节点是greengrass-ats.iot.region.amazonaws.com. 这使用与 Amazon IoT Core 终端节点相同的区域。

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

此功能适用于Amazon IoT GreengrassCore v1.7 及更高版本。

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

为了在此类情况下实现通信,Amazon IoT Greengrass 允许以下配置:

  • MQTT 通过端口 443 进行 TS 客户端身份验证. 如果网络允许连接到端口 443,则可以将核心配置为使用端口 443(而非默认端口 8883)进行 MQTT 通信。这可以是到端口 443 的直接连接,也可以是通过网络代理服务器的连接。

    Amazon IoT Greengrass 使用应用层协议网络 (ALPN) TLS 扩展来启用该连接。与默认配置一样,端口 443 上的基于 TLS 的 MQTT 使用基于证书的客户端身份验证。

    当配置为使用直接连接到端口 443 时,内核支持无线 (OTA) 更新对于 来说为Amazon IoT Greengrass软件。此支持需要Amazon IoT GreengrassCore v1.9.3 或更高版本。

  • 通过端口 443 的 HTTPS 通信。Amazon IoT Greengrass 默认情况下通过端口 8443 发送 HTTPS 通信,但您可以将其配置为使用端口 443。

  • 通过网络代理连接。您可以配置一个网络代理服务器来充当连接到 Greengrass 核心的媒介。仅支持基本身份验证以及 HTTP 和 HTTPS 代理。

    代理配 Lambda 通过http_proxyhttps_proxy, 和no_proxy环境变量. 用户定义的 Lambda 函数必须使用这些传入设置才能通过代理进行连接。Lambda 函数用于建立连接的公用库(例如 boto3 或 cURL 和 python)requests软件包)通常使用这些环境变量。如果 Lambda 函数还指定了这些相同的环境变量,Amazon IoT Greengrass不会覆盖它们。

    重要

    配置为使用网络代理的 Greengrass 核心不支持OTA 更新.

通过端口 443 配置 MQTT

此功能需要Amazon IoT GreengrassCore v1.7 或更高版本。

此过程使 Greengrass 核心能够使用端口 443 与 Amazon IoT Core 进行 MQTT 消息传递。

  1. 运行以下命令以停止 Greengrass 守护程序:

    cd /greengrass-root/ggc/core/ sudo ./greengrassd stop
  2. 打开 greengrass-root/config/config.json 以作为 su 用户进行编辑。

  3. coreThing 对象中,添加 iotMqttPort 属性,并将该属性的值设置为 443,如以下示例所示。

    { "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "12345abcde.cert.pem", "keyPath" : "12345abcde.private.key", "thingArn" : "arn:aws:iot:us-west-2:123456789012:thing/core-thing-name", "iotHost" : "abcd123456wxyz-ats.iot.us-west-2.amazonaws.com", "iotMqttPort" : 443, "ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com", "keepAlive" : 600 }, ... }
  4. 启动守护程序。

    cd /greengrass-root/ggc/core/ sudo ./greengrassd start

 

通过端口 443 配置 HTTPS

此功能需要Amazon IoT GreengrassCore v1.8 或更高版本。

该过程将核心配置为使用 443 进行 HTTPS 通信。

  1. 运行以下命令以停止 Greengrass 守护程序:

    cd /greengrass-root/ggc/core/ sudo ./greengrassd stop
  2. 打开 greengrass-root/config/config.json 以作为 su 用户进行编辑。

  3. coreThing 对象中,添加 iotHttpPortggHttpPort 属性,如以下示例所示。

    { "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "12345abcde.cert.pem", "keyPath" : "12345abcde.private.key", "thingArn" : "arn:aws:iot:us-west-2:123456789012:thing/core-thing-name", "iotHost" : "abcd123456wxyz-ats.iot.us-west-2.amazonaws.com", "iotHttpPort" : 443, "ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com", "ggHttpPort" : 443, "keepAlive" : 600 }, ... }
  4. 启动守护程序。

    cd /greengrass-root/ggc/core/ sudo ./greengrassd start

 

配置网络代理

此功能需要Amazon IoT GreengrassCore v1.7 或更高版本。

该过程允许 Amazon IoT Greengrass 通过 HTTP 或 HTTPS 网络代理连接到 Internet。

  1. 运行以下命令以停止 Greengrass 守护程序:

    cd /greengrass-root/ggc/core/ sudo ./greengrassd stop
  2. 打开 greengrass-root/config/config.json 以作为 su 用户进行编辑。

  3. coreThing对象中,添加networkProxy对象,如以下示例所示。

    { "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "12345abcde.cert.pem", "keyPath" : "12345abcde.private.key", "thingArn" : "arn:aws:iot:us-west-2:123456789012:thing/core-thing-name", "iotHost" : "abcd123456wxyz-ats.iot.us-west-2.amazonaws.com", "ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com", "keepAlive" : 600, "networkProxy": { "noProxyAddresses" : "http://128.12.34.56,www.mywebsite.com", "proxy" : { "url" : "https://my-proxy-server:1100", "username" : "Mary_Major", "password" : "pass@word1357" } } }, ... }
  4. 启动守护程序。

    cd /greengrass-root/ggc/core/ sudo ./greengrassd start

networkProxy 对象

使用 networkProxy 对象指定有关网络代理的信息。此对象具有以下属性。

字段 说明
noProxyAddresses

可选。代理免除的 IP 地址或主机名的逗号分隔的逗号分隔的逗号分隔的逗号列表。

proxy

要连接到的代理。代理具有以下属性。

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

    • scheme. 方案。必须为 httphttps

    • userinfo. 可选。用户名和密码信息。如果指定,usernamepassword字段会被忽略。

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

    • port. 可选。端口号。如果未指定,将使用以下默认值:

      • http: 80

      • https:443

  • username. 可选。对代理服务器进行身份验证时所使用的用户名。

  • password. 可选。对代理服务器进行身份验证时所使用的密码。

允许终端节点

Greengrass 设备和 Amazon IoT Core 或 Amazon IoT Greengrass 之间的通信必须经过身份验证。此身份验证基于注册的 X.509 设备证书和加密密钥。要允许经身份验证的请求通过代理而无需其他加密,请允许以下终端节点。

Endpoint 端口 说明
greengrass.region.amazonaws.com 443

用于进行组管理的控制层面操作。

prefix-ats.iot.region.amazonaws.com

prefix.iot.region.amazonaws.com

MQTT:8883 或 443

HTTPS:8443 或 443

用于设备管理的数据平面操作,如卷影同步。

允许仅使用其中一个终端节点或同时使用这两个终端节点,具体取决于您的核心和连接的设备是使用 Amazon Trust Services(首选)根 CA 证书,还是使用旧式根 CA 证书,或者是同时使用两者。有关更多信息,请参阅 服务终端节点必须与 CA 证书类型匹配

greengrass-ats.iot.region.amazonaws.com

greengrass.iot.region.amazonaws.com

8443 或 443

用于设备发现操作。

允许仅使用其中一个终端节点或同时使用这两个终端节点,具体取决于您的核心和连接的设备是使用 Amazon Trust Services(首选)根 CA 证书,还是使用旧式根 CA 证书,或者是同时使用两者。有关更多信息,请参阅 服务终端节点必须与 CA 证书类型匹配

注意

端口 443 上连接的客户端必须实现应用程序层协议协商 (ALPN)TLS 扩展和传递x-amzn-http-ca作为ProtocolName中的ProtocolNameList. 有关更多信息,请参阅 。协议中的Amazon IoT开发人员指南.

*.s3.amazonaws.com 443

用于部署操作和无线更新。此格式包括*字符,因为端点前缀是在内部控制的,并且可能随时更改。

logs.region.amazonaws.com 443

如果 Greengrass 组配置为将日志写入 CloudWatch,则需要此选项。

为 Amazon IoT Greengrass 配置写入目录

此功能适用于Amazon IoT Greengrass核心 v1.6 及更高版本。

默认情况下,Amazon IoT Greengrass核心软件部署在单个根目录中,其中Amazon IoT Greengrass执行所有读取和写入操作。不过,您可以配置 Amazon IoT Greengrass 以使用单独的目录执行所有写入操作,包括创建目录和文件。在这种情况下,Amazon IoT Greengrass 使用两个顶级目录:

  • greengrass-root 目录,您可以将其保留为读写目录,或者选择将其指定为只读目录。它包含应在运行时保持不变的 Amazon IoT Greengrass 核心软件和其他关键组件,如证书和 config.json

  • 指定的写入目录。它包含可写内容,如日志、状态信息以及部署的用户定义 Lambda 函数。

该配置将生成以下目录结构。

Greengrass 根目录
greengrass-root/ |-- certs/ | |-- root.ca.pem | |-- hash.cert.pem | |-- hash.private.key | |-- hash.public.key |-- config/ | |-- config.json |-- ggc/ | |-- packages/ | |-- package-version/ | |-- bin/ | |-- daemon | |-- greengrassd | |-- lambda/ | |-- LICENSE/ | |-- release_notes_package-version.html | |-- runtime/ | |-- java8/ | |-- nodejs8.10/ | |-- python3.8/ | |-- core/
写入目录
write-directory/ |-- packages/ | |-- package-version/ | |-- ggc_root/ | |-- rootfs_nosys/ | |-- rootfs_sys/ | |-- var/ |-- deployment/ | |-- group/ | |-- group.json | |-- lambda/ | |-- mlmodel/ |-- var/ | |-- log/ | |-- state/

 

配置写入目录

  1. 运行以下命令以停止 Amazon IoT Greengrass 守护程序:

    cd /greengrass-root/ggc/core/ sudo ./greengrassd stop
  2. 打开 greengrass-root/config/config.json 以作为 su 用户进行编辑。

  3. 添加 writeDirectory 以作为参数并指定目标目录路径,如以下示例所示。

    { "coreThing": { "caPath": "root-CA.pem", "certPath": "hash.pem.crt", ... }, ... "writeDirectory" : "/write-directory" }
    注意

    您可以更新writeDirectory设置所需的频率。在更新该设置后,Amazon IoT Greengrass 在下次启动时使用新指定的写入目录,但不会从以前的写入目录中迁移内容。

  4. 现已配置您的写入目录,您可以选择将 greengrass-root 目录指定为只读目录。有关说明,请参阅将 Greengrass 根目录指定为只读目录

    否则,启动 Amazon IoT Greengrass 守护程序:

    cd /greengrass-root/ggc/core/ sudo ./greengrassd start

 

将 Greengrass 根目录指定为只读目录

只有在要将 Greengrass 根目录设为只读目录时,才请按照以下步骤操作。在开始执行之前,必须配置写入目录。

  1. 授予对所需目录的访问权限:

    1. config.json 所有者授予读写权限。

      sudo chmod 0600 /greengrass-root/config/config.json
    2. 将 ggc_user 指定为 certs 和 system Lambda 目录的所有者。

      sudo chown -R ggc_user:ggc_group /greengrass-root/certs/ sudo chown -R ggc_user:ggc_group /greengrass-root/ggc/packages/1.11.3/lambda/
      注意

      默认情况下,ggc_user 和 ggc_group 帐户用于运行系统 Lambda 函数。如果您已配置组级别的默认访问身份来使用不同的账户,则应改为向该用户 (UID) 和组 (GID) 授予权限。

  2. 使用所需的方法将 greengrass-root 目录指定为只读目录。

    注意

    要将 greengrass-root 目录指定为只读目录,一种方法是以只读方式挂载该目录。不过,要将无线 (OTA) 更新应用于挂载的目录中的 Amazon IoT Greengrass 核心软件,必须先卸载该目录,然后在更新后重新安装该目录。您可以将这些 umountmount 操作添加到 ota_pre_updateota_post_update 脚本中。有关 OTA 更新的更多信息,请参阅Greengrass OTA 更新代理使用 OTA 更新的托管 Respawn

  3. 启动守护程序。

    cd /greengrass-root/ggc/core/ sudo ./greengrassd start

    如果未正确设置步骤 1 中的权限,则不会启动守护程序。

配置 MQTT 设置

在Amazon IoT Greengrass环境中,本地设备、Lambda 函数、连接器和系统组件既可彼此通信,也可与通信。 Amazon IoT Core . 所有通信都经过核心,其中管理订阅,授权实体之间的 MQTT 通信。

有关 MQTT 设置的信息,您可以为Amazon IoT Greengrass,请参阅以下部分:

注意

OPC-UA 是一种用于工业通信的信息交换标准。要在 Greengrass 核心上实现对 OPC-UA 的支持,您可以使用IoT SiteWise 连接器. 该连接器可将工业设备数据从 OPC-UA 服务器发送到 Amazon IoT SiteWise 中的资产属性。

消息服务质量

Amazon IoT Greengrass支持服务质量 (QoS) 级别 0 或 1,具体取决于您的配置以及通信的目标和方向。Greengrass 核心同时作为客户端(用于与 Amazon IoT Core 通信)和消息代理(用于本地网络上的通信)。


                    作为客户端和本地消息代理的核心。

有关 MQTT 和 QoS 的更多信息,请参阅开始使用在 MQTT 网站上。

与通信 Amazon Web Services 云
  • 出站邮件使用 QoS 1

    核心发送目的地为 Amazon Web Services 云 使用 QoS 1 的目标。Amazon IoT Greengrass使用 MQTT 消息队列来处理这些消息。如果邮件传递未通过Amazon IoT,则该消息将被假脱机以便稍后重试。如果队列已满,则无法重试该消息。邮件传递确认可以帮助最大限度地减少间歇性连接造成的数据丢失。

    由于出站邮件Amazon IoT使用 QoS 1 时,Greengrass 内核可以发送消息的最大速率取决于内核和Amazon IoT. 每次核心发送消息时,它会等待直到Amazon IoT确认消息,然后再发送下一条消息。例如,如果核心与其 Amazon Web Services 区域 为 50 毫秒,核心每秒最多可发送 20 条消息。请考虑此行为,当您选择 Amazon Web Services 区域 您的核心连接。要将大容量的 IoT 数据引入到 Amazon Web Services 云 ,您可以使用流管理器.

    有关 MQTT 消息队列的详细信息,包括如何配置本地存储缓存,该缓存可以保留发往 Amazon Web Services 云 目标,请参阅云目标的 MQTT 消息队列.

  • 入站邮件使用 QoS 0(默认值)或 QoS 1

    默认情况下,核心会使用 QoS 0 订阅来自 Amazon Web Services 云 资源。如果启用持久会话,则核心会订阅 QoS 1。这有助于最大限度地减少间歇性连接造成的数据丢失。要管理这些订阅的 QoS,请在本地后台处理程序系统组件上配置持久性设置。

    有关更多信息,包括如何使核心与 Amazon Web Services 云 目标,请参阅与 Amazon IoT Core 的 MQTT 持久性会话.

与当地目标的沟通

所有本地通信都使用 QoS 0。核心会尝试向本地目标发送消息一次,该目标可以是 Greengrass Lambda 函数、连接器或连接设备. 核心不存储消息或确认交付。消息可置于组件之间的任何位置。

注意

虽然 Lambda 函数之间的直接通信不使用 MQTT 消息收发,但行为是相同的。

云目标的 MQTT 消息队列

发送到的 MQTT 消息 Amazon Web Services 云 目标将排入队列以等待处理。排队的消息按照先进先出 (FIFO) 顺序进行处理。在处理消息并发布到 Amazon IoT Core 后,将从队列中删除消息。

默认情况下,Greengrass 核心将未处理的邮件存储在 Amazon Web Services 云 内存中的目标。您可以将核心配置为将未处理的消息存储在本地存储缓存中。与内存中存储不同,本地存储缓存可以在核心重新启动时永久保存消息(例如,在组部署或设备重启后),因此,Amazon IoT Greengrass 可以继续处理这些消息。您也可以配置存储大小。

Amazon IoT Greengrass使用后台处理程序系统组件(GGCloudSpoolerLambda 函数)管理消息队列。您可以使用以下GGCloudSpooler环境变量来配置存储设置。

  • GG_CONFIG_STORAGE_TYPE。消息队列位置。有效值有:

    • FileSystem. 在物理核心设备磁盘上的本地存储缓存中存储未处理的消息。在核心重新启动时,将保留排队的消息以进行处理。在处理后,将删除消息。

    • Memory (默认值). 在内存中存储未处理的消息。在核心重新启动时,排队的消息将丢失。

      该选项是针对具有受限硬件功能的设备优化的。在使用该配置时,我们建议您部署组或在服务中断最少的情况下重新启动设备。

  • 配置最大大小字节. 存储大小(以字节为单位)。该值可以是任何非负整数大于或等于 262144(256 KB);较小的尺寸可防止Amazon IoT Greengrass核心软件从启动。默认大小为 2.5 MB。在达到大小限制时,最早的排队消息将替换为新消息。

注意

此功能适用于Amazon IoT Greengrass核心 v1.6 及更高版本。早期版本使用内存中存储,并且队列大小为 2.5 MB。您无法为早期版本配置存储设置。

在本地存储中缓存消息

您可以配置Amazon IoT Greengrass以将消息缓存到文件系统中,以便在核心重新启动时永久保存这些消息。为此,您可以部署一个函数定义版本,其中GGCloudSpooler函数将存储类型设置为FileSystem. 您必须使用 Amazon IoT Greengrass API 配置本地存储缓存。您无法在控制台中执行该操作。

以下过程使用 create-function-definition-version CLI 命令配置后台处理程序,以便将排队的消息保存到文件系统中。它还配置 2.6 MB 队列大小。

  1. 获取目标 Greengrass 组和组版本的 ID。此过程假定这是最新的组和组版本。以下查询返回最近创建的组。

    aws greengrass list-groups --query "reverse(sort_by(Groups, &CreationTimestamp))[0]"

    或者,您也可以按名称查询。系统不要求组名称是唯一的,所以可能会返回多个组。

    aws greengrass list-groups --query "Groups[?Name=='MyGroup']"
    注意

    您还可以在中找到这些值。Amazon IoT控制台。组 ID 显示在组的设置页面上。组版本 ID 显示在组的部署页面上。

  2. 从输出中的目标组复制 IdLatestVersion 值。

  3. 获取最新的组版本。

    • group-id 替换为复制的 Id

    • latest-group-version-id 替换为复制的 LatestVersion

    aws greengrass get-group-version \ --group-id group-id \ --group-version-id latest-group-version-id
  4. 从输出中的 Definition 对象复制 CoreDefinitionVersionArn 以及所有其他组组件(FunctionDefinitionVersionArn 除外)的 ARN。在创建新的组版本时,将使用这些值。

  5. 在输出的 FunctionDefinitionVersionArn 中,复制函数定义的 ID。该 ID 是 ARN 中的 functions 段后面的 GUID,如以下示例所示。

    arn:aws:greengrass:us-west-2:123456789012:/greengrass/definition/functions/bcfc6b49-beb0-4396-b703-6dEXAMPLEcu5/versions/0f7337b4-922b-45c5-856f-1aEXAMPLEsf6
    注意

    或者,您可以通过运行create-function-definition命令,然后从输出中复制 ID。

  6. 在函数定义中添加一个函数定义版本。

    • 使用为函数定义复制的 替换 function-definition-idId

    • arbitrary-function-id 替换为函数名称,如 spooler-function

    • 将要在该版本中包含的任何 Lambda 函数添加到functions数组。您可以使用get-function-definition-version命令从现有的函数定义版本中获取 Greengrass Lambda 函数。

    警告

    确保为 GG_CONFIG_MAX_SIZE_BYTES 指定大于或等于 262144 的值。较小的大小将导致 Amazon IoT Greengrass 核心软件无法启动。

    aws greengrass create-function-definition-version \ --function-definition-id function-definition-id \ --functions '[{"FunctionArn": "arn:aws:lambda:::function:GGCloudSpooler:1","FunctionConfiguration": {"Environment": {"Variables":{"GG_CONFIG_MAX_SIZE_BYTES":"2621440","GG_CONFIG_STORAGE_TYPE":"FileSystem"}},"Executable": "spooler","MemorySize": 32768,"Pinned": true,"Timeout": 3},"Id": "arbitrary-function-id"}]'
    注意

    如果您之前设置 GG_CONFIG_SUBSCRIPTION_QUALITY 环境变量以支持与 Amazon IoT Core 的持久性会话,请将其包含在此函数实例中。

  7. 从输出中复制函数定义版本的 Arn

  8. 创建一个包含系统 Lambda 函数的组版本。

    • group-id 替换为组的 Id

    • core-definition-version-arn 替换为从最新组版本中复制的 CoreDefinitionVersionArn

    • 使用为新函数定义版本复制的 替换 function-definition-version-arnArn

    • 替换从最新组版本中复制的其他组组件(例如 SubscriptionDefinitionVersionArnDeviceDefinitionVersionArn)的 ARN。

    • 删除任何未使用的参数。例如,如果组版本不包含任何资源,请删除 --resource-definition-version-arn

    aws greengrass create-group-version \ --group-id group-id \ --core-definition-version-arn core-definition-version-arn \ --function-definition-version-arn function-definition-version-arn \ --device-definition-version-arn device-definition-version-arn \ --logger-definition-version-arn logger-definition-version-arn \ --resource-definition-version-arn resource-definition-version-arn \ --subscription-definition-version-arn subscription-definition-version-arn
  9. 从输出中复制 Version。这是新组版本的 ID。

  10. 用新组版本替换组。

    • 使用为组复制的 替换 group-idId

    • 使用为新组版本复制的 替换 group-version-idVersion

    aws greengrass create-deployment \ --group-id group-id \ --group-version-id group-version-id \ --deployment-type NewDeployment

要更新存储设置,您需要使用 Amazon IoT Greengrass API 创建新的函数定义版本,其中包含具有更新的配置的 GGCloudSpooler 函数。接下来,将函数定义版本添加到新的组版本(以及其他组组件)中,然后部署该组版本。如果要还原默认配置,您可以部署不包含GGCloudSpoolerfunction.

控制台中不显示该系统 Lambda 函数。不过,在将函数添加到最新组版本后,除非您使用 API 替换或删除该函数,否则它将包含在从控制台指定的部署中。

与 Amazon IoT Core 的 MQTT 持久性会话

此功能适用于 Amazon IoT Greengrass Core v1.10 及更高版本。

Greengrass 核心可以与 Amazon IoT 消息代理建立持久性会话。持久性会话是一种持久连接,让核心可以在核心脱机时接收发送的消息。核心是连接中的客户端。

在持久性会话中,Amazon IoT消息代理会保存核心在连接期间进行的所有订阅。如果核心断开连接,Amazon IoT消息代理存储未确认的消息和发布为 QoS 1 并发布给本地目标的新消息,例如 Lambda 函数和连接设备. 当核心重新连接时,将恢复持久性会话,Amazon IoT 消息代理以每秒 10 条消息的最大速率将存储的消息发送到核心。持久性会话的默认过期期限为 1 小时,从消息代理检测到核心断开连接时开始。有关更多信息,请参阅 。MQTT 持久性会话中的Amazon IoT开发人员指南.

Amazon IoT Greengrass使用后台处理程序系统组件(GGCloudSpoolerLambda 函数)来创建具有Amazon IoT作为源。您可以使用以下GGCloudSpooler环境变量来配置持久性会话。

  • 配置 _ 订阅 _ 质量. 订阅的质量Amazon IoT作为源。有效值有:

    • AtMostOnce (默认值). 禁用持久性会话。订阅使用 QoS 0。

    • AtLeastOncePersistent. 启用持久性会话。将cleanSession将标志设为0CONNECT消息并订阅 QoS 1。

      通过 QoS 1 发布的内核接收的消息可保证到达 Greengrass 守护程序的内存中工作队列。核心在将消息添加到队列中后确认该消息。从队列到本地目标的后续通信(例如,Greengrass Lambda 函数、连接器或设备)将以 QoS 0 的形式发送。Amazon IoT Greengrass不能保证交付到本地目标。

      注意

      您可以使用maxWorkItemCount配置属性来控制工作项队列的大小。例如,如果您的工作负载需要大量 MQTT 流量,您可以增大队列大小。

      启用持久性会话后,核心至少打开一个附加连接,用于 MQTT 消息交换Amazon IoT. 有关更多信息,请参阅 与 Amazon IoT 的 MQTT 连接的客户端 ID

配置 MQTT 持久性会话

您可以配置 Amazon IoT Greengrass 以使用与 Amazon IoT Core 的持久性会话。为此,您可以部署一个函数定义版本,其中GGCloudSpooler函数将订阅质量设置为AtLeastOncePersistent. 此设置适用于具有 Amazon IoT Core (cloud) 作为源的所有订阅。您必须使用Amazon IoT GreengrassAPI 来配置持久性会话。您无法在控制台中执行该操作。

以下过程使用 create-function-definition-versionCLI 命令将后台处理程序配置为使用持久会话。在以下步骤中,我们假定您要更新现有组的最新组版本的配置。

  1. 获取目标 Greengrass 组和组版本的 ID。此过程假定这是最新的组和组版本。以下查询返回最近创建的组。

    aws greengrass list-groups --query "reverse(sort_by(Groups, &CreationTimestamp))[0]"

    或者,您也可以按名称查询。系统不要求组名称是唯一的,所以可能会返回多个组。

    aws greengrass list-groups --query "Groups[?Name=='MyGroup']"
    注意

    您还可以在中找到这些值。Amazon IoT控制台。组 ID 显示在组的设置页面上。组版本 ID 显示在组的部署页面上。

  2. 从输出中的目标组复制 IdLatestVersion 值。

  3. 获取最新的组版本。

    • group-id 替换为复制的 Id

    • latest-group-version-id 替换为复制的 LatestVersion

    aws greengrass get-group-version \ --group-id group-id \ --group-version-id latest-group-version-id
  4. 从输出中的 Definition 对象复制 CoreDefinitionVersionArn 以及所有其他组组件(FunctionDefinitionVersionArn 除外)的 ARN。在创建新的组版本时,将使用这些值。

  5. 在输出的 FunctionDefinitionVersionArn 中,复制函数定义的 ID。该 ID 是 ARN 中的 functions 段后面的 GUID,如以下示例所示。

    arn:aws:greengrass:us-west-2:123456789012:/greengrass/definition/functions/bcfc6b49-beb0-4396-b703-6dEXAMPLEcu5/versions/0f7337b4-922b-45c5-856f-1aEXAMPLEsf6
    注意

    或者,您可以通过运行create-function-definition命令,然后从输出中复制 ID。

  6. 在函数定义中添加一个函数定义版本。

    • 使用为函数定义复制的 替换 function-definition-idId

    • arbitrary-function-id 替换为函数名称,如 spooler-function

    • 将要在该版本中包含的任何 Lambda 函数添加到functions数组。您可以使用get-function-definition-version命令从现有的函数定义版本中获取 Greengrass Lambda 函数。

    aws greengrass create-function-definition-version \ --function-definition-id function-definition-id \ --functions '[{"FunctionArn": "arn:aws:lambda:::function:GGCloudSpooler:1","FunctionConfiguration": {"Environment": {"Variables":{"GG_CONFIG_SUBSCRIPTION_QUALITY":"AtLeastOncePersistent"}},"Executable": "spooler","MemorySize": 32768,"Pinned": true,"Timeout": 3},"Id": "arbitrary-function-id"}]'
    注意

    如果您之前设置了GG_CONFIG_STORAGE_TYPE或者GG_CONFIG_MAX_SIZE_BYTES环境变量定义存储设置,将它们包含在此函数实例中。

  7. 从输出中复制函数定义版本的 Arn

  8. 创建一个包含系统 Lambda 函数的组版本。

    • group-id 替换为组的 Id

    • core-definition-version-arn 替换为从最新组版本中复制的 CoreDefinitionVersionArn

    • 使用为新函数定义版本复制的 替换 function-definition-version-arnArn

    • 替换从最新组版本中复制的其他组组件(例如 SubscriptionDefinitionVersionArnDeviceDefinitionVersionArn)的 ARN。

    • 删除任何未使用的参数。例如,如果组版本不包含任何资源,请删除 --resource-definition-version-arn

    aws greengrass create-group-version \ --group-id group-id \ --core-definition-version-arn core-definition-version-arn \ --function-definition-version-arn function-definition-version-arn \ --device-definition-version-arn device-definition-version-arn \ --logger-definition-version-arn logger-definition-version-arn \ --resource-definition-version-arn resource-definition-version-arn \ --subscription-definition-version-arn subscription-definition-version-arn
  9. 从输出中复制 Version。这是新组版本的 ID。

  10. 用新组版本替换组。

    • 使用为组复制的 替换 group-idId

    • 使用为新组版本复制的 替换 group-version-idVersion

    aws greengrass create-deployment \ --group-id group-id \ --group-version-id group-version-id \ --deployment-type NewDeployment
  11. (可选)增加maxWorkItemCount属性。这可以帮助核心处理增加的 MQTT 流量和与本地目标的通信。

要使用这些配置更改更新核心,请使用Amazon IoT GreengrassAPI 创建新的函数定义版本,其中包含GGCloudSpooler函数与更新的配置一起使用。接下来,将函数定义版本添加到新的组版本(以及其他组组件)中,然后部署该组版本。如果要还原默认配置,您可以创建不包含 GGCloudSpooler 函数的函数定义版本。

控制台中不显示该系统 Lambda 函数。不过,在将函数添加到最新组版本后,除非您使用 API 替换或删除该函数,否则它将包含在从控制台指定的部署中。

与 Amazon IoT 的 MQTT 连接的客户端 ID

此功能适用于Amazon IoT GreengrassCore v1.8 及更高版本。

Greengrass 核心与 Amazon IoT Core 建立 MQTT 连接,以便执行影子同步和证书管理等操作。对于这些连接,核心根据核心事物名称生成可预测的客户端 ID。可预测的客户端 ID 可与监控、审核和定价功能结合使用,包括Amazon IoT Device Defender和 Amazon IoT生命周期事件. 您还可以围绕可预测的客户端 ID 创建逻辑(例如,基于证书属性的订阅策略模板)。

GGC v1.9 and later

两个 Greengrass 系统组件可以与 Amazon IoT Core 建立 MQTT 连接。这些组件使用以下模式生成连接的客户端 ID。

操作 客户端 ID 模式
部署

core-thing-name

示例:MyCoreThing

使用此客户端 ID 执行连接、断开连接、订阅以及取消订阅生命周期事件通知。

订阅

core-thing-name-cn

示例:MyCoreThing-c01

n是一个整数,从 00 开始,每个新连接增加到最大 250。连接数由与同步影子状态与 Amazon IoT Core (每组最多 2,500 个),以及cloud作为其在组中的源(每组最多 10,000 个)。

后台处理程序系统组件连接到 Amazon IoT Core 以便云源或目标交换订阅消息。后台处理程序还充当在 Amazon IoT Core 与本地影子服务和设备证书管理器之间交换消息的代理。

要计算每个组的 MQTT 连接数,请使用以下公式:

number of MQTT connections per group = number of connections for Deployment Agent + number of connections for Subscriptions

其中,

  • 部署代理的连接数 = 1。

  • 订阅的连接数 =(2 subscriptions for supporting certificate generation + number of MQTT topics in Amazon IoT Core + number of device shadows synced) / 50.

    • 其中,50= 每个连接的最大订阅数 Amazon IoT Core 可支持。

注意

如果您启用持久性会话用于订阅 Amazon IoT Core ,则核心打开至少一个附加连接,以便在持久会话中使用。系统组件不支持持久性会话,因此它们无法共享该连接。

为了减少 MQTT 连接的数量并帮助降低成本,您可以使用本地 Lambda 函数来聚合边缘的数据。然后,您将聚合数据发送到 Amazon Web Services 云 . 因此,您可以使用更少的 MQTT 主题 Amazon IoT Core . 有关更多信息,请参阅 Amazon IoT Greengrass定价

GGC v1.8

几个 Greengrass 系统组件可以与 Amazon IoT Core 建立 MQTT 连接。这些组件使用以下模式生成连接的客户端 ID。

操作 客户端 ID 模式
部署

core-thing-name

示例:MyCoreThing

使用此客户端 ID 执行连接、断开连接、订阅以及取消订阅生命周期事件通知。

MQTT 与 Amazon IoT Core 的消息交换

core-thing-name-spr

示例:MyCoreThing-spr

影子同步

core-thing-name-snn

示例:MyCoreThing-s01

nn是一个整数,从 00 开始,每个新连接增加到最大值 03。连接数由与 Amazon IoT Core 同步影子状态的设备数量(每个组最多 200 个设备)确定(每个连接最大 50 个订阅)。

设备证书管理

core-thing-name-dcm

示例:MyCoreThing-dcm

注意

同时连接中使用的重复客户端 ID 可能会导致无限的连接-断开循环。如果另一个设备硬编码为使用核心设备名称作为连接中的客户端 ID,则可能发生这种情况。有关更多信息,请参阅此问题排查步骤

Greengrass 设备还与车队索引服务完全集成Amazon IoT Device Management. 这允许您根据云中的设备属性、影子状态和连接状态对设备进行索引编制和搜索。例如,Greengrass 设备至少建立一个使用事物名称作为客户端 ID 的连接,因此,您可以使用设备连接索引来发现哪些 Greengrass 设备当前已与 Amazon IoT Core 连接或断开连接。有关更多信息,请参阅 。队列索引服务中的Amazon IoT开发人员指南.

为本地消息收发配置 MQTT 端口

此功能需要Amazon IoT GreengrassCore v1.10 或更高版本。

Greengrass 核心充当本地 Lambda 函数、连接器和 Greengrass 设备之间的 MQTT 消息传递的本地消息代理。默认情况下,核心使用端口 8883 用于本地网络上的 MQTT 流量。您可能希望更改端口以避免与端口 8883 上运行的其他软件发生冲突。

配置核心用于本地 MQTT 流量的端口号

  1. 运行以下命令以停止 Greengrass 守护程序:

    cd /greengrass-root/ggc/core/ sudo ./greengrassd stop
  2. 打开 greengrass-root/config/config.json 以作为 su 用户进行编辑。

  3. coreThing对象中,添加ggMqttPort属性并将值设置为要使用的端口号。有效值为 1024 到 65535。以下示例将端口号设置为9000.

    { "coreThing" : { "caPath" : "root.ca.pem", "certPath" : "12345abcde.cert.pem", "keyPath" : "12345abcde.private.key", "thingArn" : "arn:aws:iot:us-west-2:123456789012:thing/core-thing-name", "iotHost" : "abcd123456wxyz-ats.iot.us-west-2.amazonaws.com", "ggHost" : "greengrass-ats.iot.us-west-2.amazonaws.com", "ggMqttPort" : 9000, "keepAlive" : 600 }, ... }
  4. 启动守护程序。

    cd /greengrass-root/ggc/core/ sudo ./greengrassd start
  5. 如果自动 IP 检测为核心启用,则配置完成。

    如果未启用自动 IP 检测,则必须更新内核的连接信息。这样,Greengrass 设备就可以在发现操作期间接收正确的端口号,以获取核心连接信息。您可以使用Amazon IoT控制台或Amazon IoT GreengrassAPI 更新核心连接信息。在此过程中,您仅更新端口号。核心的本地 IP 地址保持不变。

    更新核心(控制台)的连接信息
    1. 在组配置页面上,选择核心,然后选择核心。

    2. 在核心详细信息页面上,选择连接,然后选择编辑.

    3. 选择添加其他连接中,输入您当前的本地 IP 地址和新端口号。以下示例将端口号设置9000用于 IP 地址192.168.1.8.

      
                                                作为客户端和本地消息代理的核心。
    4. 删除过时的终端节点,然后选择更新

    更新核心的连接信息 (API)
    • 使用UpdateConnectivityInfoaction. 以下示例使用update-connectivity-info中的Amazon CLI设置端口号9000用于 IP 地址192.168.1.8.

      aws greengrass update-connectivity-info \ --thing-name "MyGroup_Core" \ --connectivity-info "[{\"Metadata\":\"\",\"PortNumber\":9000,\"HostAddress\":\"192.168.1.8\",\"Id\":\"localIP_192.168.1.8\"},{\"Metadata\":\"\",\"PortNumber\":8883,\"HostAddress\":\"127.0.0.1\",\"Id\":\"localhost_127.0.0.1_0\"}]"
    注意

    还可以配置核心用于与 Amazon IoT Core 进行 MQTT 消息传递的端口。有关更多信息,请参阅 通过端口 443 或网络代理进行连接

在 MQTT 连接中的发布、订阅和取消订阅操作的超时 Amazon Web Services 云

Amazon IoT Greengrass v1.10.2 或更高版本中提供了此功能。

您可以配置允许 Greengrass 核心在与 Amazon IoT Core 的 MQTT 连接中完成发布、订阅或取消订阅操作的时间(以秒为单位)。如果因带宽限制或高延迟导致操作超时,您可能需要调整此设置。要在 config.json 文件中配置此设置,请在 coreThing 对象中添加或更改 mqttOperationTimeout 属性。例如:

{ "coreThing": { "mqttOperationTimeout": 10, "caPath": "root-ca.pem", "certPath": "hash.cert.pem", "keyPath": "hash.private.key", ... }, ... }

默认超时时间为 5 秒。最小超时值为 5 秒。

激活自动 IP 检测

您可以配置Amazon IoT Greengrass,以使 Greengrass 组中的设备能够自动发现 Greengrass 的核心。启用后,核心监视其 IP 地址的更改。如果地址发生变化,核心将发布更新的地址列表。这些地址可供与核心位于同一 Greengrass 组中的设备使用。

注意

这些区域有:Amazon IoT策略必须授予greengrass:Discover权限以允许设备检索核心的连接信息。有关策略语句的更多信息,请参阅Discovery 授权

要从中启用此功能Amazon IoT Greengrass控制台,选择自动检测当您首次部署 Greengrass 组时,请访问。您还可以在组的设置页面下核心连接信息. 启用自动 IP 检测自动检测和覆盖连接信息处于选中状态。

要使用管理自动发现Amazon IoT GreengrassAPI,您必须配置IPDetector系统 Lambda 函数。以下步骤将演示如何使用创建功能定义版本CLI 命令配置 Greengrass 核心的自动发现。

  1. 获取目标 Greengrass 组和组版本的 ID。此过程假定这是最新的组和组版本。以下查询返回最近创建的组。

    aws greengrass list-groups --query "reverse(sort_by(Groups, &CreationTimestamp))[0]"

    或者,您也可以按名称查询。系统不要求组名称是唯一的,所以可能会返回多个组。

    aws greengrass list-groups --query "Groups[?Name=='MyGroup']"
    注意

    您还可以在中找到这些值。Amazon IoT控制台。组 ID 显示在组的设置页面上。组版本 ID 显示在组的部署页面上。

  2. 从输出中的目标组复制 IdLatestVersion 值。

  3. 获取最新的组版本。

    • group-id 替换为复制的 Id

    • latest-group-version-id 替换为复制的 LatestVersion

    aws greengrass get-group-version \ --group-id group-id \ --group-version-id latest-group-version-id
  4. 从输出中的 Definition 对象复制 CoreDefinitionVersionArn 以及所有其他组组件(FunctionDefinitionVersionArn 除外)的 ARN。在创建新的组版本时,将使用这些值。

  5. 从输出中的 FunctionDefinitionVersionArn,复制函数定义的 ID 和函数定义版本:

    arn:aws:greengrass:region:account-id:/greengrass/groups/function-definition-id/versions/function-definition-version-id
    注意

    您可以选择性地通过运行 create-function-definition命令,然后从输出中复制 ID。

  6. 使用 get-function-definition-version 命令可获取当前定义状态。使用函数定义 ID你复制的函数定义。例如,实例.

    aws greengrass get-function-definition-version --function-definition-id function-definition-id --function-definition-version-id function-definition-version-id

    记下列出的函数配置。在创建新函数定义版本时,您需要包含这些内容,以防丢失当前定义设置。

  7. 在函数定义中添加一个函数定义版本。

    • 使用为函数定义复制的 替换 function-definition-idId。例如,实例.

    • arbitrary-function-id 替换为函数名称,如 auto-detection-function

    • 将要在该版本中包含的所有 Lambda 函数添加到functions数组中列出的任何数组,例如上一步中列出的任何值。

    aws greengrass create-function-definition-version \ --function-definition-id function-definition-id \ --functions '[{"FunctionArn":"arn:aws:lambda:::function:GGIPDetector:1","Id":"arbitrary-function-id","FunctionConfiguration":{"Pinned":true,"MemorySize":32768,"Timeout":3}}]'\ --region us-west-2
  8. 从输出中复制函数定义版本的 Arn

  9. 创建一个包含系统 Lambda 函数的组版本。

    • group-id 替换为组的 Id

    • core-definition-version-arn 替换为从最新组版本中复制的 CoreDefinitionVersionArn

    • 使用为新函数定义版本复制的 替换 function-definition-version-arnArn

    • 替换从最新组版本中复制的其他组组件(例如 SubscriptionDefinitionVersionArnDeviceDefinitionVersionArn)的 ARN。

    • 删除任何未使用的参数。例如,如果组版本不包含任何资源,请删除 --resource-definition-version-arn

    aws greengrass create-group-version \ --group-id group-id \ --core-definition-version-arn core-definition-version-arn \ --function-definition-version-arn function-definition-version-arn \ --device-definition-version-arn device-definition-version-arn \ --logger-definition-version-arn logger-definition-version-arn \ --resource-definition-version-arn resource-definition-version-arn \ --subscription-definition-version-arn subscription-definition-version-arn
  10. 从输出中复制 Version。这是新组版本的 ID。

  11. 用新组版本替换组。

    • 使用为组复制的 替换 group-idId

    • 使用为新组版本复制的 替换 group-version-idVersion

    aws greengrass create-deployment \ --group-id group-id \ --group-version-id group-version-id \ --deployment-type NewDeployment

如果要手动输入 Greengrass 核心的 IP 地址,您可以使用其他不包含 IPDetector 函数的函数定义来完成此教程。这将阻止检测函数定位并自动输入您的 Greengrass 核心 IP 地址。

Lambda 控制台中不显示该系统 Lambda 函数。在将函数添加到最新组版本后,除非您使用 API 替换或删除该函数,否则它将包含在从控制台指定的部署中。

配置初始化系统以启动 Greengrass 守护程序

最佳做法是,将初始化系统设置为在引导期间启动 Greengrass 守护程序,尤其是在管理大量设备时。

注意

如果您使用apt以安装Amazon IoT Greengrass核心软件,您可以使用 systemd 脚本启用启动。有关更多信息,请参阅 使用 systemd 脚本管理 Greengrass 守护程序生命周期

具有不同类型的初始化系统(如 initd、systemd 和 SystemV),并且它们使用类似的配置参数。以下示例是用于 systemd 的服务文件。Type 参数设置为 forking,因为 greengrassd(用于启动 Greengrass)为 Greengrass 守护程序进程创建分支,而 Restart 参数设置为 on-failure 以指示 systemd 在 Greengrass 进入故障状态时重新启动 Greengrass。

注意

要查看您的设备是否使用 systemd,请运行check_ggc_dependencies脚本,如模块 1. 然后,要使用 systemd,请确保将 useSystemdconfig.json 中的 参数设置为 yes

[Unit] Description=Greengrass Daemon [Service] Type=forking PIDFile=/var/run/greengrassd.pid Restart=on-failure ExecStart=/greengrass/ggc/core/greengrassd start ExecReload=/greengrass/ggc/core/greengrassd restart ExecStop=/greengrass/ggc/core/greengrassd stop [Install] WantedBy=multi-user.target

有关如何在 Raspberry Pi 上为 systemd 创建和启用服务文件的信息,请参阅 Raspberry Pi 文档中的 SYSTEMD

另请参阅