

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 배포 상태 확인
<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)**
+ 다음 명령을 실행하여 대상에 대한 최신 배포의 상태를 검색합니다. 배포의 대상인AWS IoT 사물 또는 사물 그룹의 Amazon 리소스 이름(ARN)으로 *targetArn*을 바꿉니다.

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

  응답에는 대상에 대한 최신 배포 목록이 포함되어 있습니다. 이 배포 객체에는 배포의 상태가 포함되어 있습니다.

**ID별 배포 상태 확인 방법(AWS CLI)**
+ 다음 명령을 실행하여 배포의 상태를 검색합니다. 쿼리할 배포의 ID로 *deploymentId*를 바꿉니다.

  ```
  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를 검색합니다. 대상 사물 그룹의 ARN으로 *targetArn*을 바꿉니다.

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

   응답에는 대상에 대한 최신 배포 목록이 포함되어 있습니다. 다음 단계에서 사용할 `deploymentId`를 응답에서 복사합니다.
**참고**  
대상에 대한 최신 배포 이외의 배포를 나열할 수도 있습니다. 대상에 대한 모든 배포를 나열할 `--history-filter ALL` 인수를 지정합니다. 그런 다음에 상태를 확인하려는 배포의 ID를 복사합니다.

1. 다음 명령을 실행하여 배포의 세부 정보를 가져옵니다. 이전 단계의 ID로 *deploymentID*를 바꿉니다.

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

   배포에 대한 정보가 응답에 있습니다. 다음 단계에서 사용할 `iotJobId`를 응답에서 복사합니다.

1. 배포에 대한 코어 디바이스의 작업 실행이 설명되는 다음 명령을 실행합니다. 이전 단계의 작업 ID와 상태를 확인하려는 코어 디바이스로 *iotJobId*와 *coreDeviceThingName*을 바꿉니다.

   ```
   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
     }
   }
   ```