使用 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 函數和連接器存取本機資源

此功能適用於AWS IoT Greengrass核心 v1.3 及更高版本。

使用 AWS IoT Greengrass,您可以在雲端編寫 AWS Lambda 函數及設定連接器,並將它們部署到核心裝置進行本機執行。在執行 Linux 的 Greengrass 核心上,這些本機部署的 Lambda 函數和連接器可以存取實際存在於 Greengrass 核心裝置上的本機資源。例如,若要與透過 Modbus 或 CANBus 連接的裝置進行通訊,您可以啟用 Lambda 函數存取核心裝置上的序列埠。若要設定安全地存取本機資源,您必須保證實體硬體和 Greengrass 核心裝置作業系統這兩者的安全性。

若要開始存取本機資源,請參閱以下教學課程:

支援的資源類型

您可以存取兩種類型的本機資源:磁碟區資源和裝置資源。

磁碟區資源

在根檔案系統中的檔案或目錄 (除了在 /sys/dev/var 之下)。其中包含:

  • 用於在 Greengrass Lambda 函數中讀取或寫入資訊的資料夾或檔案 (例如/usr/lib/python2.x/site-packages/local)。

  • 在主機的 /proc 檔案系統下的資料夾或檔案 (例如,/proc/net/proc/stat)。在 v1.6 或更高版本中支持。如需其他需求,請參閱 在 /proc 目錄下的磁碟區資源

提示

若要設定 /var/var/run/var/lib 目錄為磁碟區資源,首先,請掛載目錄於不同的資料夾中,然後設定資料夾為磁碟區資源。

當您設定磁碟區資源,您指定來源路徑和目的地路徑。來源路徑是主機上資源的絕對路徑。目標路徑是 Lambda 命名空間環境內資源的絕對路徑。這是一個 Greengrass Lambda 函數或連接器運行的容器。目標路徑的所有變更都會反映在主機檔案系統的來源路徑上。

注意

目標路徑中的檔案只會顯示在 Lambda 命名空間中。您無法在一般 Linux 命名空間中看到這些檔案。

裝置資源

檔案位於 /dev 之下。只有位於 /dev 底下的字元裝置或區塊型儲存設備才允許使用裝置資源。其中包含:

  • 序列埠可用於與透過序列埠 (例如 /dev/ttyS0/dev/ttyS1) 連線的裝置通訊。

  • USB 可用於連接 USB 週邊設備 (例如 /dev/ttyUSB0/dev/bus/usb)。

  • GPIO,使用 GPIO (例如 /dev/gpiomem) 的感測器和傳動器。

  • GPU,使用內建的 GPU (例如,/dev/nvidia0) 加速機器學習速度。

  • 相機用於捕捉影像和影片 (例如,/dev/video0)。

注意

/dev/shm 為例外。它僅能設為磁碟區資源。在 /dev/shm 底下的資源必須授與 rw 權限。

AWS IoT Greengrass 也支援資源類型,可用於執行機器學習推論。如需詳細資訊,請參閱執行機器學習推論

請求

以下要求適用於設定安全地存取本機資源:

  • 您必須使用AWS IoT Greengrass核心軟體 v1.3 或更新版本。若要為主機的 /proc 目錄建立資源,您必須使用 v1.6 或更新版本。

  • 本機資源 (包括任何必要的驅動程式和程式庫) 必須正確安裝在 Greengrass 核心裝置,並在使用時保持可用狀態。

  • 所需操作的資源和存取資源的權限,並不需要根權限。

  • 僅提供 readread and write 許可。Lambda 函數無法在資源上執行授權的操作。

  • 在 Greengrass 核心裝置的作業系統中,您必須提供完整的本機資源路徑。

  • 資源名稱或 ID 字元達最大限制 128 個字元時,必須使用模式 [a-zA-Z0-9:_-]+

在 /proc 目錄下的磁碟區資源

以下考量適用於主機的 /proc 目錄下的磁碟區資源。

  • 您必須使用AWS IoT Greengrass核心軟體 v1.6 或更新版本。

  • 您可以允許 Lambda 函數的唯讀存取權,但不允許讀寫存取權。此層級的存取由 AWS IoT Greengrass 受管。

  • 您可能也需要授予許可給作業系統群組,才能在檔案系統中啟用讀取權限。例如,假設您的來源目錄或檔案擁有 660 個檔案許可,這表示只有群組中的擁有者或使用者有讀取 (和寫入) 存取權限。在此情況下,您必須將作業系統群組擁有者的許可新增至資源中。如需詳細資訊,請參閱群組擁有者檔案存取許可

  • 主機環境和 Lambda 命名空間都包含 /proc 目錄,因此請務必在指定目標路徑時避免命名衝突。例如,如果 /proc 是來源路徑,您可以指定 /host-proc 做為目的地路徑 (或除了「/proc」以外的任何路徑)。

群組擁有者檔案存取許可

AWS IoT GreengrassLambda 函數處理程序通常以ggc_user和的形式執行ggc_group。不過,您可以在本機資源定義中授與 Lambda 函數程序的其他檔案存取權限,如下所示:

  • 若要新增擁有資源之 Linux 群組的權限,請使用GroupOwnerSetting#AutoAddGroupOwner參數或 [自動新增擁有資源主控台] 選項之系統群組的檔案系統權限

  • 若要新增不同 Linux 群組的權限,請使用GroupOwnerSetting#GroupOwner參數或指定其他系統群組以新增檔案系統權限主控台選項。若 GroupOwnerSetting#AutoAddGroupOwner 為 true,則 GroupOwner 會被忽略。

LAWS IoT Greengrass ambda 函數處理程序會繼承ggc_userggc_group和 Linux 群組的所有檔案系統權限 (若已新增)。若要讓 Lambda 函數存取資源,Lambda 函數程序必須具有資源的必要權限。您可以使用 chmod(1) 命令變更資源許可,如果需要的話。

另請參閱