使用 Greengrass 連接器來整合服務和通訊協定 - 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,這會新增重要的新功能,並支援其他平台

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

使用 Greengrass 連接器來整合服務和通訊協定

此功能於可供使用AWS IoT Greengrass核心 v1.7 及更高版本。

連接器 inAWS IoT Greengrass是預先建置的模組,可讓您更有效與本機基礎設施、裝置通訊協定互動,AWS和其他雲端服務。使用連接器,您可以花費較少的時間學習新的通訊協定和 API,有更多時間專注於邏輯這對您的業務很重要。

下圖顯示連接器在領域中的定位AWS IoT Greengrass 景觀。

連接器連接到裝置、服務和本機資源。

許多連接器使用 MQTT 訊息與群組中的用戶端裝置和 Greengrass 函數通訊,或與群組中的 Greengrass 函數通訊,或與AWS IoT和本機陰影服務。在下列範例中,Twilio 通知連接器從使用者定義的 Lambda 函數收到 MQTT 訊息,從使用私密的本機參考來自AWS Secrets Manager,並呼叫特威利奧 API。

從 Lambda 函數接收 MQTT 訊息和呼叫服務的連接器。

如需建立此解決方案的教學課程,請參閱 Greengrass 連接器入門 (主控台)Greengrass 連接器入門 (CLI)

Greengrass 連接器可以協助您擴展裝置功能或建立單一用途的裝置。透過使用連接器,您可以:

  • 實作可重複使用的商業邏輯。

  • 與雲端和本機服務互動,包括AWS和第三方服務。

  • 擷取和處理裝置資料。

  • 啟用 device-to-device 使用 MQTT 主題訂閱和使用者定義的 Lambda 函數呼叫。

AWS提供一組 Greengrass 連接器,以簡化與常見服務和資料來源的互動。這些預先建置的模組可提供記錄和診斷、補充、產業資料處理及警示和簡訊的案例。如需詳細資訊,請參閱 AWS-提供 Greengrass 連接器

要求

若要使用連接器,請謹記下列要點:

  • 您使用的每個連接器都有您必須符合的需求。這些要求可能包括最低 AWS IoT Greengrass 核心軟體版本、裝置先決條件、必要的許可及限制。如需詳細資訊,請參閱 AWS-提供 Greengrass 連接器

  • 一個 Greengrass 群組只能包含特定連接器的一個設定執行個體。不過,您可以在多個訂閱中使用執行個體。如需詳細資訊,請參閱 組態參數

  • 當 Greengrass 群組的預設容器化設定為 No container (無容器) 時,群組中的連接器必須在沒有容器化的情況下執行。若要尋找支援 No container (無容器) 模式的連接器,請參閱 AWS-提供 Greengrass 連接器

使用 Greengrass 連接器

連接器是一種群組元元。就像其他群組元件 (例如用戶端裝置和使用者定義的 Lambda 函數),您將連接器新增至群組、進行設定,然後部署到AWS IoT Greengrass核心。連接器在核心環境中執行。

您可以將某些連接器部署為簡單的獨立應用程式。例如,裝置 Defender 連接器從核心裝置讀取系統指標,並將其傳送到AWS IoT Device Defender進行分析。

您可以將其他連接器做為建置區塊在較大的解決方案中。以下範例解決方案使用 Modbus-RTU 通訊協定介面卡連接器處理感應器的訊息,並使用 Twilio 通知連接器使用連接器處理感應器的訊息。

從 Lambda 函數到 ModBus-RTU 通訊協定配接器連接器的資料流,再到 Lambda 函數,再到 Twilio 通知連接器。

解決方案通常包含緊鄰連接器的使用者定義 Lambda 函數,並處理連接器傳送或接收的資料。在此範例中, TempMonitor函數從 Modbus-RTU 協議配接器接收資料,執行一些業務邏輯,然後將資料傳送到 Twilio 通知。

