View a markdown version of this page

測試長期 Lambda 函數 - AWS IoT Greengrass

支援終止通知:2026 年 10 月 7 日 AWS 將停止 的支援 AWS IoT Greengrass Version 1。2026 年 10 月 7 日之後,您將無法再存取 AWS IoT Greengrass V1 資源。如需詳細資訊,請造訪從 遷移 AWS IoT Greengrass Version 1

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

測試長期 Lambda 函數

長期 Lambda 函數會在 AWS IoT Greengrass 核心啟動並在單一容器 (或沙盒) 中執行時自動啟動。在函數處理常式外定義的任何變數或預先處理的邏輯,每次呼叫函數處理常式時都會保留下來。多個函數處理常式的呼叫已排入佇列,直到已執行舊的呼叫。

在此單元中使用的 greengrassHelloWorldCounter.py 程式碼可在函數處理常式外定義 my_counter 變數。

注意

您可以在 AWS Lambda 主控台或 GitHub 上的AWS IoT Greengrass 適用於 Python 的核心 SDK 中檢視程式碼。

在此步驟中,您會建立允許 Lambda 函數和 AWS IoT 交換 MQTT 訊息的訂閱。然後,您部署群組和測試函數。

  1. 在群組組態頁面上,選擇訂閱,然後選擇新增

  2. 來源類型下,選擇 Lambda 函數,然後選擇 Greengrass_HelloWorld_Counter

  3. 目標類型下,選擇服務,選擇 IoT 雲端

  4. 針對 Topic filter (主題篩選條件),輸入 hello/world/counter

  5. 選擇建立訂閱

    此單一訂閱僅朝一個方向進行:從 Greengrass_HelloWorld_Counter Lambda 函數到 AWS IoT。若要從雲端叫用 (或觸發) 此 Lambda 函數,您必須以相反方向建立訂閱。

  6. 請依照步驟 1 - 5 新增另一個使用下列值的訂閱。此訂閱允許 Lambda 函數接收來自 的訊息 AWS IoT。當您從叫用 函數的 AWS IoT 主控台傳送訊息時,您會使用此訂閱。

    • 針對來源,選擇服務,然後選擇 IoT 雲端

    • 針對目標,選擇 Lambda 函數,然後選擇 Greengrass_HelloWorld_Counter

    • 針對主題篩選條件,輸入 hello/world/counter/trigger

    此主題篩選條件中使用 /trigger 延伸部分,因為您已建立兩個訂閱,並且不希望它們互相影響。

  7. 請確定 Greengrass 協助程式正在執行,如中所述部署雲端組態到核心裝置

  8. 在群組組態頁面上,選擇部署

  9. 部署完成後,請返回 AWS IoT 主控台首頁,然後選擇測試

  10. 設定下列欄位:

    • 針對 Subscription topic (訂閱主題),輸入 hello/world/counter

    • 針對 Quality of Service (服務品質),選擇 0

    • 針對 MQTT payload display (MQTT 承載顯示),選擇 Display payloads as strings (將承載顯示為字串)

  11. 選擇 Subscribe (訂閱)

    與此模組的第 1 部分不同,您應該不會在訂閱 hello/world/counter 之後看到任何訊息。這是因為發佈到該 hello/world/counter 主題的 greengrassHelloWorldCounter.py 程式碼是在函數處理常式中,該處理常式僅會在叫用該函數時執行。

    在此模組中,您將 Greengrass_HelloWorld_Counter Lambda 函數設定為在接收hello/world/counter/trigger主題的 MQTT 訊息時叫用。

    Greengrass_HelloWorld_CounterIoT Cloud (IoT 雲端) 的訂閱允許函數將訊息傳送至 hello/world/counter 主題的 AWS IoT 。IoT Cloud 至 Greengrass_HelloWorld_Counter 訂閱允許 AWS IoT 傳送訊息至 hello/world/counter/trigger主題上的 函數。

  12. 若要測試長期生命週期,請發佈訊息至hello/world/counter/trigger主題來叫用 Lambda 函數。您可以使用預設的訊息。

    AWS IoT 來自主控台的預設 Hello 訊息傳送至 hello/world/counter/trigger,並反白顯示發佈至主題按鈕。
    注意

    Greengrass_HelloWorld_Counter 函數會忽略接收訊息的內容。它只需在 function_handler 中執行程式碼,這會將訊息傳送到 hello/world/counter 主題。您可以從 GitHub 上的AWS IoT Greengrass 適用於 Python 的核心 SDK 檢閱此程式碼。

每次將訊息發佈給 hello/world/counter/trigger 主題時,my_counter 變數會增加。此調用計數會顯示在從 Lambda 函數傳送的訊息中。由於函數處理常式包含 20 秒的休眠週期 (time.sleep(20)),因此重複觸發處理常式會將核心的回應排入佇列 AWS IoT Greengrass 。

螢幕擷取畫面顯示呼叫計數從 1、2 和 3 開始增加。