

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

# OTA 업데이트를 위한 Cloudwatch Logs 설정
<a name="ota-logging"></a>

OTA 업데이트 서비스에서는 Amazon CloudWatch를 통한 로깅을 지원합니다. AWS IoT 콘솔을 사용하여 OTA 업데이트에 대한 Amazon CloudWatch 로깅을 활성화하고 구성할 수 있습니다. 자세한 내용은 [Cloudwatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html)를 참조하십시오.

로깅을 활성화하려면 IAM 역할을 생성하고 OTA 업데이트 로깅을 구성해야 합니다.

**참고**  
OTA 업데이트 로깅을 활성화하기 전에 CloudWatch Logs 액세스 권한을 이해해야 합니다. CloudWatch 로그 액세스 권한이 있는 사용자는 디버깅 정보를 볼 수 있습니다. 자세한 내용은 [Amazon CloudWatch Logs에 대한 인증 및 액세스 제어](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/auth-and-access-control-cwl.html)를 참조하십시오.

## 로깅 역할 생성 및 로깅 활성화
<a name="create-ota-logging-role"></a>

[AWS IoT 콘솔](https://console.aws.amazon.com/iot/home)을 사용하여 로깅 역할을 생성하고 로깅을 활성화합니다.

1. 탐색 창에서 **설정**을 선택합니다.

1. **로그**에서 **편집**을 선택합니다.

1. **세부 사항 수준**에서 **디버깅**을 선택합니다.

1. **역할 설정**에서 **새로 생성**을 선택하여 로깅을 위한 IAM 역할을 생성합니다.

1. **이름** 아래에 역할의 고유한 이름을 입력합니다. 모든 필요한 권한을 가진 역할이 생성됩니다.

1. **업데이트**를 선택합니다.

## OTA 업데이트 로그
<a name="ota-logs"></a>

OTA 업데이트 서비스에서는 다음 중 하나가 발생할 경우 사용자의 계정에 로그를 게시합니다.
+ OTA 업데이트가 생성된 경우
+ OTA 업데이트가 완료된 경우
+ 코드 서명 작업이 생성된 경우
+ 코드 서명 작업이 완료된 경우
+  AWS IoT 작업이 생성됩니다.
+  AWS IoT 작업이 완료되었습니다.
+ 스트림이 생성된 경우

[CloudWatch 콘솔](https://console.aws.amazon.com/cloudwatch/home)에서 로그를 확인할 수 있습니다.

**CloudWatch Logs에서 OTA 업데이트를 보려면**

1. 탐색 창에서 **로그**를 선택합니다.

1. **로그 그룹**에서 **AWSIoTLogsV2**를 선택합니다.

OTA 업데이트 로그는 다음 속성을 포함할 수 있습니다.

**accountId**  
로그가 생성된 AWS 계정 ID입니다.

**actionType**  
로그를 생성한 작업입니다. 이 속성은 다음 값 중 하나로 설정될 수 있습니다.  
+ `CreateOTAUpdate`: OTA 업데이트가 생성되었습니다.
+ `DeleteOTAUpdate`: OTA 업데이트가 삭제되었습니다.
+ `StartCodeSigning`: 코드 서명 작업이 시작되었습니다.
+ `CreateAWSJob`: AWS IoT 작업이 생성되었습니다.
+ `CreateStream`: 스트림이 생성되었습니다.
+ `GetStream`: 스트림에 대한 요청이 AWS IoT MQTT 기반 파일 전송 기능으로 전송되었습니다.
+ `DescribeStream`: 스트림 정보에 대한 정보 요청이 AWS IoT MQTT 기반 파일 전송 기능으로 전송되었습니다.

**awsJobId**  
로그를 생성한 AWS IoT 작업 ID입니다.

**clientId**  
로그를 생성한 요청을 보낸 MQTT 클라이언트 ID입니다.

**clientToken**  
로그를 생성한 요청과 연결된 클라이언트 토큰입니다.

**details**  
로그를 생성한 작업에 대한 추가 정보입니다.

**logLevel**  
로그의 로깅 수준입니다. OTA 업데이트 로그의 경우 이 값은 항상 `DEBUG`로 설정됩니다.

**otaUpdateId**  
로그를 생성한 OTA 업데이트의 ID입니다.

**protocol**  
로그를 생성한 요청을 만드는 데 사용된 프로토콜입니다.

**status**  
로그를 생성한 작업의 상태입니다. 유효값은 다음과 같습니다.  
+ Success
+ 실패

**streamId**  
로그를 생성한 AWS IoT 스트림 ID입니다.

**timestamp**  
로그가 생성된 시간입니다.

**topicName**  
로그를 생성한 요청을 만드는 데 사용된 MQTT 주제입니다.

### 로그 예
<a name="ota-example-logs"></a>

다음은 코드 서명 작업을 시작할 때 생성되는 로그의 예입니다.

```
{ 
    "timestamp": "2018-07-23 22:59:44.955", 
    "logLevel": "DEBUG", 
    "accountId": "123456789012", 
    "status": "Success", 
    "actionType": "StartCodeSigning", 
    "otaUpdateId": "08957b03-eea3-448a-87fe-743e6891ca3a", 
    "details": "Start code signing job. The request status is SUCCESS." 
}
```

다음은 AWS IoT 작업이 생성될 때 생성되는 로그의 예입니다.

```
{ 
    "timestamp": "2018-07-23 22:59:45.363", 
    "logLevel": "DEBUG", 
    "accountId": "123456789012", 
    "status": "Success", 
    "actionType": "CreateAWSJob", 
    "otaUpdateId": "08957b03-eea3-448a-87fe-743e6891ca3a", 
    "awsJobId": "08957b03-eea3-448a-87fe-743e6891ca3a", 
    "details": "Create AWS Job The request status is SUCCESS." 
}
```

다음은 OTA 업데이트를 만들 때 생성되는 로그의 예입니다.

```
{ 
    "timestamp": "2018-07-23 22:59:45.413", 
    "logLevel": "DEBUG", 
    "accountId": "123456789012", 
    "status": "Success", 
    "actionType": "CreateOTAUpdate", 
    "otaUpdateId": "08957b03-eea3-448a-87fe-743e6891ca3a", 
    "details": "OTAUpdate creation complete. The request status is SUCCESS." 
}
```

다음은 스트림을 만들 때 생성되는 로그의 예입니다.

```
{ 
    "timestamp": "2018-07-23 23:00:26.391", 
    "logLevel": "DEBUG", 
    "accountId": "123456789012", 
    "status": "Success", 
    "actionType": "CreateStream", 
    "otaUpdateId": "3d3dc5f7-3d6d-47ac-9252-45821ac7cfb0", 
    "streamId": "6be2303d-3637-48f0-ace9-0b87b1b9a824", 
    "details": "Create stream. The request status is SUCCESS." 
}
```

다음은 OTA 업데이트를 삭제할 때 생성되는 로그의 예입니다.

```
{ 
    "timestamp": "2018-07-23 23:03:09.505", 
    "logLevel": "DEBUG", 
    "accountId": "123456789012", 
    "status": "Success", 
    "actionType": "DeleteOTAUpdate", 
    "otaUpdateId": "9bdd78fb-f113-4001-9675-1b595982292f", 
    "details": "Delete OTA Update. The request status is SUCCESS." 
}
```

다음은 디바이스가 MQTT 기반 파일 전송 기능에서 스트림을 요청할 때 생성되는 로그의 예입니다.

```
{ 
    "timestamp": "2018-07-25 22:09:02.678", 
    "logLevel": "DEBUG", 
    "accountId": "123456789012", 
    "status": "Success", 
    "actionType": "GetStream", 
    "protocol": "MQTT", 
    "clientId": "b9d2e49c-94fe-4ed1-9b07-286afed7e4c8", 
    "topicName": "$aws/things/b9d2e49c-94fe-4ed1-9b07-286afed7e4c8/streams/1e51e9a8-9a4c-4c50-b005-d38452a956af/get/json", 
    "streamId": "1e51e9a8-9a4c-4c50-b005-d38452a956af", 
    "details": "The request status is SUCCESS." 
}
```

다음은 디바이스가 `DescribeStream` API를 호출할 때 생성되는 로그의 예입니다.

```
{ 
    "timestamp": "2018-07-25 22:10:12.690", 
    "logLevel": "DEBUG", 
    "accountId": "123456789012", 
    "status": "Success", 
    "actionType": "DescribeStream", 
    "protocol": "MQTT", 
    "clientId": "581075e0-4639-48ee-8b94-2cf304168e43", 
    "topicName": "$aws/things/581075e0-4639-48ee-8b94-2cf304168e43/streams/71c101a8-bcc5-4929-9fe2-af563af0c139/describe/json", 
    "streamId": "71c101a8-bcc5-4929-9fe2-af563af0c139", 
    "clientToken": "clientToken", 
    "details": "The request status is SUCCESS." 
}
```