若要建立和部署解決方案,請依照此一般程序:

  1. 規劃高階資料流程。識別您需要使用的資料來源、資料管道、服務、通訊協定和資源。在範例解決方案中,這包括經過 Modbus RTU 通訊協定、實體 Modbus 序列埠和 Twilio 的資料。

  2. 識別要在解決方案中包含的連接器,並將其新增到群組。範例解決方案使用 Modbus-RTU 通訊協定配接器和 Twilio 通知。為了協助尋找適用您情境的連接器並了解其個別要求,請參閱 AWS-提供 Greengrass 連接器

  3. 識別是否需要使用者定義的 Lambda 函數、用戶端裝置或資源,接著建立並將其新增到群組。這可能包括包含了商業邏輯的函數,或將資料處理成解決方案中另一個實體所需的格式。範例解決方案使用函數傳送 Modbus RTU 請求和啟動 Twilio 通知。此外也包含 Modbus RTU 序列埠的本機裝置資源和 Twilio 驗證字符的私密資源。

    注意

    私密資源會參考來自 AWS Secrets Manager 的密碼、字符和其他私密。連接器和 Lambda 函數可以使用私密來驗證服務和應用程式。根據預設,AWS IoT Greengrass 可以存取名稱開頭為「greengrass-」的私密。如需詳細資訊,請參閱 將私密部署至 AWS IoT Greengrass 核心

  4. 建立訂閱以允許解決方案中的實體交換 MQTT 訊息。若訂閱中使用連接器,則連接器和訊息來源或目標必須使用連接器支援的預先定義主題語法。如需詳細資訊,請參閱 輸入和輸出

  5. 將群組部署至 Greengrass 核心。

如需建立和部署連接器的詳細資訊,請參閱以下教學課程:

組態參數

許多連接器會提供參數讓您自訂行為或輸出。這些參數用於連接器生命週期的初始化期間、執行時間或其他時間。

參數類型和用法依連接器而有不同。例如,SNS 連接器具有可設定預設 SNS 主題的參數,而裝置 Defender 具有可設定資料取樣速率的參數。

一個群組版本可以包含多個連接器,但特定連接器一次只能有一個執行個體。這表示群組中的每個連接器都僅會有一個作用中的組態。然而,連接器執行個體可在群組中的多個訂閱中使用。例如,您可以建立訂閱,以允許許多裝置將資料傳送到 Kinesis Firehose 連接器。

用於存取群組資源的參數

Greengrass 連接器使用群組資源存取核心裝置上的檔案系統、連接埠、周邊設備和其他本機資源。如果連接器需要存取群組資源,則會提供相關的組態參數。

群組資源包括:

  • 本機資源。Greengrass 核心裝置上存在的目錄、檔案、連接埠、接腳和周邊設備。

  • 機器學習資源。在雲端中訓練並部署至核心的機器學習模型,用於本機推論。

  • 私密資源。來自 AWS Secrets Manager 的密碼、金鑰、字符或任意文字的本機、加密副本。連接器可以安全地存取這些本機私密,並使用它們來向服務或本機基礎設施進行驗證。

例如,裝置 Defender 的參數可讓您存取主機中的系統指標/procTwilio 通知的目錄和參數可讓您存取在本機存放的 Twilio 驗證字符。

更新連接器參數

參數是在連接器新增到 Greengrass 群組時設定。新增連接器之後,您可以變更參數值。

  • 在主控台中:從群組組組組組組組組態頁面上,開啟連接器,從連接器的內容功能表中,選擇Edit (編輯)

    注意

    如果連接器使用的私密資源後來變更為參考不同的私密,則您必須編輯連接器的參數並確認變更。

  • 在應用程式介面中:建立連接器的另一個版本來定義新組態。

    所以此AWS IoT GreengrassAPI 使用版本來管理群組。版本是不可變的,因此如要新增或變更群組元件 (例如群組的用戶端裝置、函數和資源),您必須建立全新或更新元件的版本。接著,您需要建立和部署群組版本,其中包含每個元件的目標版本。

變更連接器組態後,您必須部署群組,以將變更傳播至核心。

輸入和輸出

許多 Greengrass 連接器可藉由傳送和接收 MQTT 訊息與其他實體通訊。MQTT 通訊由訂閱所控制,這些訂閱可讓連接器與 Greengrass 群組中的 Lambda 函數、用戶端裝置和其他連接器交換資料,或與AWS IoT和本機陰影服務。若要允許此通訊,您必須在連接器所屬的群組中建立訂閱。如需詳細資訊,請參閱 MQTT 簡訊工作流程中的受管訂閱

連接器可以是訊息發佈者、訊息訂閱者或兩者。每個連接器都會定義其發佈或訂閱的 MQTT 主題。這些預先定義的主題必須在連接器是訊息來源或訊息目標的訂閱中使用。如需包括為連接器設定訂閱之步驟的教學課程,請參閱 Greengrass 連接器入門 (主控台)Greengrass 連接器入門 (CLI)

注意

許多連接器也有內建的通訊模式可以與雲端或本機服務互動。這些會隨著連接器而有不同,可能需要您設定參數或將許可新增到群組角色。如需連接器要求的相關資訊,請參閱 AWS-提供 Greengrass 連接器

輸入主題

