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 及更新版本。

此教學課程示範如何透過 AWS Management Console 使用連接器。

使用連接器來加速您的開發生命週期。連接器是預先建置的、可重複使用的模組,可讓您更輕鬆地與服務、通訊協定和資源互動。它們可協助您更快地將商業邏輯部署到 Greengrass 裝置。如需詳細資訊,請參閱 使用 Greengrass 連接器來整合服務和通訊協定

在此教學課程中,您將設定和部署Twilio 通知連接器。連接器接收 Twilio 訊息資訊做為輸入資料,然後觸發 Twilio 文字訊息。下圖顯示資料流程。

從 Lambda 函數到 Twilio 通知連接器到 Twilio 的資料流程。

設定連接器之後,您將建立 Lambda 函數和訂閱。

  • 此函數會評估來自溫度感應器的模擬資料。它會有條件地將 Twilio 訊息資訊發佈到 MQTT 主題。這是連接器訂閱的主題。

  • 該訂閱允許將函數發佈到主題,也允許連接器從主題接收資料。

Twilio 通知連接器需要 Twilio 驗證字符,才能與 Twilio API 互動。字符是在 AWS Secrets Manager 中建立並從群組資源參考的文字類型。這可讓 AWS IoT Greengrass 在 Greengrass 核心建立私密的本機副本,該複本會在核心中加密並提供給連接器使用。如需詳細資訊,請參閱 將私密部署至 AWS IoT Greengrass 核心

本教學課程所述以下高階執行步驟:

此教學課程需約 20 分鐘完成。

先決條件

為完成此教學課程您需要:

  • Greengrass 群組和 Greengrass 核心 (1.9.3 版或更新版本)。若要了解如何建立 Greengrass 群組或核心,請參閱 開始使用 AWS IoT Greengrass。入門教學課程也包含 AWS IoT Greengrass Core 軟體的安裝步驟。

  • 安裝在 AWS IoT Greengrass 核心裝置上的 Python 3.7。

  • AWS IoT Greengrass必須設定為支援本機私密,如中所述Secrets 要求

    注意

    這項要求包括允許存取您的 Secrets Manager。如果您使用的是預設 Greengrass 服務角色,則 Greengrass 將有許可取得名稱開頭為的私密值greengrass

  • Twilio 帳戶 SID、驗證字符和已啟用 Twilio 的電話號碼。在您建立 Twilio 專案後,您就可在專案儀表板上使用這些值。

    注意

    您可以使用 Twilio 試用帳戶。如果您使用的是試用帳戶,則必須將非 Twilio 收件人電話號碼新增至已驗證的電話號碼清單。如需詳細資訊,請參閱「」如何使用您的免費 Twilio 試用帳戶

步驟 1:建立 Secrets Manager 秘密

在此步驟中,您將使用 AWS Secrets Manager 主控台建立 Twilio 驗證字符的文字類型私密。

  1. 登入 AWS Secrets Manager 主控台

    注意

    如需此程序的詳細資訊,請參閱步驟 1:在中建立並存放秘密AWS Secrets Manager中的AWS Secrets Manager使用者指南

  2. 選擇 Store a new secret (存放新機密)。

  3. UNER選擇密碼類型,選擇其他類型的秘密

  4. UNER指定this secret 要 stored 的key/value pairs pairs be be be be be be be be be be be be be be be be,在「」上純文字標籤上,輸入您的 Twilio 驗證字符。移除所有的 JSON 格式,只輸入字符值。

  5. 維持aw/秘密經理選取的加密金鑰,然後選擇下一頁

    注意

    您不會收取費用AWS KMS如果您使用默認值AWS秘密管理員在您的帳戶中建立的受管理金鑰。

  6. 針對 Secret name (私密名稱),輸入 greengrass-TwilioAuthToken,然後選擇 Next (下一步)

    注意

    預設情況下,Greengrass 服務角色允許AWS IoT Greengrass以下的名稱開頭來獲得 Secrets 的價值greengrass。如需詳細資訊,請參閱私密需求

  7. 本教學課程不需要輪換,因此請選擇 Disable automatic rotation (停用自動輪換),然後選擇下一頁

  8. Review (檢閱) 頁面上,檢閱設定,然後選擇 Store (儲存)

    接著,您可以在 Greengrass 群組中建立一個參考私密的私密資源。

步驟 2:將私密資源新增至 Greengrass 群組

在此步驟中,您會將私密資源新增到 Greengrass 群組。此資源會參考您在上一步中建立的私密。

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

  2. 選擇您要將私密資源新增至其中的群組。

  3. 請在群組組組組組組組組組組組組組組組組資源標籤,然後向下捲動到機密區段。所以此機密區段會顯示屬於該群組的私密資源。您可以從這個區段中新增、編輯和移除私密資源。

    注意

    或者,控制台可讓您在設定連接器或 Lambda 函數時建立秘密和密碼資源。您可以從連接器執行此操作設定參數頁面或 Lambda 函數資源(憑證已建立!) 頁面上的名稱有些許差異。

  4. 選擇Add在下方機密區段。

  5. 在「」新增私密資源頁面上,輸入MyTwilioAuthToken(針對)資源名稱

  6. 對於Secret,選擇greengrassTwilioAuthToken

  7. 在 中選擇標籤(可選)區段, AWSCURRENT 臨時標籤代表最新版本。此標籤一律包含在私密資源中。

    注意

    此教學課程要求 AWSCURRENT 僅標籤。您可以選擇性地包含 Lambda 函數或連接器所需的標籤。

  8. 選擇 Add resource (新增資源)

