

支援終止通知：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)。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 AWS IoT Greengrass 核心上執行 Lambda 函數
<a name="lambda-functions"></a>

AWS IoT Greengrass 為您撰寫的使用者定義程式碼提供容器化 Lambda 執行期環境 AWS Lambda。部署至 AWS IoT Greengrass 核心執行的 Lambda 函數會在核心的本機 Lambda 執行時間中執行。本機 Lambda 函數可由本機事件、來自雲端的訊息和其他來源觸發，將本機運算功能帶入用戶端裝置。例如，您可以在將資料傳輸至雲端之前，使用 Greengrass Lambda 函數來篩選裝置資料。

若要將 Lambda 函數部署至核心，請將函數新增至 Greengrass 群組 （透過參考現有的 Lambda 函數）、設定函數的群組特定設定，然後部署群組。如果函數存取 AWS 服務，您也必須將任何必要的許可新增至 [Greengrass 群組角色](group-role.md)。

您可以設定參數來決定 Lambda 函數的執行方式，包括許可、隔離、記憶體限制等。如需詳細資訊，請參閱[使用群組特定的組態控制 Greengrass Lambda 函數的執行](lambda-group-config.md)。

**注意**  
這些設定也可讓您 AWS IoT Greengrass 在 Docker 容器中執行。如需詳細資訊，請參閱[AWS IoT Greengrass 在 Docker 容器中執行](run-gg-in-docker-container.md)。

