安裝 AWS IoT 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,這會增加重要的新功能,並支援其他平台

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

安裝 AWS IoT Greengrass 核心軟體

AWS IoT GreengrassCore 軟件將AWS功能擴展到AWS IoT Greengrass核心設備上,使本地設備可以在本地對其生成的數據進行操作。

AWS IoT Greengrass 提供幾個安裝 AWS IoT Greengrass 核心軟體的選項:

AWS IoT Greengrass 也提供執行 AWS IoT Greengrass 核心軟體的容器化環境。

 

下載並解壓縮 AWS IoT Greengrass 核心軟體套件

為您的平台選擇 AWS IoT Greengrass 核心軟體,以下載為 tar.gz 檔案,並在您的裝置上解壓縮。您可以下載最新版本的軟體。如需詳細資訊,請參閱 AWS IoT Greengrass 核心軟體

 

執行 Greengrass 裝置設定指定碼

執行 Greengrass 裝置設定來設定您的裝置、安裝最新的AWS IoT Greengrass核心軟體版本,並在幾分鐘內部署 Hello World Lambda 函數。如需詳細資訊,請參閱 快速入門:Greengrass 裝置安裝

 

從 APT 儲存庫安裝 AWS IoT Greengrass 核心軟體

重要

自 2022 年 2 月 11 日起,您無法再從 APT 存放庫安裝或更新AWS IoT Greengrass核心軟體。在新增AWS IoT Greengrass存放庫的裝置上,您必須從來源清單中移除存放庫。從 APT 存儲庫運行軟件的設備將繼續正常運行。我們建議您使用 tar 文件更新AWS IoT Greengrass核心軟件

AWS IoT Greengrass 提供的 APT 儲存庫包括以下套件:

  • aws-iot-greengrass-core。 安裝AWS IoT Greengrass核心軟體。

  • aws-iot-greengrass-keyring。 安裝用來簽署套件儲存庫的 GnuPG (GPG) 金鑰。AWS IoT Greengrass

    下載此軟體,即表示您同意 Greengrass 核心軟體授權合約之規定。

使用 systemd 指令碼以管理 Greengrass 協助程式生命週期

aws-iot-greengrass-core 套件也會安裝 systemd 指令碼,您可以使用該指令碼來管理 AWS IoT Greengrass 核心軟體 (協助程式) 生命週期。

  • 在開機期間啟動 Greengrass 協助程式:

    systemctl enable greengrass.service
  • 啟動 Greengrass 協助程式:

    systemctl start greengrass.service
  • 停止 Greengrass 協助程式:

    systemctl stop greengrass.service
  • 檢查 Greengrass 協助程式的狀態:

    systemctl status greengrass.service

使用 APT 存放庫解除安裝AWS IoT Greengrass核心軟體

解除安裝AWS IoT Greengrass核心軟體時,您可以選擇要保留或移除AWS IoT Greengrass核心軟體的組態資訊,例如裝置憑證、群組資訊和記錄檔。

若要解除安裝AWS IoT Greengrass核心軟體並保留組態資訊
  • 執行下列命令以移除AWS IoT Greengrass核心軟體套件,並將組態資訊保留在資/greengrass料夾中。

    sudo apt remove aws-iot-greengrass-core aws-iot-greengrass-keyring
若要解除安裝AWS IoT Greengrass核心軟體並移除組態資訊
  1. 執行下列命令以移除AWS IoT Greengrass核心軟體套件,並從中移除組態資訊/greengrass folder

    sudo apt purge aws-iot-greengrass-core aws-iot-greengrass-keyring
  2. 從來源清單中移除AWS IoT Greengrass核心軟體儲存庫。如需詳細資訊,請參閱 移除AWS IoT Greengrass核心軟體儲存庫來源

移除AWS IoT Greengrass核心軟體儲存庫來源

當您不再需要從 APT 存放庫安裝或更新AWS IoT Greengrass核心軟體時,可以移除AWS IoT Greengrass核心軟體存放庫來源。2022 年 2 月 11 日之後,您必須從來源清單中移除儲存庫,以避免在執行時發生錯誤apt update

