

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

# 檢查部署狀態
<a name="check-deployment-status"></a>

您可以檢查您在其中建立的部署狀態 AWS IoT Greengrass。您也可以檢查將部署推展到每個核心裝置 AWS IoT 的任務狀態。當部署處於作用中狀態時， AWS IoT 任務的狀態為 `IN_PROGRESS`。建立新的部署修訂版之後，上一個修訂版 AWS IoT 的任務狀態會變更為 `CANCELLED`。

**Topics**
+ [檢查部署狀態](#check-cloud-deployment-status)
+ [檢查裝置部署狀態](#check-device-deployment-status)

## 檢查部署狀態
<a name="check-cloud-deployment-status"></a>

您可以檢查依目標或其 ID 識別的部署狀態。

**依目標檢查部署狀態 (AWS CLI)**
+ 執行下列命令，以擷取目標的最新部署狀態。將 *targetArn* 取代為部署目標 AWS IoT 之實物或實物群組的 Amazon Resource Name (ARN)。

  ```
  aws greengrassv2 list-deployments --target-arn targetArn
  ```

  回應包含具有目標最新部署的清單。此部署物件包含部署的狀態。

**依 ID 檢查部署狀態 (AWS CLI)**
+ 執行下列命令來擷取部署的狀態。將 *deploymentId* 取代為要查詢的部署 ID。

  ```
  aws greengrassv2 get-deployment --deployment-id deploymentId
  ```

  回應包含部署的狀態。

## 檢查裝置部署狀態
<a name="check-device-deployment-status"></a>

您可以檢查套用至個別核心裝置的部署任務狀態。您也可以檢查物件群組部署的部署任務狀態。

**檢查核心裝置的部署任務狀態 (AWS CLI)**
+ 執行下列命令，以擷取核心裝置的所有部署任務狀態。將 *coreDeviceName* 取代為要查詢的核心裝置名稱。

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

  回應包含核心裝置的部署任務清單。您可以透過任務的 `deploymentId`或 來識別部署的任務`targetArn`。每個部署任務都包含核心裝置上任務的狀態。

**檢查物件群組的部署狀態 (AWS CLI)**

1. 執行下列命令來擷取現有部署的 ID。將 *targetArn* 取代為目標物件群組的 ARN。

   ```
   aws greengrassv2 list-deployments --target-arn targetArn
   ```

   回應包含具有目標最新部署的清單。`deploymentId` 從回應中複製 以用於下一個步驟。
**注意**  
您也可以列出目標最新部署以外的部署。指定引`--history-filter ALL`數以列出目標的所有部署。然後，複製您要檢查狀態的部署 ID。

1. 執行下列命令以取得部署的詳細資訊。將 *deploymentID* 取代為上一個步驟的 ID。

   ```
   aws greengrassv2 get-deployment --deployment-id deploymentId
   ```

   回應包含部署的相關資訊。`iotJobId` 從回應中複製 以用於下列步驟。

1. 執行下列命令來描述核心裝置在部署時的任務執行。將 *iotJobId* 和 *coreDeviceThingName* 取代為上一個步驟的任務 ID，以及您要檢查狀態的核心裝置。

   ```
   aws iot describe-job-execution --job-id iotJobId --thing-name coreDeviceThingName
   ```

   回應包含核心裝置部署任務執行的狀態，以及狀態的詳細資訊。`detailsMap` 包含下列資訊：
   + `detailed-deployment-status` – 部署結果狀態，可以是下列其中一個值：
     + `SUCCESSFUL` – 部署成功。
     + `FAILED_NO_STATE_CHANGE` – 核心裝置準備套用部署時，部署失敗。
     + `FAILED_ROLLBACK_NOT_REQUESTED` – 部署失敗，而且部署未指定 轉返先前的工作組態，因此核心裝置可能無法正常運作。
     + `FAILED_ROLLBACK_COMPLETE` – 部署失敗，核心裝置成功復原至先前的工作組態。
     + `FAILED_UNABLE_TO_ROLLBACK` – 部署失敗，且核心裝置無法復原至先前的工作組態，因此核心裝置可能無法正常運作。

     如果部署失敗，請檢查 `deployment-failure-cause`值和核心裝置的日誌檔案，以識別問題。如需如何存取核心裝置日誌檔案的詳細資訊，請參閱[監控 AWS IoT Greengrass 日誌](monitor-logs.md)。
   + `deployment-failure-cause` – 錯誤訊息，提供任務執行失敗原因的其他詳細資訊。

   回應看起來與下列範例類似。

   ```
   {
     "execution": {
       "jobId": "2cc2698a-5175-48bb-adf2-1dd345606ebd",
       "status": "FAILED",
       "statusDetails": {
         "detailsMap": {
           "deployment-failure-cause": "No local or cloud component version satisfies the requirements. Check whether the version constraints conflict and that the component exists in your AWS 帳戶 with a version that matches the version constraints. If the version constraints conflict, revise deployments to resolve the conflict. Component com.example.HelloWorld version constraints: LOCAL_DEPLOYMENT requires =1.0.0, thinggroup/MyGreengrassCoreGroup requires =1.0.1.",
           "detailed-deployment-status": "FAILED_NO_STATE_CHANGE"
         }
       },
       "thingArn": "arn:aws:iot:us-west-2:123456789012:thing/MyGreengrassCore",
       "queuedAt": "2022-02-15T14:45:53.098000-08:00",
       "startedAt": "2022-02-15T14:46:05.670000-08:00",
       "lastUpdatedAt": "2022-02-15T14:46:20.892000-08:00",
       "executionNumber": 1,
       "versionNumber": 3
     }
   }
   ```