

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

# 故障診斷 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\#<operation> is not supported by Greengrass](#ipc-operation-not-supported)
+ [java.io.FileNotFoundException: <stream-manager-store-root-dir>/stream\_manager\_metadata\_store (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\_OPERATION\_NOT\_INITIALIZED](#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\#<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\_manager\_metadata\_store (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\#11 提供者元件](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\_OPERATION\_NOT\_INITIALIZED
<a name="ckr-operation-not-initialized"></a>

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

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

如需詳細資訊，請參閱[PKCS\#11 供應商](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: {<s3ArtifactUri> = Specified artifact resource cannot be accessed}
<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\_request\_id>, 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\_request\_id>, 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\_user}} 取代為系統使用者，並將{{密碼}}取代為要設定的密碼。

   ```
   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\_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>](#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\_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>
<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) 。