設置一個 Amazon EC2 實例 - 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,這會增加重要的新功能,並支援其他平台

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

設置一個 Amazon EC2 實例

請按照本主題中的步驟設定 Amazon EC2 執行個體作為 AWS IoT Greengrass 核心使用。

提示

或者,若要使用可設定環境並為您安裝 AWS IoT Greengrass Core 軟體的指令碼,請參閱快速入門:Greengrass 裝置安裝

雖然您可以使用 Amazon EC2 執行個體完成本教學課程,但理想情況下 AWS IoT Greengrass 應該搭配實體硬體使用。我們建議您盡可能設定樹莓派,而不要使用 Amazon EC2 執行個體。如果您正在使用 Raspberry Pi,您不需要遵循本主題中的步驟。

 

  1. 使用 Amazon Linux AMI 登入AWS Management Console並啟動亞馬 Amazon EC2 執行個體。如需 Amazon EC2 執行個體的相關資訊,請參閱 Amazon EC2 入門指南

  2. Amazon EC2 執行個體執行後,啟用連接埠 8883 以允許傳入的 MQTT 通訊,以便其他裝置可以與核心連線。 AWS IoT Greengrass

    1. 在 Amazon EC2 主控台的導覽窗格中,選擇安全群組

      突出顯示「安全組」的導航窗格。
    2. 選取您剛啟動之執行個體的安全性群組,然後選擇 [輸入規則] 索引標籤。

    3. 選擇 Edit inbound Rules (編輯傳入規則)。

      若要啟用連接埠 8883,您需新增自訂的 TCP 規則至安全群組。如需詳細資訊,請參Amazon EC2 使用者指南中的將規則新增至安全群組

    4. 在 [編輯輸入規則] 頁面上,選擇 [新增規則],輸入下列設定,然後選擇 [儲存]。

      • 針對 Type (類型),選擇 Custom TCP Rule (自訂 TCP 規則)

      • 對於連接埠範圍,輸入8883

      • 針對 Source (來源),選擇 Anywhere (隨處)

      • 對於 Description (說明),輸入 MQTT Communications

       

  3. 連線到您的 Amazon EC2 執行個體。

    1. 在導覽窗格中,選擇 Instances (執行個體),選擇您的執行個體,然後選擇 Connect (連線)

    2. 依照 Connect To Your Instance (連線至您的執行個體) 頁面中的說明,使用 SSH 和您的私密金鑰檔案連線至您的執行個體。

    您可以使用適用於 Windows 的 PuTTY 或適用於 macOS 的終端機。如需詳細資訊,請參閱 Amazon EC2 使用者指南中的 Connect 到 Linux 執行個體。

    您現在已準備好設定您的 Amazon EC2 執行個體 AWS IoT Greengrass。

  4. 連線到 Amazon EC2 執行個體後,請建立ggc_userggc_group帳戶:

    sudo adduser --system ggc_user sudo groupadd --system ggc_group
    注意

    如果在您系統中沒有可用的 adduser 命令,請使用以下命令。

    sudo useradd --system ggc_user
  5. 為了提高安全性,請確保啟動時 Amazon EC2 執行個體的作業系統已啟用硬連結和軟連結 (符號連結) 保護。

    注意

    啟用 hardlink 和 softlink 保護的步驟會因作業系統而有所不同。請參閱文件來了解您的發行版本。

    1. 執行以下命令來檢查是否已啟用 hardlink 和 softlink 保護:

      sudo sysctl -a | grep fs.protected

      如果 hardlinks 和 softlinks 已設定為 1,您的保護就會正確啟用。繼續進行步驟 6。

      注意

      Softlink 會以 fs.protected_symlinks 顯示。

    2. 如果 hardlinks 和 softlinks 未設定為 1,則啟用這些保護。導覽至您的系統組態檔案。

      cd /etc/sysctl.d ls
    3. 使用您喜愛的文字編輯器 (例如 Leafpad、GNU nano 或 vi),將以下兩行新增至系統組態檔案結尾。在 Amazon Linux 1 上,這是 00-defaults.conf 檔案。在 Amazon Linux 2 上,這是 99-amazon.conf 檔案。您可能需要變更許可 (使用 chmod 命令),才能寫入檔案,或使用 sudo 命令以根編輯 (例如,sudo nano 00-defaults.conf)。

      fs.protected_hardlinks = 1 fs.protected_symlinks = 1
    4. 重新啟動 Amazon EC2 實例。

      sudo reboot

      在幾分鐘後,透過 SSH 連線到您的執行個體,然後執行以下命令來確認變更。

      sudo sysctl -a | grep fs.protected

      您應該會看到 hardlinks 和 softlinks 設為 1。

  6. 擷取並執行下列指令碼以掛載 Linux 控制群組 (cgroup)。這可讓您設 AWS IoT Greengrass 定 Lambda 函數的記憶體限制。Cgroups 也需要在預設容器化模 AWS IoT Greengrass 式下執行。

    curl https://raw.githubusercontent.com/tianon/cgroupfs-mount/951c38ee8d802330454bdede20d85ec1c0f8d312/cgroupfs-mount > cgroupfs-mount.sh chmod +x cgroupfs-mount.sh sudo bash ./cgroupfs-mount.sh

    您的 Amazon EC2 實例現在應該已準備就緒 AWS IoT Greengrass。

  7. 選用。安裝串流管理員需要的 Java 8 執行時間。本教學課程不會使用串流管理員,但是會使用預設啟用串流管理員的 Default Group creation (預設群組建立) 工作流程。部署群組之前,先使用下列命令在核心裝置上安裝 Java 8 執行時間,或停用串流管理員。單元 3 中提供了停用串流管理員的指示。

    • 針對 Debian 為基礎的發行版本:

      sudo apt install openjdk-8-jdk
    • 針對 Red Hat 為基礎的發行版本:

      sudo yum install java-1.8.0-openjdk
  8. 若要確定您具有所有必要的相依性,請從上的AWS IoT Greengrass 範例存放庫下載並執行 Greengrass 相依性檢查程式。 GitHub這些命令會在 Amazon EC2 執行個體中下載、解壓縮和執行相依性檢查程式指令碼。

    mkdir greengrass-dependency-checker-GGCv1.11.x cd greengrass-dependency-checker-GGCv1.11.x wget https://github.com/aws-samples/aws-greengrass-samples/raw/master/greengrass-dependency-checker-GGCv1.11.x.zip unzip greengrass-dependency-checker-GGCv1.11.x.zip cd greengrass-dependency-checker-GGCv1.11.x sudo ./check_ggc_dependencies | more
    重要

    本教學課程需要 Python 3.7 執行階段才能執行本機 Lambda 函數。啟用串流管理員時,串流管理員需要 Java 8 執行時間。如果 check_ggc_dependencies 指令碼產生了與這些遺漏執行時間事前準備有關的警告,請確認在您繼續前已安裝了這些項目。您可以忽略與其他遺漏選用執行時間事前準備有關的警告。

您的亞馬遜 EC2 執行個體組態已完成。繼續進行模組二:安裝AWS IoT Greengrass核心軟體