

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

# 故障診斷 AWS IoT Greengrass V2
<a name="troubleshooting"></a>

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

**Topics**
+ [檢視 AWS IoT Greengrass 核心軟體和元件日誌](#troubleshoot-with-logs)
+ [AWS IoT Greengrass 核心軟體問題](#greengrass-core-issues)
+ [AWS IoT Greengrass 雲端問題](#greengrass-cloud-issues)
+ [核心裝置部署問題](#greengrass-core-deployment-issues)
+ [核心裝置元件問題](#greengrass-core-component-issues)
+ [核心裝置 Lambda 函數元件問題](#greengrass-core-lambda-function-issues)
+ [元件版本已停止](#discontinued-component-version)
+ [Greengrass 命令列界面問題](#greengrass-cli-issues)
+ [AWS Command Line Interface 問題](#aws-cli-issues)
+ [詳細部署錯誤代碼](troubleshooting-deployment.md)
+ [詳細的元件狀態碼](troubleshooting-component.md)

## 檢視 AWS IoT Greengrass 核心軟體和元件日誌
<a name="troubleshoot-with-logs"></a>

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

## AWS IoT Greengrass 核心軟體問題
<a name="greengrass-core-issues"></a>

針對 AWS IoT Greengrass Core 軟體問題進行故障診斷。

**Topics**
+ [ListDeployments API 中的 ThrottlingException](#ThrottlingException)
+ [無法設定核心裝置](#unable-to-set-up-core-device)
+ [無法啟動 AWS IoT Greengrass Core 軟體做為系統服務](#unable-to-start-system-service)
+ [無法將 核設定為系統服務](#unable-to-set-up-system-service)
+ [無法連線至 AWS IoT Core](#core-error-unable-to-connect-to-aws-iot)
+ [記憶體不足錯誤](#java-out-of-memory)
+ [無法安裝 Greengrass CLI](#unable-to-install-greengrass-cli)
+ [User root is not allowed to execute](#user-not-allowed-to-execute)
+ [com.aws.greengrass.lifecyclemanager.GenericExternalService: Could not determine user/group to run with](#missing-default-run-with-user)
+ [Failed to map segment from shared object: operation not permitted](#tmp-folder-noexec)
+ [無法設定 Windows 服務](#failed-to-set-up-windows-service)
+ [com.aws.greengrass.util.exceptions.TLSAuthException: Failed to get trust manager](#failed-to-get-trust-manager)
+ [com.aws.greengrass.deployment.IotJobsHelper: No connection available during subscribing to Iot Jobs descriptions topic. Will retry in sometime](#iot-jobs-no-connection-available)
+ [software.amazon.awssdk.services.iam.model.IamException: The security token included in the request is invalid](#error-invalid-security-token)
+ [software.amazon.awssdk.services.iot.model.IotException: User: <user> is not authorized to perform: iot:GetPolicy](#missing-automatic-provisioning-permissions)
+ [Error: com.aws.greengrass.shadowmanager.sync.model.FullShadowSyncRequest: Could not execute cloud shadow get request](#shadow-manager-error-could-not-execute-shadow-get-request)
+ [Operation aws.greengrass\$1<operation> is not supported by Greengrass](#ipc-operation-not-supported)
+ [java.io.FileNotFoundException: <stream-manager-store-root-dir>/stream\$1manager\$1metadata\$1store (Permission denied)](#stream-manager-store-root-folder-not-found)
+ [com.aws.greengrass.security.provider.pkcs11.PKCS11CryptoKeyService: Private key or certificate with label <label> does not exist](#pkcs11-provider-error-private-key-or-certificate-does-not-exist)
+ [software.amazon.awssdk.services.secretsmanager.model.SecretsManagerException: User: <user> is not authorized to perform: secretsmanager:GetSecretValue on resource: <arn>](#secret-manager-error-not-authorized-to-perform-get-secret-value)
+ [software.amazon.awssdk.services.secretsmanager.model.SecretsManagerException: Access to KMS is not allowed](#secret-manager-error-no-kms-access)
+ [java.lang.NoClassDefFoundError: com/aws/greengrass/security/CryptoKeySpi](#hardware-security-incompatible-nucleus-version)
+ [com.aws.greengrass.security.provider.pkcs11.PKCS11CryptoKeyService: CKR\$1OPERATION\$1NOT\$1INITIALIZED](#ckr-operation-not-initialized)
+ [Greengrass core device stuck on nucleus v2.12.3](#v2.12.3-revise-deployment)
+ [Greengrass nucleus v2.14.0 systemd template issue](#v2.14.0-systemd-template)

### ListDeployments API 中的 ThrottlingException
<a name="ThrottlingException"></a>

`ThrottlingException` 從 `ListDeployments` API：當您的帳戶中有大量部署時，您可能會看到此訊息。

若要解決此問題，請執行下列其中一項操作：
+ 如果您使用 SDK，請指定 MaxResult 參數。例如，對於具有小值 （例如 5) 的 [JavaSDK](https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/services/greengrassv2/model/ListDeploymentsRequest.html#maxResults)。
+ 您可以使用 [AWS Service Quotas](https://docs.aws.amazon.com/servicequotas/latest/userguide/intro.html) 來請求提高 API 速率限制`DescribeJob`。您可以前往服務配額主控台，選取 的配額， AWS IoT 且限制名稱為 **DescribeJob 限流限制**。您可以將其從 10 增加到 50。

### 無法設定核心裝置
<a name="unable-to-set-up-core-device"></a>

如果 AWS IoT Greengrass 核心軟體安裝程式失敗，而且您無法設定核心裝置，您可能需要解除安裝軟體，然後再試一次。如需詳細資訊，請參閱[解除安裝 AWS IoT Greengrass Core 軟體](uninstall-greengrass-core-v2.md)。

### 無法啟動 AWS IoT Greengrass Core 軟體做為系統服務
<a name="unable-to-start-system-service"></a>

如果 AWS IoT Greengrass 核心軟體無法啟動，[請檢查系統服務日誌](monitor-logs.md#access-system-service-logs)以識別問題。其中一個常見問題是，PATH 環境變數 (Linux) 或 PATH 系統變數 (Windows) 上無法使用 Java。

### 無法將 核設定為系統服務
<a name="unable-to-set-up-system-service"></a>

當 AWS IoT Greengrass Core 軟體安裝程式無法設定為 AWS IoT Greengrass 系統服務時，您可能會看到此錯誤。在 Linux 裝置上，如果核心裝置沒有[系統化](https://en.wikipedia.org/wiki/Systemd)初始化系統，通常會發生此錯誤。即使安裝程式無法設定系統服務，也能成功設定 AWS IoT Greengrass Core 軟體。

執行以下任意一項：
+ 設定並執行 AWS IoT Greengrass Core 軟體做為系統服務。您必須將軟體設定為系統服務，以使用 的所有功能 AWS IoT Greengrass。您可以安裝[系統化](https://en.wikipedia.org/wiki/Systemd)或使用不同的初始化系統。如需詳細資訊，請參閱[將 Greengrass 核設定為系統服務](configure-greengrass-core-v2.md#configure-system-service)。
+ 在沒有系統服務的情況下執行 AWS IoT Greengrass Core 軟體。您可以使用安裝程式在 Greengrass 根資料夾中設定的載入器指令碼來執行軟體。如需詳細資訊，請參閱[在沒有系統服務的情況下執行 AWS IoT Greengrass Core 軟體](run-greengrass-core-v2.md#run-greengrass-core-no-system-service)。

### 無法連線至 AWS IoT Core
<a name="core-error-unable-to-connect-to-aws-iot"></a>

例如，當 AWS IoT Greengrass 核心軟體無法連線至 AWS IoT Core 以擷取部署任務時，您可能會看到此錯誤。請執行下列操作：
+ 檢查您的核心裝置是否可以連線至網際網路和 AWS IoT Core。如需裝置所連線 AWS IoT Core 端點的詳細資訊，請參閱 [設定 AWS IoT Greengrass 核心軟體](configure-greengrass-core-v2.md)。
+ 檢查核心裝置的 AWS IoT 物件是否使用允許 `iot:Connect`、`iot:Receive`、 `iot:Publish`和 `iot:Subscribe`許可的憑證。
+ 如果您的核心裝置使用[網路代理](configure-greengrass-core-v2.md#configure-network-proxy)，請檢查您的核心裝置是否具有[裝置角色](device-service-role.md)，以及其角色是否允許 `iot:Connect`、`iot:Receive`、 `iot:Publish`和 `iot:Subscribe`許可。

### 記憶體不足錯誤
<a name="java-out-of-memory"></a>

如果您的裝置沒有足夠的記憶體在 Java 堆積中配置物件，通常會發生此錯誤。在記憶體有限的裝置上，您可能需要指定堆積大小上限來控制記憶體配置。如需詳細資訊，請參閱[使用 JVM 選項控制記憶體配置](configure-greengrass-core-v2.md#jvm-tuning)。

### 無法安裝 Greengrass CLI
<a name="unable-to-install-greengrass-cli"></a>

當您在適用於 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](install-gg-cli.md)。

### User root is not allowed to execute
<a name="user-not-allowed-to-execute"></a>

當執行 AWS IoT Greengrass 核心軟體的使用者 （通常是 `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
<a name="missing-default-run-with-user"></a>

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

若要修正此問題，請設定 Greengrass 核以指定執行元件的預設系統使用者。如需詳細資訊，請參閱[設定執行元件的使用者](configure-greengrass-core-v2.md#configure-component-user)及[設定預設元件使用者](configure-greengrass-core-v2.md#configure-default-component-user)。

### Failed to map segment from shared object: operation not permitted
<a name="tmp-folder-noexec"></a>

當 AWS IoT Greengrass Core 軟體因為`/tmp`資料夾掛載有`noexec`許可而無法啟動時，您可能會看到此錯誤。根據預設，[AWS 通用執行期 (CRT) 程式庫](https://github.com/awslabs/aws-crt-java)會使用 `/tmp` 資料夾。

執行以下任意一項：
+ 執行下列命令來重新掛載具有 `exec` 許可的`/tmp`資料夾，然後再試一次。

  ```
  sudo mount -o remount,exec /tmp
  ```
+ 如果您執行 Greengrass 核 v2.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 服務
<a name="failed-to-set-up-windows-service"></a>

如果您在 Microsoft Windows 2016 裝置上安裝 AWS IoT Greengrass 核心軟體，您可能會看到此錯誤。Windows 2016 不支援 AWS IoT Greengrass Core 軟體，如需支援的作業系統清單，請參閱 [支援平台](greengrass-nucleus-component.md#greengrass-v2-supported-platforms)。

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

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

1. 在 `Greengrass`目錄中開啟 `bin/greengrass.xml.template` 檔案。

1. 將`<autoRefresh>`標籤新增至 檔案的結尾，就在`</service>`標籤前面。

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

### com.aws.greengrass.util.exceptions.TLSAuthException: Failed to get trust manager
<a name="failed-to-get-trust-manager"></a>

當您在沒有根憑證授權機構 (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 Core 軟體](install-greengrass-core-v2.md)。

### com.aws.greengrass.deployment.IotJobsHelper: No connection available during subscribing to Iot Jobs descriptions topic. Will retry in sometime
<a name="iot-jobs-no-connection-available"></a>

當核心裝置無法連線至 AWS IoT Core 以訂閱部署任務通知時，您可能會看到此警告訊息。請執行下列操作：
+ 檢查核心裝置是否已連線至網際網路，並且可以連線到您設定 AWS IoT 的資料端點。如需核心裝置使用之端點的詳細資訊，請參閱 [允許透過代理或防火牆的裝置流量](allow-device-traffic.md)。
+ 檢查 Greengrass 日誌是否有其他顯示其他根本原因的錯誤。

### software.amazon.awssdk.services.iam.model.IamException: The security token included in the request is invalid
<a name="error-invalid-security-token"></a>

當您[使用自動佈建安裝 AWS IoT Greengrass 核心軟體時，](quick-installation.md)您可能會看到此錯誤，安裝程式會使用無效的 AWS 工作階段字符。請執行下列操作：
+ 如果您使用臨時安全登入資料，請檢查工作階段字符是否正確，以及您正在複製和貼上完整的工作階段字符。
+ 如果您使用長期安全登入資料，請檢查裝置在您先前使用臨時登入資料時是否沒有工作階段字符。請執行下列操作：

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

------
#### [ Linux or Unix ]

     ```
     unset AWS_SESSION_TOKEN
     ```

------
#### [ Windows Command Prompt (CMD) ]

     ```
     set AWS_SESSION_TOKEN=
     ```

------
#### [ PowerShell ]

     ```
     Remove-Item Env:\AWS_SESSION_TOKEN
     ```

------

  1. 檢查 AWS 登入資料檔案 是否`~/.aws/credentials`包含工作階段字符 `aws_session_token`。若是如此，請從 檔案移除該行。

     ```
     aws_session_token = AQoEXAMPLEH4aoAH0gNCAPyJxz4BlCFFxWNE1OPTgk5TthT+FvwqnKwRcOIfrRh3c/LTo6UDdyJwOOvEVPvLXCrrrUtdnniCEXAMPLE/IvU1dYUg2RVAJBanLiHb4IgRmpRV3zrkuWJOgQs8IZZaIv2BXIa2R4Olgk
     ```

您也可以安裝 AWS IoT Greengrass Core 軟體，而無需提供 AWS 登入資料。如需詳細資訊，請參閱 [使用手動資源佈建安裝 AWS IoT Greengrass 核心軟體](manual-installation.md) 或 [使用 AWS IoT 機群佈建安裝 AWS IoT Greengrass 核心軟體](fleet-provisioning.md) 。

### software.amazon.awssdk.services.iot.model.IotException: User: <user> is not authorized to perform: iot:GetPolicy
<a name="missing-automatic-provisioning-permissions"></a>

當您[使用自動佈建安裝 AWS IoT Greengrass 核心軟體時，](quick-installation.md)您可能會看到此錯誤，安裝程式會使用沒有必要許可的 AWS 登入資料。如需所需許可的詳細資訊，請參閱 [安裝程式佈建資源的最低 IAM 政策](provision-minimal-iam-policy.md)。

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

### Error: com.aws.greengrass.shadowmanager.sync.model.FullShadowSyncRequest: Could not execute cloud shadow get request
<a name="shadow-manager-error-could-not-execute-shadow-get-request"></a>

當您使用[影子管理員元件](shadow-manager-component.md)來[同步裝置影 AWS IoT Core](sync-shadows-with-iot-core.md)子時，您可能會看到此錯誤。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 開發人員指南*》中的[AWS IoT Core 政策動作](https://docs.aws.amazon.com/iot/latest/developerguide/iot-policy-actions.html) 
+ [更新核心裝置的 AWS IoT 政策](device-auth.md#update-core-device-iot-policy)

### Operation aws.greengrass\$1<operation> is not supported by Greengrass
<a name="ipc-operation-not-supported"></a>

當您在自訂 Greengrass 元件中使用[程序間通訊 (IPC) 操作](interprocess-communication.md)，且核心裝置上未安裝必要 AWS提供的元件時，您可能會看到此錯誤。

若要修正此問題，請在[元件配方中新增必要的元件做為相依性](component-recipe-reference.md#recipe-reference-component-dependencies)，因此 AWS IoT Greengrass Core 軟體會在您部署元件時安裝必要的元件。
+ [擷取秘密值](ipc-secret-manager.md) – `aws.greengrass.SecretManager`
+ [與本機陰影互動](ipc-local-shadows.md) – `aws.greengrass.ShadowManager`
+ [管理本機部署和元件](ipc-local-deployments-components.md) – `aws.greengrass.Cli` v2.6.0 或更新版本
+ [驗證和授權用戶端裝置](ipc-client-device-auth.md) – v2`aws.greengrass.clientdevices.Auth`.2.0 或更新版本

### java.io.FileNotFoundException: <stream-manager-store-root-dir>/stream\$1manager\$1metadata\$1store (Permission denied)
<a name="stream-manager-store-root-folder-not-found"></a>

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

### com.aws.greengrass.security.provider.pkcs11.PKCS11CryptoKeyService: Private key or certificate with label <label> does not exist
<a name="pkcs11-provider-error-private-key-or-certificate-does-not-exist"></a>

當 [PKCS\$111 提供者元件](pkcs11-provider-component.md)找不到或載入您在設定 AWS IoT Greengrass 核心軟體使用[硬體安全模組 (HSM)](hardware-security.md) 時指定的私有金鑰或憑證時，就會發生此錯誤。請執行下列操作：
+ 檢查私有金鑰和憑證是否使用您設定 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>
<a name="secret-manager-error-not-authorized-to-perform-get-secret-value"></a>

當您使用[秘密管理員元件](secret-manager-component.md)來部署 AWS Secrets Manager 秘密時，可能會發生此錯誤。如果核心裝置的[字符交換 IAM 角色](device-service-role.md)未授予取得秘密的許可，則部署會失敗，且 Greengrass 日誌會包含此錯誤。

**授權核心裝置下載秘密**

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

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

   如需詳細資訊，請參閱[授權核心裝置與 AWS 服務互動](device-service-role.md)。

1. 將部署重新套用至核心裝置。執行以下任意一項：
   + 修改部署而不進行任何變更。核心裝置在收到修訂後的部署時，會嘗試再次下載秘密。如需詳細資訊，請參閱[修訂部署](revise-deployments.md)。
   + 重新啟動 AWS IoT Greengrass Core 軟體以重試部署。如需詳細資訊，請參閱[執行 AWS IoT Greengrass 核心軟體](run-greengrass-core-v2.md)

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

### software.amazon.awssdk.services.secretsmanager.model.SecretsManagerException: Access to KMS is not allowed
<a name="secret-manager-error-no-kms-access"></a>

當您使用[秘密管理員元件](secret-manager-component.md)來部署由 金鑰加密的 AWS Secrets Manager AWS Key Management Service 秘密時，可能會發生此錯誤。如果核心裝置的[字符交換 IAM 角色](device-service-role.md)未授予解密秘密的許可，則部署會失敗，且 Greengrass 日誌包含此錯誤。

若要修正此問題，請將 `kms:Decrypt`許可新增至核心裝置的字符交換角色。如需詳細資訊，請參閱下列內容：
+ *AWS Secrets Manager 《 使用者指南*》中的[秘密加密和解密](https://docs.aws.amazon.com/secretsmanager/latest/userguide/security-encryption.html) 
+ [授權核心裝置與 AWS 服務互動](device-service-role.md)

### java.lang.NoClassDefFoundError: com/aws/greengrass/security/CryptoKeySpi
<a name="hardware-security-incompatible-nucleus-version"></a>

當您嘗試安裝具有[硬體安全性](hardware-security.md)的 AWS IoT Greengrass Core 軟體，並使用不支援硬體安全性整合的舊版 Greengrass 核版本時，您可能會看到此錯誤。若要使用硬體安全整合，您必須使用 Greengrass nucleus v2.5.3 或更新版本。

### com.aws.greengrass.security.provider.pkcs11.PKCS11CryptoKeyService: CKR\$1OPERATION\$1NOT\$1INITIALIZED
<a name="ckr-operation-not-initialized"></a>

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

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

如需詳細資訊，請參閱[PKCS\$111 供應商](pkcs11-provider-component.md)元件文件的要求一節。

### Greengrass core device stuck on nucleus v2.12.3
<a name="v2.12.3-revise-deployment"></a>

如果您的 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"
   ```

------

1. 在您的核心裝置上，將 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
   ```

------

1. 將 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
   ```

------

1. 執行下列命令，以 2.12.2 版的 nucleus 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
   ```

------

1. 執行下列命令來啟動 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
<a name="v2.14.0-systemd-template"></a>

如果您在具有預設系統化服務範本的 Linux 裝置上安裝 Greengrass nucleus v2.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
   ```

------

1. 套用變更。

------
#### [ Linux or Unix ]

   ```
   sudo systemctl daemon-reload
   sudo systemctl restart greengrass
   ```

------

## AWS IoT Greengrass 雲端問題
<a name="greengrass-cloud-issues"></a>

使用以下資訊對 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
<a name="cloud-error-create-component-version-not-authorized-to-perform-null"></a>

當您從 AWS IoT Greengrass 主控台或使用 [CreateComponentVersion](https://docs.aws.amazon.com/greengrass/v2/APIReference/API_CreateComponentVersion.html) 操作建立元件版本時，您可能會看到此錯誤。

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

### Invalid Input: Encountered following errors in Artifacts: \$1<s3ArtifactUri> = Specified artifact resource cannot be accessed\$1
<a name="cloud-error-specified-artifact-resource-cannot-be-accessed"></a>

當您從 AWS IoT Greengrass 主控台或使用 [CreateComponentVersion](https://docs.aws.amazon.com/greengrass/v2/APIReference/API_CreateComponentVersion.html) 操作建立元件版本時，您可能會看到此錯誤。此錯誤表示元件配方中的 S3 成品無效。

請執行下列操作：
+ 檢查 S3 儲存貯體是否位於您建立元件 AWS 區域 的相同位置。 AWS IoT Greengrass 不支援元件成品的跨區域請求。
+ 檢查成品 URI 是否為有效的 S3 物件 URL，並檢查該 S3 物件 URL 上是否存在成品。
+ 檢查您的 是否 AWS 帳戶 具有在其 S3 物件 URL 存取成品的許可。

### INACTIVE deployment status
<a name="cloud-error-inactive-deployment"></a>

當您呼叫 [ListDeployments](https://docs.aws.amazon.com/greengrass/v2/APIReference/API_ListDeployments.html) API 而沒有所需的相依 AWS IoT 政策時，您可能會取得`INACTIVE`部署狀態。您必須擁有必要的許可，才能取得準確的部署狀態。您可以在 [定義的動作 AWS IoT Greengrass V2](https://docs.aws.amazon.com/service-authorization/latest/reference/list_awsiotgreengrassv2.html#awsiotgreengrassv2-actions-as-permissions)中尋找相依動作，並遵循 所需的許可`ListDeployments`。如果沒有必要的相依 AWS IoT 許可，您仍然會看到部署狀態，但您可能會看到不正確的部署狀態`INACTIVE`。

## 核心裝置部署問題
<a name="greengrass-core-deployment-issues"></a>

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

**Topics**
+ [Error: com.aws.greengrass.componentmanager.exceptions.PackageDownloadException: Failed to download artifact](#core-error-failed-to-download-artifact-package-download-exception)
+ [Error: com.aws.greengrass.componentmanager.exceptions.ArtifactChecksumMismatchException: Integrity check for downloaded artifact failed. Probably due to file corruption.](#core-error-failed-to-download-artifact-checksum-mismatch-exception)
+ [Error: com.aws.greengrass.componentmanager.exceptions.NoAvailableComponentVersionException: Failed to negotiate component <name> version with cloud and no local applicable version satisfying requirement <requirements>](#core-error-no-available-component-version)
+ [software.amazon.awssdk.services.greengrassv2data.model.ResourceNotFoundException: The latest version of Component <componentName> doesn't claim platform <coreDevicePlatform> compatibility](#deployment-error-no-platform-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](#deployment-error-nucleus-minor-version-update)
+ [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](#deployment-error-unable-to-process-deployment)
+ [Info: com.aws.greengrass.deployment.exceptions.RetryableDeploymentDocumentDownloadException: Greengrass Cloud Service returned an error when getting full deployment configuration](#core-error-getting-full-deployment-configuration)
+ [Warn: com.aws.greengrass.deployment.DeploymentService: Failed to get thing group hierarchy](#core-warning-failed-to-get-thing-group-hierarchy)
+ [Info: com.aws.greengrass.deployment.DeploymentDocumentDownloader: Calling Greengrass cloud to get full deployment configuration](#core-info-repetitive-get-full-deployment-configuration)
+ [Caused by: software.amazon.awssdk.services.greengrassv2data.model.GreengrassV2DataException: null (Service: GreengrassV2Data, Status Code: 403, Request ID: <some\$1request\$1id>, Extended Request ID: null)](#greengrassv2dataexception)

### Error: com.aws.greengrass.componentmanager.exceptions.PackageDownloadException: Failed to download artifact
<a name="core-error-failed-to-download-artifact-package-download-exception"></a>

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

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

**Topics**
+ [software.amazon.awssdk.services.s3.model.S3Exception: null (Service: S3, Status Code: 403, Request ID: null, ...)](#core-error-failed-to-download-artifact-s3-permissions)
+ [software.amazon.awssdk.services.s3.model.S3Exception: Access Denied (Service: S3, Status Code: 403, Request ID: <requestID>](#core-error-failed-to-download-artifact-get-bucket-location-403)

#### software.amazon.awssdk.services.s3.model.S3Exception: null (Service: S3, Status Code: 403, Request ID: null, ...)
<a name="core-error-failed-to-download-artifact-s3-permissions"></a>

[PackageDownloadException 錯誤](#core-error-failed-to-download-artifact-package-download-exception)可能會在下列情況下包含此堆疊追蹤：
+ 元件成品不適用於您在元件配方中指定的 S3 物件 URL。確認您已將成品上傳到 S3 儲存貯體，且成品 URI 符合儲存貯體中成品的 S3 物件 URL。
+ 核心裝置的[字符交換角色](device-service-role.md)不允許 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>
<a name="core-error-failed-to-download-artifact-get-bucket-location-403"></a>

當核心裝置沒有呼叫 的許可時， [PackageDownloadException 錯誤](#core-error-failed-to-download-artifact-package-download-exception)可能包含此堆疊追蹤`s3:GetBucketLocation`。錯誤訊息也包含下列訊息。

```
reason: Failed to determine S3 bucket location
```

檢查核心裝置的[字符交換角色](device-service-role.md)`s3:GetBucketLocation`是否允許 提供成品的 S3 儲存貯體。

### Error: com.aws.greengrass.componentmanager.exceptions.ArtifactChecksumMismatchException: Integrity check for downloaded artifact failed. Probably due to file corruption.
<a name="core-error-failed-to-download-artifact-checksum-mismatch-exception"></a>

當 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>
<a name="core-error-no-available-component-version"></a>

當核心裝置找不到符合該核心裝置部署需求的元件版本時，您可能會看到此錯誤。核心裝置會檢查 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 政策](device-auth.md#greengrass-core-minimal-iot-policy)。

若要解決此問題，請修改部署以包含相容的元件版本或移除不相容的元件版本。如需如何修訂雲端部署的詳細資訊，請參閱 [修訂部署](revise-deployments.md)。如需如何修訂本機部署的詳細資訊，請參閱 [AWS IoT Greengrass CLI 部署建立](gg-cli-deployment.md#deployment-create)命令。

### software.amazon.awssdk.services.greengrassv2data.model.ResourceNotFoundException: The latest version of Component <componentName> doesn't claim platform <coreDevicePlatform> compatibility
<a name="deployment-error-no-platform-compatibility"></a>

當您將元件部署到核心裝置時，您可能會看到此錯誤，而且元件不會列出與核心裝置平台相容的平台。執行以下任意一項：
+ 如果元件是自訂 Greengrass 元件，您可以更新元件，使其與核心裝置相容。新增符合核心裝置平台的新資訊清單，或更新現有資訊清單以符合核心裝置的平台。如需詳細資訊，請參閱[AWS IoT Greengrass 元件配方參考](component-recipe-reference.md)。
+ 如果元件是由 提供 AWS，請檢查另一個版本的元件是否與核心裝置相容。如果沒有相容版本，[AWS re:Post](https://repost.aws/)請使用 [AWS IoT Greengrass 標籤](https://repost.aws/tags/TA4ckIed1sR4enZBey29rKTg/aws-io-t-greengrass)聯絡我們，或聯絡 [支援](https://aws.amazon.com/contact-us/)。

### 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
<a name="deployment-error-nucleus-minor-version-update"></a>

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

您必須[修改部署](revise-deployments.md)，以指定要使用的 Greengrass 核版本。執行以下任意一項：
+ 修改部署以指定核心裝置目前執行的 Greengrass 核版本。
+ 修改部署以指定 Greengrass 核的較新次要版本。如果您選擇此選項，您還必須更新所有 AWS提供的元件版本，這些元件取決於 Greengrass 核的特定次要版本。如需詳細資訊，請參閱[AWS提供的元件](public-components.md)。

### 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
<a name="deployment-error-unable-to-process-deployment"></a>

當您將 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
<a name="core-error-getting-full-deployment-configuration"></a>

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

若要解決此問題，請將 `greengrass:GetDeploymentConfiguration`許可新增至核心裝置的 AWS IoT 政策。如需詳細資訊，請參閱[更新核心裝置的 AWS IoT 政策](device-auth.md#update-core-device-iot-policy)。

### Warn: com.aws.greengrass.deployment.DeploymentService: Failed to get thing group hierarchy
<a name="core-warning-failed-to-get-thing-group-hierarchy"></a>

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

若要更新核心裝置的行為以移除您移除核心裝置之物件群組的元件，請將 `greengrass:ListThingGroupsForCoreDevice`許可新增至核心裝置 AWS IoT 的政策。如需詳細資訊，請參閱[更新核心裝置的 AWS IoT 政策](device-auth.md#update-core-device-iot-policy)。

### Info: com.aws.greengrass.deployment.DeploymentDocumentDownloader: Calling Greengrass cloud to get full deployment configuration
<a name="core-info-repetitive-get-full-deployment-configuration"></a>

您可能會在未發生錯誤的情況下多次看到此資訊訊息，因為核心裝置會在`DEBUG`日誌層級記錄錯誤。當核心裝置收到大型部署文件時，可能會發生此問題。發生此問題時，部署會無限期重試，且其狀態為**進行中 **(`IN_PROGRESS`)。如需如何解決此問題的詳細資訊，請參閱[此故障診斷項目](#core-error-getting-full-deployment-configuration)。

### Caused by: software.amazon.awssdk.services.greengrassv2data.model.GreengrassV2DataException: null (Service: GreengrassV2Data, Status Code: 403, Request ID: <some\$1request\$1id>, Extended Request ID: null)
<a name="greengrassv2dataexception"></a>

當資料平面 API 沒有`iot:Connect`許可時，您可能會看到此錯誤。如果您沒有正確的政策，您將會收到 `GreengrassV2DataException: 403`。若要建立許可政策，請遵循下列指示：[建立 AWS IoT 政策](fleet-provisioning-setup.md#create-iot-policy)。

## 核心裝置元件問題
<a name="greengrass-core-component-issues"></a>

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

**Topics**
+ [Warn: '<command>' is not recognized as an internal or external command](#component-warn-command-not-recognized)
+ [Python 指令碼不會記錄訊息](#python-component-no-log-output)
+ [變更預設組態時，元件組態不會更新](#update-component-configuration-to-default-configuration)
+ [awsiot.greengrasscoreipc.model.UnauthorizedError](#ipc-unauthorized-error)
+ [com.aws.greengrass.authorization.exceptions.AuthorizationException: Duplicate policy ID "<id>" for principal "<componentList>"](#ipc-duplicate-authorization-policy-ids)
+ [com.aws.greengrass.tes.CredentialRequestHandler: Error in retrieving AwsCredentials from TES (HTTP 400)](#token-exchange-service-credentials-http-400)
+ [com.aws.greengrass.tes.CredentialRequestHandler: Error in retrieving AwsCredentials from TES (HTTP 403)](#token-exchange-service-credentials-http-403)
+ [com.aws.greengrass.tes.CredentialsProviderError: Could not load credentials from any providers](#token-exchange-service-credentials-provider-error)
+ [Received error when attempting to retrieve ECS metadata: Could not connect to the endpoint URL: "<tokenExchangeServiceEndpoint>"](#token-exchange-service-not-running)
+ [copyFrom: <configurationPath> is already a container, not a leaf](#configuration-key-is-container-cannot-become-leaf)
+ [com.aws.greengrass.componentmanager.plugins.docker.exceptions.DockerLoginException: Error logging into the registry using credentials - 'The stub received bad data.'](#docker-login-stub-received-bad-data)
+ [java.io.IOException: Cannot run program "cmd" ...: [LogonUser] The password for this account has expired.](#windows-account-password-expired)
+ [aws.greengrass.StreamManager: Instant exceeds minimum or maximum instant](#stream-manager-instant-exceeds-maximun-minimum)

### Warn: '<command>' is not recognized as an internal or external command
<a name="component-warn-command-not-recognized"></a>

當 AWS IoT Greengrass 核心軟體無法在元件的生命週期指令碼中執行命令時，您可能會在 Greengrass 元件的日誌中看到此錯誤。由於此錯誤`BROKEN`，元件的狀態會變成 。如果執行 元件的系統使用者，例如 `ggc_user`，在 [PATH](https://en.wikipedia.org/wiki/PATH_(variable)) 的資料夾中找不到命令的可執行檔，則可能會發生此錯誤。

在 Windows 裝置上，檢查包含可執行檔的資料夾是否位於執行元件之`PATH`系統使用者的 中。如果 遺失，`PATH`請執行下列其中一項操作：
+ 將可執行檔的資料夾新增至可供所有使用者使用的 `PATH` 系統變數。然後，重新啟動元件。

  如果您執行 Greengrass 核 2.5.0，在更新`PATH`系統變數之後，您必須重新啟動 AWS IoT Greengrass Core 軟體，以使用更新的 執行元件`PATH`。如果 AWS IoT Greengrass 核心軟體在您重新啟動軟體`PATH`後未使用更新的 ，請重新啟動裝置，然後再試一次。如需詳細資訊，請參閱[執行 AWS IoT Greengrass 核心軟體](run-greengrass-core-v2.md)。
+ 將可執行檔的資料夾新增至執行元件之系統使用者`PATH`的使用者變數。

### Python 指令碼不會記錄訊息
<a name="python-component-no-log-output"></a>

Greengrass 核心裝置會收集日誌，供您用來識別元件的問題。如果您的 Python 指令碼`stdout`和`stderr`訊息未出現在元件日誌中，您可能需要在 Python 中清除緩衝或停用這些標準輸出串流的緩衝。執行下列任何一項：
+ 使用 [-u](https://docs.python.org/3/using/cmdline.html#cmdoption-u) 引數執行 Python，以在 `stdout`和 上停用緩衝`stderr`。

------
#### [ Linux or Unix ]

  ```
  python3 -u hello_world.py
  ```

------
#### [ Windows ]

  ```
  py -3 -u hello_world.py
  ```

------
+ 在元件的配方中使用 [Setenv](component-recipe-reference.md#lifecycle-setenv-definition)，將 [PYTHONUNBUFFERED](https://docs.python.org/3/using/cmdline.html#envvar-PYTHONUNBUFFERED) 環境變數設定為非空白字串。此環境變數會在 `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 日誌](monitor-logs.md)。

### 變更預設組態時，元件組態不會更新
<a name="update-component-configuration-to-default-configuration"></a>

當您在元件的配方`DefaultConfiguration`中變更 時，新的預設組態不會在部署期間取代元件的現有組態。若要套用新的預設組態，您必須將元件的組態重設為其預設設定。部署元件時，請指定單一空字串做為[重設更新](update-component-configurations.md#reset-configuration-update)。

------
#### [ 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](greengrass-cli-component.md) 命令會在核心裝置上建立本機部署。

```
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
<a name="ipc-unauthorized-error"></a>

當元件沒有對資源執行 IPC 操作的許可時，您可能會在 Greengrass 元件的日誌中看到此錯誤。若要授予元件呼叫 IPC 操作的許可，請在元件的組態中定義 IPC 授權政策。如需詳細資訊，請參閱[授權元件執行 IPC 操作](interprocess-communication.md#ipc-authorization-policies)。

**提示**  <a name="tip-reset-configuration-to-apply-new-default-configuration"></a>
如果您在元件的配方`DefaultConfiguration`中變更 ，則必須將元件的組態重設為其新的預設組態。部署元件時，請指定單一空白字串做為[重設更新](update-component-configurations.md#reset-configuration-update)。如需詳細資訊，請參閱[變更預設組態時，元件組態不會更新](#update-component-configuration-to-default-configuration)。

### com.aws.greengrass.authorization.exceptions.AuthorizationException: Duplicate policy ID "<id>" for principal "<componentList>"
<a name="ipc-duplicate-authorization-policy-ids"></a>

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

請檢查元件的 IPC 授權政策、修正任何重複項目，然後再試一次。若要建立唯一的政策 IDs，建議您結合元件名稱、IPC 服務名稱和計數器。如需詳細資訊，請參閱[授權元件執行 IPC 操作](interprocess-communication.md#ipc-authorization-policies)。

**提示**  <a name="tip-reset-configuration-to-apply-new-default-configuration"></a>
如果您在元件的配方`DefaultConfiguration`中變更 ，則必須將元件的組態重設為其新的預設組態。部署元件時，請指定單一空白字串做為[重設更新](update-component-configurations.md#reset-configuration-update)。如需詳細資訊，請參閱[變更預設組態時，元件組態不會更新](#update-component-configuration-to-default-configuration)。

### com.aws.greengrass.tes.CredentialRequestHandler: Error in retrieving AwsCredentials from TES (HTTP 400)
<a name="token-exchange-service-credentials-http-400"></a>

當核心裝置無法從[字符交換服務](interact-with-aws-services.md)取得 AWS 登入資料時，您可能會看到此錯誤。HTTP 400 狀態碼表示此錯誤是因為核心裝置的[字符交換 IAM 角色](device-service-role.md)不存在，或沒有允許 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"
     }
   }
   ```

1. 檢查角色是否存在。執行下列命令，並以字符交換角色的名稱取代 *MyGreengrassV2TokenExchangeRole*。

   ```
   aws iam get-role --role-name MyGreengrassV2TokenExchangeRole
   ```

   如果命令傳回`NoSuchEntity`錯誤，則角色不存在，您必須建立該角色。如需如何建立和設定此角色的詳細資訊，請參閱 [授權核心裝置與 AWS 服務互動](device-service-role.md)。

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

------
#### [ JSON ]

****  

   ```
   {
     "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 使用者指南*中的[修改角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_modify.html)。

### com.aws.greengrass.tes.CredentialRequestHandler: Error in retrieving AwsCredentials from TES (HTTP 403)
<a name="token-exchange-service-credentials-http-403"></a>

當核心裝置無法從[字符交換服務](interact-with-aws-services.md)取得 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 政策](device-auth.md#greengrass-core-minimal-iot-policy)和 [更新核心裝置的 AWS IoT 政策](device-auth.md#update-core-device-iot-policy)。

### com.aws.greengrass.tes.CredentialsProviderError: Could not load credentials from any providers
<a name="token-exchange-service-credentials-provider-error"></a>

當元件嘗試請求 AWS 登入資料且無法連線至[字符交換服務](interact-with-aws-services.md)時，您可能會看到此錯誤。

請執行下列操作：
+ 檢查元件是否宣告對字符交換服務元件 的相依性`aws.greengrass.TokenExchangeService`。如果沒有，請新增相依性並重新部署元件。
+ 如果元件在 Docker 中執行，請確定您根據 套用正確的網路設定和環境變數[在 Docker 容器元件 (Linux) 中使用 AWS 登入資料](run-docker-container.md#docker-container-token-exchange-service)。
+ 如果元件是以 NodeJS 撰寫，請將 [dns.setDefaultResultOrder](https://nodejs.org/docs/latest/api/dns.html#dnssetdefaultresultorderorder) 設定為 **ipv4first**。
+ 檢查`/etc/hosts`是否有開頭為 `::1`且包含 的項目`localhost`。移除項目，以查看是否導致元件連接到錯誤地址的字符交換服務。

### Received error when attempting to retrieve ECS metadata: Could not connect to the endpoint URL: "<tokenExchangeServiceEndpoint>"
<a name="token-exchange-service-not-running"></a>

當元件未執行[字符交換服務](interact-with-aws-services.md)，且元件嘗試請求 AWS 登入資料時，您可能會看到此錯誤。

請執行下列操作：
+ 檢查元件是否宣告對字符交換服務元件 的相依性`aws.greengrass.TokenExchangeService`。如果沒有，請新增相依性並重新部署元件。
+ 檢查元件是否在其`install`生命週期中使用 AWS 登入資料。 AWS IoT Greengrass 在`install`生命週期期間， 不保證字符交換服務的可用性。更新元件以將使用 AWS 登入資料之程式碼移至 `startup`或 `run`生命週期，然後重新部署元件。

### copyFrom: <configurationPath> is already a container, not a leaf
<a name="configuration-key-is-container-cannot-become-leaf"></a>

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

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

1. 建立部署，將該組態值重設為其預設值。如需詳細資訊，請參閱[建立部署](create-deployments.md)及[更新元件組態](update-component-configurations.md)。

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

### com.aws.greengrass.componentmanager.plugins.docker.exceptions.DockerLoginException: Error logging into the registry using credentials - 'The stub received bad data.'
<a name="docker-login-stub-received-bad-data"></a>

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

採取下列其中一個動作：
+ 如果您不使用 `wincred` Docker 登入資料協助程式，請從核心裝置移除`docker-credential-wincred`程式。
+ 如果您使用 `wincred` Docker 登入資料協助程式，請執行下列動作：

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

  1. 更新 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.
<a name="windows-account-password-expired"></a>

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

**更新 Greengrass 系統使用者的密碼**

1. 以管理員身分執行下列命令，以設定使用者的密碼。將 *ggc\$1user* 取代為系統使用者，並將*密碼*取代為要設定的密碼。

   ```
   net user ggc_user password
   ```

1. 使用 [PsExec 公用程式](https://docs.microsoft.com/en-us/sysinternals/downloads/psexec)，將使用者的新密碼存放在 LocalSystem 帳戶的 Credential Manager 執行個體中。將*密碼*取代為您設定的使用者密碼。

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

**提示**  <a name="windows-password-expiration-tip"></a>
根據您的 Windows 組態，使用者的密碼可能會設定為在未來的日期過期。為了確保您的 Greengrass 應用程式持續運作，請追蹤密碼過期的時間，並在過期之前更新它。您也可以將使用者的密碼設定為永不過期。  
若要檢查使用者及其密碼何時過期，請執行下列命令。  

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

  ```
  wmic UserAccount where "Name='ggc_user'" set PasswordExpires=False
  ```
如果您使用的是[`wmic`已棄用命令](https://learn.microsoft.com/en-us/windows/win32/wmisdk/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
<a name="stream-manager-instant-exceeds-maximun-minimum"></a>

當您將串流管理員 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。如需串流管理員元件的詳細資訊，請參閱 [串流管理員](stream-manager-component.md)。

## 核心裝置 Lambda 函數元件問題
<a name="greengrass-core-lambda-function-issues"></a>

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

**Topics**
+ [The following cgroup subsystems are not mounted: devices, memory](#lambda-cgroups-not-mounted)
+ [ipc\$1client.py:64,HTTP Error 400:Bad Request, b'No subscription exists for the source <label-or-lambda-arn> and subject <label-or-lambda-arn>](#v1-lambda-no-subscription-exists)

### The following cgroup subsystems are not mounted: devices, memory
<a name="lambda-cgroups-not-mounted"></a>

在下列情況下，當您執行容器化 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\$1client.py:64,HTTP Error 400:Bad Request, b'No subscription exists for the source <label-or-lambda-arn> and subject <label-or-lambda-arn>
<a name="v1-lambda-no-subscription-exists"></a>

當您在 V2 核心裝置上執行使用 核心 SDK 的 V1 Lambda 函數時，您可能會看到此錯誤，而無需在[舊版訂閱路由器元件中指定訂閱](legacy-subscription-router-component.md)。 AWS IoT Greengrass V2 若要修正此問題，請部署並設定舊版訂閱路由器以指定必要的訂閱。如需詳細資訊，請參閱[匯入 V1 Lambda 函數](set-up-v2-test-device.md#run-v1-lambda-functions)。

## 元件版本已停止
<a name="discontinued-component-version"></a>

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

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

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

   ```
   aws greengrassv2 list-core-devices
   ```

1. 執行下列命令，從步驟 1 擷取每個核心裝置上的元件狀態。`coreDeviceName` 將 取代為要查詢的每個核心裝置的名稱。

   ```
   aws greengrassv2 list-installed-components --core-device-thing-name coreDeviceName
   ```

1. 使用從先前步驟安裝的已停止元件版本來收集核心裝置。

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

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

   回應包含核心裝置的部署任務清單。您可以修改部署，以選擇另一個元件版本。如需如何修訂部署的詳細資訊，請參閱[修訂部署](https://docs.aws.amazon.com/greengrass/v2/developerguide/revise-deployments.html)。

## Greengrass 命令列界面問題
<a name="greengrass-cli-issues"></a>

針對 [Greengrass CLI ](gg-cli.md)的問題進行故障診斷。

**Topics**
+ [java.lang.RuntimeException: Unable to create ipc client](#greengrass-cli-unable-to-create-ipc-client)

### java.lang.RuntimeException: Unable to create ipc client
<a name="greengrass-cli-unable-to-create-ipc-client"></a>

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

執行下列其中一項操作來設定根路徑，並將 取代`/greengrass/v2`為 AWS IoT Greengrass Core 軟體安裝的路徑：<a name="greengrass-cli-set-root-path"></a>
+ 將 `GGC_ROOT_PATH` 環境變數設為 `/greengrass/v2`。
+ 將 `--ggcRootPath /greengrass/v2` 引數新增至命令，如下列範例所示。

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

## AWS Command Line Interface 問題
<a name="aws-cli-issues"></a>

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

**Topics**
+ [Error: Invalid choice: 'greengrassv2'](#aws-cli-invalid-choice-greengrassv2)

### Error: Invalid choice: 'greengrassv2'
<a name="aws-cli-invalid-choice-greengrassv2"></a>

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

此錯誤表示您有不支援的 AWS CLI 版本 AWS IoT Greengrass V2。若要 AWS IoT Greengrass V2 搭配 使用 AWS CLI，您必須具有下列其中一個版本或更新版本：<a name="minimum-aws-cli-versions"></a>
+ Minimum AWS CLI V1 版本：v1.18.197
+ Minimum AWS CLI V2 版本：v2.1.11

**提示**  <a name="tip-check-aws-cli-version"></a>
您可以執行下列命令來檢查 AWS CLI 您擁有的 版本。  

```
aws --version
```

若要解決此問題，請將 更新 AWS CLI 為 支援的更新版本 AWS IoT Greengrass V2。如需詳細資訊，請參閱*AWS Command Line Interface 《 使用者指南*》中的[安裝、更新和解除安裝 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) 。

# 詳細部署錯誤代碼
<a name="troubleshooting-deployment"></a>

使用這些區段中的錯誤代碼和解決方案，以協助解決使用 Greengrass 核 2.8.0 版或更新版本時元件部署的問題。

Greengrass 核會將部署錯誤報告為從最不特定到最特定可用程式碼的階層。您可以使用此階層來協助找出部署錯誤的原因。例如，下列是可能的錯誤階層：
+ DEPLOYMENT\$1FAILURE
  + ARTIFACT\$1DOWNLOAD\$1ERROR
    + IO\$1ERROR
      + DISK\$1SPACE\$1CRITICAL

錯誤代碼會依類型整理。每種類型都代表可能發生的錯誤類別。 會在主控台、API 和 中 AWS IoT Greengrass 報告這些錯誤類型 AWS CLI。根據錯誤階層中報告的錯誤，可能會有多個錯誤類型。針對上述範例，傳回的錯誤類型為 `DEVICE_ERROR`。

類型為：
+ **PERMISSION\$1ERROR** – 存取需要 許可的操作遭拒。
+ **REQUEST\$1ERROR** – 由於部署文件中的問題而發生錯誤。
+ **COMPONENT\$1RECIPE\$1ERROR** – 由於元件配方中的問題而發生錯誤。
+ **AWS\$1COMPONENT\$1ERROR** – 啟動或移除 AWS 提供的元件時發生錯誤。
+ **USER\$1COMPONENT\$1ERROR** – 啟動或移除使用者元件時發生錯誤。
+ **COMPONENT\$1ERROR** – 啟動或移除元件時發生錯誤，但 Greengrass 核無法判斷元件是 AWS 提供的元件還是使用者元件。
+ **DEVICE\$1ERROR** – 本機 I/O 發生錯誤或發生另一個裝置錯誤。
+ **DEPENDENCY\$1ERROR** – 部署無法從 Amazon S3 下載成品，或無法從 ECR 登錄檔提取映像。
+ **HTTP\$1ERROR** – HTTP 請求發生錯誤。
+ **NETWORK\$1ERROR** – 裝置網路發生錯誤。
+ **NUCLEUS\$1ERROR** – Greengrass 核找不到元件或找不到作用中的核版本。
+ **SERVER\$1ERROR** – 伺服器傳回 500 錯誤以回應請求。
+ **CLOUD\$1SERVICE\$1ERROR** – AWS IoT Greengrass 雲端服務發生錯誤。
+ **UNKNOWN\$1ERROR** – 元件擲回未檢查的例外狀況。

本節中的許多錯誤會報告 AWS IoT Greengrass 核心日誌中的其他資訊。這些日誌存放在核心裝置的本機檔案系統上。 AWS IoT Greengrass 核心軟體和每個個別元件都有日誌。如需存取日誌的資訊，請參閱 [存取檔案系統日誌](monitor-logs.md#access-local-logs)。

## 許可錯誤
<a name="permission-error"></a>

ACCESS\$1DENIED  
當 AWS 服務操作傳回 403 錯誤時，您可能會收到此錯誤，因為未正確設定許可。如需詳細資訊，請檢查更具體的錯誤代碼。

GET\$1DEPLOYMENT\$1CONFIGURATION\$1ACCESS\$1DENIED  
當 AWS IoT 政策不允許呼叫 `GetDeploymentConfiguration`操作的許可時，您可能會收到此錯誤。將 `greengrass::GetDeploymentConfiguration` 許可新增至核心裝置的政策。

GET\$1COMPONENT\$1VERSION\$1ARTIFACT\$1ACCESS\$1DENIED  
當核心裝置 AWS IoT 政策不允許 `greengrass:GetComponentVersionArtifact`許可時，您可能會收到此錯誤。將 許可新增至核心裝置的政策。

RESOLVE\$1COMPONENT\$1CANDIDATES\$1ACCESS\$1DENIED  
當核心裝置 AWS IoT 政策不允許 `greengrass:ResolveComponentCandidates`許可時，您可能會收到此錯誤。將 許可新增至核心裝置的政策。

GET\$1ECR\$1CREDENTIAL\$1ERROR  
當部署無法透過 ECR 中的私有登錄檔進行身分驗證時，您可能會收到此錯誤。檢查日誌是否有特定錯誤，然後再次嘗試部署。

USER\$1NOT\$1AUTHORIZED\$1FOR\$1DOCKER  
當 Greengrass 使用者未獲授權使用 Docker 時，您可能會收到此錯誤。請確定您以根身分執行 Greengrass，或使用者已新增至`docker`群組。然後再次嘗試部署。

S3\$1ACCESS\$1DENIED  
當 Amazon S3 操作傳回 403 錯誤時，您可能會收到此錯誤。如需詳細資訊，請檢查任何其他錯誤代碼或日誌。

S3\$1HEAD\$1OBJECT\$1ACCESS\$1DENIED  
當裝置的字符交換角色不允許 AWS IoT Greengrass Core 軟體從您在元件配方中指定的 S3 物件 URL 下載元件成品，或元件成品無法使用時，您可能會收到此錯誤。檢查權杖交換角色`s3:GetObject`是否允許使用成品可用的 S3 物件 URL，以及成品是否存在。

S3\$1GET\$1BUCKET\$1LOCATION\$1ACCESS\$1DENIED  
當裝置的字符交換角色不允許提供成品的 Amazon S3 儲存貯體的`s3:GetBucketLocation`許可時，您可能會收到此錯誤。檢查裝置的 是否允許 許可，然後再次嘗試部署。

S3\$1GET\$1OBJECT\$1ACCESS\$1DENIED  
當裝置的字符交換角色不允許 AWS IoT Greengrass Core 軟體從您在元件配方中指定的 S3 物件 URL 下載元件成品，或元件成品無法使用時，您可能會收到此錯誤。檢查權杖交換角色`s3:GetObject`是否允許使用成品可用的 S3 物件 URL，以及成品是否存在。

## 請求錯誤
<a name="request-error"></a>

NUCLEUS\$1MISSING\$1REQUIRED\$1CAPABILITIES  
當部署中的核版本無法執行請求的操作時，您可能會收到此錯誤，例如下載大型組態或設定 Linux 資源限制。使用支援 操作的 nucleus 版本重試部署。

MULTIPLE\$1NUCLEUS\$1RESOLVED\$1ERROR  
部署嘗試部署多個核心元件時，您可能會收到此錯誤。檢查日誌以查看錯誤的原因，然後檢查 nucleus 軟體更新頁面，查看此問題是否已在更新版本的 nucleus 中修正，或聯絡 支援。

COMPONENT\$1CIRCULAR\$1DEPENDENCY\$1ERROR  
當部署中的兩個元件彼此相依時，您可能會收到此錯誤。修改元件設定，讓部署中的元件不會彼此依賴。

UNAUTHORIZED\$1NUCLEUS\$1MINOR\$1VERSION\$1UPDATE  
當部署中的元件需要更新核心次要版本，但未在部署中指定該版本時，您可能會收到此錯誤。這有助於減少相依於不同版本的元件意外次要版本更新。在部署中包含新的次要核心版本。

MISSING\$1DOCKER\$1APPLICATION\$1MANAGER  
當您在不部署 Docker 應用程式管理員的情況下部署 Docker 元件時，可能會收到此錯誤。請確定您的部署包含 Docker 應用程式管理員。

MISSING\$1TOKEN\$1EXCHANGE\$1SERVICE  
當部署想要從私有 ECR 登錄檔下載 Docker 映像成品而不部署字符交換服務時，您可能會收到此錯誤。請確定您的部署包含權杖交換服務。

COMPONENT\$1VERSION\$1REQUIREMENTS\$1NOT\$1MET  
當版本限制衝突或元件版本不存在時，您可能會收到此錯誤。如需詳細資訊，請參閱[Error: com.aws.greengrass.componentmanager.exceptions.NoAvailableComponentVersionException: Failed to negotiate component <name> version with cloud and no local applicable version satisfying requirement <requirements>](troubleshooting.md#core-error-no-available-component-version)。

THROTTLING\$1ERROR  
當 AWS 服務操作超過速率配額時，您可能會收到此錯誤。重新嘗試部署。

CONFLICTED\$1REQUEST  
當 AWS 服務操作傳回 409 錯誤時，您可能會收到此錯誤，因為您部署嘗試一次執行多個操作。重新嘗試部署。

RESOURCE\$1NOT\$1FOUND  
當 AWS 服務操作傳回 404 錯誤時，您可能會收到此錯誤，因為找不到資源。檢查日誌是否有遺失的資源。

RUN\$1WITH\$1CONFIG\$1NOT\$1VALID  
當指定執行元件的 `posixUser`、 `posixGroup`或 `windowsUser`資訊無效時，您可能會收到此錯誤。檢查使用者是否有效，然後重試部署。

UNSUPPORTED\$1REGION  
當 不支援為部署指定的區域時，您可能會收到此錯誤 AWS IoT Greengrass。請檢查 區域，然後再試一次部署。

IOT\$1CRED\$1ENDPOINT\$1NOT\$1VALID  
當組態中指定的 AWS IoT 登入資料端點無效時，您可能會收到此錯誤。請檢查端點，然後再試一次您的請求。

IOT\$1DATA\$1ENDPOINT\$1NOT\$1VALID  
當組態中指定的 AWS IoT 資料端點無效時，您可能會收到此錯誤。請檢查端點，然後再試一次您的請求。

S3\$1HEAD\$1OBJECT\$1RESOURCE\$1NOT\$1FOUND  
當您在元件配方中指定的 S3 物件 URL 無法使用元件成品時，您可能會收到此錯誤。確認您已將成品上傳到 S3 儲存貯體，且成品 URI 符合儲存貯體中成品的 S3 物件 URL。

S3\$1GET\$1BUCKET\$1LOCATION\$1RESOURCE\$1NOT\$1FOUND  
找不到 Amazon S3 儲存貯體時，您可能會收到此錯誤。檢查儲存貯體是否存在，然後重試部署。

S3\$1GET\$1OBJECT\$1RESOURCE\$1NOT\$1FOUND  
當您在元件配方中指定的 S3 物件 URL 無法使用元件成品時，您可能會收到此錯誤。確認您已將成品上傳到 S3 儲存貯體，且成品 URI 符合儲存貯體中成品的 S3 物件 URL。

IO\$1MAPPING\$1ERROR  
當剖析部署文件或配方時發生 I/O 錯誤時，您可能會收到此錯誤。如需詳細資訊，請檢查任何其他錯誤代碼或日誌。

## 元件配方錯誤
<a name="component-recipe-error"></a>

RECIPE\$1PARSE\$1ERROR  
當因為配方的結構發生錯誤而無法剖析部署配方時，您可能會收到此錯誤。檢查配方的格式是否正確，然後重試部署。

RECIPE\$1METADATA\$1PARSE\$1ERROR  
當無法剖析從雲端下載的部署配方中繼資料時，您可能會收到此錯誤。聯絡 支援。

ARTIFACT\$1URI\$1NOT\$1VALID  
當配方中的成品 URI 格式不正確時，您可能會收到此錯誤。檢查日誌中是否有無效 URI、更新配方中的 URI，然後再次嘗試部署。

S3\$1ARTIFACT\$1URI\$1NOT\$1VALID  
當配方中成品的 Amazon S3 URI 無效時，您可能會收到此錯誤。檢查日誌中是否有無效 URI、更新配方中的 URI，然後再次嘗試部署。

DOCKER\$1ARTIFACT\$1URI\$1NOT\$1VALID  
當配方中成品的 Docker URI 無效時，您可能會收到此錯誤。檢查日誌中是否有無效 URI、更新配方中的 URI，然後再次嘗試部署。

EMPTY\$1ARTIFACT\$1URI  
當配方中未指定成品的 URI 時，您可能會收到此錯誤。檢查日誌中是否有缺少 URI 的成品、更新配方中的 URI，然後再次嘗試部署。

EMPTY\$1ARTIFACT\$1SCHEME  
當未為成品定義 URI 結構描述時，您可能會收到此錯誤。檢查日誌中是否有無效 URI、更新配方中的 URI，然後再次嘗試部署。

UNSUPPORTED\$1ARTIFACT\$1SCHEME  
當執行中的 nucleus 版本不支援 URI 結構描述時，您可能會收到此錯誤。URI 無效，或者您需要更新 nucleus 版本。如果 URI 無效，請檢查無效 URI 的日誌、更新配方中的 URI，然後再次嘗試部署。

RECIPE\$1MISSING\$1MANIFEST  
當資訊清單區段未包含在配方中時，您可能會收到此錯誤。將資訊清單新增至配方，然後再次嘗試部署。

RECIPE\$1MISSING\$1ARTIFACT\$1HASH\$1ALGORITHM  
在沒有雜湊演算法的配方中指定非本機成品時，您可能會收到此錯誤。將演算法新增至成品，然後再試一次請求。

ARTIFACT\$1CHECKSUM\$1MISMATCH  
當下載的成品與配方中指定的摘要不同時，您可能會收到此錯誤。請確定配方包含正確的摘要，然後再次嘗試部署。如需更多資訊，請參閱[Error: com.aws.greengrass.componentmanager.exceptions.ArtifactChecksumMismatchException: Integrity check for downloaded artifact failed. Probably due to file corruption.](troubleshooting.md#core-error-failed-to-download-artifact-checksum-mismatch-exception)。

COMPONENT\$1DEPENDENCY\$1NOT\$1VALID  
當部署配方中指定的相依性類型無效時，您可能會收到此錯誤。請檢查配方，然後再試一次您的請求。

CONFIG\$1INTERPOLATE\$1ERROR  
插入配方變數時，您可能會收到此錯誤。如需詳細資訊，請檢查日誌。

IO\$1MAPPING\$1ERROR  
當剖析部署文件或配方時發生 I/O 錯誤時，您可能會收到此錯誤。如需詳細資訊，請檢查任何其他錯誤代碼或日誌。

## AWS 元件錯誤、使用者元件錯誤、元件錯誤
<a name="component-error"></a>

當元件發生問題時，會傳回下列錯誤代碼。報告的實際錯誤類型取決於引發錯誤的特定元件。如果 Greengrass 核將元件識別為 提供的元件 AWS IoT Greengrass，則會傳回 `AWS_COMPONENT_ERROR`。如果將元件識別為使用者元件，Greengrass 核會傳回 `USER_COMPONENT_ERROR`。如果 Greengrass 核無法告知，則會傳回 `COMPONENT_ERROR`。

COMPONENT\$1UPDATE\$1ERROR  
當元件在部署期間未更新時，您可能會收到此錯誤。檢查任何其他錯誤代碼或檢查日誌，以查看造成錯誤的原因。

COMPONENT\$1BROKEN  
當元件在部署期間損壞時，您可能會收到此錯誤。檢查元件日誌以取得錯誤詳細資訊，然後再次嘗試部署。

REMOVE\$1COMPONENT\$1ERROR  
當核心無法在部署期間移除元件時，您可能會收到此錯誤。請檢查日誌以取得錯誤詳細資訊，然後再次嘗試部署。

COMPONENT\$1BOOTSTRAP\$1TIMEOUT  
當元件的引導任務花費超過設定的逾時時間時，您可能會收到此錯誤。增加逾時或縮短引導任務的執行時間，然後再次嘗試部署。

COMPONENT\$1BOOTSTRAP\$1ERROR  
當元件的引導任務發生錯誤時，您可能會收到此錯誤。請檢查日誌以取得錯誤詳細資訊，然後再次嘗試部署。

COMPONENT\$1CONFIGURATION\$1NOT\$1VALID  
當核心無法驗證元件的部署組態時，您可能會收到此錯誤。請檢查日誌以取得錯誤詳細資訊，然後再次嘗試部署。

## 裝置錯誤
<a name="device-error"></a>

IO\$1WRITE\$1ERROR  
寫入檔案時，您可能會收到此錯誤。如需詳細資訊，請檢查日誌。

IO\$1READ\$1ERROR  
從檔案讀取時，您可能會收到此錯誤。如需詳細資訊，請檢查日誌。

DISK\$1SPACE\$1CRITICAL  
當磁碟空間不足而無法完成部署請求時，您可能會收到此錯誤。您必須擁有至少 20 Mb 的可用空間，或足以容納較大的成品。釋放一些磁碟空間，然後重試部署。

IO\$1FILE\$1ATTRIBUTE\$1ERROR  
當無法從檔案系統擷取現有檔案大小時，您可能會收到此錯誤。如需詳細資訊，請檢查日誌。

SET\$1PERMISSION\$1ERROR  
當無法在下載的成品或成品目錄上設定許可時，您可能會收到此錯誤。如需詳細資訊，請檢查日誌。

IO\$1UNZIP\$1ERROR  
當成品無法解壓縮時，您可能會收到此錯誤。如需詳細資訊，請檢查日誌。

LOCAL\$1RECIPE\$1NOT\$1FOUND  
找不到配方檔案的本機副本時，您可能會收到此錯誤。再次嘗試部署。

LOCAL\$1RECIPE\$1CORRUPTED  
當配方的本機複本自下載以來已變更時，您可能會收到此錯誤。刪除配方的現有副本，然後重試部署。

LOCAL\$1RECIPE\$1METADATA\$1NOT\$1FOUND  
找不到配方中繼資料檔案的本機副本時，您可能會收到此錯誤。再次嘗試部署。

LAUNCH\$1DIRECTORY\$1CORRUPTED  
當用於啟動 Greengrass 核的目錄 (`/greengrass/v2/alts/current`) 自上次啟動核之後已經過修改時，您可能會收到此錯誤。重新啟動核心，然後重試部署。

HASHING\$1ALGORITHM\$1UNAVAILABLE  
當裝置的 Java 分佈不支援所需的雜湊演算法，或元件配方中指定的雜湊演算法無效時，您可能會收到此錯誤。

DEVICE\$1CONFIG\$1NOT\$1VALID\$1FOR\$1ARTIFACT\$1DOWNLOAD  
當裝置組態發生錯誤，導致部署無法從 Amazon S3 或 Greengrass 雲端下載成品時，您可能會收到此錯誤。檢查日誌是否有特定的組態錯誤，然後重試部署。

## 相依性錯誤
<a name="dependency-error"></a>

DOCKER\$1ERROR  
您可能會在提取 Docker 映像時收到此錯誤。如需詳細資訊，請檢查任何其他錯誤代碼或日誌。

DOCKER\$1SERVICE\$1UNAVAILABLE  
當 Greengrass 無法登入 Docker 登錄檔時，您可能會收到此錯誤。檢查日誌是否有特定錯誤，然後再次嘗試部署。

DOCKER\$1LOGIN\$1ERROR  
當登入 Docker 時發生意外錯誤時，您可能會收到此錯誤。檢查日誌是否有特定錯誤，然後再次嘗試部署。

DOCKER\$1PULL\$1ERROR  
當從登錄檔提取 Docker 映像時發生意外錯誤時，您可能會收到此錯誤。檢查日誌是否有特定錯誤，然後再次嘗試部署。

DOCKER\$1IMAGE\$1NOT\$1VALID  
當請求的 Docker 映像不存在時，您可能會收到此錯誤。檢查日誌是否有特定錯誤，然後重試部署。

DOCKER\$1IMAGE\$1QUERY\$1ERROR  
查詢 Docker 是否有可用的映像時發生非預期的失敗時，您可能會收到此錯誤。檢查日誌是否有特定錯誤，然後重試部署。

S3\$1ERROR  
下載 Amazon S3 成品時，您可能會收到此錯誤。如需詳細資訊，請檢查任何其他錯誤代碼或日誌。

S3\$1RESOURCE\$1NOT\$1FOUND  
當 Amazon S3 操作傳回 404 錯誤時，您可能會收到此錯誤。如需詳細資訊，請檢查任何其他錯誤代碼或日誌。

S3\$1BAD\$1REQUEST  
當 Amazon S3 操作傳回 400 錯誤時，您可能會收到此錯誤。檢查日誌是否有特定錯誤，然後再試一次請求。

## HTTP 錯誤
<a name="http-error"></a>

HTTP\$1REQUEST\$1ERROR  
當提出 HTTP 請求時發生錯誤時，您可能會收到此錯誤。檢查日誌是否有特定錯誤。

DOWNLOAD\$1DEPLOYMENT\$1DOCUMENT\$1ERROR  
當下載部署文件時發生 HTTP 錯誤時，您可能會收到此錯誤。檢查日誌是否有特定的 HTTP 錯誤。

GET\$1GREENGRASS\$1ARTIFACT\$1SIZE\$1ERROR  
當取得公有元件成品的大小時發生 HTTP 錯誤時，您可能會收到此錯誤。檢查日誌是否有特定的 HTTP 錯誤。

DOWNLOAD\$1GREENGRASS\$1ARTIFACT\$1ERROR  
當下載公有元件成品時發生 HTTP 錯誤時，您可能會收到此錯誤。檢查日誌是否有特定的 HTTP 錯誤。

## 網路錯誤
<a name="network-error"></a>

NETWORK\$1ERROR  
在部署期間發生連線問題時，您可能會收到此錯誤。檢查裝置與網際網路的連線，然後重試部署。

## Nucleus 錯誤
<a name="nucleus-error"></a>

BAD\$1REQUEST  
當 AWS 雲端操作傳回 400 錯誤時，您可能會收到此錯誤。檢查日誌以查看導致錯誤的 API，然後檢查 nucleus 軟體更新頁面，查看此問題是否已在更新版本的 nucleus 中修正，或聯絡案例 支援。

NUCLEUS\$1VERSION\$1NOT\$1FOUND  
當核心裝置找不到作用中核心的版本時，您可能會收到此錯誤。檢查日誌以查看造成錯誤的因素，然後檢查 nucleus 軟體更新頁面，查看此問題是否已在更新版本的 nucleus 中修正，或聯絡 支援案例。

NUCLEUS\$1RESTART\$1FAILURE  
當核心在需要重新啟動的部署期間未重新啟動時，您可能會收到此錯誤。檢查載入器日誌以查看錯誤的原因，然後檢查 nucleus 軟體更新頁面，查看此問題是否已在更新版本的 nucleus 中修正，或聯絡案例 支援。

INSTALLED\$1COMPONENT\$1NOT\$1FOUND  
當核心找不到已安裝的元件時，您可能會收到此錯誤。檢查日誌以查看造成錯誤的因素，然後檢查 nucleus 軟體更新頁面，查看此問題是否已在更新版本的 nucleus 中修正，或聯絡 支援案例。

DEPLOYMENT\$1DOCUMENT\$1NOT\$1VALID  
當裝置收到無效的部署文件時，您可能會收到此錯誤。檢查任何其他錯誤代碼或檢查日誌，以查看造成錯誤的原因。

EMPTY\$1DEPLOYMENT\$1REQUEST  
當裝置收到空的部署請求時，您可能會收到此錯誤。檢查日誌以查看造成錯誤的因素，然後檢查 nucleus 軟體更新頁面，查看此問題是否已在更新版本的 nucleus 中修正，或聯絡 支援案例。

DEPLOYMENT\$1DOCUMENT\$1PARSE\$1ERROR  
當部署請求格式不符合預期的格式時，您可能會收到此錯誤。檢查日誌以查看錯誤的原因，然後檢查 nucleus 軟體更新頁面，查看此問題是否已在更新版本的 nucleus 中修正，或聯絡 支援。

COMPONENT\$1METADATA\$1NOT\$1VALID\$1IN\$1DEPLOYMENT  
當部署請求包含無效的元件中繼資料時，您可能會收到此錯誤。檢查日誌以查看造成錯誤的因素，然後檢查 nucleus 軟體更新頁面，查看此問題是否已在更新版本的 nucleus 中修正，或聯絡 支援案例。

LAUNCH\$1DIRECTORY\$1CORRUPTED  
當您將 Greengrass 裝置從一個物件群組移至另一個物件群組，然後使用需要 Greengrass 重新啟動的部署返回原始群組時，您可能會收到此錯誤。若要解決錯誤，請在裝置上重新建立 Greengrass 的啟動目錄。  
如需詳細資訊，請參閱[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](troubleshooting.md#deployment-error-unable-to-process-deployment)。

## 伺服器錯誤
<a name="server-error"></a>

SERVER\$1ERROR  
當 AWS 服務操作傳回 500 錯誤時，您可能會收到此錯誤，因為服務目前無法處理請求。稍後重試部署。

S3\$1SERVER\$1ERROR  
當 Amazon S3 操作傳回 500 錯誤時，您可能會收到此錯誤。如需詳細資訊，請檢查任何其他錯誤代碼或日誌。

## 雲端服務錯誤
<a name="cloud-service-error"></a>

RESOLVE\$1COMPONENT\$1CANDIDATES\$1BAD\$1RESPONSE  
當 Greengrass 雲端服務傳送不相容的回應給 `ResolveComponentCandidates`操作時，您可能會收到此錯誤。檢查日誌以查看造成錯誤的因素，然後檢查 nucleus 軟體更新頁面，查看此問題是否已在更新版本的 nucleus 中修正，或聯絡案例 支援。

DEPLOYMENT\$1DOCUMENT\$1SIZE\$1EXCEEDED  
當請求的部署文件超過大小配額上限時，您可能會收到此錯誤。減少部署文件的大小，然後再試一次部署。

GREENGRASS\$1ARTIFACT\$1SIZE\$1NOT\$1FOUND  
當 Greengrass 無法取得公有元件成品的大小時，您可能會收到此錯誤。檢查日誌以查看造成錯誤的因素，然後檢查 nucleus 軟體更新頁面，查看此問題是否已在更新版本的 nucleus 中修正，或聯絡案例 支援。

DEPLOYMENT\$1DOCUMENT\$1NOT\$1VALID  
當裝置收到無效的部署文件時，您可能會收到此錯誤。檢查任何其他錯誤代碼或檢查日誌，以查看造成錯誤的原因。

EMPTY\$1DEPLOYMENT\$1REQUEST  
當裝置收到空的部署請求時，您可能會收到此錯誤。檢查日誌以查看造成錯誤的因素，然後檢查 nucleus 軟體更新頁面，查看此問題是否已在更新版本的 nucleus 中修正，或聯絡案例 支援。

DEPLOYMENT\$1DOCUMENT\$1PARSE\$1ERROR  
當部署請求格式不符合預期的格式時，您可能會收到此錯誤。檢查日誌以查看錯誤的原因，然後檢查 nucleus 軟體更新頁面，查看此問題是否已在更新版本的 nucleus 中修正，或聯絡 支援。

COMPONENT\$1METADATA\$1NOT\$1VALID\$1IN\$1DEPLOYMENT  
當部署請求包含無效的元件中繼資料時，您可能會收到此錯誤。檢查日誌以查看造成錯誤的因素，然後檢查 nucleus 軟體更新頁面，查看此問題是否已在更新版本的 nucleus 中修正，或聯絡案例 支援。

## 一般錯誤
<a name="generic-error"></a>

這些一般錯誤沒有相關聯的錯誤類型。

DEPLOYMENT\$1INTERRUPTED  
當部署因為核心關閉或其他外部事件而無法完成時，您可能會收到此錯誤。如需詳細資訊，請檢查任何其他錯誤代碼或日誌。

ARTIFACT\$1DOWNLOAD\$1ERROR  
當下載成品發生問題時，您可能會收到此錯誤。如需詳細資訊，請檢查任何其他錯誤代碼或日誌。

NO\$1AVAILABLE\$1COMPONENT\$1VERSION  
當元件版本不存在於雲端或本機，或存在相依性解析衝突時，您可能會收到此錯誤。如需詳細資訊，請檢查任何其他錯誤代碼或日誌。

COMPONENT\$1PACKAGE\$1LOADING\$1ERROR  
當錯誤處理下載的成品時，您可能會收到此錯誤。如需詳細資訊，請檢查任何其他錯誤代碼或日誌。

CLOUD\$1API\$1ERROR  
當呼叫 AWS 服務 API 時發生錯誤時，您可能會收到此錯誤。如需詳細資訊，請檢查任何其他錯誤代碼或日誌。

IO\$1ERROR  
當部署期間發生 I/O 錯誤時，您可能會收到此錯誤。如需詳細資訊，請檢查任何其他錯誤代碼或日誌。

COMPONENT\$1UPDATE\$1ERROR  
當元件在部署期間未更新時，您可能會收到此錯誤。檢查任何其他錯誤代碼或檢查日誌，以查看造成錯誤的原因。

## 未知錯誤
<a name="unknown-error"></a>

DEPLOYMENT\$1FAILURE  
當部署因為擲出未檢查的例外狀況而失敗時，您可能會收到此錯誤。檢查日誌以查看錯誤的原因，然後檢查 nucleus 軟體更新頁面，查看此問題是否已在更新版本的 nucleus 中修正，或聯絡 支援。

DEPLOYMENT\$1TYPE\$1NOT\$1VALID  
當部署類型無效時，您可能會收到此錯誤。檢查日誌以查看造成錯誤的因素，然後檢查 nucleus 軟體更新頁面，查看此問題是否已在更新版本的 nucleus 中修正，或聯絡案例 支援。

# 詳細的元件狀態碼
<a name="troubleshooting-component"></a>

使用這些區段中的狀態碼和解決方案，以協助解決使用 Greengrass 核 2.8.0 版或更新版本時的元件問題。

本主題中的許多狀態都會報告 AWS IoT Greengrass 核心日誌中的其他資訊。這些日誌存放在核心裝置的本機檔案系統上。每個個別元件都有日誌。如需存取日誌的資訊，請參閱 [存取檔案系統日誌](monitor-logs.md#access-local-logs)。

INSTALL\$1ERROR  
當執行安裝指令碼時發生錯誤時，您可能會收到此訊息。錯誤碼會在元件日誌中回報。檢查安裝指令碼是否有錯誤，然後再次部署您的元件。

INSTALL\$1CONFIG\$1NOT\$1VALID  
當因為配方的 `install`區段無效而無法完成元件安裝時，您可能會收到此錯誤。檢查配方的安裝區段是否有錯誤，然後再試一次部署。

INSTALL\$1IO\$1ERROR  
安裝元件期間發生 I/O 錯誤時，您可能會收到此訊息。如需錯誤的詳細資訊，請檢查元件錯誤日誌。

INSTALL\$1MISSING\$1DEFAULT\$1RUNWITH  
當 AWS IoT Greengrass 無法判斷安裝元件時要使用的使用者或群組時，您可能會收到此錯誤。檢查 以確保您安裝配方的 `runWith`區段包含有效的使用者或群組。

INSTALL\$1TIMEOUT  
當安裝指令碼未在設定的逾時期間內完成時，您可能會收到此錯誤。您可以增加配方`install`區段中指定的`Timeout`期間，或修改您的安裝指令碼，以在設定的逾時內完成。

STARTUP\$1ERROR  
當執行啟動指令碼時發生錯誤時，您可能會收到此訊息。錯誤碼會在元件日誌中回報。檢查安裝指令碼是否有錯誤，然後再次部署您的元件。

STARTUP\$1CONFIG\$1NOT\$1VALID  
當因為配方的 `startup`區段無效而無法完成元件安裝時，您可能會收到此錯誤。檢查配方的啟動區段是否有錯誤，然後再試一次部署。

STARTUP\$1IO\$1ERROR  
當元件啟動期間發生 I/O 錯誤時，您可能會收到此訊息。如需錯誤的詳細資訊，請檢查元件錯誤日誌。

STARTUP\$1MISSING\$1DEFAULT\$1RUNWITH  
當 AWS IoT Greengrass 無法判斷執行元件時要使用的使用者或群組時，您可能會收到此錯誤。檢查以確定啟動配方的 `runWith`區段包含有效的使用者或群組。

STARTUP\$1TIMEOUT  
當啟動指令碼未在設定的逾時期間內完成時，您可能會收到此錯誤。您可以增加配方`startup`區段中指定的`Timeout`期間，或修改啟動指令碼，以在設定的逾時內完成。

RUN\$1ERROR  
當執行元件指令碼時發生錯誤時，您可能會收到此訊息。錯誤碼會在元件日誌中回報。檢查執行指令碼是否有錯誤，然後再次部署您的元件。

RUN\$1MISSING\$1DEFAULT\$1RUNWITH  
當 AWS IoT Greengrass 無法判斷執行元件時要使用的使用者或群組時，您可能會收到此錯誤。檢查以確保執行配方的 `runWith`區段包含有效的使用者或群組。

RUN\$1CONFIG\$1NOT\$1VALID  
當因為配方的 `run`區段無效而無法執行元件時，您可能會收到此錯誤。檢查配方的執行區段是否有錯誤，然後再試一次部署。

RUN\$1IO\$1ERROR  
當元件執行時發生 I/O 錯誤時，您可能會收到此訊息。如需錯誤的詳細資訊，請檢查元件錯誤日誌。

RUN\$1TIMEOUT  
當執行指令碼未在設定的逾時期間內完成時，您可能會收到此錯誤。您可以增加配方`run`區段中指定的`Timeout`期間，或修改您的執行指令碼，以在設定的逾時內完成。

SHUTDOWN\$1ERROR  
關閉元件指令碼時發生錯誤時，您可能會收到此訊息。錯誤碼會在元件日誌中回報。檢查關機指令碼是否有錯誤，然後再次部署您的元件。

SHUTDOWN\$1TIMEOUT  
當關閉指令碼未在設定的逾時期間內完成時，您可能會收到此錯誤。您可以增加配方`shutdown`區段中指定的`Timeout`期間，或修改您的執行指令碼，以在設定的逾時內完成。

UNINSTALL\$1ERROR  
在元件移除期間執行解除安裝指令碼時發生錯誤時，您可能會收到此訊息。錯誤碼會在元件日誌中回報。檢查解除安裝指令碼是否有錯誤。解除安裝失敗不會使部署失敗，而且元件仍會從裝置中移除。

UNINSTALL\$1TIMEOUT  
當解除安裝指令碼未在設定的逾時期間內完成時，您可能會收到此錯誤。您可以增加配方`uninstall`區段中指定的`Timeout`期間，或修改解除安裝指令碼，以在設定的逾時內完成。預設逾時為 120 秒。解除安裝失敗不會使部署失敗，而且元件仍會從裝置中移除。