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

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

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

AWS IoT Greengrass核心軟體包含一個安裝程式,可將您的裝置設定為 Greengrass 核心裝置。若要快速設定裝置,安裝程式可以佈建核心裝置操作所需的AWS IoT物件、物件群組、IAM AWS IoT 角色和角色別名。AWS IoT安裝程式也可以將本機開發工具部署到核心裝置,以便您可以使用該裝置來開發和測試自訂軟體元件。安裝程式需要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 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

      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 CorrettoOpenJDK 長期支持版本。需要版本 8 或更高版本。

  2. 檢查系統變數 PATH 上是否可用 Java,如果沒有,則加入它。此 LocalSystem 帳戶會執行AWS IoT Greengrass核心軟體,因此您必須將 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 帳戶中建立預設使用者。以安全密碼取代密碼。

    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 帳戶的認證管理員執行個體中。以您先前設定的使用者密碼取代密碼。

    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 身分中心使用指南中的取得和重新整理臨時登入資料中的手動登入資料重新整

      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 Core 軟體:

注意

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

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 版本,檔案名稱可能會有所不同。以您安裝的 JDK 版本取代jdk17.0.6_10

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

      根據您安裝的 JDK 版本,檔案名稱可能會有所不同。以您安裝的 JDK 版本取代jdk17.0.6_10

      '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 軟件解壓縮到設備上的文件夾。以您要使用的資料夾取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 GreengrassAWS 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核心安裝程式。取代指令中的引數值,如下所示。

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

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

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

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

      注意

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

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

      注意

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

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

    7. 格林格拉斯 V2 TokenExchangeRole。允許 Greengrass 核心裝置取得臨時登入資料的 IAM 角色名稱。AWS如果角色不存在,安裝程式會建立該角色,並建立並附加名為的策略GreengrassV2TokenExchangeRoleAccess。如需詳細資訊,請參閱 授權核心裝置與 AWS 服務互動

    8. GreengrassCoreTokenExchangeRoleAlias。IAM 角色的別名,可讓 Greengrass 核心裝置稍後取得臨時登入資料。如果角色別名不存在,安裝程式會建立它,並將其指向您指定的 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,請參閱下列內容: