调用本地运行状况检查 API - AWS IoT Greengrass

AWS IoT Greengrass Version 1 2023 年 6 月 30 日进入延长寿命阶段。有关更多信息,请参阅 AWS IoT Greengrass V1 维护策略。在此日期之后,将 AWS IoT Greengrass V1 不会发布提供功能、增强功能、错误修复或安全补丁的更新。在上面运行的设备 AWS IoT Greengrass V1 不会中断,将继续运行并连接到云端。我们强烈建议您迁移到 AWS IoT Greengrass Version 2,这样可以添加重要的新功能支持其他平台

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

调用本地运行状况检查 API

AWS IoT Greengrass 包含本地 HTTP API,该 API 提供由 AWS IoT Greengrass 启动的本地工作进程的当前状态快照。此快照包括用户定义的 Lambda 函数和系统 Lambda 函数。系统 Lambda 函数是 AWS IoT Greengrass 核心软件的一部分。它们在核心设备上作为本地工作进程运行,并管理消息路由、本地影子同步和自动 IP 地址检测等操作。

运行状况检查 API 支持以下请求:

请求在设备上本地发送,不需要互联网连接。

获取所有工作人员的健康信息

发送 GET 请求以获取有关所有在职工作人员的健康信息。

  • 用 IPC 的端口号替换端口

GET http://localhost:port/2016-11-01/health/workers
port

IPC 的端口号。

该值可以在 1024 和 65535 之间变化。默认值为 8000。

要更改此端口号,可以更新 config.json 文件中的 ggDaemonPort 属性。有关更多信息,请参阅AWS IoT Greengrass 核心配置文件

示例请求

以下示例 curl 请求获取所有工作人员的健康信息。

curl http://localhost:8000/2016-11-01/health/workers

JSON 响应

此请求返回一组工作人员健康信息对象。

响应示例

以下示例响应列出了由 AWS IoT Greengrass 启动的所有工作进程的运行状况信息对象。

[ { "FuncArn": "arn:aws:lambda:::function:GGShadowService:1", "WorkerId" : "65515053-2f70-43dc-7cc0-1712bEXAMPLE", "ProcessId": "1234", "WorkerState": "Waiting" }, { "FuncArn": "arn:aws:lambda:::function:GGSecretManager:1", "WorkerId": "a9916cc2-1b4d-4f0e-4b12-b1872EXAMPLE", "ProcessId": "9798", "WorkerState": "Waiting" }, { "FuncArn": "arn:aws:lambda:us-west-2:123456789012:function:my-lambda-function:3", "WorkerId": "2e6f785e-66a5-42c9-67df-42073EXAMPLE", "ProcessId": "11837", "WorkerState": "Waiting" }, ... ]

获取有关指定工作人员的健康信息

发送 POST 请求以获取有关指定工作人员的健康信息。用 IPC 的端口号替换端口。默认为 8000。

POST http://localhost:port/2016-11-01/health/workers

示例请求

以下示例 curl 请求获取指定工作人员的健康信息。

curl --data "@body.json" http://localhost:8000/2016-11-01/health/workers

以下为 body.json 请求正文示例:

{ "FuncArns": [ "arn:aws:lambda:::function:GGShadowService:1", "arn:aws:lambda:us-west-2:123456789012:function:my-lambda-function:3" ] }

请求正文包含一个 FuncArns 阵列。

FuncArns

代表目标工作线程环境的 Lambda 函数的 Amazon 资源名称 (ARN) 列表。

  • 对于用户定义的 Lambda 函数,指定当前部署版本的 ARN。如果您使用别名 ARN 将 Lambda 函数添加到群组,则可以使用 GET 请求获取所有工作人员,然后选择要查询的 ARN。

  • 对于系统 Lambda 函数,指定相应的 Lambda 函数的 ARN。有关更多信息,请参阅系统 Lambda 函数

类型:字符串数组

最小长度:1

最大长度:由核心设备上 AWS IoT Greengrass 启动的工作人员总数。

JSON 响应

此请求返回一个 Workers 阵列和一个 InvalidArns 阵列。

Workers

指定工作人员的健康信息对象列表。

类型:健康信息对象阵列

InvalidArns

无效函数 ARN 的列表,包括没有关联工作人员的函数 ARN。

类型:字符串数组

响应示例

以下示例响应列出了指定工作人员的健康信息对象

{ "Workers": [ { "FuncArn": "arn:aws:lambda:::function:GGShadowService:1", "WorkerId" : "65515053-2f70-43dc-7cc0-1712bEXAMPLE", "ProcessId": "1234", "WorkerState": "Waiting" }, { "FuncArn": "arn:aws:lambda:us-west-2:123456789012:function:my-lambda-function:3", "WorkerId": "2e6f785e-66a5-42c9-67df-42073ESAMPLE", "ProcessId": "11837", "WorkerState": "Waiting" } ], "InvalidArns" : [ "some-malformed-arn", "arn:aws:lambda:us-west-2:123456789012:function:some-unknown-function:1" ] }

此请求返回以下错误:

400 请求无效

请求正文格式不正确。要解决此问题,请使用以下格式重新发送请求:

{"FuncArns":["function-1-arn","function-2-arn"]}
400 请求超过了工作人员的最大数量

数组 FuncArns 中指定的 ARN 数量超过了工作人员的数量。

工作人员健康信息

健康信息对象包含以下属性:

FuncArn

代表工作人员的系统 Lambda 函数的 ARN。

类型:string

WorkerId

工作人员的 ID。该属性对于调试很有用。runtime.log 文件和 Lambda 函数日志包含工作程序 ID,因此此属性对于调试启动多个实例的按需 Lambda 函数特别有用。

类型:string

ProcessId

工作人员进程的进程 ID (PID)。

类型:int

WorkerState

工作人员的状态。

类型:string

以下是可能的工件状态。

Working

处理消息

Waiting

正在等待消息。适用于作为守护程序或独立进程运行的长期存在的 Lambda 函数。

Starting

快点,开始吧。

FailedInitialization

初始化失败。

Terminated

被 Greengrass 守护程序阻止

NotStarted

启动失败,正在再次尝试启动。

Initialized

已成功初始化。

系统 Lambda 函数

您可以请求以下系统 Lambda 函数的运行状况信息:

GGCloudSpooler

管理 AWS IoT Core 作为源或目标的 MQTT 消息队列。

ARN:arn:aws:lambda:::function:GGCloudSpooler:1

GGConnManager

在 Greengrass 核心设备和客户端设备之间路由 MQTT 消息。

ARN:arn:aws:lambda:::function:GGConnManager

GGDeviceCertificateManager

监听 AWS IoT 阴影内核 IP 端点的更改,并生成 GGConnManager 用于相互身份验证的服务器端证书。

ARN:arn:aws:lambda:::function:GGDeviceCertificateManager

GGIPDetector

管理 IP 地址自动检测功能,该功能使 Greengrass 组内设备能够发现 Greengrass 核心设备。当您手动提供 IP 地址时,此服务不适用。

ARN:arn:aws:lambda:::function:GGIPDetector:1

GGSecretManager

管理本地密钥的安全存储,并通过用户定义的 Lambda 和连接器进行访问。

ARN:arn:aws:lambda:::function:GGSecretManager:1

GGShadowService

管理客户端设备的本地影子。

ARN:arn:aws:lambda:::function:GGShadowService

GGShadowSyncManager

如果设备 syncShadow 的属性设置为 true,则将本地阴影与核心设备和客户端设备的 AWS Cloud 同步。

ARN:arn:aws:lambda:::function:GGShadowSyncManager

GGStreamManager

在本地处理数据流并自动导出到 AWS Cloud。

ARN:arn:aws:lambda:::function:GGStreamManager:1

GGTES

本地令牌交换服务,用于检索 Greengrass 组角色中定义的 IAM 凭证,可供本地代码用于访问 AWS 服务。

ARN:arn:aws:lambda:::function:GGTES