本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
疑難排 AWS IoT Greengrass V2
使用本節中的疑難排解資訊和解決方案來協助解決與的問題 AWS IoT Greengrass Version 2。
主題
檢視 AWS IoT Greengrass 核心軟體和元件記錄
AWS IoT Greengrass Core 軟體會將記錄檔寫入本機檔案系統,您可以使用這些檔案系統來檢視核心裝置的即時資訊。您還可以將核心設備配置為將日誌寫入日 CloudWatch 誌,以便遠程對核心設備進行故障排除。這些記錄可協助您識別元件、部署和核心裝置的問題。如需詳細資訊,請參閱 監控AWS IoT Greengrass日誌。
AWS IoT Greengrass 核心軟體問題
疑難排解 AWS IoT Greengrass 核心軟體問題。
主題
- 無法設定核心裝置
- 無法將 AWS IoT Greengrass 核心軟體作為系統服務啟動
- 無法將原子核設定為系統服務
- 無法連線到 AWS IoT Core
- 記憶體不足錯誤
- 無法安 Greengrass CLI
- User root is not allowed to execute
- com.aws.greengrass.lifecyclemanager.GenericExternalService: Could not determine user/group to run with
- Failed to map segment from shared object: operation not permitted
- 無法設置視窗服務
- com.aws.greengrass.util.exceptions.TLSAuthException: Failed to get trust manager
- com.aws.greengrass.deployment.IotJobsHelper: No connection available during subscribing to Iot Jobs descriptions topic. Will retry in sometime
- software.amazon.awssdk.services.iam.model.IamException: The security token included in the request is invalid
- software.amazon.awssdk.services.iot.model.IotException: User: <user> is not authorized to perform: iot:GetPolicy
- Error: com.aws.greengrass.shadowmanager.sync.model.FullShadowSyncRequest: Could not execute cloud shadow get request
- Operation aws.greengrass#<operation> is not supported by Greengrass
- java.io.FileNotFoundException: <stream-manager-store-root-dir>/stream_manager_metadata_store (Permission denied)
- com.aws.greengrass.security.provider.pkcs11.PKCS11CryptoKeyService: Private key or certificate with label <label> does not exist
- software.amazon.awssdk.services.secretsmanager.model.SecretsManagerException: User: <user> is not authorized to perform: secretsmanager:GetSecretValue on resource: <arn>
- software.amazon.awssdk.services.secretsmanager.model.SecretsManagerException: Access to KMS is not allowed
- java.lang.NoClassDefFoundError: com/aws/greengrass/security/CryptoKeySpi
- com.aws.greengrass.security.provider.pkcs11.PKCS11CryptoKeyService: CKR_OPERATION_NOT_INITIALIZED
- Greengrass core device stuck on nucleus v2.12.3
無法設定核心裝置
如果 AWS IoT Greengrass 核心軟體安裝程式失敗,而您無法設定核心裝置,您可能需要解除安裝軟體,然後再試一次。如需詳細資訊,請參閱 解除安裝AWS IoT Greengrass核心軟體。
無法將 AWS IoT Greengrass 核心軟體作為系統服務啟動
如果 AWS IoT Greengrass Core 軟體無法啟動,請檢查系統服務記錄檔以識別問題。一個常見的問題是,在 PATH 環境變數 (Linux) 或 PATH 系統變數 (視窗) 上無法使用 Java。
無法將原子核設定為系統服務
當 AWS IoT Greengrass Core 軟體安裝程式無法設定 AWS IoT Greengrass 為系統服務時,您可能會看到此錯誤。在 Linux 裝置上,如果核心裝置沒有 systemd
執行以下任意一項:
-
將 AWS IoT Greengrass Core 軟體設定為系統服務並執行。您必須將軟體配置為系統服務,才能使用的所有功能 AWS IoT Greengrass。您可以安裝 systemd
或使用不同的初始化系統。如需詳細資訊,請參閱 將 Greengrass 核配置為系統服務。 -
在沒有系統服務的情況下運行 AWS IoT Greengrass Core 軟件。您可以使用安裝程式在 Greengrass 根資料夾中設定的載入程式指令碼來執行軟體。如需詳細資訊,請參閱 在沒有系統服務的情況下執行 AWS IoT Greengrass Core 軟體。
無法連線到 AWS IoT Core
例如,當 AWS IoT Greengrass Core 軟體無法連線至擷取部署工作時,您可能會看 AWS IoT Core 到此錯誤。請執行下列操作:
-
檢查您的核心設備是否可以連接到互聯網和 AWS IoT Core。如需裝置連線到的 AWS IoT Core 端點的詳細資訊,請參閱設定 AWS IoT Greengrass 核心軟體。
-
檢查核心裝置的 AWS IoT 物件是否使用允許
iot:Connect
、iot:Publish
iot:Receive
、和iot:Subscribe
權限的憑證。 -
如果您的核心裝置使用網路 Proxy,請檢查您的核心裝置是否具有裝置角色,且其角色是否允許
iot:Connect
iot:Publish
iot:Receive
、、和iot: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 軟體因為使用noexec
權限掛載/tmp
資料夾而無法啟動時,您可能會看到此錯誤。AWS 通用運行時(CRT)庫/tmp
文件夾。
執行以下任意一項:
-
執行下列命令以使用
exec
權限重新掛載/tmp
資料夾,然後再試一次。sudo mount -o remount,exec /tmp
-
如果您執行 Greengrass 核 v2.5.0 或更新版本,您可以設定 JVM 選項來變更 CRT 程式庫使用的資料夾。 AWS 您可以在部署或安裝核心軟體時,在 Greengrass 核心元件組態中指定
jvmOptions
參數。 AWS IoT Greengrass 將/path/to 替換為 AWS CRT 庫可以使用
的文件夾的路徑。{ "jvmOptions": "-Daws.crt.lib.dir=\"
/path/to/use
\"" }
無法設置視窗服務
如果您在 Microsoft 視窗 2016 設備上安裝 AWS IoT Greengrass 核心軟件,則可能會看到此錯誤。 AWS IoT Greengrass 核心軟體在 Windows 2016 上不受支援,如需支援的作業系統清單,請參閱支援平台。
如果您必須使用視窗 2016,您可以執行下列動作:
-
解壓縮下載的 AWS IoT Greengrass 核心安裝歸檔
-
在目
Greengrass
錄中打開bin/greengrass.xml.template
文件。 -
將標
<autoRefresh>
籤新增到標籤前面的檔案結</service>
尾。</log> <autoRefresh>false</autoRefresh> </service>
com.aws.greengrass.util.exceptions.TLSAuthException: Failed to get trust manager
當您在沒有根憑證授權單位 (CA) 檔案的情況下安裝 AWS IoT Greengrass Core 軟體時,可能會看到此錯誤。
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 核心軟體。
com.aws.greengrass.deployment.IotJobsHelper: No connection available during subscribing to Iot Jobs descriptions topic. Will retry in sometime
當核心裝置無法連線以訂閱部署工作通知時,您可能會看到此警告訊息。 AWS IoT Core 請執行下列操作:
-
檢查核心裝置是否已連線至網際網路,並可連線到您設定的 AWS IoT 資料端點。如需核心裝置使用之端點的詳細資訊,請參閱允許裝置流量透過 Proxy 或防火牆。
-
檢查 Greengrass 日誌是否有其他顯示其他根本原因的錯誤。
software.amazon.awssdk.services.iam.model.IamException: The security token included in the request is invalid
當您使用自動佈建來安裝 AWS IoT Greengrass Core 軟體,且安裝程式使用無效的 AWS 工作階段 Token 時,可能會看到此錯誤。請執行下列操作:
-
如果您使用臨時安全憑據,請檢查會話令牌是否正確,以及是否正在複製並粘貼完整的會話令牌。
-
如果您使用長期安全憑據,請檢查設備是否沒有以前使用臨時憑據的會話令牌。請執行下列操作:
-
執行下列命令以取消設定工作階段 Token 環境變數。
-
檢查 AWS 憑據文件是否
~/.aws/credentials
包含會話令牌,aws_session_token
。如果是這樣,請從文件中刪除該行。aws_session_token =
AQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OPTgk5TthT+FvwqnKwRcOIfrRh3c/LTo6UDdyJwOOvEVPvLXCrrrUtdnniCEXAMPLE/IvU1dYUg2RVAJBanLiHb4IgRmpRV3zrkuWJOgQs8IZZaIv2BXIa2R4Olgk
-
您也可以在不提供 AWS 憑證的情況下安裝 AWS IoT Greengrass Core 軟體。如需詳細資訊,請參閱 透過手動佈建資源安裝 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 Core 軟體,且安裝程式使用的 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 策略,並添加任何缺少的必需權限。如需詳細資訊,請參閱下列內容:
-
AWS IoT Core AWS IoT 開發人員指南中的政策動作
Operation aws.greengrass#<operation> is not supported by Greengrass
當您在自訂 Greengrass 元件中使用處理序間通訊 (IPC) 作業,且核心裝置上未安裝所需 AWS提供的元件時,您可能會看到這個錯誤。
若要修正此問題,請在元件方案中新增必要的元件做為相依性,以便 AWS IoT Greengrass 核心軟體在您部署元件時安裝必要的元件。
-
擷取秘密值 —
aws.greengrass.SecretManager
-
與局部陰影互動 —
aws.greengrass.ShadowManager
-
管理本機部署和元件 —
aws.greengrass.Cli
v2.6.0 或更新版本 -
驗證和授權用戶端裝置 —
aws.greengrass.clientdevices.Auth
v2.2.0 或更新版本
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 Core 軟體設定為使用硬體安全性模組 (HSM) 時指定的私密金鑰或憑證,就會發生此錯誤。請執行下列操作:
-
使用您設定要使用的 AWS IoT Greengrass Core 軟體的插槽、使用者 PIN 碼和物件標籤,檢查私密金鑰和憑證是否儲存在 HSM 中。
-
檢查私密金鑰和憑證是否在 HSM 中使用相同的物件標籤。
-
如果您的 HSM 支援物件 ID,請檢查私密金鑰和憑證是否在 HSM 中使用相同的物件識別碼。
請查看 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 日誌包含此錯誤。
授權核心裝置下載密碼
-
將
secretsmanager:GetSecretValue
權限新增至核心裝置的權杖交換角色。下列範例原則陳述式會授與取得密碼值的權限。{ "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:us-west-2:123456789012:secret:MyGreengrassSecret-abcdef" ] }
如需詳細資訊,請參閱 授權核心裝置與 AWS 服務互動。
-
將部署重新套用至核心裝置。執行以下任意一項:
-
不進行任何變更即修訂部署。核心裝置在收到修訂後的部署時,會嘗試再次下載密碼。如需詳細資訊,請參閱 修訂部署。
-
重新啟動 AWS IoT Greengrass 核心軟體以重試部署。如需更多資訊,請參閱執行AWS IoT Greengrass核心軟體
如果密碼管理員成功下載密碼,則部署成功。
-
software.amazon.awssdk.services.secretsmanager.model.SecretsManagerException: Access to KMS is not allowed
當您使用 Secret Manager 元件部署由 AWS Key Management Service 金鑰加密的密碼時 AWS Secrets Manager ,可能會發生這個錯誤。如果核心設備的令牌交換 IAM 角色未授予解密權限,則部署失敗,並且 Greengrass 日誌包含此錯誤。
若要修正此問題,請將kms:Decrypt
權限新增至核心裝置的 Token 交換角色。如需詳細資訊,請參閱下列內容:
-
AWS Secrets Manager 用戶指南中的秘密加密和解密
java.lang.NoClassDefFoundError: com/aws/greengrass/security/CryptoKeySpi
當您嘗試安裝具有硬體安全性的 AWS IoT Greengrass Core 軟體,而您使用的舊版 Greengrass 核心版本不支援硬體安全性整合時,可能會看到這個錯誤。若要使用硬體安全性整合,您必須使用 Greengrass 核 v2.5.3 或更新版本。
com.aws.greengrass.security.provider.pkcs11.PKCS11CryptoKeyService: CKR_OPERATION_NOT_INITIALIZED
當您執行 AWS IoT Greengrass Core 做為系統服務時,使用 TPM2 程式庫時,可能會看到這個錯誤。
此錯誤表示您需要新增環境變數,以提供 PKCS #11 儲存區在 AWS IoT Greengrass 核心 systemd 服務檔案中的位置。
如需詳細資訊,請參閱PKCS #11 供應商元件文件的「需求」一節。
Greengrass core device stuck on nucleus v2.12.3
如果您的 Greengrass 核心裝置無法從核心 2.12.3 版本修改您的部署,您可能需要下載檔案,並使用 Greengrass 核心 2.12.2 版來取代Greengrass.jar
檔案。請執行下列操作:
-
在您的 Greengrass 核心裝置上,執行下列命令以停止 Greengrass 核心軟體。
-
在您的核心裝置上,將 AWS IoT Greengrass 軟體下載到名為
greengrass-2.12.2.zip
. -
將 AWS IoT Greengrass Core 軟件解壓縮到設備上的文件夾。以您要使用的資料夾取
GreengrassInstaller
代。 -
運行以下命令,以覆蓋核 2.12.3 版本的 Greengrass JAR 文件與核 2.12.2 Greengrass JAR 文件。
-
運行以下命令來啟動 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
在沒有必要相依 AWS IoT
政策的情況下呼叫 ListDeploymentsAPI 時,您可能會取得INACTIVE
部署狀態。您必須具備必要的權限,才能取得正確的部署狀態。您可以通過查看由定義的操作 AWS IoT Greengrass V2並遵循所需的權限來找到相依動作ListDeployments
。如果沒有必要的相依 AWS IoT 權限,您仍會看到部署狀態,但可能會看到的不正確的部署狀態INACTIVE
。
核心裝置部署問題
疑難排解 Greengrass 核心裝置上的部署問題。每個項目都對應到您可能在核心設備上看到的日誌消息。
主題
- Error: com.aws.greengrass.componentmanager.exceptions.PackageDownloadException: Failed to download artifact
- Error: com.aws.greengrass.componentmanager.exceptions.ArtifactChecksumMismatchException: Integrity check for downloaded artifact failed. Probably due to file corruption.
- Error: com.aws.greengrass.componentmanager.exceptions.NoAvailableComponentVersionException: Failed to negotiate component <name> version with cloud and no local applicable version satisfying requirement <requirements>
- software.amazon.awssdk.services.greengrassv2data.model.ResourceNotFoundException: The latest version of Component <componentName> doesn't claim platform <coreDevicePlatform> compatibility
- 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
- 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
- Info: com.aws.greengrass.deployment.exceptions.RetryableDeploymentDocumentDownloadException: Greengrass Cloud Service returned an error when getting full deployment configuration
- Warn: com.aws.greengrass.deployment.DeploymentService: Failed to get thing group hierarchy
- Info: com.aws.greengrass.deployment.DeploymentDocumentDownloader: Calling Greengrass cloud to get full deployment configuration
- Caused by: software.amazon.awssdk.services.greengrassv2data.model.GreengrassV2DataException: null (Service: GreengrassV2Data, Status Code: 403, Request ID: <some_request_id>, Extended Request ID: null)
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 籤 ,或聯繫我們AWS Support 。
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 核心軟體會阻止 Greengrass 核更新為新的次要版本,因為幾個 AWS提供的元件依賴於 Greengrass 核的特定次要版本。如需詳細資訊,請參閱 Greengrass 核更新行為。
您必須修訂部署,以指定您要使用的 Greengrass 核心版本。執行以下任意一項:
-
修改部署以指定核心裝置目前執行的 Greengrass 核心核心版本。
-
修改部署以指定 Greengrass 核心的較新次要版本。如果您選擇此選項,則還必須更新依賴 Greengrass AWS核特定次要版本的所有提供元件的版本。如需詳細資訊,請參閱 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 重新啟動部署的原始群組時,您可能會看到此錯誤。
若要解決此問題,請重新建立裝置的啟動目錄。我們也強烈建議您升級至 Greengrass 核心 2.9.6 版或更新版本。
以下是用來重新建立啟動目錄的 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 核心 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
- Python 腳本不會記錄消息
- 變更預設組態時,元件組態不會更新
- awsiot.greengrasscoreipc.model.UnauthorizedError
- com.aws.greengrass.authorization.exceptions.AuthorizationException: Duplicate policy ID "<id>" for principal "<componentList>"
- com.aws.greengrass.tes.CredentialRequestHandler: Error in retrieving AwsCredentials from TES (HTTP 400)
- com.aws.greengrass.tes.CredentialRequestHandler: Error in retrieving AwsCredentials from TES (HTTP 403)
- com.aws.greengrass.tes.CredentialsProviderError: Could not load credentials from any providers
- Received error when attempting to retrieve ECS metadata: Could not connect to the endpoint URL: "<tokenExchangeServiceEndpoint>"
- copyFrom: <configurationPath> is already a container, not a leaf
- com.aws.greengrass.componentmanager.plugins.docker.exceptions.DockerLoginException: Error logging into the registry using credentials - 'The stub received bad data.'
- java.io.IOException: Cannot run program "cmd" ...: [LogonUser] The password for this account has expired.
- aws.greengrass.StreamManager: Instant exceeds minimum or maximum instant
Warn: '<command>' is not recognized as an internal or external command
當 AWS IoT Greengrass 核心軟體無法在元件的生命週期指令碼中執行命令時,您可能會在 Greengrass 元件的記錄檔中看到這個錯誤。該組件的狀態變BROKEN
為這個錯誤的結果。如果執行元件的系統使用者 (例如ggc_user
,在 PATH
在 Windows 裝置上,檢查包含可執行檔的資料夾是否位PATH
於執行元件的系統使用者。如果缺少它PATH
,請執行下列其中一個動作:
-
將可執行檔的資料夾加入至
PATH
系統變數,此變數可供所有使用者使用。然後,重新啟動元件。如果您執行 Greengrass 核心 2.5.0,則在更新
PATH
系統變數之後,您必須重新啟動 AWS IoT Greengrass 核心軟體,才能執行更新的元件。PATH
如果 AWS IoT Greengrass 核心軟體PATH
在您重新啟動軟體後未使用更新的軟體,請重新啟動裝置,然後再試一次。如需詳細資訊,請參閱 執行AWS IoT Greengrass核心軟體。 -
將可執行檔的資料夾新增至執行元件之系統使用者的使用者變數。
PATH
Python 腳本不會記錄消息
Greengrass 核心裝置會收集可用來識別元件問題的記錄檔。如果您的 Python 腳本stdout
和stderr
消息沒有出現在組件日誌中,則可能需要刷新緩衝區或禁用 Python 中這些標準輸出流的緩衝。執行下列任何一項:
-
使用 -u
參數運行 Python 以禁用和緩衝。 stdout
stderr
-
在組件的配方中使用 Setenv 將 PYTHON緩衝環境變量設置為非
空字符串。此環境變數會停用 stdout
和stderr
的緩衝。 -
清除
stdout
或stderr
串流的緩衝區。執行以下任意一項:-
打印時刷新消息。
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
中變更時,新的預設組態不會在部署期間取代元件的現有組態。若要套用新的預設模型組態,您必須將零組件的模型組態重設為其預設設定。部署元件時,請指定單一空字串做為重設更新。
awsiot.greengrasscoreipc.model.UnauthorizedError
當元件沒有對資源執行 IPC 作業的權限時,您可能會在 Greengrass 元件的記錄檔中看到此錯誤。若要授與元件呼叫 IPC 作業的權限,請在元件的組態中定義 IPC 授權原則。如需詳細資訊,請參閱 授權元件執行 IPC 作業。
提示
如果您變更零組件方案DefaultConfiguration
中的,您必須將零組件的模型組態重設為其新的預設組態。部署元件時,請指定單一空字串做為重設更新。如需詳細資訊,請參閱 變更預設組態時,元件組態不會更新。
com.aws.greengrass.authorization.exceptions.AuthorizationException: Duplicate policy ID "<id>" for principal "<componentList>"
如果多個 IPC 授權原則 (包括核心裝置上的所有元件) 使用相同的原則識別碼,您可能會看到此錯誤。
請檢查元件的 IPC 授權政策,修復任何重複項目,然後再試一次。若要建立唯一的原則識別碼,建議您結合元件名稱、IPC 服務名稱和計數器。如需詳細資訊,請參閱 授權元件執行 IPC 作業。
提示
如果您變更零組件方案DefaultConfiguration
中的,您必須將零組件的模型組態重設為其新的預設組態。部署元件時,請指定單一空字串做為重設更新。如需詳細資訊,請參閱 變更預設組態時,元件組態不會更新。
com.aws.greengrass.tes.CredentialRequestHandler: Error in retrieving AwsCredentials from TES (HTTP 400)
當核心裝置無法從權杖交換服務取得認 AWS 證時,您可能會看到此錯誤。HTTP 400 狀態碼表示發生此錯誤,是因為核心設備的令牌交換 IAM 角色不存在,或者沒有允許 AWS IoT 憑據提供者承擔的信任關係。
請執行下列操作:
-
識別核心裝置使用的權杖交換角色。該錯誤消息包括核心設備的 AWS IoT 角色別名,該別名指向令牌交換角色。在您的開發電腦上執行下列命令,並
MyGreengrassCoreTokenExchangeRoleAlias
以錯誤訊息中的 AWS IoT 角色別名名稱取代。aws iot describe-role-alias --role-alias
MyGreengrassCoreTokenExchangeRoleAlias
該響應包括令牌交換 IAM 角色的 Amazon 資源名稱(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" } }
-
檢查角色是否存在。執行下列命令,並以權杖交換角色的名稱取代
MyGreengrassV2 TokenExchangeRole
。aws iam get-role --role-name
MyGreengrassV2TokenExchangeRole
如果命令返回
NoSuchEntity
錯誤,則該角色不存在,您必須創建它。如需如何建立和設定此角色的詳細資訊,請參閱授權核心裝置與 AWS 服務互動。 -
檢查角色是否具有允許 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 認證且無法連線至 Token 交換服務時,您可能會看到此錯誤。
請執行下列操作:
-
檢查組件是否聲明了令牌交換服務組件的依賴關係,
aws.greengrass.TokenExchangeService
. 如果沒有,請新增相依性並重新部署元件。 -
如果組件在 docker 中運行,請確保您應用正確的網絡設置和環境變量,根據在碼頭容器組件中使用 AWS 憑據(Linux).
-
檢
/etc/hosts
查是否有以::1
及包含開頭的項目localhost
。移除項目,以查看是否造成元件在錯誤的位址連線至 Token 交換服務。
Received error when attempting to retrieve ECS metadata: Could not connect to the endpoint URL: "<tokenExchangeServiceEndpoint>"
當元件未執行 Token 交換服務且元件嘗試要求 AWS 認證時,您可能會看到此錯誤。
請執行下列操作:
-
檢查組件是否聲明了令牌交換服務組件的依賴關係,
aws.greengrass.TokenExchangeService
. 如果沒有,請新增相依性並重新部署元件。 -
檢查元件是否在其
install
生命週期中使用 AWS 認證。 AWS IoT Greengrass 不保證令牌交換服務在install
生命週期中的可用性。更新元件,將使用 AWS 認證的程式碼移至startup
或run
生命週期,然後重新部署元件。
copyFrom: <configurationPath> is already a container, not a leaf
當您將組態值從容器類型 (清單或物件) 變更為非容器類型 (字串、數字或布林值) 時,您可能會看到此錯誤。請執行下列操作:
然後,您可以將該配置值設置為字符串,數字或布爾值。
com.aws.greengrass.componentmanager.plugins.docker.exceptions.DockerLoginException: Error logging into the registry using credentials - 'The stub received bad data.'
當 Docker 應用程式管理員元件嘗試從 Amazon 彈性容器登錄 (Amazon ECR) 中的私有存放庫下載 Docker 映像時,您可能會在 Greengrass 核記錄中看到此錯誤。如果您使用 wincred
Docker 認證協助程docker-credential-wincred
),就會發生這個錯誤。因此,Amazon ECR 無法儲存登入登入資料。
執行下列其中一個動作:
-
如果您不使用
wincred
Docker 憑證助手,請從核心設備中刪除docker-credential-wincred
該程序。 -
如果您使用
wincred
Docker 認證協助程式,請執行下列動作:-
重新命名核心裝置上的
docker-credential-wincred
程式。wincred
以 Windows 泊塢視窗認證協助程式的新名稱取代。例如,您可以將其重新命名為docker-credential-wincredreal
。 -
更新 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.
當執行元件處理序的系統使用者 (例如) 的密碼過期時,您可能會在 Windows 核心裝置上看到這個錯誤。ggc_user
因此, AWS IoT Greengrass Core 軟體無法以該系統使用者身分執行元件處理程序。
若要更新 Greengrass 系統使用者的密碼
-
以系統管理員身分執行下列命令來設定使用者的密碼。以系統使用者取代
ggc_user
,並以要設定的密碼
取代密碼。net user
ggc_user
password
-
使用此PsExec 公用程式
將使用者的新密碼儲存在 LocalSystem 帳戶的認證管理員執行個體中。 以您設定的使用者密碼取代密碼。
psexec -s cmd /c cmdkey /generic:ggc_user /user:ggc_user /pass: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"}
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。
-
核心裝置已啟用 cgroup v2。Greengrass Lambda 函數需要 C 組 v1,C 組 v1 和 v2 是相互排斥的。
若要啟用 cgroup 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 核心裝置上執行 V1 Lambda 函數 (使用 AWS IoT Greengrass Core SDK),但未在舊版訂閱路由器元件中指定訂閱時,可能會看到此錯誤。若要修正此問題,請部署並設定舊版訂閱路由器,以指定所需的訂閱。如需詳細資訊,請參閱 匯入 V1 Lambda 函數。
已停用元件版本
當核心裝置上的元件版本停止使用時,您可能會在 Personal Health Dashboard (PHD) 上看到通知。元件版本會在停產後 60 分鐘內將此通知傳送給您的 PHD。
若要查看需要修訂的部署,請使用執行下列操作 AWS Command Line Interface:
-
執行下列命令以取得核心裝置的清單。
aws greengrassv2 list-core-devices
-
執行下列命令,從步驟 1 擷取每個核心裝置上的元件狀態。取代
為要查詢的每個核心裝置的名稱。coreDeviceName
aws greengrassv2 list-installed-components --core-device-thing-name
coreDeviceName
-
收集具有先前步驟中已停止使用的元件版本的核心裝置。
-
執行下列命令,從步驟 3 擷取每個核心裝置的所有部署工作狀態。以要查詢的核心裝置名稱取
代。coreDeviceName
aws greengrassv2 list-effective-deployments --core-device-thing-name
coreDeviceName
回應包含核心裝置的部署工作清單。您可以修訂部署以選擇其他元件版本。如需如何修訂部署的相關資訊,請參閱版本修訂部署。
Greengrass 命令行界面問題
疑難排解使用 Greengr ass CLI 的問題。
java.lang.RuntimeException: Unable to create ipc client
當您執行 Greengrass CLI 命令,並指定與 AWS IoT Greengrass 核心軟體安裝位置不同的根資料夾時,您可能會看到這個錯誤。
執行下列其中一項動作來設定根路徑,並取代
為 AWS IoT Greengrass Core 軟體安裝的路徑:/greengrass/v2
-
將
GGC_ROOT_PATH
環境變數設為
。/greengrass/v2
-
如下列範例所示,將
--ggcRootPath
引數新增至您的命令。/greengrass/v2
greengrass-cli --ggcRootPath
<command> <subcommand> [arguments]/greengrass/v2
AWS Command Line Interface 問題
疑 AWS CLI 難排解 AWS IoT Greengrass V2.
Error: Invalid choice: 'greengrassv2'
當您使用 AWS CLI (例如aws greengrassv2 list-core-devices
) 執行 AWS IoT Greengrass V2 命令時,您可能會看到此錯誤。
此錯誤表示您擁有不支援的版本 AWS IoT Greengrass V2。 AWS CLI 若要 AWS IoT Greengrass V2 搭配使用 AWS CLI,您必須具有下列其中一個版本或更新版本:
-
最低版本 AWS CLI 第一版本:
-
最 AWS CLI 低版本:
提示
您可以運行以下命令來檢查您擁有 AWS CLI 的版本。
aws --version
若要解決此問題,請更新 AWS CLI 至支援的更新版本 AWS IoT Greengrass V2。若要取得更多資訊,請參閱《AWS Command Line Interface 使用指南》 AWS CLI中的〈安裝、更新和解除安裝〉。