步驟 3:將連接器新增到 Greengrass 群組

在此步驟中,您將設定Twilio 通知連接器並將其新增至群組。

  1. 在群組組態頁面上,選擇 Connectors (連接器),然後選擇 Add a connector (新增連接器)

  2. 在「」新增連接器頁面,選擇Twilio 通知

  3. 選擇 版本。

  4. 在 中組態區段:

    • 適用於Twilio 驗證字符資源,輸入您在上一步中建立的資源。

      注意

      當您輸入資源時,Twilio 驗證字符私密的 ARN屬性已為您填入。

    • 針對 Default from phone number (預設從電話號碼),輸入已啟用 Twilio 的電話號碼。

    • 針對 Twilio account SID (Twilio 帳戶 SID),輸入您的 Twilio 帳戶 SID。

  5. 選擇 Add resource (新增資源)

步驟 4:建立 Lambda 函數部署套件

若要建立 Lambda 函數,您必須先建立一個 Lambda 函數部署套件包含函數程式碼和相依性。Greengrass · Lambda 函數需要AWS IoT Greengrass核心開發套件用於任務,例如在核心環境中與 MQTT 消息進行通信以及訪問本地機密。本教程創建了一個 Python 函數,因此您可以在部署包中使用 SDK 的 Python 版本。

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

  2. 解壓縮下載的封裝,以取得軟體開發套件。SDK 為 greengrasssdk 資料夾。

  3. 將以下 Python 程式碼函數儲存在名為 temp_monitor.py 的本機檔案中。

    import greengrasssdk import json import random client = greengrasssdk.client('iot-data') # publish to the Twilio Notifications connector through the twilio/txt topic def function_handler(event, context): temp = event['temperature'] # check the temperature # if greater than 30C, send a notification if temp > 30: data = build_request(event) client.publish(topic='twilio/txt', payload=json.dumps(data)) print('published:' + str(data)) print('temperature:' + str(temp)) return # build the Twilio request from the input data def build_request(event): to_name = event['to_name'] to_number = event['to_number'] temp_report = 'temperature:' + str(event['temperature']) return { "request": { "recipient": { "name": to_name, "phone_number": to_number, "message": temp_report } }, "id": "request_" + str(random.randint(1,101)) }
  4. 將下列項目壓縮成名為 temp_monitor_python.zip 的檔案。建立 ZIP 檔案時,只包含程式碼及其依存項目,而不包含資料夾。

    • temp_monitor.py。應用程式邏輯。

    • greengrasssdk。適用於發佈 MQTT 訊息之 Python Greengrass Lambda 函數所需的程式庫。

    這是您的 Lambda 函數部署套件。

現在,建立一個使用部署套件的 Lambda 函數。

步驟 5:在中建立 Lambda 函數AWS Lambda安慰

在此步驟中,您會使用AWS Lambda建立 Lambda 函數並設定此函數使用您的部署套件的主控台。然後,您會發佈函數版本和建立別名。

  1. 首先,建立 Lambda 函數。

    1. 於 AWS Management Console,請選擇服務,開啟 AWS Lambda 主控台。

    2. 選擇建立函數,然後選擇Author from scratch (從頭開始撰寫)

    3. Basic information (基本資訊) 區段中,使用下列值:

      • 針對 Function name (函數名稱),請輸入 TempMonitor

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

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

    4. 請在頁面底部選擇建立函數

  2. 接著,註冊處理常式並上傳您的 Lambda 函數部署套件。

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

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

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

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

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

    4. 選擇 Save (儲存)。

      注意

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

  3. 現在,發佈您的 Lambda 函數的第一個版本並建立一個版本的別名

    注意

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

    1. 請從操作功能表中選擇發行新版本

    2. 針對 Version description (版本描述),輸入 First version,然後選擇 Publish (發佈)

    3. 在「」TempMonitor:1組態頁面,從動作功能表中,選擇建立別名

    4. 建立警示頁面上使用下列值:

      • 對於 Name (名稱),輸入 GG_TempMonitor

      • 對於 Version (版本),選擇 1

      注意

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

    5. 選擇 Create (建立)。

現在,您可以開始將 Lambda 函數新增至您的 Greengrass 函數。

步驟 6:Lambda 函數新增至 Greengrass 群組

在此步驟中,您將 Lambda 函數新增至群組,然後設定其生命週期和環境變數。如需詳細資訊,請參閱 使用群組特定組態來控制 Greengrass Lambda 函數的執行

  1. 請在群組組組組組組組組組組組組組組組組Lambda 函數索引標籤。

  2. UNER我 Lambda 函數,選擇Add

  3. 在「」新增 Lambda 函數頁面,選擇TempMonitor對於您的 Lambda 函數。

  4. 適用於Lambda 函數版本,選擇別名:GG_TempMonitor

  5. 選擇新增 Lambda 函數

