

支援終止通知：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，提供由 啟動之本機工作者程序的目前狀態快照 AWS IoT Greengrass。此快照包含使用者定義的 Lambda 函數和系統 Lambda 函數。System Lambda 函數是 AWS IoT Greengrass Core 軟體的一部分。它們在核心裝置上做為本機工作者程序執行，並管理訊息路由、本機陰影同步和自動 IP 地址偵測等操作。

運作狀態檢查 API 支援下列請求：
+ 傳送`GET`請求[以取得所有工作者的健康資訊](#health-check-get)。
+ 傳送`POST`請求以取得[指定工作者的運作狀態資訊](#health-check-post)。

請求會在裝置本機傳送，不需要網際網路連線。

## 取得所有工作者的健康資訊
<a name="health-check-get"></a>

傳送`GET`請求以取得所有執行中工作者的運作狀態資訊。
+ 將*連接埠*取代為 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`請求以取得指定工作者的運作狀態資訊。將*連接埠*取代為 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 Resource Name ARNs) 清單。  
+ 對於使用者定義的 Lambda 函數，指定目前部署版本的 ARN。如果您使用別名 ARN 將 Lambda 函數新增至群組，您可以使用 GET 請求來取得所有工作者，然後選擇您要查詢ARNs。
+ 對於系統 Lambda 函數，指定對應 Lambda 函數的 ARN。如需詳細資訊，請參閱[System 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`  
初始化成功。

### System 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 端點的變更，並產生 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` 屬性設定為 ， AWS 雲端 則同步本機影子與核心裝置和用戶端裝置的 `true`。  
ARN：`arn:aws:lambda:::function:GGShadowSyncManager`

`GGStreamManager`  
在本機處理資料串流，並執行自動匯出至 AWS 雲端。  
ARN：`arn:aws:lambda:::function:GGStreamManager:1`

`GGTES`  
本機字符交換服務，會擷取本機程式碼用來存取 AWS 服務之 Greengrass 群組角色中定義的 IAM 憑證。  
ARN：`arn:aws:lambda:::function:GGTES`