若要從來源清單中移除 APT 儲存庫
  • 執行下列指令,從來源清單中移除AWS IoT Greengrass核心軟體儲存庫。

    sudo rm /etc/apt/sources.list.d/greengrass.list sudo apt update

在 Docker 容器中執行 AWS IoT Greengrass

AWS IoT Greengrass 提供 Dockerfile 和 Docker 映像檔,讓您更輕鬆執行 Docker 容器中的 AWS IoT Greengrass 核心軟體。如需詳細資訊,請參閱 AWS IoT Greengrass 泊塢視窗軟體

注意

您也可以在 Greengrass 核心裝置上執行 Docker 應用程式。為此,使用 Greengrass Docker 應用程式部署連接器

 

在 Snap 中執行 AWS IoT Greengrass

AWS IoT Greengrasssnap 1.11.x 可讓您在容器化環境中AWS IoT Greengrass透過方便的軟體套件執行限制版本,以及所有必要的相依性。

2023 年 12 月 31 日,AWS IoT Greengrass將結束AWS IoT Greengrass核心軟體版本 1.11.x 快照上發佈的核心軟體維護作業。目前執行 Snap 的裝置將繼續運作,直到另行通知為止。但是,AWS IoT Greengrass核心 Snap 在維護結束後將不再收到安全性修補程式或錯誤修正。

鎖點概念

以下是必要的快照概念,可協助您瞭解如何使用AWS IoT Greengrass快照:

Channel

定義安裝和追蹤更新的鎖點版本的鎖點元件。快照會自動更新為目前頻道的最新版本。

介面

授予對資源 (例如網路和使用者檔案) 存取權的快照元件。

若要執行AWS IoT Greengrass鎖點,必須連接下列介面。請注意,greengrass-support-no-container必須先連接,永遠不會斷開連接。

- greengrass-support-no-container - hardware-observe - home-for-hooks - hugepages-control - log-observe - mount-observe - network - network-bind - network-control - process-control - system-observe

其他接口是可選的。如果您的 Lambda 函數需要存取特定資源,您可能需要連線到適當的介面。

刷新

鎖點會自動更新。snapd守護進程是快照包管理器,默認情況下,每天檢查更新四次。每個更新檢查稱為重新整理。當重新整理發生時,常駐程式會停止、快照更新,然後精靈重新啟動。

如需詳細資訊,請參閱 Snapcraft 網站。

AWS IoT Greengrass快照 v1.11.x 有什麼新功能

以下說明隨快照 1.11.x 版的新增功能和變更內容。AWS IoT Greengrass

  • 此版本僅支持用snap_daemon戶,公開為用戶 ID(UID)和組(GID)。584788

  • 此版本僅支援非容器化的 Lambda 函數。

    重要

    由於非容器化 Lambda 函數必須共用相同的使用者 (snap_daemon),因此 Lambda 函數彼此之間沒有隔離。如需詳細資訊,請參閱使用群組特定組態控制 Greengrass Lambda 函數的執行

  • 此版本支持 C,C ++,Java 8,Node.js 12,Python 2.7,Python 3.7 和 Python 3.8 運行時。

    注意

    為了避免多餘的 Python 運行時,Python 3.7 Lambda 函數實際上運行 Python 3.8 運行時。

AWS IoT Greengrass Snap 入門

下列程序可協助您在裝置上安裝和設定AWS IoT Greengrass快照。

要求

若要執行AWS IoT Greengrass鎖點,您必須執行下列動作:

  • 在受支援的 Linux 發行版上執行AWS IoT Greengrass快照,例如 Ubuntu、Linux 造幣廠、Debian 和軟呢帽。

  • 在您的設備上安裝snapd守護程序。包括該snap工具的snapd守護程序管理設備上的捕捉環境。

如需支援的 Linux 發行套件清單和安裝說明,請參閱 Snap 文件中的安裝 snapd

安裝和配置AWS IoT Greengrass快照

以下教學課程說明如何在裝置上安裝和設定AWS IoT Greengrass快照。

注意
  • 雖然本教程使用 Amazon EC2 實例(x86 t2.micro Ubuntu 20.04),你可以運行AWS IoT Greengrass快照與物理硬件,如樹莓派。

  • snapd守護進程已預先安裝在 Ubuntu 上。

  1. 通過在設備的終端中運行以下命令來安裝core18快照:

    sudo snap install core18

    core18鎖點是基準鎖點,提供具有常用程式庫的執行階段環境。這個快照是從 Ubuntu 18.04 LTS 構建的。

  2. 執行snapd下列命令進行升級:

    sudo snap install --channel=edge snapd; sudo snap refresh --channel=edge snapd
  3. 執行snap list命令以檢查是否已安裝AWS IoT Greengrass快照。

    下列範例回應顯示snapd已安裝,但aws-iot-greengrass尚未安裝。

    Name Version Rev Tracking Publisher Notes amazon-ssm-agent 3.0.161.0 2996 latest/stable/… aws✓ classic core 16-2.48 10444 latest/stable canonical✓ core core18 20200929 1932 latest/stable canonical✓ base lxd 4.0.4 18150 4.0/stable/… canonical✓ - snapd 2.48+git548.g929ccfb 10526 latest/edge canonical✓ snapd
  4. 選擇下列其中一個選項來安裝AWS IoT Greengrass快照 1.11.x。

    • 若要安裝AWS IoT Greengrass快照,請執行下列命令:

      sudo snap install aws-iot-greengrass

      回應範例:

      aws-iot-greengrass 1.11.5 from Amazon Web Services (aws) installed
    • 若要從舊版移轉至 v1.11.x 或更新至最新可用的修補程式版本,請執行下列命令:

      sudo snap refresh --channel=1.11.x aws-iot-greengrass

    與其他快照一樣,快AWS IoT Greengrass照使用通道來管理次要版本。Snap 會自動更新為目前頻道的最新可用版本。例如,如果您指定--channel=1.11.x,則您的AWS IoT Greengrass鎖點會更新為 v1.11.5。

    您可以執行snap info aws-iot-greengrass指令來取得的可用頻道清單AWS IoT Greengrass。

    回應範例:

    name: aws-iot-greengrass summary: AWS supported software that extends cloud capabilities to local devices. publisher: Amazon Web Services (aws✓) store-url: https://snapcraft.io/aws-iot-greengrass contact: https://repost.aws/tags/TA4ckIed1sR4enZBey29rKTg/aws-io-t-greengrass license: Proprietary description: | AWS IoT Greengrass seamlessly extends AWS onto edge devices so they can act locally on the data they generate, while still using the cloud for management, analytics, and durable storage. AWS IoT Greenrgrass snap v1.11.0 enables you to run a limited version of AWS IoT Greengrass with all necessary dependencies in a containerized environment. The AWS IoT Greengrass snap doesn't support connectors and machine learning (ML) inference. By downloading this software you agree to the Greengrass Core Software License Agreement (https://s3-us-west-2.amazonaws.com/greengrass-release-license/greengrass-license-v1.pdf). For more information, see Run AWS IoT Greengrass in a snap (https://docs.aws.amazon.com/greengrass/latest/developerguide/install-ggc.html#gg-snap-support) in the AWS IoT Greengrass Developer. If you need help, try the AWS IoT Greengrass tag on AWS re:Post (https://repost.aws/tags/TA4ckIed1sR4enZBey29rKTg/aws-io-t-greengrass) or connect with an AWS IQ expert (https://iq.aws.amazon.com/services/aws/greengrass). snap-id: SRDuhPJGj4XPxFNNZQKOTvURAp0wxKnd channels: latest/stable: 1.11.3 2021-06-15 (59) 111MB - latest/candidate: 1.11.3 2021-06-14 (59) 111MB - latest/beta: 1.11.3 2021-06-14 (59) 111MB - latest/edge: 1.11.3 2021-06-14 (59) 111MB - 1.11.x/stable: 1.11.3 2021-06-15 (59) 111MB - 1.11.x/candidate: 1.11.3 2021-06-15 (59) 111MB - 1.11.x/beta: 1.11.3 2021-06-15 (59) 111MB - 1.11.x/edge: 1.11.3 2021-06-15 (59) 111MB -
  5. 若要存取 Lambda 函數所需的特定資源,您可以連線到其他介面。

    執行下列命令以取得AWS IoT Greengrass快照支援的介面清單:

    snap connections aws-iot-greengrass

    回應範例:

    Interface Plug Slot Notes camera aws-iot-greengrass:camera - - dvb aws-iot-greengrass:dvb - - gpio aws-iot-greengrass:gpio - - gpio-memory-control aws-iot-greengrass:gpio-memory-control - - greengrass-support aws-iot-greengrass:greengrass-support-no-container :greengrass-support - hardware-observe aws-iot-greengrass:hardware-observe :hardware-observe manual hardware-random-control aws-iot-greengrass:hardware-random-control - - home aws-iot-greengrass:home-for-greengrassd - - home aws-iot-greengrass:home-for-hooks :home manual hugepages-control aws-iot-greengrass:hugepages-control :hugepages-control manual i2c aws-iot-greengrass:i2c - - iio aws-iot-greengrass:iio - - joystick aws-iot-greengrass:joystick - - log-observe aws-iot-greengrass:log-observe :log-observe manual mount-observe aws-iot-greengrass:mount-observe :mount-observe manual network aws-iot-greengrass:network :network - network-bind aws-iot-greengrass:network-bind :network-bind - network-control aws-iot-greengrass:network-control :network-control - opengl aws-iot-greengrass:opengl :opengl - optical-drive aws-iot-greengrass:optical-drive :optical-drive - process-control aws-iot-greengrass:process-control :process-control - raw-usb aws-iot-greengrass:raw-usb - - removable-media aws-iot-greengrass:removable-media - - serial-port aws-iot-greengrass:serial-port - - spi aws-iot-greengrass:spi - - system-observe aws-iot-greengrass:system-observe :system-observe -

    如果您在「插槽」欄中看到連字號 (-),表示對應的介面未連接。

  6. 遵循安裝AWS IoT Greengrass核心軟體來建立AWS IoT物件、Greengrass 群組、可與之安全通訊的安全性資源AWS IoT,以及 AWS IoT Greengrass Core 軟體組態檔案。配置文件包含 Greengrass 核心特定的配置,例如證書文件的位置和AWS IoT設備數據端點。config.json

    注意

    如果您將文件下載到其他設備,請按照此步驟將文件傳輸到AWS IoT Greengrass核心設備。

  7. 對於AWS IoT Greengrass快照,請確定您已更新 config.json 檔案,如下所示:

    • 將每個 certific ateId 執行個體取代為憑證和金鑰檔案名稱中的憑證 ID。

    • 如果您下載的 Amazon 根 CA 憑證不同於 Amazon 根 CA 1,請使用 Amazon 根 CA 檔案的名稱取代每個 AmazonRootCA1.peM 執行個體。

    { ... "crypto" : { "principals" : { "SecretsManager" : { "privateKeyPath" : "file:///snap/aws-iot-greengrass/current/greengrass/certs/certificateId-private.pem.keyy" }, "IoTCertificate" : { "privateKeyPath" : "file:///snap/aws-iot-greengrass/current/greengrass/certs/certificateId-private.pem.key", "certificatePath" : "file:///snap/aws-iot-greengrass/current/greengrass/certs/certificateId-certificate.pem.crt" } }, "caPath" : "file:///snap/aws-iot-greengrass/current/greengrass/certs/AmazonRootCA1.pem" }, "writeDirectory": "/var/snap/aws-iot-greengrass/current/ggc-write-directory", "pidFileDirectory": "/var/snap/aws-iot-greengrass/current/pidFileDirectory" }
  8. 執行下列命令以新增AWS IoT Greengrass憑證和組態檔:

    sudo snap set aws-iot-greengrass gg-certs=/home/ubuntu/my-certs

部署一個 Lambda 函數

本節說明如何在AWS IoT Greengrass快照上部署客戶受管 Lambda 函數。

重要

AWS IoT Greengrass快照 v1.11 僅支持非容器化的 Lambda 函數。

  1. 執行下列命令以啟動AWS IoT Greengrass協助程式:

    sudo snap start aws-iot-greengrass

    回應範例:

    Started.
  2. 執行下列命令以確認精靈正在執行中:

    snap services aws-iot-greengrass.greengrassd

    回應範例:

    Service Startup Current Notes aws-iot-greengrass.greengrassd disabled active -
  3. 遵循模組 3 (第 1 部分):開啟 Lambda 函數AWS IoT Greengrass來建立和部署 Hello World Lambda 函數。不過,在您部署 Lambda 函數之前,請先完成下一個步驟。

  4. 請確定您的 Lambda 函數以snap_daemon使用者身分執行,且在無容器模式下執行。若要更新 Greengrass 群組的設定,請在主控台中執行下列動作:AWS IoT Greengrass

    1. 登入 AWS IoT Greengrass主控台。

    2. 在AWS IoT主控台瀏覽窗格的 [管理] 下,展開 [Greengrass 裝置],然後選擇 [群組 (V1)]。

    3. 綠色群組下,選擇目標群組

    4. 在群組設定頁面的導覽窗格中,選擇 Lambda 函數索引標籤。

    5. 預設 Lambda 函數執行階段環境下,選擇編輯,然後執行下列動作:

      1. 對於 [預設系統使用者和群組],選擇 [其他使用者 ID/ 群組 ID],然後輸入 584788 [系統使用者 ID (編號)] 和 [系統群組 ID (編號)]。

      2. 對於預設 Lambda 函數容器化,請選擇容器。

      3. 選擇儲存

停止AWS IoT Greengrass守護程式

您可以使用snap stop命令來停止服務。

若要停止AWS IoT Greengrass協助程式,請執行下列命令:

sudo snap stop aws-iot-greengrass

該命令應該返回Stopped.

若要檢查是否已成功停止快照,請執行下列命令:

snap services aws-iot-greengrass.greengrassd

回應範例:

Service Startup Current Notes aws-iot-greengrass.greengrassd disabled inactive -

卸載AWS IoT Greengrass快照

若要解除安裝AWS IoT Greengrass快照,請執行下列命令:

sudo snap remove aws-iot-greengrass

回應範例:

aws-iot-greengrass removed

疑難排解AWS IoT Greengrass鎖點

請使用下列資訊來協助疑難排解 AWS IoT Greengrass SNAP 的問題。

得到權限被拒絕的錯誤。

解決方案:權限被拒絕錯誤通常是由於缺少接口。有關缺少接口的列表和詳細的故障排除信息,您可以使用該snappy-debug工具。

執行下列命令以安裝工具。

sudo snap install snappy-debug

回應範例:

snappy-debug 0.36-snapd2.45.1 from Canonical✓ installed

在單獨的終端會話中運行sudo snappy-debug命令。作業會繼續進行,直到發生權限遭拒錯誤為止。

例如,如果您的 Lambda 函數嘗試讀取$HOME目錄中的檔案,您可能會得到下列回應:

INFO: Following '/var/log/syslog'. If have dropped messages, use: INFO: $ sudo journalctl --output=short --follow --all | sudo snappy-debug kernel.printk_ratelimit = 0 = AppArmor = Time: Dec 6 04:48:26 Log: apparmor="DENIED" operation="mknod" profile="snap.aws-iot-greengrass.greengrassd" name="/home/ubuntu/my-file.txt" pid=12345 comm="touch" requested_mask="c" denied_mask="c" fsuid=0 ouid=0 File: /home/ubuntu/my-file.txt (write) Suggestion: * add 'home' to 'plugs'

