安裝自動資源佈建的 AWS IoT Greengrass 核心軟體 - AWS IoT Greengrass

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

安裝自動資源佈建的 AWS IoT Greengrass 核心軟體

AWS IoT Greengrass 核心軟體包含一個安裝程式,可將您的裝置設定為 Greengrass 核心裝置。若要快速設定裝置,安裝程式可以佈建核心裝置操作所需的 AWS IoT 物件、物件群組、 AWS IoT 角色和角色別名。 AWS IoT IAM安裝程式也可以將本機開發工具部署到核心裝置,以便您可以使用該裝置來開發和測試自訂軟體元件。安裝程式需要 AWS 認證,才能佈建這些資源並建立部署。

如果您無法提供 AWS 認證給設備,則可以佈建核心設備操作所需的 AWS 資源。您也可以將開發工具部署到核心裝置,做為開發裝置使用。這可讓您在執行安裝程式時提供較少的裝置權限。如需詳細資訊,請參閱透過手動佈建資源安裝 AWS IoT Greengrass 核心軟體

重要

在您下載 AWS IoT Greengrass Core 軟體之前,請檢查您的核心裝置是否符合安裝和執行 AWS IoT Greengrass Core 軟體 2.0 的求。

設定裝置環境

請依照本節中的步驟設定 Linux 或 Windows 裝置作為 AWS IoT Greengrass 核心裝置使用。

設定裝置

若要設定下列項目的 Linux 設備 AWS IoT Greengrass V2
  1. 安裝 Java 執行階段, AWS IoT Greengrass 核心軟體需要執行。我們建議您使用 Amazon Corretto開放JDK長期支援版本。需要版本 8 或更高版本。下列指令會示範如何在裝置JDK上安裝 Open。

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

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

      sudo yum install java-11-openjdk-devel
    • 針對 Amazon Linux 2:

      sudo amazon-linux-extras install java-openjdk11
    • 對於 Amazon

      sudo dnf install java-11-amazon-corretto -y

    安裝完成時,請執行下列命令以確認 Java 是否在 Linux 裝置上執行。

    java -version

    此指令會列印在裝置上執行的 Java 版本。例如,在基於 Debian 的發行版上,輸出可能類似於以下示例。

    openjdk version "11.0.9.1" 2020-11-04
    OpenJDK Runtime Environment (build 11.0.9.1+1-post-Debian-1deb10u2)
    OpenJDK 64-Bit Server VM (build 11.0.9.1+1-post-Debian-1deb10u2, mixed mode)
  2. (選擇性) 建立在裝置上執行元件的預設系統使用者和群組。您也可以選擇讓 AWS IoT Greengrass Core 軟體安裝程式在安裝期間使用安裝程式引數建立此使用者和群組。--component-default-user如需詳細資訊,請參閱安裝器引數

    sudo useradd --system --create-home ggc_user sudo groupadd --system ggc_group
  3. 確認執行 AWS IoT Greengrass Core 軟體的使用者 (通常root) 具有sudo與任何使用者和任何群組一起執行的權限。

    1. 執行下列命令以開啟/etc/sudoers檔案。

      sudo visudo
    2. 確認使用者的權限看起來像下列範例。

      root ALL=(ALL:ALL) ALL
  4. (選擇性) 若要執行容器化 Lambda 函數,您必須啟用 cgroup v1,並且必須啟用並掛接記憶體和裝置 cgroup。如果您不打算執行容器化 Lambda 函數,則可以略過此步驟。

    若要啟用這些 cgroups 選項,請使用下列 Linux 核心參數來啟動裝置。

    cgroup_enable=memory cgroup_memory=1 systemd.unified_cgroup_hierarchy=0

    如需有關檢視和設定裝置核心參數的資訊,請參閱作業系統和開機載入程式的說明文件。依照指示永久設定核心參數。

  5. 依照中的需求清單所指示,在您的裝置上安裝所有其他必要的相依性裝置要求

設定視窗裝置

注意

此功能適用於 v2.5.0 及更高版 Greeng rass 核組件。

若要設定下列項目的視窗裝置 AWS IoT Greengrass V2
  1. 安裝 Java 執行階段, AWS IoT Greengrass 核心軟體需要執行。我們建議您使用 Amazon Corretto開放JDK長期支援版本。需要版本 8 或更高版本。

  2. 檢查 Java 是否可用於PATH系統變數,如果沒有,則加入它。此 LocalSystem 帳戶會執行 AWS IoT Greengrass Core 軟體,因此您必須將 Java 新增至PATH系統變數,而非PATH使用者的使用者變數。請執行下列操作:

    1. 按視窗鍵開啟開始功能表。

    2. 鍵入environment variables以從開始功能表搜尋系統選項。

    3. 在開始功能表搜尋結果中,選擇 [編輯系統環境變數] 以開啟 [系統屬性] 視窗。

    4. 選擇環境變數... 以開啟 [環境變數] 視窗。

    5. 在 [系統變數] 下,選取 [路徑],然後選擇 [編輯]。在 「編輯」環境變數視窗中,您可以在不同的行上檢視每個路徑。

    6. 檢查 Java 安裝bin資料夾的路徑是否存在。路徑看起來可能類似下列範例。

      C:\\Program Files\\Amazon Corretto\\jdk11.0.13_8\\bin
    7. 如果路徑中缺少 Java 安裝的bin資料夾,請選擇 [增] 加入,然後選擇 [確定]

  3. 以系統管理員身分開啟 Windows 命令提示字元 (cmd.exe)。

  4. 在 Windows 裝置上的 LocalSystem 帳戶中建立預設使用者。Replace (取代) password 使用安全密碼。

    net user /add ggc_user password
    提示

    視您的 Windows 組態而定,使用者的密碼可能會設定為在 future 的某個日期到期。為確保您的 Greengrass 應用程式繼續運作,請追蹤密碼何時到期,並在密碼到期之前進行更新。您也可以將使用者的密碼設定為永不過期。

    • 若要檢查使用者及其密碼何時到期,請執行下列命令。

      net user ggc_user | findstr /C:expires
    • 若要將使用者的密碼設定為永不過期,請執行下列命令。

      wmic UserAccount where "Name='ggc_user'" set PasswordExpires=False
    • 如果您使用的是 Windows 10 或更新版本,而該wmic命令已被取代,請執行下列 PowerShell 命令。

      Get-CimInstance -Query "SELECT * from Win32_UserAccount WHERE name = 'ggc_user'" | Set-CimInstance -Property @{PasswordExpires="False"}
  5. 在設備上從 Microsoft 下載並安裝該PsExec實用程序

  6. 使用此 PsExec 公用程式將預設使用者的使用者名稱和密碼儲存在 LocalSystem 帳戶的認證管理員執行個體中。Replace (取代) password 使用您之前設置的用戶密碼。

    psexec -s cmd /c cmdkey /generic:ggc_user /user:ggc_user /pass:password

    如果打PsExec License Agreement開,請選Accept擇同意許可證並運行命令。

    注意

    在 Windows 裝置上, LocalSystem 帳戶會執行 Greengrass 核心,而且您必須使用公用 PsExec 程式將預設使用者資訊儲存在帳戶中。 LocalSystem 使用認證管理員應用程式會將此資訊儲存在目前登入使用者的 Windows 帳戶中,而非 LocalSystem 帳戶中。

提供 AWS 認證給設備

將您的 AWS 認證提供給您的裝置,以便安裝程式可以佈建所需的 AWS 資源。如需所需許可的詳細資訊,請參閱安裝程式佈建資源的最低 IAM 政策

提供 AWS 認證給設備
  • 提供您的 AWS 認證給設備,以便安裝程序可以為您的核心設備佈建 AWS IoT 和IAM資源。若要提高安全性,建議您取得僅允許佈建所需的最低權限之IAM角色的臨時登入資料。如需詳細資訊,請參閱安裝程式佈建資源的最低 IAM 政策

    注意

    安裝程式不會儲存或儲存您的認證。

    在您的裝置上,執行下列其中一項動作以擷取認證,並將其提供給 AWS IoT Greengrass Core 軟體安裝程式:

    • (建議) 使用來源的暫時認證 AWS IAM Identity Center

      1. 提供IAM身分識別中心的存取金鑰 ID、秘密存取金鑰和工作階段權杖。如需詳細資訊,請參閱 IAM Identity Center 使用者指南中的取得和重新整理暫時認的手動認證重新整理。

      2. 執行下列命令,將認證提供給 AWS IoT Greengrass Core 軟體。

        Linux or Unix
        export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY export AWS_SESSION_TOKEN=AQoDYXdzEJr1K...o5OytwEXAMPLE=
        Windows Command Prompt (CMD)
        set AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE set AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY set AWS_SESSION_TOKEN=AQoDYXdzEJr1K...o5OytwEXAMPLE=
        PowerShell
        $env:AWS_ACCESS_KEY_ID="AKIAIOSFODNN7EXAMPLE" $env:AWS_SECRET_ACCESS_KEY="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" $env:AWS_SESSION_TOKEN="AQoDYXdzEJr1K...o5OytwEXAMPLE="
    • 使用IAM角色的臨時安全登入資料:

      1. 從您承擔的IAM角色中提供存取金鑰 ID、秘密存取金鑰和工作階段 Token。如需如何擷取這些認證的詳細資訊,請參閱IAM使用者指南中的要求臨時安全登入資料。

      2. 執行下列命令,將認證提供給 AWS IoT Greengrass Core 軟體。

        Linux or Unix
        export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY export AWS_SESSION_TOKEN=AQoDYXdzEJr1K...o5OytwEXAMPLE=
        Windows Command Prompt (CMD)
        set AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE set AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY set AWS_SESSION_TOKEN=AQoDYXdzEJr1K...o5OytwEXAMPLE=
        PowerShell
        $env:AWS_ACCESS_KEY_ID="AKIAIOSFODNN7EXAMPLE" $env:AWS_SECRET_ACCESS_KEY="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY" $env:AWS_SESSION_TOKEN="AQoDYXdzEJr1K...o5OytwEXAMPLE="
    • 使用使用IAM者的長期認證:

      1. 為您的IAM使用者提供存取金鑰 ID 和秘密存取金鑰。您可以建立稍後刪除的啟動設定IAM使用者。如需提供給使用者的IAM策略,請參閱安裝程式佈建資源的最低 IAM 政策。如需如何擷取長期認證的詳細資訊,請參閱《使IAM用者指南》中的〈管理使用IAM者的存取金鑰

      2. 執行下列命令,將認證提供給 AWS IoT Greengrass Core 軟體。

        Linux or Unix
        export AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
        Windows Command Prompt (CMD)
        set AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE set AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
        PowerShell
        $env:AWS_ACCESS_KEY_ID="AKIAIOSFODNN7EXAMPLE" $env:AWS_SECRET_ACCESS_KEY="wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
      3. (選擇性) 如果您建立IAM使用者來佈建 Greengrass 裝置,請刪除該使用者。

      4. (選擇性) 如果您使用現有使用IAM者的存取金鑰 ID 和秘密存取金鑰,請更新使用者的金鑰,使其不再有效。如需詳細資訊,請參閱AWS Identity and Access Management 使用指南中的更新存取金鑰

下載 AWS IoT Greengrass 核心軟體

您可以從下列位置下載最新版本的 AWS IoT Greengrass Core 軟體:

注意

您可以從下列位置下載特定版本的 AWS IoT Greengrass Core 軟體。Replace (取代) version 與要下載的版本。

https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-version.zip
若要下載 AWS IoT Greengrass 核心軟體
  1. 在您的核心裝置上,將 AWS IoT Greengrass Core 軟體下載至名為greengrass-nucleus-latest.zip.

    Linux or Unix
    curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip > greengrass-nucleus-latest.zip
    Windows Command Prompt (CMD)
    curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip > greengrass-nucleus-latest.zip
    PowerShell
    iwr -Uri https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-nucleus-latest.zip -OutFile greengrass-nucleus-latest.zip

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

  2. (選擇性) 驗證 Greengrass 核軟體簽章

    注意

    此功能適用於 Greengrass 核 2.9.5 及更高版本。

    1. 使用以下命令來驗證 Greengrass 核工件的簽名:

      Linux or Unix
      jarsigner -verify -certs -verbose greengrass-nucleus-latest.zip
      Windows Command Prompt (CMD)

      根據您安裝的JDK版本,檔案名稱可能會有所不同。Replace (取代) JDK17.0.6_10 與您安裝的JDK版本。

      "C:\\Program Files\\Amazon Corretto\\jdk17.0.6_10\\bin\\jarsigner.exe" -verify -certs -verbose greengrass-nucleus-latest.zip
      PowerShell

      根據您安裝的JDK版本,檔案名稱可能會有所不同。Replace (取代) JDK17.0.6_10 與您安裝的JDK版本。

      'C:\\Program Files\\Amazon Corretto\\jdk17.0.6_10\\bin\\jarsigner.exe' -verify -certs -verbose greengrass-nucleus-latest.zip
    2. jarsigner調用產生指示驗證結果的輸出。

      1. 如果 Greengrass 核 zip 文件簽名,則輸出包含以下語句:

        jar verified.
      2. 如果 Greengrass 核壓縮檔未簽署,則輸出會包含下列陳述式:

        jar is unsigned.
    3. 如果您提供了 Jarsigner -certs -verbose 選項-verify和選項,則輸出也會包含詳細的簽署者憑證資訊。

  3. 將 AWS IoT Greengrass Core 軟件解壓縮到設備上的文件夾。Replace (取代) GreengrassInstaller 與您要使用的文件夾。

    Linux or Unix
    unzip greengrass-nucleus-latest.zip -d GreengrassInstaller && rm greengrass-nucleus-latest.zip
    Windows Command Prompt (CMD)
    mkdir GreengrassInstaller && tar -xf greengrass-nucleus-latest.zip -C GreengrassInstaller && del greengrass-nucleus-latest.zip
    PowerShell
    Expand-Archive -Path greengrass-nucleus-latest.zip -DestinationPath .\\GreengrassInstaller rm greengrass-nucleus-latest.zip
  4. (選擇性) 執行下列命令以查看 AWS IoT Greengrass Core 軟體的版本。

    java -jar ./GreengrassInstaller/lib/Greengrass.jar --version
重要

如果您安裝的 Greengrass 核心版本早於 v2.4.0,請不要在安裝核心軟體之後移除此資料夾。 AWS IoT Greengrass AWS IoT Greengrass 核心軟件使用此文件夾中的文件運行。

如果您下載了最新版本的軟體,請安裝 v2.4.0 或更新版本,而且您可以在安裝 AWS IoT Greengrass Core 軟體之後移除此資料夾。

安裝 AWS IoT Greengrass 核心軟體

使用指定執行下列動作的引數來執行安裝程式:

  • 建立核心裝置運作所需的 AWS 資源。

  • 指定使用ggc_user系統使用者在核心裝置上執行軟體元件。在 Linux 裝置上,此指令也會指定使用ggc_group系統群組,而安裝程式會為您建立系統使用者和群組。

  • 將 AWS IoT Greengrass Core 軟體設定為在開機時執行的系統服務。在 Linux 設備上,這需要系統初始化系統。

    重要

    在 Windows 核心裝置上,您必須將 AWS IoT Greengrass 核心軟體設定為系統服務。

若要使用本機開發工具設定開發裝置,請指定--deploy-dev-tools true引數。安裝完成後,本機開發工具最多可能需要一分鐘的時間來部署。

如需可指定之引數的詳細資訊,請參閱安裝器引數

注意

如果您在記憶體有限的裝置 AWS IoT Greengrass 上執行,您可以控制 AWS IoT Greengrass Core 軟體使用的記憶體數量。若要控制記憶體配置,您可以在核心元件的jvmOptions組態參數中設定JVM堆積大小選項。如需詳細資訊,請參閱使用選項控制內存分JVM配

