

终止支持通知：2026 年 10 月 7 日， AWS 将停止对的支持。 AWS IoT Greengrass Version 1 2026 年 10 月 7 日之后，您将无法再访问这些 AWS IoT Greengrass V1 资源。如需了解更多信息，请访问[迁移自 AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html)。

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

# 调用本地运行状况检查 API
<a name="health-check"></a>

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

运行状况检查 API 支持以下请求：
+ 发送 `GET` 请求以[获取所有工作人员的健康信息](#health-check-get)。
+ 发送 `POST` 请求以[获取指定工作人员的健康信息](#health-check-post)。

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

## 获取所有工作人员的健康信息
<a name="health-check-get"></a>

发送 `GET` 请求以获取有关所有在职工作人员的健康信息。
+ *port*替换为 IPC 的端口号。

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

`port`  
IPC 的端口号。  
该值可以在 1024 和 65535 之间变化。默认值为 8000。  
要更改此端口号，可以更新 `config.json` 文件中的 `ggDaemonPort` 属性。有关更多信息，请参阅 [AWS IoT Greengrass 核心配置文件](gg-core.md#config-json)。

**示例请求**

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

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

### JSON 响应
<a name="health-check-get-response"></a>

此请求返回一组[工作人员健康信息](#health-information-objects)对象。

**响应示例**

以下示例响应列出了由启动的所有工作进程的运行状况信息对象 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"
    },
    ...
]
```

## 获取有关指定工作人员的健康信息
<a name="health-check-post"></a>

发送 `POST` 请求以获取有关指定工作人员的健康信息。*port*替换为 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 函数的亚马逊资源名称 (ARNs) 列表。  
+ 对于用户定义的 Lambda 函数，指定当前部署版本的 ARN。如果您使用别名 ARN 向群组添加了 Lambda 函数，则可以使用 GET 请求获取所有工作程序，然后选择 ARNs 要查询的。
+ 对于系统 Lambda 函数，指定相应的 Lambda 函数的 ARN。有关更多信息，请参阅 [系统 Lambda 函数](#system-lambda-functions)。
类型：字符串数组  
最小长度：1  
最大长度：核心设备 AWS IoT Greengrass 上启动的工作器总数。

### JSON 响应
<a name="health-check-post-response"></a>

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

`Workers`  
指定工作人员的健康信息对象列表。  
类型：[健康信息对象](#health-information-objects)阵列

`InvalidArns`  
无效函数列表 ARNs ，包括没有关联工作 ARNs 线程的函数。  
类型：字符串数组

**响应示例**

以下示例响应列出了指定工作人员的[健康信息对象](#health-information-objects)。

```
{ 
    "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`组中 ARNs 指定的数量超过了工作人员的数量。

## 工作人员健康信息
<a name="health-information-objects"></a>

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

`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 函数
<a name="system-lambda-functions"></a>

您可以请求以下系统 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 端点的更改，并生成 GGConn Manager 用于相互身份验证的服务器端证书。  
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`属性设置 AWS 云 为，则将本地阴影与核心设备和客户端设备的同步。`true`  
ARN：`arn:aws:lambda:::function:GGShadowSyncManager`

`GGStreamManager`  
在本地处理数据流并自动导出到 AWS 云。  
ARN：`arn:aws:lambda:::function:GGStreamManager:1`

`GGTES`  
本地令牌交换服务，用于检索本地代码用于访问服务的 Greengrass 组角色中定义的 IAM 证书。 AWS   
ARN：`arn:aws:lambda:::function:GGTES`