故障診斷 AWS IoT Greengrass V2 - AWS IoT Greengrass

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

故障診斷 AWS IoT Greengrass V2

使用本節中的疑難排解資訊和解決方案,以協助解決 的問題 AWS IoT Greengrass Version 2。

檢視 AWS IoT Greengrass 核心軟體和元件日誌

AWS IoT Greengrass 核心軟體會將日誌寫入本機檔案系統,供您用來檢視核心裝置的即時資訊。您也可以設定核心裝置將日誌寫入 CloudWatch Logs,以便遠端疑難排解核心裝置。這些日誌可協助您識別元件、部署和核心裝置的問題。如需詳細資訊,請參閱監控 AWS IoT Greengrass 日誌

AWS IoT Greengrass 核心軟體問題

核心 AWS IoT Greengrass 軟體問題疑難排解。

主題

ListDeployments API 的 ThrottlingException

ThrottlingExceptionListDeployments API:當您帳戶中有大量部署時,您可能會看到此內容。

若要解決此問題,請執行下列其中一項操作:

  • 如果您使用 SDK,請指定 MaxResult 參數。例如,對於具有小值 (例如 5) 的 JavaSDK

  • 您可以使用 AWS Service Quotas 來請求提高 API 速率限制DescribeJob。您可以前往服務配額主控台,選取 的配額, AWS IoT 限制名稱為 DescribeJob 限流限制。您可以將其從 10 增加到 50。

無法設定核心裝置

如果 AWS IoT Greengrass 核心軟體安裝程式失敗,且您無法設定核心裝置,您可能需要解除安裝軟體,然後再試一次。如需詳細資訊,請參閱解除安裝 AWS IoT Greengrass Core 軟體

無法啟動 AWS IoT Greengrass Core 軟體做為系統服務

如果 AWS IoT Greengrass 核心軟體無法啟動,請檢查系統服務日誌以識別問題。其中一個常見問題是 PATH 環境變數 (Linux) 或 PATH 系統變數 (Windows) 上無法使用 Java。

無法將 核設定為系統服務

當 AWS IoT Greengrass 核心軟體安裝程式無法設定為 AWS IoT Greengrass 系統服務時,您可能會看到此錯誤。在 Linux 裝置上,如果核心裝置沒有系統化初始化系統,通常會發生此錯誤。即使安裝程式無法設定系統服務,也能成功設定 AWS IoT Greengrass Core 軟體。

執行以下任意一項:

無法連線至 AWS IoT Core

例如,當 AWS IoT Greengrass 核心軟體無法連線至 AWS IoT Core 以擷取部署任務時,您可能會看到此錯誤。請執行下列操作:

  • 檢查您的核心裝置是否可以連線至網際網路 和 AWS IoT Core。如需裝置所連線 AWS IoT Core 端點的詳細資訊,請參閱設定 AWS IoT Greengrass 核心軟體

  • 檢查核心裝置的 AWS IoT 物件是否使用允許 iot:Connectiot:Receiveiot:Publishiot:Subscribe許可的憑證。

  • 如果您的核心裝置使用網路代理,請檢查核心裝置是否具有裝置角色,以及其角色是否允許 iot:Connectiot:Publishiot:Receiveiot:Subscribe許可。

記憶體不足錯誤

如果您的裝置沒有足夠的記憶體在 Java 堆積中配置物件,通常會發生此錯誤。在記憶體有限的裝置上,您可能需要指定堆積大小上限來控制記憶體配置。如需詳細資訊,請參閱使用 JVM 選項控制記憶體配置

無法安裝 Greengrass CLI

當您在適用於 AWS IoT Greengrass Core 的安裝命令中使用 --deploy-dev-tools 引數時,您可能會看到下列主控台訊息。

Thing group exists, it could have existing deployment and devices, hence NOT creating deployment for Greengrass first party dev tools, please manually create a deployment if you wish to

當 Greengrass CLI 元件未安裝,因為您的核心裝置是具有現有部署之物件群組的成員時,就會發生這種情況。如果您看到此訊息,您可以將 Greengrass CLI 元件 (aws.greengrass.Cli) 手動部署到裝置,以安裝 Greengrass CLI。如需詳細資訊,請參閱安裝 Greengrass CLI

User root is not allowed to execute

當執行 AWS IoT Greengrass Core 軟體的使用者 (通常是 root) 沒有許可,無法sudo與任何使用者和任何群組執行時,您可能會看到此錯誤。對於預設ggc_user系統使用者,此錯誤如下所示:

Sorry, user root is not allowed to execute <command> as ggc_user:ggc_group.

檢查您的 /etc/sudoers 檔案是否授予使用者執行 sudo 做為其他群組的許可。中使用者的許可/etc/sudoers應如下所示。

root ALL=(ALL:ALL) ALL

com.aws.greengrass.lifecyclemanager.GenericExternalService: Could not determine user/group to run with

當核心裝置嘗試執行元件時,您可能會看到此錯誤,Greengrass 核不會指定用於執行元件的預設系統使用者。

若要修正此問題,請設定 Greengrass 核以指定執行元件的預設系統使用者。如需詳細資訊,請參閱 設定執行元件的使用者設定預設元件使用者

Failed to map segment from shared object: operation not permitted

當 AWS IoT Greengrass Core 軟體因為/tmp資料夾掛載有noexec許可而無法啟動時,您可能會看到此錯誤。AWS 通用執行期 (CRT) 程式庫預設會使用 /tmp 資料夾。

執行以下任意一項:

  • 執行下列命令以使用exec許可重新掛載/tmp資料夾,然後再試一次。

    sudo mount -o remount,exec /tmp
  • 如果您執行 Greengrass nucleus 2.5.0 版或更新版本,您可以設定 JVM 選項來變更 AWS CRT 程式庫使用的資料夾。您可以在部署或安裝 AWS IoT Greengrass Core 軟體時,在 Greengrass 核元件組態中指定 jvmOptions 參數。將 /path/to/use 取代為 AWS CRT 程式庫可以使用的資料夾路徑。

    { "jvmOptions": "-Daws.crt.lib.dir=\"/path/to/use\"" }

無法設定 Windows 服務

如果您在 Microsoft Windows 2016 裝置上安裝 AWS IoT Greengrass 核心軟體,您可能會看到此錯誤。Windows 2016 不支援 AWS IoT Greengrass Core 軟體,如需支援的作業系統清單,請參閱 支援平台

