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

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

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

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

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

重要

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

設定裝置環境

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

設定 Linux 裝置

為 設定 Linux 裝置 AWS IoT Greengrass V2
  1. 安裝 AWS IoT Greengrass 執行核心軟體所需的 Java 執行期。我們建議您使用 Amazon CorrettoOpenJDK 長期支援版本。第 8 版或更新版本為必要項目。下列命令說明如何在裝置上安裝 OpenJDK。

    • 針對 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 Linux 2023:

      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 函數,您必須啟用 cgroups v1,而且必須啟用和掛載記憶體裝置 cgroups。如果您不打算執行容器化 Lambda 函數,您可以略過此步驟。

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

    cgroup_enable=memory cgroup_memory=1 systemd.unified_cgroup_hierarchy=0

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

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

設定 Windows 裝置

注意

此功能適用於 Greengrass 核元件的 v2.5.0 和更新版本。

為 設定 Windows 裝置 AWS IoT Greengrass V2
  1. 安裝 AWS IoT Greengrass 執行核心軟體所需的 Java 執行期。我們建議您使用 Amazon CorrettoOpenJDK 長期支援版本。第 8 版或更新版本為必要項目。

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

    1. 按 Windows 鍵開啟開始選單。

    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 帳戶中建立預設使用者。password 以安全密碼取代 。

    net user /add ggc_user password
    提示

    根據您的 Windows 組態,使用者的密碼可能會設定為在未來的日期過期。為了確保您的 Greengrass 應用程式持續運作,請追蹤密碼過期的時間,並在過期前更新密碼。您也可以將使用者的密碼設定為永不過期。

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

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

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

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

  6. 使用 PsExec 公用程式將預設使用者的使用者名稱和密碼存放在 LocalSystem 帳戶的 Credential Manager 執行個體中。password 將 取代為您先前設定的使用者密碼。

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

    如果 PsExec License Agreement 開啟,選擇 Accept 以同意授權並執行 命令。

    注意

    在 Windows 裝置上, LocalSystem 帳戶會執行 Greengrass 核,而您必須使用 PsExec 公用程式將預設使用者資訊存放在 LocalSystem 帳戶中。使用 Credential Manager 應用程式會將此資訊存放在目前登入使用者的 Windows 帳戶中,而非 LocalSystem 帳戶。

提供 AWS 登入資料給裝置

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

提供 AWS 登入資料給裝置
  • 將 AWS 登入資料提供給裝置,讓安裝程式可以IAM為您的核心裝置佈建 AWS IoT 和資源。為了提高安全性,我們建議您取得角色的臨時登入資料,該IAM角色僅允許佈建所需的最低許可。如需詳細資訊,請參閱安裝程式佈建資源的最低 IAM 政策

    注意

    安裝程式不會儲存或存放您的登入資料。

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

    • (建議) 使用來自 的臨時登入資料 AWS IAM Identity Center

      1. 提供來自 IAM Identity Center 的存取金鑰 ID、私密存取金鑰和工作階段權杖。如需詳細資訊,請參閱 IAM Identity Center 使用者指南中的取得和重新整理暫時登入資料中的手動登入資料重新整理。 https://docs.aws.amazon.com/singlesignon/latest/userguide/howtogetcredentials.html#how-to-get-temp-credentials

      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《 使用者指南》中的請求臨時安全登入資料。

      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 的核心軟體:

注意

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

https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-version.zip
下載 AWS IoT Greengrass Core 軟體
  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 nucleus 2.9.5 版及更新版本。

    1. 使用下列命令來驗證 Greengrass 核子成品的簽章:

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

      檔案名稱看起來可能會有所不同,視您安裝的JDK版本而定。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版本而定。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 核壓縮檔案,輸出會包含下列陳述式:

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

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

  3. 將 AWS IoT Greengrass Core 軟體解壓縮至裝置上的資料夾。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
重要

如果您安裝比 v2.4.0 更早的 Greengrass 核版本,安裝 AWS IoT Greengrass Core 軟體後請勿移除此資料夾。Core AWS IoT Greengrass 軟體會使用此資料夾中的檔案來執行。

如果您下載最新版本的軟體,請安裝 v2.4.0 或更新版本,並在安裝 AWS IoT Greengrass 核心軟體後移除此資料夾。

安裝 AWS IoT Greengrass Core 軟體

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

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

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

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

    重要

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

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

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

注意

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

安裝 AWS IoT Greengrass Core 軟體
  1. 執行 AWS IoT Greengrass Core 安裝程式。將命令中的引數值取代如下。

    注意

    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 核心裝置取得臨時 AWS 登入資料IAM的角色名稱。如果角色不存在,安裝程式會建立該角色,並建立和連接名為 的政策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 核心裝置上,您必須指定 將 AWS IoT Greengrass 核心軟體--setup-system-service true設定為系統服務。

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

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

    • 如果您指定 --deploy-dev-toolsConfigured 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. 如果您安裝了 v2Greengrass 核.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,請參閱下列內容: