建立 Lambda 函數 - 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,這會增加重要的新功能,並支援其他平台

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

建立 Lambda 函數

此單元中的範例 Python Lambda 函數會使用AWS IoT Greengrass核心開發套件讓 Python 發佈 MQTT 訊息。

在此步驟中,您:

  • 下載AWS IoT Greengrass適用於 Python 的核心開發套件。AWS IoT Greengrass核心設備)。

  • 建立 Lambda 函數部署套件,其中包含函數程式碼和相依性。

  • 使用 Lambda 主控台建立 Lambda 函數並上傳部署套件。

  • 發佈 Lambda 函數的版本,並建立指向該版本的別名。

您必須將 Python 3.7 安裝在核心裝置上,才能完成此單元。

 

  1. 來自AWS IoT Greengrass核心開發套件下載頁面,下載AWS IoT Greengrass適用於 Python 的核心 SDK 到您的計算機。

  2. 將下載的套件解壓縮,以取得 Lambda 函數程式碼和開發套件。

    本單元中的 Lambda 函數使用:

    • examples\HelloWorld 中的 greengrassHelloWorld.py 檔案。這是 Lambda 函數程式碼。每隔五秒鐘,函數便會從可能發佈的訊息中二選一發佈給 hello/world 主題。

    • greengrasssdk 資料夾。此為軟體開發套件。

  3. greengrasssdk 資料夾複製到包含 greengrassHelloWorld.pyHelloWorld 資料夾中。

  4. 若要建立 Lambda 函數部署套件,請儲存greengrassHelloWorld.pygreengrasssdk文件夾到壓縮zip檔案名為hello_world_python_lambda.zippy 檔案和 greengrasssdk 資料夾必須為在目錄的根內。

    螢幕擷取畫面顯示 hello_word_python_lambda.zip 的壓縮內容。

    在 UNIX 式系統 (包括 Mac 終端機) 上,可使用以下命令來封裝檔案和資料夾:

    zip -r hello_world_python_lambda.zip greengrasssdk greengrassHelloWorld.py
    注意

    取決於您的發行版本,您可能需要先安裝 zip (例如透過執行 sudo apt-get install zip)。適用於您發行版本的安裝命令可能會有所不同。

    現在,您可以建立 Lambda 函數並上傳部署套件了。

  5. 開啟 Lambda 主控台,然後選擇建立函數

  6. 選擇 Author from scratch (從頭開始撰寫)

  7. 將您的函數命名為 Greengrass_HelloWorld,並將其餘的欄位設定如下:

    • 針對 Runtime (執行時間),選擇 Python 3.7

    • 適用於許可,請保留預設設定。這會建立授與基本 Lambda 權限的執行角色。此角色不為所用AWS IoT Greengrass。

    選擇 Create function (建立函數)。

  8. 上傳您的 Lambda 函數部署套件:

    1. 在「」程式碼索引標籤下程式碼來源,選擇上傳來源。從下拉式選單中選擇.zip 檔案

      突出顯示 .zip 文件的從下拉列表中上傳。
    2. 選擇上傳,然後選擇您的hello_world_python_lambda.zip部署套件。然後選擇 Save (儲存)

    3. 在「」程式碼功能的標籤,在執行時間設定,選擇Edit (編輯),然後輸入下列值。

      • 針對 Runtime (執行時間),選擇 Python 3.7

      • 對於 Handler (處理常式),輸入 greengrassHelloWorld.function_handler

      「Runtime (執行時間設為 Python 3.7),其中的「Runtime (執行時間設為 Python 3.7」和「Runtime (執行時間)」欄位設為 Python 3.7。greengrassHelloWorld. 功能處理程序「。
    4. 選擇 Save (儲存)。

      注意

      所以此測試按鈕AWS Lambda主控台不適用此函數。所以此AWS IoT Greengrass核心 SDK 不包含在中獨立執行您的 Greengrass Lambda 函數所需的模組AWS Lambda主控台。這些模塊(例如,greengrass_common) 會在函式部署到 Greengrass 核心後提供給函式。

  9. 發佈 Lambda 函數:

    1. 來自動作頁面頂端的選單,選擇發行新版本

      [操作] 功能表的螢幕擷取畫面反白顯示 [發行新版本]。
    2. 針對 Version description (版本描述),輸入 First version,然後選擇 Publish (發佈)

      螢幕擷取畫面的 [版本描述] 欄位設反白顯示 [第一個版本]和 [發佈] 按鈕。
  10. 建立別名Lambda 函數

    注意

    Greengrass 組可以通過別名(推薦)或版本引用 Lambda 函數。使用別名可讓您更輕鬆地管理程式碼更新,因為當函數程式碼更新時,您不需要變更訂閱資料表或群組定義。相反,您只需將別名指向新函數版本即可。

    1. 來自動作頁面頂端的選單,選擇建立別名

      [操作] 功能表的螢幕擷取畫面設為 [建立別名]
    2. 命別名GG_HelloWorld,將版本設定為1(對應到您剛發佈的版本),然後選擇Save

      注意

      AWS IoT Greengrass不支援 Lambda 別名$LATEST版本。

       

      名稱為 GGGGG_的 [建立] 螢幕擷取畫面,其版本欄位設為 GGG_HelloWorld,並將「版本」欄位設定為 1。