如果您必須使用 Windows 2016,您可以執行下列動作:

  1. 解壓縮下載的核心 AWS IoT Greengrass 安裝封存

  2. Greengrass目錄中開啟 bin/greengrass.xml.template 檔案。

  3. <autoRefresh>標籤新增至 檔案的結尾,就在</service>標籤前面。

    </log> <autoRefresh>false</autoRefresh> </service>

com.aws.greengrass.util.exceptions.TLSAuthException: Failed to get trust manager

當您安裝沒有根憑證授權機構 (CA) 檔案 AWS IoT Greengrass 的核心軟體時,您可能會看到此錯誤。

2022-06-05T10:00:39.556Z [INFO] (main) com.aws.greengrass.lifecyclemanager.Kernel: service-loaded. {serviceName=DeploymentService} 2022-06-05T10:00:39.943Z [WARN] (main) com.aws.greengrass.componentmanager.ClientConfigurationUtils: configure-greengrass-mutual-auth. Error during configure greengrass client mutual auth. {} com.aws.greengrass.util.exceptions.TLSAuthException: Failed to get trust manager

檢查您在提供給安裝程式的組態檔案中,是否使用 rootCaPath 參數指定有效的根 CA 檔案。如需詳細資訊,請參閱安裝 AWS IoT Greengrass Core 軟體

com.aws.greengrass.deployment.IotJobsHelper: No connection available during subscribing to Iot Jobs descriptions topic. Will retry in sometime

當核心裝置無法連線至 AWS IoT Core 以訂閱部署任務通知時,您可能會看到此警告訊息。請執行下列操作:

  • 檢查核心裝置是否已連線至網際網路,並且可以連線到您設定 AWS IoT 的資料端點。如需核心裝置使用之端點的詳細資訊,請參閱允許透過代理或防火牆的裝置流量

  • 檢查 Greengrass 日誌是否有其他顯示其他根本原因的錯誤。

software.amazon.awssdk.services.iam.model.IamException: The security token included in the request is invalid

當您使用自動佈建安裝 AWS IoT Greengrass 核心軟體時,您可能會看到此錯誤,安裝程式會使用無效的 AWS 工作階段字符。請執行下列操作:

  • 如果您使用臨時安全登入資料,請檢查工作階段字符是否正確,以及您正在複製和貼上完整的工作階段字符。

  • 如果您使用長期安全登入資料,請檢查裝置在您先前使用臨時登入資料的時間,是否沒有工作階段權杖。請執行下列操作:

    1. 執行下列命令來取消設定工作階段字符環境變數。

      Linux or Unix
      unset AWS_SESSION_TOKEN
      Windows Command Prompt (CMD)
      set AWS_SESSION_TOKEN=
      PowerShell
      Remove-Item Env:\AWS_SESSION_TOKEN
    2. 檢查 AWS 登入資料檔案 是否~/.aws/credentials包含工作階段字符 aws_session_token。如果是,請從 檔案中移除該行。

      aws_session_token = AQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OPTgk5TthT+FvwqnKwRcOIfrRh3c/LTo6UDdyJwOOvEVPvLXCrrrUtdnniCEXAMPLE/IvU1dYUg2RVAJBanLiHb4IgRmpRV3zrkuWJOgQs8IZZaIv2BXIa2R4Olgk

您也可以安裝 AWS IoT Greengrass Core 軟體,而無需提供 AWS 登入資料。如需詳細資訊,請參閱 使用手動資源佈建安裝 AWS IoT Greengrass 核心軟體使用 AWS IoT 機群佈建安裝 AWS IoT Greengrass 核心軟體

software.amazon.awssdk.services.iot.model.IotException: User: <user> is not authorized to perform: iot:GetPolicy

當您使用自動佈建安裝 AWS IoT Greengrass 核心軟體時,您可能會看到此錯誤,而且安裝程式會使用沒有必要許可的 AWS 登入資料。如需所需許可的詳細資訊,請參閱 安裝程式佈建資源的最低 IAM 政策

檢查憑證 IAM 身分的許可,並授予 IAM 身分任何缺少的必要許可。

Error: com.aws.greengrass.shadowmanager.sync.model.FullShadowSyncRequest: Could not execute cloud shadow get request

當您使用影子管理員元件同步裝置影 AWS IoT Core子時,您可能會看到此錯誤。HTTP 403 狀態碼表示此錯誤是因為核心裝置的 AWS IoT 政策未授予呼叫 的許可GetThingShadow

com.aws.greengrass.shadowmanager.sync.model.FullShadowSyncRequest: Could not execute cloud shadow get request. {thing name=MyGreengrassCore, shadow name=MyShadow} 2021-07-14T21:09:02.456Z [ERROR] (pool-2-thread-109) com.aws.greengrass.shadowmanager.sync.SyncHandler: sync. Skipping sync request. {thing name=MyGreengrassCore, shadow name=MyShadow} com.aws.greengrass.shadowmanager.exception.SkipSyncRequestException: software.amazon.awssdk.services.iotdataplane.model.IotDataPlaneException: null (Service: IotDataPlane, Status Code: 403, Request ID: f6e713ba-1b01-414c-7b78-5beb3f3ad8f6, Extended Request ID: null)

若要與 同步本機影子 AWS IoT Core,核心裝置的 AWS IoT 政策必須授予下列許可:

  • iot:GetThingShadow

  • iot:UpdateThingShadow

  • iot:DeleteThingShadow

檢查核心裝置的 AWS IoT 政策,並新增任何缺少的必要許可。如需詳細資訊,請參閱下列內容:

Operation aws.greengrass#<operation> is not supported by Greengrass

當您在自訂 Greengrass 元件中使用程序間通訊 (IPC) 操作,且核心裝置上未安裝所需的 AWS元件時,您可能會看到此錯誤。

若要修正此問題,請在元件配方中新增必要的元件做為相依性,因此 AWS IoT Greengrass 核心軟體會在部署元件時安裝必要的元件。

java.io.FileNotFoundException: <stream-manager-store-root-dir>/stream_manager_metadata_store (Permission denied)

當您將串流管理員設定為使用不存在或具有正確許可的根資料夾時,您可能會在串流管理員日誌檔 (aws.greengrass.StreamManager.log) 中看到此錯誤。如需如何設定此資料夾的詳細資訊,請參閱串流管理員組態

com.aws.greengrass.security.provider.pkcs11.PKCS11CryptoKeyService: Private key or certificate with label <label> does not exist

PKCS#11 提供者元件找不到或載入您在設定 AWS IoT Greengrass 核心軟體使用硬體安全模組 (HSM) 時指定的私有金鑰或憑證時,就會發生此錯誤。請執行下列操作:

  • 檢查私有金鑰和憑證是否使用您設定 AWS IoT Greengrass 核心軟體使用的插槽、使用者 PIN 和物件標籤存放在 HSM 中。

  • 檢查私有金鑰和憑證是否在 HSM 中使用相同的物件標籤。

  • 如果您的 HSM 支援物件 IDs,請檢查私有金鑰和憑證是否在 HSM 中使用相同的物件 ID。

檢查您的 HSM 文件,了解如何查詢 HSM 中安全字符的詳細資訊。如果您需要變更安全字符的槽、物件標籤或物件 ID,請查看 HSM 的文件以了解如何執行此操作。

software.amazon.awssdk.services.secretsmanager.model.SecretsManagerException: User: <user> is not authorized to perform: secretsmanager:GetSecretValue on resource: <arn>

當您使用秘密管理員元件來部署 AWS Secrets Manager 秘密時,可能會發生此錯誤。如果核心裝置的字符交換 IAM 角色未授予取得秘密的許可,則部署會失敗,且 Greengrass 日誌包含此錯誤。

授權核心裝置下載秘密
  1. secretsmanager:GetSecretValue許可新增至核心裝置的字符交換角色。下列範例政策陳述式會授予取得秘密值的許可。

    { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyGreengrassSecret-abcdef" ] }

    如需詳細資訊,請參閱授權核心裝置與服務 AWS 互動

  2. 將部署重新套用至核心裝置。執行以下任意一項:

    • 修改部署,而沒有任何變更。核心裝置在收到修訂後的部署時,會嘗試再次下載秘密。如需詳細資訊,請參閱修訂部署

    • 重新啟動 AWS IoT Greengrass Core 軟體以重試部署。如需詳細資訊,請參閱 執行 AWS IoT Greengrass Core 軟體

    如果秘密管理員成功下載秘密,部署會成功。

software.amazon.awssdk.services.secretsmanager.model.SecretsManagerException: Access to KMS is not allowed

當您使用秘密管理員元件部署由 金鑰加密的 AWS Secrets Manager 秘密時, AWS Key Management Service 可能會發生此錯誤。如果核心裝置的字符交換 IAM 角色未授予解密秘密的許可,則部署會失敗,且 Greengrass 日誌包含此錯誤。

若要修正此問題,請將 kms:Decrypt 許可新增至核心裝置的字符交換角色。如需詳細資訊,請參閱下列內容:

java.lang.NoClassDefFoundError: com/aws/greengrass/security/CryptoKeySpi

當您嘗試安裝具有硬體安全性 AWS IoT Greengrass 的核心軟體,並使用不支援硬體安全性整合的舊版 Greengrass 核版本時,您可能會看到此錯誤。若要使用硬體安全整合,您必須使用 Greengrass nucleus 2.5.3 版或更新版本。

com.aws.greengrass.security.provider.pkcs11.PKCS11CryptoKeyService: CKR_OPERATION_NOT_INITIALIZED

當您在以系統服務身分執行 AWS IoT Greengrass Core 時,使用 TPM2 程式庫時,可能會看到此錯誤。

此錯誤表示您需要新增環境變數,以提供 AWS IoT Greengrass 核心系統化服務檔案中 PKCS#11 存放區的位置。

如需詳細資訊,請參閱PKCS#11 供應商元件文件的要求一節。

Greengrass core device stuck on nucleus v2.12.3

如果您的 Greengrass 核心裝置不會從 2.12.3 版修改部署,您可能需要下載並以 Greengrass 2.12.2 版取代Greengrass.jar檔案。請執行下列操作:

  1. 在您的 Greengrass 核心裝置上,執行下列命令來停止 Greengrass Core 軟體。

    Linux or Unix
    sudo systemctl stop greengrass
    Windows Command Prompt (CMD)
    sc stop "greengrass"
    PowerShell
    Stop-Service -Name "greengrass"
  2. 在核心裝置上,將 AWS IoT Greengrass 軟體下載至名為 的檔案greengrass-2.12.2.zip

    Linux or Unix
    curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-2.12.2.zip > greengrass-2.12.2.zip
    Windows Command Prompt (CMD)
    curl -s https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-2.12.2.zip > greengrass-2.12.2.zip
    PowerShell
    iwr -Uri https://d2s8p88vqu9w66.cloudfront.net/releases/greengrass-2.12.2.zip -OutFile greengrass-2.12.2.zip
  3. 將 AWS IoT Greengrass Core 軟體解壓縮至裝置上的資料夾。將 GreengrassInstaller 取代為您要使用的資料夾。

    Linux or Unix
    unzip greengrass-2.12.2.zip -d GreengrassInstaller && rm greengrass-2.12.2.zip
    Windows Command Prompt (CMD)
    mkdir GreengrassInstaller && tar -xf greengrass-2.12.2.zip -C GreengrassInstaller && del greengrass-2.12.2.zip
    PowerShell
    Expand-Archive -Path greengrass-2.12.2.zip -DestinationPath .\\GreengrassInstaller rm greengrass-2.12.2.zip
  4. 執行下列命令,以 nucleus 2.12.2 Greengrass JAR 檔案覆寫 2.12.3 Greengrass JAR 檔案。

    Linux or Unix
    sudo cp ./GreengrassInstaller/lib/Greengrass.jar /greengrass/v2/packages/artifacts-unarchived/aws.greengrass.Nucleus/2.12.3/aws.greengrass.nucleus/lib
    Windows Command Prompt (CMD)
    robocopy ./GreengrassInstaller/lib/Greengrass.jar /greengrass/v2/packages/artifacts-unarchived/aws.greengrass.Nucleus/2.12.3/aws.greengrass.nucleus/lib /E
    PowerShell
    cp -Path ./GreengrassInstaller/lib/Greengrass.jar -Destination /greengrass/v2/packages/artifacts-unarchived/aws.greengrass.Nucleus/2.12.3/aws.greengrass.nucleus/lib
  5. 執行下列命令來啟動 Greengrass Core 軟體。

    Linux or Unix
    sudo systemctl start greengrass
    Windows Command Prompt (CMD)
    sc start "greengrass"
    PowerShell
    Start-Service -Name "greengrass"

Greengrass nucleus v2.14.0 systemd template issue

如果您在具有預設系統化服務範本的 Linux 裝置上安裝 Greengrass nucleus 2.14.0 版,您可能會遇到此問題。請執行下列操作:

  1. 在 Greengrass 核心裝置上,執行下列命令,將系統化服務檔案還原至 nucleus v2.13.0 及更早版本中的方式。

    Linux or Unix
    sudo sed -i 's|ExecStart=/bin/sh -c "\(.*\) >> .*/logs/loader.log 2>&1"|ExecStart=/bin/sh \1|' /etc/systemd/system/greengrass.service
  2. 套用變更。

    Linux or Unix
    sudo systemctl daemon-reload sudo systemctl restart greengrass

AWS IoT Greengrass 雲端問題

使用下列資訊對 AWS IoT Greengrass 主控台和 API 的問題進行故障診斷。每個項目對應到您在執行動作時可能看到的錯誤訊息。

An error occurred (AccessDeniedException) when calling the CreateComponentVersion operation: User: arn:aws:iam::123456789012:user/<username> is not authorized to perform: null

當您從 AWS IoT Greengrass 主控台或使用 CreateComponentVersion 操作建立元件版本時,您可能會看到此錯誤。

此錯誤表示您的配方不是有效的 JSON 或 YAML。請檢查配方的語法、修正任何語法問題,然後再試一次。您可以使用線上 JSON 或 YAML 語法檢查程式來識別配方中的語法問題。

Invalid Input: Encountered following errors in Artifacts: {<s3ArtifactUri> = Specified artifact resource cannot be accessed}

當您從 AWS IoT Greengrass 主控台或使用 CreateComponentVersion 操作建立元件版本時,您可能會看到此錯誤。此錯誤表示元件配方中的 S3 成品無效。

請執行下列操作:

  • 檢查 S3 儲存貯體是否與您建立元件 AWS 區域 所在的儲存貯體相同。 AWS IoT Greengrass 不支援元件成品的跨區域請求。

  • 檢查成品 URI 是否為有效的 S3 物件 URL,並檢查該 S3 物件 URL 上是否存在成品。

  • 檢查您的 AWS 帳戶 是否具有在其 S3 物件 URL 存取成品的許可。

INACTIVE deployment status

當您呼叫 ListDeployments API 時,如果沒有所需的相依 AWS IoT 政策,可能會取得INACTIVE部署狀態。您必須具備必要的許可,才能取得準確的部署狀態。您可以查看 定義的動作, AWS IoT Greengrass V2並遵循 所需的許可來尋找相依動作ListDeployments。如果沒有必要的相依 AWS IoT 許可,您仍會看到部署狀態,但您可能會看到不正確的部署狀態INACTIVE

核心裝置部署問題

對 Greengrass 核心裝置上的部署問題進行故障診斷。每個項目對應至您在核心裝置上可能看到的日誌訊息。

主題

Error: com.aws.greengrass.componentmanager.exceptions.PackageDownloadException: Failed to download artifact

當 AWS IoT Greengrass 核心裝置套用部署時,當核心軟體無法下載元件成品時,您可能會看到此錯誤。由於此錯誤,部署失敗。

當您收到此錯誤時,日誌也會包含堆疊追蹤,可用來識別特定問題。下列每個項目對應至您在Failed to download artifact錯誤訊息的堆疊追蹤中可能看到的訊息。

software.amazon.awssdk.services.s3.model.S3Exception: null (Service: S3, Status Code: 403, Request ID: null, ...)

PackageDownloadException 錯誤可能會在下列情況下包含此堆疊追蹤:

  • 元件成品不適用於您在元件配方中指定的 S3 物件 URL。檢查您上傳成品到 S3 儲存貯體,以及成品 URI 是否符合儲存貯體中成品的 S3 物件 URL。

  • 核心裝置的字符交換角色不允許 AWS IoT Greengrass Core 軟體從您在元件配方中指定的 S3 物件 URL 下載元件成品。檢查權杖交換角色s3:GetObject是否允許使用成品所在的 S3 物件 URL。

software.amazon.awssdk.services.s3.model.S3Exception: Access Denied (Service: S3, Status Code: 403, Request ID: <requestID>

當核心裝置沒有呼叫 的許可時, PackageDownloadException 錯誤可能包含此堆疊追蹤s3:GetBucketLocation。錯誤訊息也包含下列訊息。

reason: Failed to determine S3 bucket location

檢查核心裝置的權杖交換角色s3:GetBucketLocation是否允許使用成品所在的 S3 儲存貯體。

Error: com.aws.greengrass.componentmanager.exceptions.ArtifactChecksumMismatchException: Integrity check for downloaded artifact failed. Probably due to file corruption.

當 AWS IoT Greengrass 核心裝置套用部署時,當核心軟體無法下載元件成品時,您可能會看到此錯誤。部署失敗,因為下載的成品檔案檢查總和與建立元件時 AWS IoT Greengrass 計算的檢查總和不相符。

請執行下列操作:

  • 檢查成品檔案是否在您託管成品檔案的 S3 儲存貯體中變更。如果檔案在您建立元件之後變更,請將其還原至核心裝置預期的先前版本。如果您無法將檔案還原至其先前版本,或者如果您想要使用新版本的檔案,請使用成品檔案建立新的元件版本。

  • 檢查核心裝置的網際網路連線。如果成品檔案在下載時損毀,則可能會發生此錯誤。建立新的部署,然後再試一次。

Error: com.aws.greengrass.componentmanager.exceptions.NoAvailableComponentVersionException: Failed to negotiate component <name> version with cloud and no local applicable version satisfying requirement <requirements>

當核心裝置找不到符合該核心裝置部署需求的元件版本時,您可能會看到此錯誤。核心裝置會檢查 AWS IoT Greengrass 服務和本機裝置上的元件。錯誤訊息包含每個部署的目標,以及元件的部署版本需求。部署目標可以是物件、物件群組或 LOCAL_DEPLOYMENT,代表核心裝置上的本機部署。

此問題可能發生在下列情況下:

  • 核心裝置是具有衝突元件版本需求的多個部署的目標。例如,核心裝置可能是包含com.example.HelloWorld元件的多個部署的目標,其中一個部署需要 1.0.0 版,另一個則需要 1.0.1 版。不可能有一個符合兩個需求的元件,因此部署會失敗。

  • 元件版本不存在於 AWS IoT Greengrass 服務或本機裝置上。例如,可能已刪除元件。

  • 存在符合版本需求的元件版本,但沒有任何版本與核心裝置的平台相容。

  • 核心裝置的 AWS IoT 政策不會授予 greengrass:ResolveComponentCandidates許可。在錯誤日誌Status Code: 403中尋找 以識別此問題。若要解決此問題,請將 greengrass:ResolveComponentCandidates 許可新增至核心裝置的 AWS IoT 政策。如需詳細資訊,請參閱AWS IoT Greengrass V2 核心裝置的最低 AWS IoT 政策

若要解決此問題,請修改部署以包含相容的元件版本,或移除不相容的元件版本。如需如何修訂雲端部署的詳細資訊,請參閱修訂部署。如需如何修訂本機部署的詳細資訊,請參閱 AWS IoT Greengrass CLI 部署建立命令。

software.amazon.awssdk.services.greengrassv2data.model.ResourceNotFoundException: The latest version of Component <componentName> doesn't claim platform <coreDevicePlatform> compatibility

當您將元件部署到核心裝置時,您可能會看到此錯誤,而且元件不會列出與核心裝置平台相容的平台。執行以下任意一項:

  • 如果元件是自訂 Greengrass 元件,您可以更新元件,使其與核心裝置相容。新增符合核心裝置平台的新資訊清單,或更新現有資訊清單以符合核心裝置的平台。如需詳細資訊,請參閱AWS IoT Greengrass 元件配方參考

  • 如果元件是由 提供 AWS,請檢查其他版本的元件是否與核心裝置相容。如果沒有相容版本,AWS re:Post請使用 AWS IoT Greengrass 標籤聯絡我們,或聯絡 支援

com.aws.greengrass.componentmanager.exceptions.PackagingException: The deployment attempts to update the nucleus from aws.greengrass.Nucleus-<version> to aws.greengrass.Nucleus-<version> but no component of type nucleus was included as target component

當您部署依賴 Greengrass 核的元件時,您可能會看到此錯誤,而核心裝置執行比最新可用次要版本更舊的 Greengrass 核版本。發生此錯誤是因為 AWS IoT Greengrass Core 軟體嘗試自動將元件更新至最新的相容版本。不過, AWS IoT Greengrass Core 軟體可防止 Greengrass 核更新至新的次要版本,因為數個 AWS提供的元件取決於 Greengrass 核的特定次要版本。如需詳細資訊,請參閱Greengrass 核更新行為

您必須修改部署,以指定要使用的 Greengrass 核版本。執行以下任意一項:

  • 修改部署以指定核心裝置目前執行的 Greengrass 核版本。

  • 修改部署以指定 Greengrass 核的較新次要版本。如果您選擇此選項,您還必須更新所有 AWS提供的元件版本,這些元件取決於 Greengrass 核的特定次要版本。如需詳細資訊,請參閱AWS提供的元件

Error: com.aws.greengrass.deployment.exceptions.DeploymentException: Unable to process deployment. Greengrass launch directory is not set up or Greengrass is not set up as a system service

當您將 Greengrass 裝置從一個物件群組移至另一個物件群組,然後以需要 Greengrass 重新啟動的部署返回原始群組時,您可能會看到此錯誤。

若要解決此問題,請重新建立裝置的啟動目錄。我們也強烈建議升級至 2.9.6 版或更新版本的 Greengrass 核。

以下是重新建立啟動目錄的 Linux 指令碼。將指令碼儲存在名為 的檔案中fix_directory.sh

#!/bin/bash set -e GG_ROOT=$1 GG_VERSION=$2 CURRENT="$GG_ROOT/alts/current" if [ ! -L "$CURRENT" ]; then mkdir -p $GG_ROOT/alts/directory_fix echo "Relinking $GG_ROOT/alts/directory_fix to $CURRENT" ln -sf $GG_ROOT/alts/directory_fix $CURRENT fi TARGET=$(readlink $CURRENT) if [[ ! -d "$TARGET" ]]; then echo "Creating directory: $TARGET" mkdir -p "$TARGET" fi DISTRO_LINK="$TARGET/distro" DISTRO="$GG_ROOT/packages/artifacts-unarchived/aws.greengrass.Nucleus/$GG_VERSION/aws.greengrass.nucleus/" echo "Relinking Nucleus artifacts to $DISTRO_LINK" ln -sf $DISTRO $DISTRO_LINK

若要執行指令碼,請執行下列命令:

[root@ip-172-31-27-165 ~]# ./fix_directory.sh /greengrass/v2 2.9.5 Relinking /greengrass/v2/alts/directory_fix to /greengrass/v2/alts/current Relinking Nucleus artifacts to /greengrass/v2/alts/directory_fix/distro

Info: com.aws.greengrass.deployment.exceptions.RetryableDeploymentDocumentDownloadException: Greengrass Cloud Service returned an error when getting full deployment configuration

當核心裝置收到大型部署文件時,您可能會看到此錯誤,這是大於 7 KB (針對目標物件的部署) 或 31 KB (針對目標物件群組的部署) 的部署文件。若要擷取大型部署文件,核心裝置的 AWS IoT 政策必須允許 greengrass:GetDeploymentConfiguration許可。當核心裝置沒有此許可時,可能會發生此錯誤。當此錯誤發生時,部署會無限期重試,且其狀態為進行中 (IN_PROGRESS)。

若要解決此問題,請將 greengrass:GetDeploymentConfiguration 許可新增至核心裝置的 AWS IoT 政策。如需詳細資訊,請參閱更新核心裝置的 AWS IoT 政策

Warn: com.aws.greengrass.deployment.DeploymentService: Failed to get thing group hierarchy

當核心裝置收到部署,且核心裝置 AWS IoT 的政策不允許 greengrass:ListThingGroupsForCoreDevice許可時,您可能會看到此警告。當您建立部署時,核心裝置會使用此許可來識別其物件群組,並移除您從中移除核心裝置之任何物件群組的元件。如果核心裝置執行 Greengrass 核 v2.5.0,部署會失敗。如果核心裝置執行 Greengrass nucleus v2.5.1 或更新版本,部署會繼續進行,但不會移除元件。如需物件群組移除行為的詳細資訊,請參閱將 AWS IoT Greengrass 元件部署至裝置

若要更新核心裝置的行為以移除您移除核心裝置之物件群組的元件,請將 greengrass:ListThingGroupsForCoreDevice 許可新增至核心裝置的 AWS IoT 政策。如需詳細資訊,請參閱更新核心裝置的 AWS IoT 政策

Info: com.aws.greengrass.deployment.DeploymentDocumentDownloader: Calling Greengrass cloud to get full deployment configuration

您可能會看到此資訊訊息多次列印,不會發生錯誤,因為核心裝置會在DEBUG日誌層級記錄錯誤。當核心裝置收到大型部署文件時,可能會發生此問題。發生此問題時,部署會無限期重試,且其狀態為進行中 (IN_PROGRESS)。如需如何解決此問題的詳細資訊,請參閱此故障診斷項目

Caused by: software.amazon.awssdk.services.greengrassv2data.model.GreengrassV2DataException: null (Service: GreengrassV2Data, Status Code: 403, Request ID: <some_request_id>, Extended Request ID: null)

當資料平面 API 沒有iot:Connect許可時,您可能會看到此錯誤。如果您沒有正確的政策,您將會收到 GreengrassV2DataException: 403。若要建立許可政策,請遵循下列指示:建立 AWS IoT 政策

核心裝置元件問題

對核心裝置上的 Greengrass 元件問題進行故障診斷。

Warn: '<command>' is not recognized as an internal or external command

當 AWS IoT Greengrass 核心軟體無法在元件的生命週期指令碼中執行命令時,您可能會在 Greengrass 元件的日誌中看到此錯誤。元件的狀態BROKEN會因為此錯誤而變成 。如果執行 元件的系統使用者,例如 ggc_user,在 PATH 的資料夾中找不到命令的可執行檔,則可能會發生此錯誤。

在 Windows 裝置上,檢查包含可執行檔的資料夾是否位於執行元件之PATH系統使用者的 中。如果 遺失,PATH請執行下列其中一項操作:

  • 將可執行檔的資料夾新增至可供所有使用者使用的 PATH 系統變數。然後,重新啟動元件。

    如果您執行 Greengrass nucleus 2.5.0,在更新PATH系統變數之後,您必須重新啟動 AWS IoT Greengrass Core 軟體,才能執行具有更新 的元件PATH。如果 AWS IoT Greengrass 核心軟體在您重新啟動軟體PATH後未使用更新的 ,請重新啟動裝置,然後再試一次。如需詳細資訊,請參閱執行 AWS IoT Greengrass Core 軟體

  • 將可執行檔的資料夾新增至執行元件之系統使用者PATH的使用者變數。

Python 指令碼不會記錄訊息

Greengrass 核心裝置會收集日誌,供您用來識別元件的問題。如果您的 Python 指令碼stdoutstderr訊息未出現在元件日誌中,您可能需要在 Python 中排清緩衝或停用這些標準輸出串流的緩衝。執行下列任何一項:

  • 使用 -u 引數執行 Python,以在 stdout和 上停用緩衝stderr

    Linux or Unix
    python3 -u hello_world.py
    Windows
    py -3 -u hello_world.py
  • 在元件的配方中使用 Setenv,將 PYTHONUNBUFFERED 環境變數設定為非空白字串。此環境變數會在 stdout和 上停用緩衝stderr

  • 排清 stdoutstderr 串流的緩衝區。執行以下任意一項:

    • 列印時排清訊息。

      import sys print('Hello, error!', file=sys.stderr, flush=True)
    • 列印後排清訊息。您可以在排清串流之前傳送多個訊息。

      import sys print('Hello, error!', file=sys.stderr) sys.stderr.flush()

如需如何驗證 Python 指令碼輸出日誌訊息的詳細資訊,請參閱 監控 AWS IoT Greengrass 日誌

變更預設組態時,元件組態不會更新

當您在元件配方DefaultConfiguration中變更 時,新的預設組態不會在部署期間取代元件的現有組態。若要套用新的預設組態,您必須將元件的組態重設為其預設設定。部署元件時,請指定單一空白字串做為重設更新

Console
重設路徑
[""]
AWS CLI

下列命令會建立核心裝置的部署。

aws greengrassv2 create-deployment --cli-input-json file://reset-configuration-deployment.json

reset-configuration-deployment.json 檔案包含下列 JSON 文件。

{ "targetArn": "arn:aws:iot:us-west-2:123456789012:thing/MyGreengrassCore", "deploymentName": "Deployment for MyGreengrassCore", "components": { "com.example.HelloWorld": { "componentVersion": "1.0.0", "configurationUpdate": {, "reset": [""] } } } }
Greengrass CLI

下列 Greengrass CLI 命令會在核心裝置上建立本機部署。

sudo greengrass-cli deployment create \ --recipeDir recipes \ --artifactDir artifacts \ --merge "com.example.HelloWorld=1.0.0" \ --update-config reset-configuration-deployment.json

reset-configuration-deployment.json 檔案包含下列 JSON 文件。

{ "com.example.HelloWorld": { "RESET": [""] } }

awsiot.greengrasscoreipc.model.UnauthorizedError

當元件沒有在資源上執行 IPC 操作的許可時,您可能會在 Greengrass 元件的日誌中看到此錯誤。若要授予元件呼叫 IPC 操作的許可,請在元件的組態中定義 IPC 授權政策。如需詳細資訊,請參閱授權元件來執行 IPC 操作

提示

如果您在元件的配方DefaultConfiguration中變更 ,則必須將元件的組態重設為其新的預設組態。部署元件時,請指定單一空白字串做為重設更新。如需詳細資訊,請參閱變更預設組態時,元件組態不會更新

com.aws.greengrass.authorization.exceptions.AuthorizationException: Duplicate policy ID "<id>" for principal "<componentList>"

如果多個 IPC 授權政策,包括核心裝置上的所有元件,使用相同的政策 ID,您可能會看到此錯誤。

請檢查元件的 IPC 授權政策、修正任何重複項目,然後再試一次。若要建立唯一的政策 IDs,建議您結合元件名稱、IPC 服務名稱和計數器。如需詳細資訊,請參閱授權元件來執行 IPC 操作

提示

如果您在元件的配方DefaultConfiguration中變更 ,則必須將元件的組態重設為其新的預設組態。部署元件時,請指定單一空白字串做為重設更新。如需詳細資訊,請參閱變更預設組態時,元件組態不會更新

com.aws.greengrass.tes.CredentialRequestHandler: Error in retrieving AwsCredentials from TES (HTTP 400)

當核心裝置無法從字符交換服務取得 AWS 憑證時,您可能會看到此錯誤。HTTP 400 狀態碼表示此錯誤是因為核心裝置的字符交換 IAM 角色不存在,或沒有信任關係,允許 AWS IoT 憑證提供者擔任該角色。

請執行下列操作:

  1. 識別核心裝置使用的字符交換角色。錯誤訊息包含核心裝置 AWS IoT 的角色別名,指向權杖交換角色。在開發電腦上執行下列命令,並將 MyGreengrassCoreTokenExchangeRoleAlias 取代為錯誤訊息中 AWS IoT 角色別名的名稱。

    aws iot describe-role-alias --role-alias MyGreengrassCoreTokenExchangeRoleAlias

    回應包含權杖交換 IAM 角色的 Amazon Resource Name (ARN)。

    { "roleAliasDescription": { "roleAlias": "MyGreengrassCoreTokenExchangeRoleAlias", "roleAliasArn": "arn:aws:iot:us-west-2:123456789012:rolealias/MyGreengrassCoreTokenExchangeRoleAlias", "roleArn": "arn:aws:iam::123456789012:role/MyGreengrassV2TokenExchangeRole", "owner": "123456789012", "credentialDurationSeconds": 3600, "creationDate": "2021-02-05T16:46:18.042000-08:00", "lastModifiedDate": "2021-02-05T16:46:18.042000-08:00" } }
  2. 檢查角色是否存在。執行下列命令,並將 MyGreengrassV2TokenExchangeRole 取代為權杖交換角色的名稱。

    aws iam get-role --role-name MyGreengrassV2TokenExchangeRole

    如果命令傳回NoSuchEntity錯誤,則角色不存在,您必須建立該角色。如需如何建立和設定此角色的詳細資訊,請參閱 授權核心裝置與服務 AWS 互動

  3. 檢查角色是否具有信任關係,允許 AWS IoT 登入資料提供者擔任該角色。上一個步驟的回應包含 AssumeRolePolicyDocument,定義角色的信任關係。角色必須定義credentials.iot.amazonaws.com允許 擔任的信任關係。本文件看起來應該類似於下列範例。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "credentials.iot.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

    如果角色的信任關係不允許credentials.iot.amazonaws.com擔任,您必須將此信任關係新增至角色。如需更多資訊,請參閱 AWS Identity and Access Management IAM 使用者指南中的修改角色

com.aws.greengrass.tes.CredentialRequestHandler: Error in retrieving AwsCredentials from TES (HTTP 403)

當核心裝置無法從字符交換服務取得 AWS 憑證時,您可能會看到此錯誤。HTTP 403 狀態碼表示發生此錯誤,因為核心裝置 AWS IoT 的政策未授予核心裝置 AWS IoT 角色別名的iot:AssumeRoleWithCertificate許可。

檢閱核心裝置 AWS IoT 的政策,並新增核心裝置 AWS IoT 角色別名的iot:AssumeRoleWithCertificate許可。錯誤訊息包含核心裝置目前的 AWS IoT 角色別名。如需此許可以及如何更新核心裝置 AWS IoT 政策的詳細資訊,請參閱 AWS IoT Greengrass V2 核心裝置的最低 AWS IoT 政策更新核心裝置的 AWS IoT 政策

com.aws.greengrass.tes.CredentialsProviderError: Could not load credentials from any providers

當元件嘗試請求 AWS 登入資料且無法連線至字符交換服務時,您可能會看到此錯誤。

請執行下列操作:

  • 檢查元件是否宣告對權杖交換服務元件 的相依性aws.greengrass.TokenExchangeService。如果沒有,請新增相依性並重新部署元件。

  • 如果元件在 Docker 中執行,請確定您根據 套用正確的網路設定和環境變數在 Docker 容器元件 (Linux) 中使用 AWS 登入資料

  • 如果元件是在 NodeJS 中寫入,請將 dns.setDefaultResultOrder 設定為 ipv4first

  • 檢查/etc/hosts以 開頭::1且包含 的項目localhost。移除項目,以查看是否導致元件連接到地址錯誤的字符交換服務。

Received error when attempting to retrieve ECS metadata: Could not connect to the endpoint URL: "<tokenExchangeServiceEndpoint>"

當元件未執行字符交換服務,且元件嘗試請求 AWS 憑證時,您可能會看到此錯誤。

請執行下列操作:

  • 檢查元件是否宣告對權杖交換服務元件 的相依性aws.greengrass.TokenExchangeService。如果沒有,請新增相依性並重新部署元件。

  • 檢查元件是否在其install生命週期中使用 AWS 登入資料。 AWS IoT Greengrass 不保證權杖交換服務在install生命週期內的可用性。更新元件,將使用 AWS 登入資料之程式碼移至 startuprun生命週期,然後重新部署元件。

copyFrom: <configurationPath> is already a container, not a leaf

當您將組態值從容器類型 (清單或物件) 變更為非容器類型 (字串、數字或布林值) 時,您可能會看到此錯誤。請執行下列操作:

  1. 檢查元件的配方,查看其預設組態是否將該組態值設定為清單或物件。若是如此,請移除或變更該組態值。

  2. 建立部署,將該組態值重設為其預設值。如需詳細資訊,請參閱 建立部署更新元件組態

然後,您可以將該組態值設定為字串、數字或布林值。

com.aws.greengrass.componentmanager.plugins.docker.exceptions.DockerLoginException: Error logging into the registry using credentials - 'The stub received bad data.'

Docker 應用程式管理員元件嘗試從 Amazon Elastic Container Registry (Amazon ECR) 中的私有儲存庫下載 Docker 映像時,您可能會在 Greengrass 核日誌中看到此錯誤。如果您使用 wincred Docker 登入資料協助程式 (),就會發生此錯誤docker-credential-wincred。因此,Amazon ECR 無法存放登入憑證。

採取下列其中一個動作:

  • 如果您不使用 wincred Docker 登入資料協助程式,請從核心裝置移除docker-credential-wincred程式。

  • 如果您使用 wincred Docker 登入資料協助程式,請執行下列動作:

    1. 重新命名核心裝置上的docker-credential-wincred程式。wincred 將 取代為 Windows Docker 登入資料協助程式的新名稱。例如,您可以將它重新命名為 docker-credential-wincredreal

    2. 更新 Docker 組態檔案 (.docker/config.json) 中的 credsStore選項,以使用 Windows Docker 憑證協助程式的新名稱。例如,如果您將程式重新命名為 docker-credential-wincredreal,請將 credsStore選項更新為 wincredreal

      { "credsStore": "wincredreal" }

java.io.IOException: Cannot run program "cmd" ...: [LogonUser] The password for this account has expired.

當執行元件程序的系統使用者如 具有過期的密碼時ggc_user,您可能會在 Windows 核心裝置上看到此錯誤。因此, AWS IoT Greengrass Core 軟體無法以該系統使用者身分執行元件程序。

更新 Greengrass 系統使用者的密碼
  1. 以管理員身分執行下列命令,以設定使用者的密碼。將 ggc_user 取代為系統使用者,並將密碼取代為要設定的密碼。

    net user ggc_user password
  2. 使用 PsExec 公用程式,將使用者的新密碼存放在 LocalSystem 帳戶的 Credential Manager 執行個體中。將密碼取代為您設定的使用者密碼。

    psexec -s cmd /c cmdkey /generic:ggc_user /user:ggc_user /pass: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"}

aws.greengrass.StreamManager: Instant exceeds minimum or maximum instant

當您將串流管理員 v2.0.7 升級至 v2.0.8 和 v2.0.11 之間的版本時,如果元件無法啟動,您可能會在串流管理員元件的日誌中看到下列錯誤。

2021-07-16T00:54:58.568Z [INFO] (Copier) aws.greengrass.StreamManager: stdout. Caused by: com.fasterxml.jackson.databind.JsonMappingException: Instant exceeds minimum or maximum instant (through reference chain: com.amazonaws.iot.greengrass.streammanager.export.PersistedSuccessExportStatesV1["lastExportTime"]). {scriptName=services.aws.greengrass.StreamManager.lifecycle.startup.script, serviceName=aws.greengrass.StreamManager, currentState=STARTING} 2021-07-16T00:54:58.579Z [INFO] (Copier) aws.greengrass.StreamManager: stdout. Caused by: java.time.DateTimeException: Instant exceeds minimum or maximum instant. {scriptName=services.aws.greengrass.StreamManager.lifecycle.startup.script, serviceName=aws.greengrass.StreamManager, currentState=STARTING}

如果您部署了串流管理員 v2.0.7 且想要升級到較新版本,則必須直接升級到串流管理員 v2.0.12。如需串流管理員元件的詳細資訊,請參閱串流管理員

核心裝置 Lambda 函數元件問題

對核心裝置上的 Lambda 函數元件問題進行故障診斷。

The following cgroup subsystems are not mounted: devices, memory

在下列情況下,當您執行容器化 Lambda 函數時,您可能會看到此錯誤:

  • 核心裝置未針對記憶體或裝置 cgroup 啟用 cgroup v1。

  • 核心裝置已啟用 cgroups v2。Greengrass Lambda 函數需要 cgroups v1,而 cgroups v1 和 v2 是互斥的。

若要啟用 cgroups v1,請使用下列 Linux 核心參數啟動裝置。

cgroup_enable=memory cgroup_memory=1 systemd.unified_cgroup_hierarchy=0
提示

在 Raspberry Pi 上,編輯 /boot/cmdline.txt 檔案以設定裝置的核心參數。

ipc_client.py:64,HTTP Error 400:Bad Request, b'No subscription exists for the source <label-or-lambda-arn> and subject <label-or-lambda-arn>

當您在 V2 核心裝置上執行使用核心 SDK 的 V1 Lambda 函數時,在舊版訂閱路由器元件中未指定訂閱時,您可能會看到此錯誤。 AWS IoT Greengrass V2 若要修正此問題,請部署並設定舊版訂閱路由器以指定必要的訂閱。如需詳細資訊,請參閱匯入 V1 Lambda 函數

元件版本已停止

當核心裝置上的元件版本停止時,您可能會在個人運作狀態儀表板 (PHD) 上看到通知。元件版本會在停止後 60 分鐘內將此通知傳送至您的 PHD。

若要查看您需要修改的部署,請使用 執行下列動作 AWS Command Line Interface:

  1. 執行下列命令以取得核心裝置的清單。

    aws greengrassv2 list-core-devices
  2. 執行下列命令,從步驟 1 擷取每個核心裝置上的元件狀態。coreDeviceName 將 取代為要查詢的每個核心裝置的名稱。

    aws greengrassv2 list-installed-components --core-device-thing-name coreDeviceName
  3. 使用從先前步驟安裝的已停止元件版本來收集核心裝置。

  4. 執行下列命令,從步驟 3 擷取每個核心裝置的所有部署任務狀態。coreDeviceName 將 取代為要查詢的核心裝置名稱。

    aws greengrassv2 list-effective-deployments --core-device-thing-name coreDeviceName

    回應包含核心裝置的部署任務清單。您可以修改部署,以選擇另一個元件版本。如需如何修訂部署的詳細資訊,請參閱修訂部署

Greengrass 命令列界面問題

Greengrass CLI 的問題進行故障診斷。

java.lang.RuntimeException: Unable to create ipc client

當您執行 Greengrass CLI 命令時,您可能會看到此錯誤,而且您指定的根資料夾與安裝 AWS IoT Greengrass Core 軟體的位置不同。

執行下列其中一項來設定根路徑,並將 取代/greengrass/v2為 AWS IoT Greengrass 核心軟體安裝的路徑:

  • GGC_ROOT_PATH 環境變數設為 /greengrass/v2

  • --ggcRootPath /greengrass/v2引數新增至您的命令,如下列範例所示。

    greengrass-cli --ggcRootPath /greengrass/v2 <command> <subcommand> [arguments]

AWS Command Line Interface 問題

對 AWS CLI 的問題進行故障診斷 AWS IoT Greengrass V2。

Error: Invalid choice: 'greengrassv2'

當您使用 AWS CLI (例如,) 執行 AWS IoT Greengrass V2 命令時,您可能會看到此錯誤aws greengrassv2 list-core-devices

此錯誤表示您有不支援的 AWS CLI 版本 AWS IoT Greengrass V2。若要 AWS IoT Greengrass V2 搭配 使用 AWS CLI,您必須具有下列其中一個版本或更新版本:

  • Minimum AWS CLI V1 版本:1.18.197 版

  • Minimum AWS CLI V2 版本:v2.1.11

提示

您可以執行下列命令來檢查您擁有的 AWS CLI 版本。

aws --version

若要解決此問題,請將 更新 AWS CLI 為支援的更新版本 AWS IoT Greengrass V2。如需詳細資訊,請參閱AWS Command Line Interface 《 使用者指南》中的安裝、更新和解除安裝 AWS CLI