使用 Lambda 函數和連接器存取本機資源 - AWS IoT Greengrass

若我們提供該指南英語版本的翻譯,在有任何牴觸的狀況下請以英文版本的指南為主。其透過機器翻譯提供翻譯。

使用 Lambda 函數和連接器存取本機資源

只有 AWS IoT Greengrass Core 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 or later 中支援。如需其他需求,請參閱 在 /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 or later。若要建立主機的 /proc 目錄的資源,則您必須使用 v1.6 or later。

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

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

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

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

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

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

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

  • 您必須使用 AWS IoT Greengrass 核心軟體 v1.6 or later。

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

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

  • 主機環境和 Lambda 命名空間兩者皆含有 /proc 目錄,所以當您指定目的地路徑時請避免命名衝突的產生。例如,如果 /proc 是來源路徑,您可以指定 /host-proc 做為目的地路徑 (或除了「/proc」以外的任何路徑)。

群組擁有者檔案存取許可

AWS IoT Greengrass Lambda 函數程序正常做為 ggc_userggc_group 執行。不過,您可以在本機資源定義中,提供額外的檔案存取許可給 Lambda 函數程式,如下所示:

  • 若要新增擁有資源的 Linux 群組之權限許可,請使用 GroupOwnerSetting#AutoAddGroupOwner 參數或 自動新增擁有資源的 Linux 群組之作業系統群組許可 主控台選項。

  • 若要新增其他的 Linux 群組的權限許可,請使用 GroupOwnerSetting#GroupOwner 參數或 指定另一個作業系統群組新增許可 主控台選項。若 GroupOwnerSetting#AutoAddGroupOwner 為 true,則 GroupOwner 會被忽略。

AWS IoT Greengrass Lambda 函數程序繼承 ggc_userggc_group 以及 Linux 群組 (如果已新增) 的所有檔案系統許可。對於存取資源的 Lambda 函數,Lambda 函數程序必須有所需的資源許可。您可以使用 chmod(1) 命令變更資源許可,如果需要的話。

另請參閱

  • Amazon Web Services 一般參考中的資源的服務配額