下表列出支援的[AWS Lambda 執行時間](https://docs.aws.amazon.com/lambda/latest/dg/lambda-runtimes.html)及其可執行的 AWS IoT Greengrass Core 軟體版本。


****  

| 語言或平台 | GGC 版本 | 
| --- | --- | 
| Python 3.8 | 1.11 | 
| Python 3.7 | 1.9 或更新版本 | 
| Python 2.7 \* | 1.0 或更新版本 | 
| Java 8 | 1.1 或更新版本 | 
| Node.js 12.x \* | 1.10 或更新版本 | 
| Node.js 8.10 \* | 1.9 或更新版本 | 
| Node.js 6.10 \* | 1.1 或更新版本 | 
| C、C\+\+ | 1.6 或更新版本 | 

\* 您可以在支援的 版本上執行使用這些執行時間的 Lambda 函數 AWS IoT Greengrass，但您無法在其中建立這些函數 AWS Lambda。如果裝置上的執行時間與該函數指定的 AWS Lambda 執行時間不同，您可以在 `FunctionRuntimeOverride`中使用 選擇您自己的執行時間`FunctionDefintionVersion`。如需詳細資訊，請參閱 [CreateFunctionDefinition](https://docs.aws.amazon.com/greengrass/v1/apireference/createfunctiondefinition-post.html)。如需支援執行時間的詳細資訊，請參閱《 *AWS Lambda 開發人員指南*》中的[執行時間支援政策](https://docs.aws.amazon.com/lambda/latest/dg/runtime-support-policy.html)。

## 適用於 Greengrass Lambda 函數SDKs
<a name="lambda-sdks"></a>

AWS 提供三個軟體SDKs，可供在 AWS IoT Greengrass 核心上執行的 Greengrass Lambda 函數使用。這些軟體開發套件包含在不同的套裝服務中，因此函數可以同時使用它們。若要在 Greengrass Lambda 函數中使用 SDK，請在您上傳到的 Lambda 函數部署套件中包含它 AWS Lambda。

**AWS IoT Greengrass 核心 SDK**  <a name="lambda-sdks-core"></a>
讓本機 Lambda 函數與核心互動，以便：  <a name="gg-core-sdk-functionality"></a>
+ 與 交換 MQTT 訊息 AWS IoT Core。
+ 使用 Greengrass 群組中的連接器、用戶端裝置和其他 Lambda 函數交換 MQTT 訊息。
+ 與本機陰影服務互動。
+ 叫用其他本機 Lambda 函數。
+ 存取[私密資源](secrets.md)。
+ 與[串流管理員](stream-manager.md)交動。
AWS IoT Greengrass 在 GitHub 上以下列語言和平台提供 AWS IoT Greengrass 核心 SDK。  <a name="gg-core-sdk-download-list"></a>
+ [AWS IoT Greengrass 適用於 Java 的核心 SDK](https://github.com/aws/aws-greengrass-core-sdk-java/)
+ [AWS IoT Greengrass 適用於 Node.js 的核心 SDK](https://github.com/aws/aws-greengrass-core-sdk-js/)
+ [AWS IoT Greengrass 適用於 Python 的核心 SDK](https://github.com/aws/aws-greengrass-core-sdk-python/)
+ [AWS IoT Greengrass 適用於 C 的核心 SDK](https://github.com/aws/aws-greengrass-core-sdk-c/)
若要在 Lambda 函數部署套件中包含 AWS IoT Greengrass 核心 SDK 相依性：  

1. 下載符合 Lambda 函數執行時間之 AWS IoT Greengrass Core SDK 套件的語言或平台。

1. 解壓縮下載的封裝，以取得軟體開發套件。SDK 為 `greengrasssdk` 資料夾。

1. 在包含函數程式碼的 Lambda 函數部署套件`greengrasssdk`中包含 。這是您在建立 Lambda 函數 AWS Lambda 時上傳至 的套件。
   
 **StreamManagerClient**  
只有下列 AWS IoT Greengrass 核心 SDKs 可用於[串流管理員](stream-manager.md)操作：  <a name="streammanagerclient-sdk-versions"></a>
+ Java 開發套件 (1.4.0 版或更新版本）
+ Python SDK (1.5.0 版或更新版本）
+ Node.js SDK (1.6.0 版或更新版本）
若要使用適用於 Python AWS IoT Greengrass 的核心 SDK 與串流管理員互動，您必須安裝 Python 3.7 或更新版本。您還必須安裝相依性，以包含在 Python Lambda 函數部署套件中：  <a name="python-sdk-dependencies-stream-manager"></a>

1. 前往包含 `requirements.txt` 檔案的軟體開發套件目錄。這個檔案會列出相依性。

1. 安裝軟體開發套件相依性。例如，執行下列 `pip` 命令，將它們安裝在目前的目錄中：

   ```
   pip install --target . -r requirements.txt
   ```
   
 **在 AWS IoT Greengrass 核心裝置上安裝適用於 Python 的核心 SDK**  
如果您正在執行 Python Lambda 函數，您也可以使用 在 AWS IoT Greengrass 核心裝置上[https://pypi.org/project/pip/](https://pypi.org/project/pip/)安裝適用於 Python 的核心 SDK。然後，您可以部署函數，而無需在 Lambda 函數部署套件中包含 SDK。如需詳細資訊，請參閱 [greengrasssdk](https://pypi.org/project/greengrasssdk/)。  
此支援適用於具有大小限制的核心。我們建議您盡可能在 Lambda 函數部署套件中包含 開發套件。  
 

**AWS IoT Greengrass Machine Learning SDK**  <a name="lambda-sdks-ml"></a>
讓本機 Lambda 函數使用部署到 Greengrass 核心作為 ML 資源的機器學習 (ML) 模型。Lambda 函數可以使用 SDK 來叫用本機推論服務，並與部署到核心做為連接器的本機推論服務互動。Lambda 函數和 ML 連接器也可以使用 SDK 將資料傳送至 ML Feedback 連接器，以進行上傳和發佈。如需詳細資訊，包括使用開發套件的程式碼範例，請參閱 [ML 影像分類連接器](image-classification-connector.md)、[ML 物件偵測連接器](obj-detection-connector.md)和 [ML 回饋連接器](ml-feedback-connector.md)。  
下表列出 SDK 版本支援的語言或平台，以及他們可以執行 AWS IoT Greengrass 的核心軟體版本。    
****    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/greengrass/v1/developerguide/lambda-functions.html)
如需下載資訊，請參閱 [AWS IoT Greengrass ML 開發套件軟體](what-is-gg.md#gg-ml-sdk-download)。

**AWS SDKs**  <a name="lambda-sdks-aws"></a>
讓本機 Lambda 函數直接呼叫 AWS 服務，例如 Amazon S3 AWS IoT、DynamoDB 和 AWS IoT Greengrass。若要在 Greengrass Lambda 函數中使用 AWS SDK，您必須在部署套件中包含它。當您在與 AWS IoT Greengrass Core AWS SDK 相同的套件中使用 SDK 時，請確定您的 Lambda 函數使用正確的命名空間。當核心離線時，Greengrass Lambda 函數無法與雲端服務通訊。  
從[入門資源中心](https://aws.amazon.com/getting-started/tools-sdks/)下載 AWS SDKs。

如需建立部署套件的詳細資訊，請參閱《 入門教學》[建立和封裝 Lambda 函數](create-lambda.md)中的 或《 *AWS Lambda 開發人員指南*》中的[建立部署套件](https://docs.aws.amazon.com/lambda/latest/dg/deployment-package-v2.html)。

### 遷移雲端型 Lambda 函數
<a name="lambda-migrate-sdks"></a>

 AWS IoT Greengrass 核心 SDK 遵循 AWS SDK 程式設計模型，可讓您輕鬆地將為雲端開發的 Lambda 函數移植到在 AWS IoT Greengrass 核心上執行的 Lambda 函數。

例如，下列 Python Lambda 函數使用 適用於 Python (Boto3) 的 AWS SDK 將訊息發佈至`some/topic`雲端中的 主題：

```
import boto3

iot_client = boto3.client("iot-data")
response = iot_client.publish(
    topic="some/topic", qos=0, payload="Some payload".encode()
)
```

若要移植 AWS IoT Greengrass 核心的 函數，請在 `import`陳述式和`client`初始化中，將`boto3`模組名稱變更為 `greengrasssdk`，如下列範例所示：

```
import greengrasssdk

iot_client = greengrasssdk.client("iot-data")
iot_client.publish(topic="some/topic", qos=0, payload="Some payload".encode())
```

**注意**  
 AWS IoT Greengrass 核心 SDK 僅支援傳送 QoS = 0 的 MQTT 訊息。如需詳細資訊，請參閱[訊息服務品質](gg-core.md#message-quality-of-service)。

程式設計模型之間的相似性也可讓您在雲端開發 Lambda 函數，然後 AWS IoT Greengrass 輕鬆遷移到 。[Lambda 可執行檔](#lambda-executables)不會在雲端執行，因此您無法在部署之前使用 AWS SDK 在雲端中進行開發。

## 依別名或版本參考 Lambda 函數
<a name="lambda-versions-aliases"></a>

Greengrass 群組可以依別名 （建議） 或版本參考 Lambda 函數。使用別名可讓您更輕鬆地管理程式碼更新，因為您不必在更新函數程式碼時變更訂閱資料表或群組定義。反之，您只需將別名指向新的函數版本。別名會在群組部署期間解析為版本號碼。當您使用別名會更新解析的版本別名，此別名會指向部署的時間。

AWS IoT Greengrass 不支援 **\$LATEST** 版本的 Lambda 別名。**\$LATEST** 版本不受限於不可變、已發佈的函數版本，並且可以隨時變更，這與 AWS IoT Greengrass 版本不可變性原則相反。

透過程式碼變更來保持 Greengrass Lambda 函數更新的常見做法是使用 Greengrass 群組和訂閱**PRODUCTION**中名為 的別名。當您將 Lambda 函數的新版本提升為生產環境時，請將別名指向最新的穩定版本，然後重新部署群組。您也可以使用此方法轉返至舊版本。

## Greengrass Lambda 函數的通訊流程
<a name="lambda-communication"></a>

Greengrass Lambda 函數支援數種與 AWS IoT Greengrass 群組的其他成員、本機服務和雲端服務 （包括 AWS 服務） 通訊的方法。

### 使用 MQTT 訊息進行通訊
<a name="lambda-messages"></a>

Lambda 函數可以使用由訂閱控制的發佈訂閱模式來傳送和接收 MQTT 訊息。

此通訊流程可讓 Lambda 函數與下列實體交換訊息：
+ 群組中的用戶端裝置。
+ 該群組中的連接器。
+ 群組中的其他 Lambda 函數。
+ AWS IoT.
+ 本機裝置陰影服務。

訂閱會定義將訊息從來源路由到目標時所用的訊息來源、訊息目標和主題 (或主體)。發佈至 Lambda 函數的訊息會傳遞至函數的已註冊處理常式。訂閱啟用更多安全性，和提供可預測的互動。如需詳細資訊，請參閱[MQTT 簡訊工作流程中的受管訂閱](gg-sec.md#gg-msg-workflow)。

**注意**  
當核心離線時，Greengrass Lambda 函數可以與用戶端裝置、連接器、其他函數和本機影子交換訊息，但訊息 AWS IoT 會排入佇列。如需詳細資訊，請參閱[雲端目標的 MQTT 訊息佇列](gg-core.md#mqtt-message-queue)。

### 其他通訊流程
<a name="lambda-other-communication"></a>
+ 為了在核心裝置上與本機裝置和磁碟區資源和機器學習模型互動，Greengrass Lambda 函數會使用平台特定的作業系統介面。例如，您可以在 Python 函數的 [os](https://docs.python.org/2/library/os.html) 模組中使用 `open`方法。若要允許函數存取資源，該函數必須*隸屬*於資源並授與 `read-only` 或 `read-write` 許可。如需詳細資訊，包括 AWS IoT Greengrass 核心版本可用性，請參閱 [使用 Lambda 函數和連接器存取本機資源](access-local-resources.md)和 [從 Lambda 函數程式碼存取機器學習資源](access-ml-resources.md#access-resource-function-code)。
**注意**  
如果您在沒有容器化的情況下執行 Lambda 函數，則無法使用連接的本機裝置和磁碟區資源，而且必須直接存取這些資源。
+ Lambda 函數可以使用 AWS IoT Greengrass 核心 SDK 中的`Lambda`用戶端來叫用 Greengrass 群組中的其他 Lambda 函數。
+ Lambda 函數可以使用 AWS SDK 與 AWS 服務通訊。如需詳細資訊，請參閱 [AWS SDK](#aws-sdk)。
+ Lambda 函數可以使用第三方界面與外部雲端服務通訊，類似於雲端型 Lambda 函數。

**注意**  
當核心離線時，Greengrass Lambda 函數無法與 AWS 或其他雲端服務通訊。

## 擷取輸入 MQTT 主題 (或主旨)
<a name="lambda-get-mqtt-topic"></a>

AWS IoT Greengrass 使用訂閱來控制用戶端裝置、Lambda 函數和群組中的連接器，以及 AWS IoT 或本機影子服務之間的 MQTT 訊息交換。訂閱會定義訊息來源、訊息目標，以及用於路由訊息的 MQTT 主題。當目標為 Lambda 函數時，當來源發佈訊息時，會叫用函數的處理常式。如需詳細資訊，請參閱[使用 MQTT 訊息進行通訊](#lambda-messages)。

下列範例顯示 Lambda 函數如何從傳遞給處理常式`context`的 取得輸入主題。方式是從內容階層 (`context.client_context.custom['subject']`) 存取 `subject` 金鑰。範例也會剖析輸入 JSON 訊息，並發佈剖析的主題和訊息。

**注意**  
在 AWS IoT Greengrass API 中，[訂閱](https://docs.aws.amazon.com/greengrass/v1/apireference/definitions-subscription.html)的主題由 `subject` 屬性表示。

```
import greengrasssdk
import logging

client = greengrasssdk.client('iot-data')

OUTPUT_TOPIC = 'test/topic_results'

def get_input_topic(context):
    try:
        topic = context.client_context.custom['subject']
    except Exception as e:
        logging.error('Topic could not be parsed. ' + repr(e))
    return topic
    
def get_input_message(event):
    try:
        message = event['test-key']
    except Exception as e:
        logging.error('Message could not be parsed. ' + repr(e))
    return message

def function_handler(event, context):
    try:
        input_topic = get_input_topic(context)
        input_message = get_input_message(event)
        response = 'Invoked on topic "%s" with message "%s"' % (input_topic, input_message)
        logging.info(response)
    except Exception as e:
        logging.error(e)

    client.publish(topic=OUTPUT_TOPIC, payload=response)

    return
```

若要測試函數，請使用預設的組態設定將其新增至群組。接著，新增以下訂閱並部署群組。如需說明，請參閱[模組 3 （第 1 部分）： 上的 Lambda 函數 AWS IoT Greengrass](module3-I.md)。


****  

| 來源 | Target | 主題篩選條件 | 
| --- | --- | --- | 
| IoT Cloud (IoT 雲端) | 此函數 | test/input\_message | 
| 此函數 | IoT Cloud (IoT 雲端) | test/topic\_results | 

部署完成後，呼叫該函數。

1. 在 AWS IoT 主控台中，開啟 **MQTT 測試用戶端**頁面。

1. 選取訂閱`test/topic_results`主題索引標籤**來訂閱主題**。

1. 選取發佈至`test/input_message`主題索引標籤，將訊息**發佈至主題**。在此範例中，您必須於 JSON 訊息包含 `test-key` 屬性。

   ```
   {
     "test-key": "Some string value"
   }
   ```

   如果成功，函數會將輸入主題和訊息字串發佈至 `test/topic_results` 主題。

## Greengrass Lambda 函數的生命週期組態
<a name="lambda-lifecycle"></a>

Greengrass Lambda 函數生命週期會決定函數何時啟動，以及它如何建立和使用容器。生命週期也可決定在函數處理常式外所保留的變數和預先處理邏輯。

AWS IoT Greengrass 支援隨需 （預設） 或長期生命週期：
+ **隨需**函數，在沒有需要執行工作時，其被呼叫和停用會讓此隨需函數啟動。叫用函數會建立分離的容器 (或沙盒) 以處理呼叫，除非已有可重複使用的現有容器。傳送到函數的資料可能會透過任何容器拉出。

  隨需 函數的多個呼叫可以平行執行。

  每當建立新容器時，在函數處理常式外定義的變數或預先處理的邏輯將不將予以保留。
+ **長期 **（或*固定*) 函數會在 AWS IoT Greengrass 核心啟動並在單一容器中執行時自動啟動。傳送到函數的所有資料可能會透過一樣的容器拉出。

  會佇列多個呼叫，直到先前的呼叫已執行。

  在函數處理常式外定義的變數或預先處理的邏輯，每次呼叫時會保留於函數處理常式。

  當您需要在沒有任何初始輸入的情況下開始執行工作時，長期 Lambda 函數很有用。例如，當函數開始接收裝置資料時，長期函數可以載入和啟動就緒的機器學習模型。
**注意**  
請記住長期函數有與其相關的呼叫處理常式之逾時。如果您想要無限期地執行程式碼，則您必須在處理常式外啟動此程式碼。請確定在處理常式外沒有封鎖程式碼，可以預防完成其初始化的函數。  
 除非核心停止 （例如，在群組部署或裝置重新啟動期間） 或函數進入錯誤狀態 （例如處理常式逾時、未攔截的例外狀況，或超過其記憶體限制），否則這些函數會執行。

如需容器重複使用的詳細資訊，請參閱 AWS 運算部落格中的[了解 中的容器重複使用 AWS Lambda](https://aws.amazon.com/blogs/compute/container-reuse-in-lambda/)。

## Lambda 可執行檔
<a name="lambda-executables"></a>

此功能適用於 AWS IoT Greengrass Core v1.6 和更新版本。

Lambda 可執行檔是一種 Greengrass Lambda 函數，可用於在核心環境中執行二進位程式碼。它可讓您原生執行裝置特定的功能，並受益於編譯程式碼的較小足跡。事件可以叫用 Lambda 可執行檔、叫用其他函數，以及存取本機資源。

Lambda 可執行檔僅支援二進位編碼類型 （不支援 JSON)，否則您可以在 Greengrass 群組中管理它們，並像其他 Greengrass Lambda 函數一樣進行部署。不過，建立 Lambda 可執行檔的程序與建立 Python、Java 和 Node.js Lambda 函數不同：
+ 您無法使用 AWS Lambda 主控台建立 （或管理） Lambda 可執行檔。您只能使用 AWS Lambda API 建立 Lambda 可執行檔。
+ 您可以將函數程式碼上傳到 AWS Lambda 做為編譯的可執行檔，其中包含[AWS IoT Greengrass 適用於 C 的 核心 SDK](https://github.com/aws/aws-greengrass-core-sdk-c)。
+ 您可以指定可執行檔的名稱為函數處理常式。

Lambda 可執行檔必須在其函數程式碼中實作特定呼叫和程式設計模式。例如，`main` 方法必須：
+ 呼叫 `gg_global_init` 以初始化 Greengrass 內部全域變數。在建立任何執行緒之前，以及在呼叫任何其他 AWS IoT Greengrass Core SDK 函數之前，必須呼叫此函數。
+ 呼叫 `gg_runtime_start` 以向 Greengrass Lambda 執行時間註冊函數處理常式。此函數必須在初始化期間呼叫。呼叫此函數會讓執行時間使用目前的執行緒。此選擇性使用的 `GG_RT_OPT_ASYNC` 參數通知該函數不要進行封鎖，反而請它為執行時間建立新的執行緒。此函數使用 `SIGTERM` 處理常式。

下列程式碼片段是 GitHub 上 [simple\_handler.c](https://github.com/aws/aws-greengrass-core-sdk-c/blob/master/aws-greengrass-core-sdk-c-example/simple_handler.c) 程式碼範例的 `main`方法。

```
int main() {
    gg_error err = GGE_SUCCESS;

    err = gg_global_init(0);
    if(err) {
        gg_log(GG_LOG_ERROR, "gg_global_init failed %d", err);
        goto cleanup;
    }

    gg_runtime_start(handler, 0);

cleanup:
    return -1;
}
```

如需需求、限制條件和其他實作詳細資訊的詳細資訊，請參閱[AWS IoT Greengrass 適用於 C 的核心 SDK](https://github.com/aws/aws-greengrass-core-sdk-c)。

### 建立 Lambda 可執行檔
<a name="create-lambda-executable"></a>

編譯程式碼與 SDK 之後，請使用 AWS Lambda API 來建立 Lambda 函數並上傳已編譯的可執行檔。

**注意**  
必須使用 C89 相容編譯器編譯您的函數。

下列範例使用 [create-function](https://docs.aws.amazon.com/cli/latest/reference/lambda/create-function.html) CLI 命令來建立 Lambda 可執行檔。此命令指定：
+ 處理常式的可執行檔名稱。這必須為您編譯的可執行檔之確切名稱。
+ `.zip` 檔案路徑含有編譯的可執行檔。
+ 執行階段的 `arn:aws:greengrass:::runtime/function/executable`。這是所有 Lambda 可執行檔的執行時間。

**注意**  
對於 `role`，您可以指定任何 Lambda 執行角色的 ARN。 AWS IoT Greengrass 不使用此角色，但需要 參數才能建立函數。如需 Lambda 執行角色的詳細資訊，請參閱《 *AWS Lambda 開發人員指南*》中的[AWS Lambda 許可模型](https://docs.aws.amazon.com/lambda/latest/dg/intro-permission-model.html)。

```
aws lambda create-function \
--region {{aws-region}} \
--function-name {{function-name}} \
--handler {{executable-name}} \
--role {{role-arn}} \
--zip-file fileb://{{file-name}}.zip \
--runtime arn:aws:greengrass:::runtime/function/executable
```

接著，使用 AWS Lambda API 發佈版本並建立別名。
+ 使用 [publish-version](https://docs.aws.amazon.com/cli/latest/reference/lambda/publish-version.html) 發佈函數版本。

  ```
  aws lambda publish-version \
  --function-name {{function-name}} \
  --region {{aws-region}}
  ```
+ 使用 [create-alias](https://docs.aws.amazon.com/cli/latest/reference/lambda/create-alias.html) 來建立別名，以指向您剛發佈的版本。建議您在將 Lambda 函數新增至 Greengrass 群組時，依別名參考它們。

  ```
  aws lambda create-alias \
  --function-name {{function-name}} \
  --name {{alias-name}} \
  --function-version {{version-number}} \
  --region {{aws-region}}
  ```

**注意**  
 AWS Lambda 主控台不會顯示 Lambda 可執行檔。若要更新函數程式碼，您必須使用 AWS Lambda API。

然後，將 Lambda 可執行檔新增至 Greengrass 群組，將其設定為在其群組特定設定中接受二進位輸入資料，然後部署群組。您可以在 AWS IoT Greengrass 主控台或使用 AWS IoT Greengrass API 執行此操作。