將 Lambda 函數匯入為元件 (主控台) - AWS IoT Greengrass

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

將 Lambda 函數匯入為元件 (主控台)

當您使用AWS IoT Greengrass主控台建立 Lambda 函數元件時,您會匯入現有AWS Lambda函數,然後將其設定為建立在 Greengrass 裝置上執行的元件。

在開始之前,請先檢閱在 Greengrass 裝置上執行 Lambda 函數的需求

步驟 1:選擇要匯入的 Lambda 函數

  1. AWS IoT Greengrass主控台瀏覽功能表中,選擇 [元件]。

  2. 在 [元件] 頁面上,選擇 [建立元件]。

  3. 在 [建立元件] 頁面的 [元件資訊] 下,選擇 [匯入 Lambda 函數]。

  4. Lambda 函數中,搜尋並選擇您要匯入的 Lambda 函數。

    AWS IoT Greengrass建立具有 Lambda 函數名稱的元件。

  5. Lambda 函數版本中,選擇要匯入的版本。您無法選擇 Lambda 別名,例如$LATEST

    AWS IoT Greengrass將 Lambda 函數的版本建立為有效語意版本的元件。例如,如果您的函數版本為 3,則元件版本會變成 3.0.0

步驟 2:設定 Lambda 函數參數

在 [建立元件] 頁面的 Lambda 函數組態下,設定下列參數以用來執行 Lambda 函數。

  1. (選擇性) 新增 Lambda 函數訂閱工作訊息的事件來源清單。您可以指定事件來源,將此函數訂閱到本機發佈/訂閱訊息和 AWS IoT Core MQTT 訊息。當接收來自事件來源的訊息時,就會呼叫 Lambda 函數。

    注意

    若要訂閱此函數以接收來自其他 Lambda 函數或元件的訊息,請在部署此 Lambda 函數元件時部署舊版訂閱路由器元件。部署舊版訂閱路由器元件時,請指定 Lambda 函數使用的訂閱。

    在「事件來源」下,執行下列動作以新增事件來源:

    1. 針對您新增的每個事件來源,指定下列選項:

      • 主題 — 要訂閱訊息的主題。

      • 類型 — 事件來源的類型。您可以從以下選項中選擇:

        • 本機發佈/訂閱 — 訂閱本機發佈/訂閱訊息。

          如果您使用 Greengrass 核心 v2.6.0 或更新版本和 Lambda 管理員 v2.2.5 或更新版本,則可以在指定此類型時在主題中使用 MQTT 主題萬用字元 (+和)。#

        • AWS IoT CoreMQTT — 訂閱 AWS IoT Core MQTT 訊息。

          指定此類型時,您可以在「主題」中使用 MQTT 主題萬用字元 (+#)。

    2. 若要新增其他事件來源,請選擇 [新增事件來源],然後重複上一個步驟。若要移除事件來源,請在您要移除的事件來源旁邊選擇 [移除]。

  2. 針對逾時 (秒),輸入非釘選 Lambda 函數在逾時之前可執行的時間上限 (以秒為單位)。預設為 3 秒。

  3. 對於「釘接」,請選擇是否釘選 Lambda 函數元件。預設值為「」。

    • 固定(或長壽命)Lambda 函數在啟動時AWS IoT Greengrass啟動,並在自己的容器中繼續運行。

    • 非釘選 (或隨選) Lambda 函數只會在收到工作項目時啟動,並在閒置超過指定的最大閒置時間後結束。如果此函數具有多個工作項目,AWS IoT Greengrass Core 軟體會建立此函數的多個執行個體。

  4. (選擇性) 在其他參數下,設定下列 Lambda 函數參數。

    • 狀態逾時 (秒) — Lambda 函數元件將狀態更新傳送至 Lambda 管理員元件的間隔 (秒)。此參數僅適用於固定的函數。預設值為 60 秒。

    • 佇列大小上限 — Lambda 函數元件的訊息佇列大小上限。AWS IoT Greengrass核心軟體會將訊息儲存在 FIFO (先進先出) 佇列中,直到它可以執行 Lambda 函數來使用每則訊息為止。預設值為 1,000 則訊息。

    • 執行個體數目上限 — 非固定 Lambda 函數可同時執行的執行個體數目上限。預設值為 100 個執行個體。

    • 最大閒置時間 (秒) — 非釘選 Lambda 函數在 AWS IoT Greengrass Core 軟體停止處理程序之前可閒置的最大時間 (秒)。預設值為 60 秒。

    • 編碼類型 — Lambda 函數支援的有效負載類型。您可以從以下選項中選擇:

      • JSON

      • :二進位

      預設值為 JSON。

  5. (選擇性) 指定執行 Lambda 函數時要傳遞給 Lambda 函數的命令列引數清單。

    1. 其他參數的處理引數下,選擇新增引數。

    2. 針對您新增的每個引數,輸入要傳遞至函數的引數。

    3. 若要移除引數,請選擇您要移除之引數旁邊的 [移除]。

  6. (選擇性) 指定 Lambda 函數執行時可用的環境變數。環境變數可讓您儲存和更新組態設定,而不需要變更函數程式碼。

    1. 其他參數的環境變數下,選擇新增環境變數。

    2. 針對您新增的每個環境變數,指定下列選項:

      • Key — 變數名稱。

      • — 此變數的預設值。

    3. 若要移除環境變數,請在您要移除的環境變數旁邊選擇「移除」。

步驟 3:(選擇性) 為 Lambda 函數指定支援的平台

所有核心裝置都具有作業系統和架構的屬性。部署 Lambda 函數元件時,AWS IoT Greengrass核心軟體會將您指定的平台值與核心裝置上的平台屬性進行比較,以判斷該裝置是否支援 Lambda 函數。

注意

當您將 Greengrass 核心元件部署到核心裝置時,您也可以指定自訂平台屬性。如需詳細資訊,請參閱 Greengrass 核心元件的平台覆寫參數

Lambda 函數組態下的其他參數「平台」下執行下列動作,以指定此 Lambda 函數支援的平台。

  1. 針對每個平台,指定下列選項:

    • 作業系統 — 平台的作業系統名稱。目前,僅支援的值為 linux

    • 架構 — 平台的處理器架構。支援的值如下:

      • amd64

      • arm

      • aarch64

      • x86

  2. 若要新增其他平台,請選擇 [新增平台],然後重複上一個步驟。若要移除支援的平台,請在您要移除的平台旁邊選擇「移除」。

步驟 4:(選擇性) 指定 Lambda 函數的元件相依性

組件依賴關係識別您的函數使用的其他AWS提供的組件或自定義組件。部署 Lambda 函數元件時,部署會包含這些相依性供您的函數執行。

重要

若要匯入您建立要在 AWS IoT Greengrass V1 上執行的 Lambda 函數,您必須針對函數使用的功能 (例如秘密、本機陰影和串流管理員) 定義個別元件相依性。將這些元件定義為硬式相依性,以便 Lambda 函數元件在相依性變更狀態時重新啟動。如需詳細資訊,請參閱 匯入 V1 Lambda 函數

Lambda 函數組態「其他參數」「元件相依性」下,完成下列步驟,以指定 Lambda 函數的元件相依性。

  1. 選擇新增相依性

  2. 針對您新增的每個元件相依性,指定下列選項:

    • 元件名稱 — 元件名稱。例如,輸入aws.greengrass.StreamManager以包含串流管理員元件

    • 版本需求 — 識別此元件相依性的相容版本的 npm-style 語意版本條件約束。您可以指定單一版本或版本範圍。例如,輸入^1.0.0以指定此 Lambda 函數取決於串流管理員元件第一個主要版本中的任何版本。如需語意版本條件約束的詳細資訊,請參閱 npm semver 計算器。

    • 類型」— 相依性的類型。您可以從以下選項中選擇:

      • 體 — 如果相依性變更狀態,Lambda 函數元件會重新啟動。這是預設選項。

      • 體 — 如果相依性變更狀態,Lambda 函數元件不會重新啟動。

  3. 若要移除元件相依性,請選擇元件相依性旁邊的移除

步驟 5:(選用) 在容器中執行 Lambda 函數

根據預設,Lambda 函數會在AWS IoT Greengrass核心軟體內的隔離執行階段環境中執行。您也可以選擇在沒有任何隔離的情況下以程序的方式執行 Lambda 函數 (也就是在「無容器」模式下)。

Linux 程序組態下,針對隔離模式,從下列選項中選擇以選取 Lambda 函數的容器化:

  • 容器-Lambda 函數在容器中運行。這是預設選項。

  • 無容器 — Lambda 函數在沒有任何隔離的情況下以程序的形式執行。

如果您在容器中執行 Lambda 函數,請完成下列步驟以設定 Lambda 函數的程序組態。

  1. 設定要提供給容器使用的記憶體數量和系統資源 (例如磁碟區和裝置)。

    在「容器參數」下,執行下列操作。

    1. 在記憶體大小中,輸入您要配置給容器的記憶體大小。您可以指定以 MBk B 為單位的記憶體大小。

    2. 對於唯讀 sys 資料夾,請選擇容器是否可以讀取設備資/sys料夾中的資訊。預設值為「」。

  2. (選擇性) 設定容器化 Lambda 函數可存取的本機磁碟區。在您定義磁碟區時,AWS IoT Greengrass Core 軟體會將來源檔案掛載至容器內的目的地。

    1. 磁碟區下,選擇新增磁碟區。

    2. 針對您新增的每個磁碟區,指定下列選項:

      • 實體磁碟區 — 核心裝置上來源資料夾的路徑。

      • 邏輯磁碟區 — 容器中目標資料夾的路徑。

      • 權限 — (選用) 從容器存取來源資料夾的權限。您可以從以下選項中選擇:

        • 唯讀 — Lambda 函數對來源資料夾具有唯讀存取權。這是預設選項。

        • 讀寫 — Lambda 函數具有來源資料夾的讀取/寫入存取權。

      • 新增群組擁有者 — (選用) 是否要新增執行 Lambda 函數元件的系統群組,做為來源資料夾的擁有者。預設值為「」。

    3. 若要移除卷宗,請選擇您要移除的磁碟區旁邊的 [移除]。

  3. (選擇性) 設定容器化 Lambda 函數可存取的本機系統裝置。

    1. 在 [裝置] 下,選擇 [新增裝置]

    2. 針對您新增的每個裝置,指定下列選項:

      • 掛載路徑 — 核心裝置上系統裝置的路徑。

      • 權限 — (選用) 從容器存取系統裝置的權限。您可以從以下選項中選擇:

        • 唯讀 — Lambda 函數對系統裝置具有唯讀存取權。這是預設選項。

        • 讀寫 — Lambda 函數具有來源資料夾的讀取/寫入存取權。

      • 新增群組擁有者 — (選用) 是否新增以系統裝置擁有者身分執行 Lambda 函數元件的系統群組。預設值為「」。

步驟 6:建立 Lambda 函數元件

設定 Lambda 函數元件的設定後,請選擇立以完成新元件的建立。

若要在核心裝置上執行 Lambda 函數,您可以接著將新元件部署到核心裝置。如需更多詳細資訊,請參閱 將AWS IoT Greengrass元件部署到裝置