

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 检查部署状态
<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 资源名称（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
     }
   }
   ```