大多數連接器會接收 MQTT 主題的輸入資料。有些連接器會訂閱輸入資料的多個主題。例如,序列串流連接器支援兩個主題:

  • serial/+/read/#

  • serial/+/write/#

針對此連接器,讀取和寫入請求會傳送至對應的主題。建立訂閱時,務必使用適用於實作的主題。

前述範例中的 +# 字元是萬用字元。這些萬用字元可讓訂閱者在多個主題上接收訊息,並可讓發佈者自訂他們發佈到的主題。

  • + 萬用字元可出現在主題階層的任意處。這可替換成一個階層項目。

    例如,針對 sensor/+/input 主題,訊息可以發佈到 sensor/id-123/input 主題,但不能發佈到 sensor/group-a/id-123/input

  • # 萬用字元只能出現在主題階層的結尾。這可替換為零或多個階層。

    例合,針對 sensor/# 主題,訊息可以發佈到 sensor/sensor/id-123sensor/group-a/id-123,但不能發佈到 sensor

只有在訂閱主題時,萬用字元才有效。無法將訊息發佈到包含萬用字元的主題。如需連接器的詳細資訊,請參閱連接器的說明文件,以取得其輸入或輸出主題的要求。如需詳細資訊,請參閱 AWS-提供 Greengrass 連接器

容器化支援

根據預設,大部分的連接器會在由 AWS IoT Greengrass 管理之隔離執行階段環境中的 Greengrass 核心上執行。這些執行階段環境稱為容器,可在連接器與主機系統之間提供隔離,為主機與連接器提供更高的安全性。

不過,某些環境不支援這個 Greengrass 容器化,例如執行時AWS IoT Greengrass在 Docker 容器中或沒有 cgroup 的較舊 Linux 核心。在這些環境中,連接器必須以 No container (無容器) 模式執行。若要尋找支援 No container (無容器) 模式的連接器,請參閱 AWS-提供 Greengrass 連接器。有些連接器會以此模式原生執行,而有些連接器可讓您設定隔離模式。

在支援 Greengrass 容器化的環境中,您也可以將隔離模式設定為 No container (無容器),但我們建議盡可能使用 Greengrass container (Greengrass 容器) 模式。

注意

Greengrass 群組的預設容器化設定不適用於連接器

升級連接器版本

連接器提供者可能會發佈新增功能、修正問題或改善效能的新版連接器。如需可用版本和相關變更的資訊,請參閱每個連接器的文件

在 中AWS IoT主控台中,您可以檢查 Greengrass 群組中的連接器是否有新版本。

  1. 在 中AWS IoT主控台導覽窗格, 下Manage (管理),展開Greengrass 裝置,然後選擇群組 (V1)

  2. UNDERGreengrass 群組下,選擇群組。

  3. 選擇 Connectors (連接器) 以顯示群組中的連接器。

    如果連接器具有新版本,可用性按鈕出現在升級column。

  4. 若要升級連接器版本:

    1. Connectors (連接器) 頁面的 Upgrade (升級) 欄中,選擇 Available (可用)Upgrade connector (升級連接器) 頁面隨即開啟,並顯示目前的參數設定 (若適用)。

      選擇新的連接器版本,視需要定義參數,然後選擇 Upgrade (升級)

    2. Subscriptions (訂閱) 頁面上,在群組中新增新訂閱,以取代使用連接器做為來源或目標的任何訂閱。然後,移除舊訂閱。

      訂閱會根據版本參考連接器,因此如果您變更群組中的連接器版本,訂閱則會變成無效。

    3. Actions (動作) 功能表中,選擇 Deploy (部署) 以將變更部署至核心。

若要從 AWS IoT Greengrass API 升級連接器,請建立並部署加入更新連接器和訂閱的群組版本。使用與將連接器新增至群組相同的程序。詳細步驟說明如何使用AWS CLI若要設定和部署範例 Twilio 通知連接器,請參閱Greengrass 連接器入門 (CLI)

連接器的記錄

Greengrass 連接器包含將事件和錯誤寫入 Greengrass 日誌的 Lambda 函數。根據您的群組設定,日誌會寫入 CloudWatch 日誌、本機檔案系統或兩者。來自連接器的日誌包含對應函數的 ARN。以下範例 ARN 來自 Kinesis 火管連接器:

arn:aws:lambda:aws-region:account-id:function:KinesisFirehoseClient:1

預設記錄組態使用以下目錄結構,將資訊層級日誌寫入檔案系統:

greengrass-root/ggc/var/log/user/region/aws/function-name.log

如需 Greengrass 日誌記錄的詳細資訊,請參閱使用 AWS IoT Greengrass 日誌進行監控