步驟 7:將訂閱新增到 Greengrass 群組

在此步驟中,您新增訂閱讓 Lambda 函數將輸入資料傳送到連接器。連接器定義它所訂閱的 MQTT 主題,所以這個訂閱使用其中一個主題。這是範例函數發佈到的同一個主題。

在本教學課程中,您也可以建立訂閱,以允許該函數從 AWS IoT 接收模擬溫度讀數,並允許 AWS IoT 從連接器接收狀態資訊。

  1. 請在群組組組組組組組組組組組組組組組組訂閱」標籤,然後選擇新增訂閱

  2. 在「」建立訂閱頁面上,設定以下的來源和目標:

    1. 適用於來源類,選擇Lambda 函數,然後選擇TempMonitor

    2. 適用於Target type (目標類型),選擇連接器,然後選擇Twilio 通知

  3. 對於主題篩選條件,選擇twilio/txt

  4. 選擇 Create subscription (建立訂閱)。

  5. 重複步驟 1 – 4,建立允許 AWS IoT 發佈訊息至函數的訂閱。

    1. 適用於來源類,選擇服務,然後選擇IoT Cloud (IoT 雲端)

    2. 適用於選擇目標,選擇Lambda 函數,然後選擇TempMonitor

    3. 針對 Topic filter (主題篩選條件),輸入 temperature/input

  6. 重複步驟 1 – 4,建立允許連接器發佈訊息至 AWS IoT 的訂閱。

    1. 適用於來源類,選擇連接器,然後選擇Twilio 通知

    2. 適用於Target type (目標類型),選擇服務,然後選擇IoT Cloud (IoT 雲端)

    3. 針對 Topic filter (主題篩選條件),已為您輸入 twilio/message/status。此為連接器所發佈到的預先定義主題。

步驟 8:部署 Greengrass 群組

將群組部署到核心裝置。

  1. 確定,AWS IoT Greengrass核心正在執行。如果需要,請在您的 Raspberry Pi 終端機執行以下命令。

    1. 檢查精靈是否有在運作:

      ps aux | grep -E 'greengrass.*daemon'

      若輸出的 root 含有 /greengrass/ggc/packages/ggc-version/bin/daemon 項目,則精靈有在運作。

      注意

      路徑的版本取決於安裝在您的核心裝置中的 AWS IoT Greengrass 核心軟體版本。

    2. 啟動協助程式:

      cd /greengrass/ggc/core/ sudo ./greengrassd start
  2. 請在群組組組組組組組組組組組組組組部署

    1. 在 中Lambda 函數」標籤的」Lambda 函數區段中,選取IP 偵測器並選擇Edit (編輯)

    2. 在 中編輯 IP 偵測器設定對話方塊中,選擇自動偵測並覆寫 MQTT 代理程式端點

    3. 選擇 Save (儲存)。

      這可讓裝置自動取得核心的連接資訊,例如 IP 位址、DNS、連接埠編號。建議使用自動偵測,但是 AWS IoT Greengrass 也支援手動指定端點。只會在第一次部署群組時收到復原方法的提示。

      注意

      如果出現提示,請授予建立Greengrass 服務角色並將其與您的關聯AWS 帳戶位於目前AWS 區域。此角色允許AWS IoT Greengrass以存取您的資源AWS服務。

      部署頁面會顯示部署時間戳記、版本 ID 和狀態。部署完成時,針對部署顯示的狀態應為已完成

      如需故障診斷協助,請參閱AWS IoT Greengrass 疑難排解

注意

Greengrass 群組一次只能包含一個版本的連接器。若要取得有關升級連接器版本的資訊,請參閱升級連接器版本

測試解決方案

  1. 在「」AWS IoT主控台首頁,選擇測試

  2. 適用於訂閱主題,請使用以下數值,然後選擇訂閱。Twilio 通知連接器將狀態資訊發佈到該主題。

    屬性

    數值

    訂閱主題

    twilio/message/status

    MQTT 承載顯示

    將承載顯示為字串

  3. 適用於發布到主題,請使用以下數值,然後選擇發布叫用函數。

    屬性

    數值

    主題

    temperature/input

    Message

    Replace收件人姓名用一個名稱和recipient-phone-number以文字訊息收件人的電話號碼。範例:+12345000000

    { "to_name": "recipient-name", "to_number": "recipient-phone-number", "temperature": 31 }

    如果您使用的是試用帳戶,則必須將非 Twilio 收件人電話號碼新增至已驗證的電話號碼清單。如需詳細資訊,請參閱「」驗證您的個人電話

    如果成功,收件者會收到文字訊息,主控台會顯示success來自的狀態輸出資料

    現在,將輸入訊息中的 temperature 變更為 29 並發佈。由於此值小於 30, TempMonitor 函數不會觸發 Twilio 訊息。

另請參閱