此範例顯示建立/home/ubuntu/my-file.txt檔案會造成權限錯誤。它還建議您添加homeplugs. 但是,這種說法不適用。home-for-greengrassdhome-for-hooks插頭僅提供唯讀存取權限。

如需詳細資訊,請參閱 Snap 文件中的快速偵錯快照

錯誤:無法執行以下任務:-運行服務命令「開始」為服務 ["greengrassd"] 的快照 "" aws-iot-greengrass "([開始快照。 aws-iot-greengrass服務] 失敗,退出狀態 1:快照 Job。 aws-iot-greengrass.greengrassd.service 失敗,因為控制過程退出錯誤代碼。 請參閱「系統狀態鎖點」。 aws-iot-greengrass服務」和「日誌-XE」以獲取詳細信息。)

解決方案:當snap start aws-iot-greengrass命令無法啟動 AWS IoT Greengrass Core 軟體時,您可能會看到此錯誤。

如需詳細疑難排解資訊,請執行下列命令:

sudo snap run aws-iot-greengrass.greengrassd

回應範例:

Couldn't find /snap/aws-iot-greengrass/44/greengrass/config/config.json.

這個例子顯示AWS IoT Greengrass找不到該config.json文件。您可以檢查配置和證書文件。

/var/快照//aws-iot-greengrass當前//ggc-write-directory套件/1.11.5/rootfs/合併不是絕對路徑或是符號鏈接。

解決方案:AWS IoT Greengrass快照僅支援非容器化 Lambda 函數。請確定您在無容器模式下執行 Lambda 函數。如需詳細資訊,請參閱AWS IoT Greengrass Version 1開發人員指南中的選擇 Lambda 函數容器化時的考量事項

在您執行 sudo 快照重新整理 snapd 命令之後,Snapd 常駐程式無法重新啟動。

解決方案:遵循中的步驟 6 安裝和配置AWS IoT Greengrass快照 到 8,將AWS IoT Greengrass憑證和組態檔新增至AWS IoT Greengrass快照。

封存 AWS IoT Greengrass 核心軟體安裝

升級到新版本的 AWS IoT Greengrass Core 軟體時,您可以封存目前安裝的版本。這會保留您目前的安裝環境,讓您可以在相同硬體上測試新的軟體版本。這也可讓您隨時輕鬆轉返至封存版本。

封存目前安裝並安裝新版本
  1. 下載您想要升級至的 AWS IoT Greengrass 核心軟體安裝套件。

  2. 將套件複製到目的地核心裝置。如需示範傳輸檔案的說明,請參閱此步驟

    注意

    稍後請將您目前的憑證、金鑰和組態檔案複製到新的安裝。

    在您的核心裝置終端機以下列步驟執行命令。

  3. 請確認 Greengrass 協助程式在核心裝置上已停止。

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

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

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

      注意

      此程序假設 AWS IoT Greengrass Core 軟體安裝於 /greengrass 目錄。

    2. 停止 協助程式:

      cd /greengrass/ggc/core/ sudo ./greengrassd stop
  4. 將目前的 Greengrass 根目錄移到不同的目錄。

    sudo mv /greengrass /greengrass_backup
  5. 在核心裝置上將新的軟體解壓縮。取代命令中的 os-architectureversion 預留位置。

    sudo tar –zxvf greengrass-os-architecture-version.tar.gz –C /
  6. 將封存的憑證、金鑰和組態檔案複製到新的安裝。

    sudo cp /greengrass_backup/certs/* /greengrass/certs sudo cp /greengrass_backup/config/* /greengrass/config
  7. 啟動協助程式:

    cd /greengrass/ggc/core/ sudo ./greengrassd start

現在,您可以執行群組部署以測試新的安裝。如果發生故障,您可以還原封存的安裝。

還原封存的安裝
  1. 停止協助程式。

  2. 刪除新的 /greengrass 目錄。

  3. /greengrass_backup 目錄移回 /greengrass

  4. 啟動協助程式。