若要安裝 AWS IoT Greengrass 核心軟體
  1. 執行 AWS IoT Greengrass 核心安裝程式。取代指令中的引數值,如下所示。

    注意

    Windows 的路徑長度限制為 260 個字元。如果您使用的是 Windows,請使用類似的根文件夾C:\greengrass\v2D:\greengrass\v2將 Greengrass 組件路徑保持在 260 個字符限制以下。

    1. /greengrass/v2C:\greengrass\v2:用於安裝 AWS IoT Greengrass Core 軟體的根資料夾路徑。

    2. GreengrassInstaller。 解壓縮 AWS IoT Greengrass Core 軟體安裝程式的資料夾路徑。

    3. region。 要 AWS 區域 在其中尋找或建立資源。

    4. MyGreengrassCore。 您 Greengrass 核心裝置 AWS IoT 的項目名稱。如果該物件不存在,安裝程序將創建它。安裝程式會下載要驗證為 AWS IoT 物件的憑證。如需詳細資訊,請參閱AWS IoT Greengrass 的裝置身分驗證和授權

      注意

      物件名稱不能包含冒號 (:) 字元。

    5. MyGreengrassCoreGroup。 您 Greengrass 核心裝置的 AWS IoT 物件群組名稱。如果物件群組不存在,安裝程式會建立該物件並將該物件新增至其中。如果物群組存在且具有使用中部署,則核心裝置會下載並執行部署指定的軟體。

      注意

      物件群組名稱不能包含冒號 (:) 字元。

    6. GreengrassV2IoTThingPolicy。 允許 Greengrass 核心裝置與和通訊的 AWS IoT 原則名稱。 AWS IoT AWS IoT Greengrass如果原 AWS IoT 則不存在,安裝程式會以此名稱建立寬鬆 AWS IoT 原則。您可以針對您的使用案例限制此原則的權限。如需詳細資訊,請參閱AWS IoT Greengrass V2核心裝置的最低AWS IoT原則

    7. GreengrassV2TokenExchangeRole。 允許 Greengrass 核心裝置取得暫時認證的IAM角色名稱。 AWS 如果角色不存在,安裝程式會建立該角色,並建立並附加名為的策略GreengrassV2TokenExchangeRoleAccess。如需詳細資訊,請參閱授權核心裝置與 AWS 服務互動

    8. GreengrassCoreTokenExchangeRoleAlias。 允許 Greengrass 核心裝置稍後取得暫時認證的IAM角色別名。如果角色別名不存在,安裝程式會建立它,並將其指向您指定的IAM角色。如需詳細資訊,請參閱授權核心裝置與 AWS 服務互動

    Linux or Unix
    sudo -E java -Droot="/greengrass/v2" -Dlog.store=FILE \ -jar ./GreengrassInstaller/lib/Greengrass.jar \ --aws-region region \ --thing-name MyGreengrassCore \ --thing-group-name MyGreengrassCoreGroup \ --thing-policy-name GreengrassV2IoTThingPolicy \ --tes-role-name GreengrassV2TokenExchangeRole \ --tes-role-alias-name GreengrassCoreTokenExchangeRoleAlias \ --component-default-user ggc_user:ggc_group \ --provision true \ --setup-system-service true
    Windows Command Prompt (CMD)
    java -Droot="C:\greengrass\v2" "-Dlog.store=FILE" ^ -jar ./GreengrassInstaller/lib/Greengrass.jar ^ --aws-region region ^ --thing-name MyGreengrassCore ^ --thing-group-name MyGreengrassCoreGroup ^ --thing-policy-name GreengrassV2IoTThingPolicy ^ --tes-role-name GreengrassV2TokenExchangeRole ^ --tes-role-alias-name GreengrassCoreTokenExchangeRoleAlias ^ --component-default-user ggc_user ^ --provision true ^ --setup-system-service true
    PowerShell
    java -Droot="C:\greengrass\v2" "-Dlog.store=FILE" ` -jar ./GreengrassInstaller/lib/Greengrass.jar ` --aws-region region ` --thing-name MyGreengrassCore ` --thing-group-name MyGreengrassCoreGroup ` --thing-policy-name GreengrassV2IoTThingPolicy ` --tes-role-name GreengrassV2TokenExchangeRole ` --tes-role-alias-name GreengrassCoreTokenExchangeRoleAlias ` --component-default-user ggc_user ` --provision true ` --setup-system-service true
    重要

    在 Windows 核心裝置上,您必須指--setup-system-service true定將 AWS IoT Greengrass 核心軟體設定為系統服務。

    如果成功,安裝程式會列印下列訊息:

    • 如果您指定--provision,安裝程式會列印是Successfully configured Nucleus with provisioned resource details否已成功設定資源。

    • 如果您指定--deploy-dev-tools,安裝程式會列印是Configured Nucleus to deploy aws.greengrass.Cli component否成功建立部署。

    • 如果您指定--setup-system-service true,安裝程式會列印它是Successfully set up Nucleus as a system service否設定並以服務形式執行軟體。

    • 如果未指定--setup-system-service true,安裝程式會列印是Launched Nucleus successfully否成功並執行軟體。

  2. 如果您已安裝 Greengrass 核 v2.0.4 或更新版本,請略過此步驟。如果您下載了最新版本的軟件,則安裝了 v2.0.4 或更高版本。

    執行下列命令,為您的 AWS IoT Greengrass Core 軟體根資料夾設定所需的檔案權限。取代/greengrass/v2為您在安裝指令中指定的根資料夾,然後取代 /greengrass 與您的根文件夾的父文件夾。

    sudo chmod 755 /greengrass/v2 && sudo chmod 755 /greengrass

如果您將 AWS IoT Greengrass Core 軟體安裝為系統服務,安裝程式會為您執行該軟體。否則,您必須手動運行該軟件。如需詳細資訊,請參閱執行AWS IoT Greengrass核心軟體

注意

根據預設,安裝程式建立的IAM角色不允許存取 S3 儲存貯體中的元件成品。若要在 Amazon S3 中部署定義成品的自訂元件,您必須向角色新增許可,以允許核心裝置擷取元件成品。如需詳細資訊,請參閱允許存取元件成品的 S3 儲存貯體

如果您還沒有適用於元件成品的 S3 儲存貯體,您可以在稍後建立儲存貯體後新增這些許可。

如需有關如何設定及使用軟體的詳細資訊 AWS IoT Greengrass,請參閱下列內容: