

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

# AWS Elemental MediaTailor 로그 보기
<a name="monitoring-through-logs"></a>

MediaTailor는 채널 및 재생 구성의 다양한 마일스톤 및 활동을 설명하는 로그를 내보냅니다. 이러한 로그를 사용하여 워크플로를 파악하고 서비스 문제를 해결할 수 있습니다. 다음 주제에서는 로그 및 로깅 옵션에 대해 설명합니다.

**Topics**
+ [ADS 로그](ads-log-format.md)
+ [매니페스트 로그](log-types.md)
+ [로그 트랜스코딩](tm-log-format.md)
+ [벤딩된 로그 사용](vended-logs.md)
+ [CloudWatch Logs에 로그 쓰기](monitoring-cw-logs.md)
+ [광고 삽입 세션 로그의 볼륨 제어](log-configuration.md)
+ [로그 및 이벤트 필터링](logs-filter.md)
+ [디버그 로그 생성](debug-log-mode.md)

# AWS Elemental MediaTailor ADS 로그 설명 및 이벤트 유형
<a name="ads-log-format"></a>

다음 섹션에서는 MediaTailor가 광고 결정 서버(ADS)의 이벤트를 설명하기 위해 내보내는 로그를 설명합니다. 로그입니다`AdDecisionServerInteractions`.

**Topics**
+ [AdDecisionServerInteractions 이벤트](#log-types-adsinteraction)
+ [ADS 로그 설명](#ads-log-description)
+ [ADS 로그 JSON 스키마](#ads-log-json-schema)

## AdDecisionServerInteractions 이벤트
<a name="log-types-adsinteraction"></a>

광고 결정 서버(ADS)와의 MediaTailor 상호 작용 중에 다음 이벤트가 발생합니다.


| Log | 설명 | 
| --- | --- | 
| AD\$1MARKER\$1FOUND | MediaTailor가 매니페스트에서 광고 마커를 찾았습니다. | 
| BEACON\$1FIRED | 추적 비컨이 실행되어 광고 이벤트를 보고했습니다. 서버 측 보고 모드(기본값)에서 MediaTailor는 비컨을 실행합니다. 클라이언트 측 보고 모드에서 재생 디바이스는 비컨을 실행합니다. | 
| EMPTY\$1VAST\$1RESPONSE | ADS는 0개의 광고가 포함된 빈 VAST 응답을 반환했습니다. | 
| EMPTY\$1VMAP\$1RESPONSE | ADS가 빈 VMAP 응답을 반환했습니다. | 
| ERROR\$1ADS\$1INVALID\$1RESPONSE | ADS가 200이 아닌 상태 코드를 반환했습니다. | 
| ERROR\$1ADS\$1IO | MediaTailor가 ADS와 통신을 시도하는 동안 오류가 발생했습니다. | 
| ERROR\$1ADS\$1RESPONSE\$1PARSE | ADS 응답을 구문 분석하는 동안 MediaTailor에서 오류가 발생했습니다. | 
| ERROR\$1ADS\$1RESPONSE\$1UNKNOWN\$1ROOT\$1ELEMENT | ADS 응답에 잘못된 루트 요소가 포함되어 있습니다. | 
| ERROR\$1ADS\$1TIMEOUT | ADS에 대한 MediaTailor 요청 시간이 초과되었습니다. | 
| ERROR\$1DISALLOWED\$1HOST | ADS 호스트는 허용되지 않습니다. | 
| ERROR\$1FIRING\$1BEACON\$1FAILED | MediaTailor가 추적 비컨을 실행하는 데 실패했습니다. | 
| ERROR\$1PERSONALIZATION\$1DISABLED | 이 세션에서는 광고 삽입이 비활성화됩니다. | 
| ERROR\$1UNKNOWN | ADS 요청 중에 MediaTailor에서 알 수 없는 오류가 발생했습니다. | 
| ERROR\$1UNKNOWN\$1HOST | ADS 호스트를 알 수 없습니다. | 
| ERROR\$1VAST\$1INVALID\$1MEDIA\$1FILE | VAST에 유효하지 않거나 누락된 MediaFile 요소가 Ad 있습니다. | 
| ERROR\$1VAST\$1INVALID\$1VAST\$1AD\$1TAG\$1URI | VAST 응답에 잘못된이 포함되어 있습니다VASTAdTagURI. | 
| ERROR\$1VAST\$1MISSING\$1CREATIVES | VAST에는 0개 또는 여러 Creatives 요소가 Ad 포함되어 있습니다. 정확히 하나의 Creatives 요소가 필요합니다. | 
| ERROR\$1VAST\$1MISSING\$1IMPRESSION | VAST에는 0개의 Impression 요소가 Ad 포함되어 있습니다. 하나 이상의 Impression 요소가 필요합니다. | 
| ERROR\$1VAST\$1MISSING\$1MEDIAFILES | VAST에는 0개 또는 여러 MediaFiles 요소가 Ad 포함되어 있습니다. 정확히 하나의 MediaFiles 요소가 필요합니다. | 
| ERROR\$1VAST\$1MISSING\$1OVERLAYS | MediaTailor가 광고 서버로부터 비선형 크리에이티브를 수신하지 않았습니다. | 
| ERROR\$1VAST\$1MULTIPLE\$1LINEAR | VAST에는 여러 Linear 요소가 Ad 포함되어 있습니다. | 
| ERROR\$1VAST\$1MULTIPLE\$1TRACKING\$1EVENTS | VAST에는 여러 TrackingEvents 요소가 Ad 포함되어 있습니다. | 
| ERROR\$1VAST\$1REDIRECT\$1EMPTY\$1RESPONSE | VAST 리디렉션 요청이 빈 응답을 반환했습니다. | 
| ERROR\$1VAST\$1REDIRECT\$1FAILED | VAST 리디렉션 요청에 오류가 발생했습니다. | 
| ERROR\$1VAST\$1REDIRECT\$1MULTIPLE\$1VAST | VAST 리디렉션 요청이 여러 광고를 반환했습니다. | 
| FILLED\$1AVAIL | MediaTailor가 사용 가능 구간을 성공적으로 채웠습니다. | 
| FILLED\$1OVERLAY\$1AVAIL | MediaTailor가 오버레이 가능 구간을 성공적으로 채웠습니다. | 
| INTERSTITIAL\$1VOD\$1FAILURE | ADS 요청 또는 응답에서 VOD 재생 목록에 대한 중간 간격을 채우는 동안 문제가 발생했습니다. 광고는 삽입되지 않습니다. | 
| INTERSTITIAL\$1VOD\$1SUCCESS | MediaTailor가 VOD 재생 목록에 대한 중간 광고 시간을 성공적으로 채웠습니다. | 
| MAKING\$1ADS\$1REQUEST | MediaTailor가 ADS에 광고를 요청하고 있습니다. | 
| MODIFIED\$1TARGET\$1URL | MediaTailor가 아웃바운드 대상 URL을 수정했습니다. | 
| NON\$1AD\$1MARKER\$1FOUND | MediaTailor가 매니페스트에서 실행 불가능한 광고 마커를 찾았습니다. | 
| RAW\$1ADS\$1RESPONSE | MediaTailor가 원시 ADS 응답을 받았습니다. | 
| REDIRECTED\$1VAST\$1RESPONSE | MediaTailor는 VAST 리디렉션 후 VAST 응답을 받았습니다. | 
| VAST\$1REDIRECT | VAST 광고 응답에는 리디렉션이 포함됩니다. | 
| VAST\$1RESPONSE | MediaTailor가 VAST 응답을 받았습니다. | 
| VOD\$1TIME\$1BASED\$1AVAIL\$1PLAN\$1SUCCESS | MediaTailor가 VOD 템플릿에 대한 시간 기반 가용 계획을 성공적으로 생성했습니다. | 
| VOD\$1TIME\$1BASED\$1AVAIL\$1PLAN\$1VAST\$1RESPONSE\$1FOR\$1OFFSET | MediaTailor는 VOD 템플릿에 대한 시간 기반 가용 계획을 생성하고 있습니다. MediaTailor가 시간 오프셋에 대한 VAST 응답을 받았습니다. | 
| VOD\$1TIME\$1BASED\$1AVAIL\$1PLAN\$1WARNING\$1NO\$1ADVERTISEMENTS | VOD 템플릿에 대한 시간 기반 가용 계획을 생성하는 동안 ADS 요청 또는 응답에 문제가 발생했습니다. 광고는 삽입되지 않습니다. | 
| WARNING\$1NO\$1ADVERTISEMENTS | MediaTailor에서 가용 영역을 채우는 동안 문제가 발생했습니다. 광고가 삽입되지 않습니다. | 
| WARNING\$1URL\$1VARIABLE\$1SUBSTITUTION\$1FAILED | MediaTailor는 ADS URL에서 동적 변수를 대체할 수 없습니다. URL 구성을 확인합니다. | 
| WARNING\$1VPAID\$1AD\$1DROPPED | 슬레이트 누락으로 인해 VPAID 광고가 삭제되었거나 세션에서 서버 측 보고를 사용합니다. | 

## ADS 로그 설명
<a name="ads-log-description"></a>

이 섹션에서는 ADS 로그 설명의 구조 및 콘텐츠에 관해 설명합니다. JSON 편집기에서 직접 탐색하려면 [ADS 로그 JSON 스키마](#ads-log-json-schema)에 있는 목록을 사용하십시오.

ADS 로그의 각 이벤트에는 CloudWatch Logs에서 생성되는 표준 필드가 포함되어 있습니다. 자세한 내용은 [ CloudWatch Logs 인사이트를 사용하여 로그 데이터 분석을](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AnalyzingLogData.html) 참조하세요.

### ADS 로그 속성
<a name="ads-logs-main"></a>

이 섹션에서는 ADS 로그의 속성에 관해 설명합니다.


| 속성 | Type | 필수 | 설명 | 
| --- | --- | --- | --- | 
| adsRequestUrl | 문자열 | false | MediaTailor가 수행하는 ADS 요청의 전체 URL | 
| avail | [avail](#ads-logs-avail) 형식의 객체 | false | MediaTailor가 광고로 채우는 가능 구간에 관한 정보. 현재 FILLED\$1AVAIL 이벤트 유형의 경우 이것은 MediaTailor가 가능 구간을 처음 만날 때 생성하는 계획입니다. 가능 구간이 결국 어떻게 채워지느냐는 이 계획과 콘텐츠가 전개되는 방식에 따라 달라집니다. | 
| awsAccountId | 문자열 | true | 세션에 사용된 MediaTailor 구성용 AWS 계정 ID | 
| customerId | 문자열 | true | 여러 로그 항목을 상호 연관시키는 데 사용할 수 있는 해시된 버전의 AWS 계정 ID | 
| eventDescription | 문자열 | true | 이 로그 메시지를 트리거한 이벤트에 대한 짧은 설명으로, MediaTailor 서비스에서 제공합니다. 기본적으로 이 문자열은 비어 있습니다. 예시: Got VAST response. | 
| eventTimestamp | 문자열 | true | 이벤트의 날짜 및 시간 | 
| eventType | 문자열 | true | 이 로그 메시지를 트리거한 이벤트의 코드. 예시: VAST\$1RESPONSE. | 
| originId | 문자열 | true | MediaTailor 구성의 구성 이름. 이것은 구성의 일부이기도 한 동영상 콘텐츠 원본과 다릅니다. | 
| prefetchScheduleName | 문자열 | false | 이 광고 이벤트와 연결된 미리 가져오기 일정의 이름입니다. | 
| requestHeaders | [requestheaders](#ads-logs-requestheaders) 형식의 배열 | false | MediaTailor가 ADS 요청과 함께 포함한 헤더. 일반적으로 ADS에 대한 요청이 실패한 경우 문제 해결을 돕기 위해 로그에 이 헤더가 포함됩니다. | 
| requestId | 문자열 | true | 동일 요청에 대해 여러 로그 항목을 상호 연관시키는 데 사용할 수 있는 MediaTailor 요청 ID | 
| sessionId | 문자열 | true | MediaTailor가 플레이어 세션에 지정한 고유한 숫자 식별자. 세션에 대해 플레이어가 하는 모든 요청은 세션 ID가 동일합니다. 예시: e039fd39-09f0-46b2-aca9-9871cc116cde. | 
| sessionType | 문자열(법정 값: [DASH, HLS]) | true | 플레이어의 스트림 유형 | 
| vastAd | [vastAd](#ads-logs-vastAd) 형식의 객체 | false | VAST 응답에서 구문 분석된 단일 광고에 관한 정보 | 
| vastResponse | [vastResponse](#ads-logs-vastResponse) 형식의 객체 | false | MediaTailor가 ADS에서 받은 VAST 응답에 관한 정보 | 
| vodCreativeOffsets | [vodCreativeOffsets](#ads-logs-vodCreativeOffsets) 형식의 객체 | false | VMAP 응답에 근거하여 MediaTailor가 가능 구간을 삽입할 매니페스트의 시간 오프셋을 나타내는 맵 | 
| vodVastResponseTimeOffset | number | false | VOD 광고 삽입을 위한 VMAP별 시간 오프셋 | 

### adContent
<a name="ads-logs-adContent"></a>

이 섹션에서는 ADS 로그 adContent의 속성에 관해 설명합니다.


**ADS 로그 adContent의 속성**  

| 속성 | Type | 필수 | 설명 | 
| --- | --- | --- | --- | 
| adPlaylistUris | [adPlaylistUris](#ads-logs-adPlaylistUris) 형식의 객체 | false | 변형의 원본 매니페스트에서 변형의 광고 매니페스트로 매핑. DASH의 경우 여기에는 단일 항목이 포함되어 있는데, 그 이유는 모든 변형이 단일 DASH 매니페스트에 표시되기 때문입니다. | 

### adPlaylistUris
<a name="ads-logs-adPlaylistUris"></a>

이 섹션에서는 ADS 로그 adPlaylistUris의 속성에 관해 설명합니다.


**ADS 로그 adPlaylistUris의 속성**  

| 속성 | Type | 필수 | 설명 | 
| --- | --- | --- | --- | 
| <any string> | 문자열 | false | 특정 변형에 대한 ad 매니페스트의 URL | 

### avail
<a name="ads-logs-avail"></a>

이 섹션에서는 ADS 로그 가능 구간의 속성에 관해 설명합니다.


**ADS 로그 가능 구간의 속성**  

| 속성 | Type | 필수 | 설명 | 
| --- | --- | --- | --- | 
| availId | 문자열 | true | 이 가능 구간의 고유 식별자. HLS의 경우 이것은 가능 구간이 시작되는 미디어 시퀀스 번호입니다. DASH의 경우 이것은 기간 ID입니다. | 
| creativeAds | [creativeAd](#ads-logs-creativeAd) 형식의 배열 | true | MediaTailor가 가능 구간에 삽입한 광고 | 
| fillRate | number | true | 광고가 가능 구간 지속시간을 채우는 속도로서 0.0(0%인 경우)에서 1.0(100%인 경우)까지입니다. | 
| filledDuration | number | true | 가능 구간에 삽입된 모든 광고의 지속시간을 합한 것 | 
| numAds | number | true | MediaTailor가 가능 구간에 삽입한 광고의 수 | 
| originAvailDuration | number | true | 원본의 콘텐츠 스트림에 지정된 가능 구간의 지속시간(CUE\$1OUT 또는 SCTE) | 
| skippedAds | [skippedAd](#ads-logs-skippedAd) 형식의 배열 | false | TRANSCODE\$1IN\$1PROGRESS 또는 TRANSCODE\$1ERROR와 같은 이유로 MediaTailor가 삽입하지 않은 광고 건너뛴 광고 이유 목록은 섹션을 참조하세요[광고 건너뛰기 문제 해결](troubleshooting-ad-skipping-overview.md). | 
| slateAd | [slateAd](#ads-logs-slateAd) 형식의 객체 | true | 슬레이트 광고에 관한 정보로서 MediaTailor는 이 정보를 사용해 가능 구간 내에 채워지지 않은 세그먼트를 모두 채웁니다. | 

### creativeAd
<a name="ads-logs-creativeAd"></a>

이 섹션에서는 ADS 로그 creativeAd의 속성에 관해 설명합니다.


**ADS 로그 creativeAd의 속성**  

| 속성 | Type | 필수 | 설명 | 
| --- | --- | --- | --- | 
| adContent | [adContent](#ads-logs-adContent) 형식의 객체 | true | 삽입된 광고의 콘텐츠에 관한 정보 | 
| creativeUniqueId | 문자열 | true | 트랜스코딩용 키로 사용되는 광고용 고유 식별자. 이것은 VAST 응답의 크리에이티브에 대한 ID 필드입니다(제공되는 경우). 또는 광고의 메자닌 URL입니다. | 
| trackingEvents | [trackingEvents](#ads-logs-trackingEvents) 형식의 객체 | true | 광고의 다양한 추적 이벤트에 대한 추적 비콘 URL. 키는 이벤트 이름이고, 값은 비콘 URL의 목록입니다. | 
| transcodedAdDuration | number | true | 트랜스코딩된 자산에서 계산된 광고의 지속시간 | 
| uri | 문자열 | true | 메자닌 버전 광고의 URL로서, 트랜스코더에 입력되는 값 | 
| vastDuration | number | true | VAST 응답에서 구문 분석되는 광고의 지속시간 | 

### requestheaders
<a name="ads-logs-requestheaders"></a>

이 섹션에서는 ADS 로그 requestheaders의 속성에 관해 설명합니다.


**ADS 로그 requestheaders의 속성**  

| 속성 | Type | 필수 | 설명 | 
| --- | --- | --- | --- | 
| name | 문자열 | true | 헤더의 이름 | 
| value | 문자열 | true | 헤더의 값 | 

### skippedAd
<a name="ads-logs-skippedAd"></a>

이 섹션에서는 ADS 로그 skippedAd의 속성에 관해 설명합니다.


**ADS 로그 skippedAd의 속성**  

| 속성 | Type | 필수 | 설명 | 
| --- | --- | --- | --- | 
| adMezzanineUrl | 문자열 | true | 건너뛴 광고의 메자닌 URL | 
| creativeUniqueId | 문자열 | true | 트랜스코딩용 키로 사용되는 광고용 고유 식별자. 이것은 VAST 응답의 크리에이티브에 대한 ID 필드입니다(제공되는 경우). 또는 광고의 메자닌 URL입니다. | 
| skippedReason | 문자열 | true | 광고가 삽입되지 않은 이유를 나타내는 코드. 예시: TRANSCODE\$1IN\$1PROGRESS.건너뛴 광고 이유 목록은 섹션을 참조하세요[광고 건너뛰기 문제 해결](troubleshooting-ad-skipping-overview.md). | 
| transcodedAdDuration | number | false | 트랜스코딩된 자산에서 계산된 광고의 지속시간 | 
| vastDuration | number | true | VAST 응답에서 구문 분석되는 광고의 지속시간 | 

### slateAd
<a name="ads-logs-slateAd"></a>

이 섹션에서는 ADS 로그 slateAd의 속성에 관해 설명합니다.


**ADS 로그 slateAd의 속성**  

| 속성 | Type | 필수 | 설명 | 
| --- | --- | --- | --- | 
| adContent | [adContent](#ads-logs-adContent) 형식의 객체 | true | 삽입된 광고의 콘텐츠에 관한 정보 | 
| creativeUniqueId | 문자열 | true | 트랜스코딩용 키로 사용되는 광고용 고유 식별자. 이것은 VAST 응답의 크리에이티브에 대한 ID 필드입니다(제공되는 경우). 또는 광고의 메자닌 URL입니다. | 
| transcodedAdDuration | number | true | 트랜스코딩된 자산에서 계산된 광고의 지속시간 | 
| uri | 문자열 | true | 메자닌 버전 광고의 URL로서, 트랜스코더에 입력되는 값 | 

### trackingEvents
<a name="ads-logs-trackingEvents"></a>

이 섹션에서는 ADS 로그 trackingEvents의 속성에 관해 설명합니다.


**ADS 로그 trackingEvents의 속성**  

| 속성 | Type | 필수 | 설명 | 
| --- | --- | --- | --- | 
| <any string> | 문자열 형식의 배열 | false | 지정된 추적 이벤트의 비콘 URL 목록(노출, 완료 등) | 

### vastAd
<a name="ads-logs-vastAd"></a>

이 섹션에서는 ADS 로그 vastAd의 속성에 관해 설명합니다.


**ADS 로그 vastAd의 속성**  

| 속성 | Type | 필수 | 설명 | 
| --- | --- | --- | --- | 
| adSystem | 문자열 | true | VAST 응답에 있는 AdSystem 태그의 값 | 
| adTitle | 문자열 | true | VAST 응답에서 광고에 사용할 수 있는 미디어 파일 | 
| creativeAdId | 문자열 | true | VAST 응답에 있는 Creative 태그의 adId 속성에 대한 값 | 
| creativeId | 문자열 | true | VAST 응답에 있는 Creative 태그의 id 속성에 대한 값 | 
| duration | number | true | VAST 응답의 linear 요소에 있는 duration 태그에 근거하여 산출한 대략적인 광고 지속시간 | 
| trackingEvents | [trackingEvents](#ads-logs-trackingEvents) 형식의 객체 | true | 광고의 다양한 추적 이벤트에 대한 추적 비콘 URL. 키는 이벤트 이름이고, 값은 비콘 URL의 목록입니다. | 
| vastAdId | 문자열 | true | VAST 응답에 있는 Ad 태그의 id 속성에 대한 값 | 
| vastAdTagUri | 문자열 | false | 광고에 대한 VMAP별 리디렉션 URI | 
| vastMediaFiles | [vastMediaFile](#ads-logs-vastMediaFile) 형식의 배열 | true | VAST 응답에서 광고에 사용할 수 있는 미디어 파일의 목록 | 

### vastMediaFile
<a name="ads-logs-vastMediaFile"></a>

이 섹션에서는 ADS 로그 vastMediaFile의 속성에 관해 설명합니다.


**ADS 로그 vastMediaFile의 속성**  

| 속성 | Type | 필수 | 설명 | 
| --- | --- | --- | --- | 
| apiFramework | 문자열 | true | 미디어 파일 관리에 필요한 API 프레임워크 예시: VPAID. | 
| bitrate | number | true | 미디어 파일의 비트레이트 | 
| delivery | 문자열 | true | 미디어 파일에 사용되는 프로토콜로서 프로그레시브 또는 스트리밍으로 설정됨 | 
| height | number | true | 미디어 파일의 픽셀 높이 | 
| id | 문자열 | true | MediaFile 태그의 id 속성에 대한 값 | 
| type | 문자열 | true | MediaFile 태그의 형식 속성에서 얻은 MIME 형식의 미디어 파일 | 
| uri | 문자열 | true | 메자닌 버전 광고의 URL로서, 트랜스코더에 입력되는 값 | 
| width | number | true | 미디어 파일의 픽셀 너비 | 

### vastResponse
<a name="ads-logs-vastResponse"></a>

이 섹션에서는 ADS 로그 vastResponse의 속성에 관해 설명합니다.


**ADS 로그 vastResponse 속성**  

| 속성 | Type | 필수 | 설명 | 
| --- | --- | --- | --- | 
| errors | 문자열 형식의 배열 | true | VAST 응답의 Error 태그에서 구문 분석된 오류 URL | 
| vastAds | [vastAd](#ads-logs-vastAd) 형식의 배열 | true | VAST 응답에서 구문 분석된 광고 | 
| version | 문자열 | true | 응답에 있는 VAST 태그의 version 속성에서 구문 분석된 VAST 사양 버전 | 

### vodCreativeOffsets
<a name="ads-logs-vodCreativeOffsets"></a>

이 섹션에서는 ADS 로그 vodCreativeOffsets의 속성에 관해 설명합니다.


**ADS 로그 vodCreativeOffsets의 속성**  

| 속성 | Type | 필수 | 설명 | 
| --- | --- | --- | --- | 
| <any string> | [vodCreativeOffset](#ads-logs-vodCreativeOffset) 형식의 배열 | false | 매니페스트의 시간 오프셋에서 이 시점에 삽입할 광고 목록으로 매핑 | 

### vodCreativeOffset
<a name="ads-logs-vodCreativeOffset"></a>

이 섹션에서는 ADS 로그 vodCreativeOffset의 속성에 관해 설명합니다.


**ADS 로그 vodCreativeOffset의 속성**  

| 속성 | Type | 필수 | 설명 | 
| --- | --- | --- | --- | 
| adContent | [adContent](#ads-logs-adContent) 형식의 객체 | true | 삽입된 광고의 콘텐츠에 관한 정보 | 
| creativeUniqueId | 문자열 | true | 트랜스코딩용 키로 사용되는 광고용 고유 식별자. 이것은 VAST 응답의 크리에이티브에 대한 ID 필드입니다(제공되는 경우). 또는 광고의 메자닌 URL입니다. | 
| trackingEvents | [trackingEvents](#ads-logs-trackingEvents) 형식의 객체 | true | 광고의 다양한 추적 이벤트에 대한 추적 비콘 URL. 키는 이벤트 이름이고, 값은 비콘 URL의 목록입니다. | 
| transcodedAdDuration | number | true | 트랜스코딩된 자산에서 계산된 광고의 지속시간 | 
| uri | 문자열 | true | 메자닌 버전 광고의 URL로서, 트랜스코더에 입력되는 값 | 
| vastDuration | number | true | VAST 응답에서 구문 분석되는 광고의 지속시간 | 

## ADS 로그 JSON 스키마
<a name="ads-log-json-schema"></a>

다음은 AWS Elemental MediaTailor ADS 로그에 대한 JSON 스키마를 나열합니다.

```
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "http://amazon.com/elemental/midas/mms/adsLogSchema.json",
  "type": "object",
  "title": "AWS Elemental MediaTailor ADS Log JSON Schema",
  "required": [
    "eventType",
    "eventTimestamp",
    "requestId",
    "sessionType",
    "eventDescription",
    "awsAccountId",
    "customerId",
    "originId",
    "sessionId"
  ],
  "additionalProperties": false,
  "properties": {
    "eventType": {
      "$id": "#/properties/eventType",
      "type": "string",
      "description": "The code for the event that triggered this log message. Example: <code>VAST_RESPONSE</code>.",
      "examples": [
        "FILLED_AVAIL"
      ]
    },
    "eventTimestamp": {
      "$id": "#/properties/eventTimestamp",
      "type": "string",
      "description": "The date and time of the event.",
      "examples": [
        "1970-01-01T00:00:00Z"
      ],
      "format": "date-time"
    },
    "requestId": {
      "$id": "#/properties/requestId",
      "type": "string",
      "description": "The MediaTailor request ID, which you can use to correlate multiple log entries for the same request.",
      "examples": [
        "c7c7ae8c-a61e-44e0-8efd-7723995337a1"
      ],
      "pattern": "^(.*)$"
    },
    "sessionType": {
      "$id": "#/properties/sessionType",
      "type": "string",
      "enum": [
        "HLS",
        "DASH"
      ],
      "description": "The player's stream type."
    },
    "eventDescription": {
      "$id": "#/properties/eventDescription",
      "type": "string",
      "description": "A short description of the event that triggered this log message, provided by the MediaTailor service. By default, this is empty. Example: <code>Got VAST response</code>.",
      "default": "",
      "examples": [
        "Got VAST response"
      ],
      "pattern": "^(.*)$"
    },
    "awsAccountId": {
      "$id": "#/properties/awsAccountId",
      "type": "string",
      "description": "The AWS account ID for the MediaTailor configuration that was used for the session."
    },
    "customerId": {
      "$id": "#/properties/customerId",
      "type": "string",
      "description": "The hashed version of the AWS account ID, which you can use to correlate multiple log entries.",
      "pattern": "^(.*)$"
    },
    "originId": {
      "$id": "#/properties/originId",
      "type": "string",
      "description": "The configuration name from the MediaTailor configuration. This is different from the video content source, which is also part of the configuration.",
      "examples": [
        "external-canary-dash-serverside-reporting-onebox"
      ],
      "pattern": "^(.*)$"
    },
    "sessionId": {
      "$id": "#/properties/sessionId",
      "type": "string",
      "description": "The unique numeric identifier that MediaTailor assigned to the player session. All requests that a player makes for a session have the same session ID. Example: <code>e039fd39-09f0-46b2-aca9-9871cc116cde</code>.",
      "examples": [
        "120b9873-c007-40c8-b3db-0f1bd194970b"
      ],
      "pattern": "^(.*)$"
    },
    "avail": {
      "$id": "#/properties/avail",
      "type": "object",
      "title": "avail",
      "description": "Information about an avail that MediaTailor fills with ads. Currently, for the <code>FILLED_AVAIL</code> event type, this is the plan created by MediaTailor when it first encounters the avail. How the avail is eventually filled may vary from this plan, depending on how the content plays out.  ",
      "required": [
        "creativeAds",
        "originAvailDuration",
        "filledDuration",
        "fillRate",
        "driftMillisecondsAtAvailStart",
        "numAds",
        "slateAd",
        "availId"
      ],
      "additionalProperties":  false,
      "properties": {
        "originAvailDuration": {
          "$id": "#/properties/avail/originAvailDuration",
          "type": "number",
          "description": "The duration of the avail as specified in the content stream from the origin (<code>CUE_OUT</code> or <code>SCTE</code>)."
        },
        "filledDuration": {
          "$id": "#/properties/avail/filledDuration",
          "type": "number",
          "description": "The sum of the durations of all the ads inserted into the avail."
        },
        "fillRate": {
          "$id": "#/properties/avail/fillRate",
          "type": "number",
          "description": "The rate at which the ads fill the avail duration, from 0.0 (for 0%) to 1.0 (for 100%)."
        },
        "driftMillisecondsAtAvailStart": {
          "$id": "#/properties/avail/driftMillisecondsAtAvailStart",
          "type": "number",
          "description": "The cumulative drift at the beginning of this avail. A positive value implies that we are moving away from the live edge, a negative value implies that we are moving towards the live edge."
        },
        "creativeAds": {
          "$id": "#/properties/avail/creativeAds",
          "type": "array",
          "description": "The ads that MediaTailor inserted into the avail.",
          "items": {
            "type": "object",
            "title": "creativeAd",
            "description": "Information about a single inserted ad.",
            "required": [
              "uri",
              "creativeUniqueId",
              "adSystem",
              "adContent",
              "trackingEvents",
              "vastDuration",
              "transcodedAdDuration"
            ],
            "additionalProperties": false,
            "properties": {
              "uri": { "$ref": "#/definitions/adMezzanineUri" },
              "creativeUniqueId": { "$ref": "#/definitions/creativeUniqueId" },
              "adSystem": { "$ref": "#/definitions/adSystem" },
              "adContent": { "$ref": "#/definitions/adContent" },
              "trackingEvents": { "$ref": "#/definitions/trackingEvents" },
              "vastDuration": { "$ref": "#/definitions/vastDuration" },
              "transcodedAdDuration": { "$ref": "#/definitions/transcodedAdDuration" }
            }
          }
        },
        "numAds": {
          "$id": "#/properties/avail/numAds",
          "type": "number",
          "description": "The number of ads that MediaTailor inserted into the avail."
        },
        "slateAd": {
          "$id": "#/properties/avail/slateAd",
          "type": ["object", "null"],
          "title": "slateAd",
          "description": "Information about the slate ad, which MediaTailor uses to fill any unfilled segments in the avail.",
          "additionalProperties": false,
          "required": [
            "uri",
            "creativeUniqueId",
            "adContent",
            "transcodedAdDuration"
          ],
          "properties": {
            "uri": { "$ref": "#/definitions/adMezzanineUri" },
            "creativeUniqueId": { "$ref": "#/definitions/creativeUniqueId" },
            "adContent": { "$ref": "#/definitions/adContent" },
            "transcodedAdDuration": { "$ref": "#/definitions/transcodedAdDuration" }
          }
        },
        "availId": {
          "$id": "#/properties/avail/availId",
          "type": "string",
          "description": "The unique identifier for this avail. For HLS, this is the media sequence number where the avail begins. For DASH, this is the period ID."
        },
        "skippedAds": {
          "$id": "#/properties/avail/skippedAds",
          "type": "array",
          "description": "The ads that MediaTailor didn't insert, for reasons like <code>TRANSCODE_IN_PROGRESS</code> and <code>TRANSCODE_ERROR</code>.",
          "items": {
            "type": "object",
            "title": "skippedAd",
            "description": "Information about a single skipped ad.",
            "required": [
              "creativeUniqueId",
              "adMezzanineUrl",
              "skippedReason",
              "vastDuration"
            ],
            "additionalProperties": false,
            "properties": {
              "creativeUniqueId": { "$ref": "#/definitions/creativeUniqueId" },
              "adMezzanineUrl": {
                "type": "string",
                "description": "The mezzanine URL of the skipped ad."
              },
              "skippedReason": {
                "type": "string",
                "description": "The code that indicates why the ad wasn't inserted. Example: <code>TRANSCODE_IN_PROGRESS</code>."
              },
              "vastDuration": { "$ref": "#/definitions/vastDuration" },
              "transcodedAdDuration": { "$ref": "#/definitions/transcodedAdDuration" },
              "targetVariant": {
                "type": "object",
                "title": "targetVariant",
                "description": "The target variant of the source content. This key is present when an ad wasn't inserted due to the source content containing a variant that could not match to any variants present in this ad.",
                "required": [
                  "mediaProtocol",
                  "mediaType",
                  "bitrate",
                  "mediaResolution",
                  "codecs"
                ],
                "additionalProperties": false,
                "properties": {
                  "mediaProtocol": {
                    "type": "string",
                    "description": "The media protocol of this variant, such as HLS.",
                    "enum": [
                      "HLS",
                      "DASH"
                    ]
                  },
                  "mediaType": {
                    "type": "array",
                    "description": "The media type of this variant, such as VIDEO.",
                    "items": {
                      "type": "string",
                      "enum": [
                        "VIDEO",
                        "AUDIO",
                        "SUBTITLES",
                        "TRICK_PLAY"
                      ],
                      "description": "Media type, such as VIDEO."
                    }
                  },
                  "bitrate": {
                    "$ref": "#/definitions/bitrate"
                  },
                  "mediaResolution": {
                    "type": "object",
                    "title": "mediaResolution",
                    "description": "The media resolution of this variant.",
                    "required": [
                      "width",
                      "height"
                    ],
                    "additionalProperties": false,
                    "properties": {
                      "width": {
                        "$ref": "#/definitions/width"
                      },
                      "height": {
                        "$ref": "#/definitions/height"
                      }
                    }
                  },
                  "codecs": {
                    "type": "array",
                    "description": "The codecs of this variant.",
                    "items": {
                      "type": "string",
                      "description": "Codec, such as avc1."
                    }
                  }
                }
              }
            }
          }
        },
        "adBreakTrackingEvents": {
          "$id": "#properties/avail/adBreakTrackingEvents",
          "type": "object",
          "title": "adBreakTrackingEvents",
          "description": "VMAP/ad break tracking events and corresponding URL",
          "properties": {
            "items": {
              "$ref": "#/definitions/adBreakTrackingEvents"
            }
          }
        }
      }
    },

    "vastResponse": {
      "$id": "#/properties/vastResponse",
      "type": "object",
      "title": "vastResponse",
      "description": "Information about the VAST response that MediaTailor received from the ADS.",
      "required": [
        "version",
        "vastAds",
        "errors",
        "nonLinearAdsList"
      ],
      "additionalProperties":  false,
      "properties": {
        "version": {
          "$id": "#/properties/vastResponse/version",
          "type": "string",
          "description": "The VAST specification version, parsed from the <code>version</code> attribute of the <code>VAST</code> tag in the response.",
          "examples": [
            "3.0"
          ],
          "pattern": "^(.*)$"
        },
        "vastAds": {
          "$id": "#/properties/vastResponse/vastAds",
          "type": "array",
          "description": "The ads parsed from the VAST response.",
          "items": {
            "$ref": "#/definitions/vastAd"
          }
        },
        "errors": {
          "$id": "#/properties/vastResponse/errors",
          "type": "array",
          "description": "The error URLs parsed from the <code>Error</code> tags in the VAST response.",
          "items": {
            "type": "string",
            "description": "A single error URL."
          }
        },
        "nonLinearAdsList": {
          "$id": "#/properties/vastResponse/nonLinearAds",
          "type": "array",
          "description": "A list of NonLinearAds as they are read from the VAST response.",
          "items": {
            "$ref": "#/definitions/nonLinearAds"
          }
        }
      }
    },

    "vastAd": {
      "$ref": "#/definitions/vastAd"
    },

    "vodVastResponseTimeOffset": {
      "$id": "#/properties/vodVastResponseTimeOffset",
      "type": "number",
      "description": "The VMAP specific time offset for VOD ad insertion.",
      "examples": [
        5.0
      ]
    },

    "vodCreativeOffsets": {
      "$id": "#/properties/vodCreativeOffsets",
      "type": "object",
      "title": "vodCreativeOffsets",
      "description": "A map that indicates the time offsets in the manifest where MediaTailor will insert avails, based on the VMAP response.",
      "additionalProperties": {
        "type": "array",
        "$id": "#/properties/vodCreativeOffsets/entry",
        "description": "A mapping from a time offset in the manifest to a list of ads to insert at this time.",
        "items": {
          "type": "object",
          "$id": "#/properties/vodCreativeOffsets/entry/items",
          "title": "vodCreativeOffset",
          "description": "The list of ads to insert at the specified time offset.",
          "additionalProperties": false,
          "required": [
            "uri",
            "creativeUniqueId",
            "vastDuration",
            "transcodedAdDuration",
            "adContent",
            "trackingEvents"
          ],
          "properties": {
            "uri": { "$ref": "#/definitions/adMezzanineUri" },
            "creativeUniqueId": { "$ref": "#/definitions/creativeUniqueId" },
            "vastDuration": { "$ref": "#/definitions/vastDuration" },
            "transcodedAdDuration": { "$ref": "#/definitions/transcodedAdDuration" },
            "adContent": { "$ref": "#/definitions/adContent" },
            "trackingEvents": { "$ref": "#/definitions/trackingEvents" }
          }
        }
      }
    },

    "adsRequestUrl": {
      "$id": "#/properties/adsRequestUrl",
      "type": "string",
      "description": "The full URL of the ADS request made by MediaTailor."
    },
    "adMarkers": {
      "$id": "#/properties/adMarkers",
      "type": "string",
      "description": "Found Ad Marker in the Manifest."
    },
    "segmentationUpid": {
      "$id": "#/properties/segmentationUpid",
      "type": "string",
      "description": "Value of segmentation upid parsed from ad markers in manifest."
    },
    "segmentationTypeId": {
      "$id": "#/properties/segmentationTypeId",
      "type": "integer",
      "description": "Value of segmentation typeId parsed from ad markers in manifest."
    },
    "requestHeaders": {
      "$id": "#/properties/requestHeaders",
      "type": "array",
      "description": "The headers that MediaTailor included with the ADS request. Typically, the logs include these when a request to the ADS fails, to help with troubleshooting.",
      "items": {
        "type": "object",
        "title": "requestheaders",
        "description": "The name and value for a single header included in the ADS request.",
        "required": [
          "name",
          "value"
        ],
        "additionalProperties": false,
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the header."
          },
          "value": {
            "type": "string",
            "description": "The value of the header."
          }
        }
      }
    },

    "originalTargetUrl": {
      "$id": "#/properties/originalTargetUrl",
      "type": "string",
      "description": "The old URL to which MediaTailor was going to make a request."
    },
    "prefetchScheduleName": {
      "$id": "#/properties/prefetchScheduleName",
      "type": "string",
      "description": "The name of the prefetch schedule associated with this ad event.",
      "examples": [
        "PrefetchScheduleName"
      ],
      "pattern": "^(.*)$"
    },
    "updatedTargetUrl": {
      "$id": "#/properties/updatedTargetUrl",
      "type": "string",
      "description": "The new URL to which MediaTailor is making a request."
    },

    "rawAdsResponse": {
      "$id": "#/properties/rawAdsResponse",
      "type": "string",
      "description": "Paginated ADS response as it's exactly returned to MediaTailor."
    },
    "rawAdsResponseIndex": {
      "$id": "#/properties/rawAdsResponseIndex",
      "type": "integer",
      "description": "Integer value denoting this rawAdsResponse's index into the full ADS response. This value is used to order the paginated messages for this ADS response."
    }
  },

  "__COMMENT_oneOf": "The oneOf section defines subtypes for our events. Subtypes can have different rules, including which fields are required. For more information, see https://json-schema.org/understanding-json-schema/reference/combining.html#oneof ",

  "oneOf": [
    { "$ref": "#/definitions/eventAdMarkersFound" },
    { "$ref": "#/definitions/eventNonAdMarkerFound" },
    { "$ref": "#/definitions/eventMakingAdsRequest" },
    { "$ref": "#/definitions/eventModifiedTargetUrl" },
    { "$ref": "#/definitions/eventRawAdsResponse" },
    { "$ref": "#/definitions/eventVastResponse" },
    { "$ref": "#/definitions/eventFilledAvail" },
    { "$ref": "#/definitions/eventFilledOverlayAvail" },
    { "$ref": "#/definitions/eventErrorFiringBeaconFailed" },
    { "$ref": "#/definitions/eventWarningNoAdvertisements" },
    { "$ref": "#/definitions/eventUnknownHost" },
    { "$ref": "#/definitions/eventErrorAdsTimeout" },
    { "$ref": "#/definitions/eventErrorVastMissingOverlays" },
    { "$ref": "#/definitions/eventPlannedAvail" },
    { "$ref": "#/definitions/eventEmptyVastResponse" },
    { "$ref": "#/definitions/eventEmptyVmapResponse" },
    { "$ref": "#/definitions/eventErrorUnknown" },
    { "$ref": "#/definitions/eventVastRedirect" },
    { "$ref": "#/definitions/eventRedirectedVastResponse" },
    { "$ref": "#/definitions/eventErrorAdsMissingImpression" },
    { "$ref": "#/definitions/eventErrorAdsResponseParse" },
    { "$ref": "#/definitions/eventErrorAdsInvalidResponse" },
    { "$ref": "#/definitions/eventErrorDisallowedHost"},
    { "$ref": "#/definitions/eventPersonalizationDisabled"},
    { "$ref": "#/definitions/eventWarningDynamicVariableSubFailed"},
    { "$ref": "#/definitions/eventVodTimeBasedAvailPlanVastResponseForOffset" },
    { "$ref": "#/definitions/eventVodTimeBasedAvailPlanSuccess" }
  ],

  "definitions": {
    "eventAdMarkersFound": {
      "$id": "#/definitions/eventAdMarkersFound",
      "required": [
        "eventType",
        "adMarkers"
      ],
      "properties": {
        "eventType": {
          "type": "string",
          "const": "AD_MARKER_FOUND"
        }
      }
    },
    "eventNonAdMarkerFound": {
      "$id": "#/definitions/eventNonAdMarkerFound",
      "required": [
        "eventType",
        "adMarkers"
      ],
      "properties": {
        "eventType": {
          "type": "string",
          "const": "NON_AD_MARKER_FOUND"
        }
      }
    },
    "eventMakingAdsRequest": {
      "$id": "#/definitions/eventMakingAdsRequest",
      "required": [
        "eventType",
        "adsRequestUrl"
      ],
      "properties": {
        "eventType": {
          "type": "string",
          "const": "MAKING_ADS_REQUEST"
        }
      }
    },

    "eventModifiedTargetUrl": {
      "$id": "#/definitions/eventModifiedTargetUrl",
      "required": [
        "eventType",
        "originalTargetUrl",
        "updatedTargetUrl"
      ],
      "properties": {
        "eventType": {
          "type": "string",
          "const": "MODIFIED_TARGET_URL"
        }
      }
    },

    "eventRawAdsResponse": {
      "$id": "#/definitions/eventRawAdsResponse",
      "required": [
        "eventType",
        "rawAdsResponse",
        "rawAdsResponseIndex"
      ],
      "properties": {
        "eventType": {
          "type": "string",
          "const": "RAW_ADS_RESPONSE"
        }
      }
    },

    "eventVastResponse": {
      "$id": "#/definitions/eventVastResponse",
      "_comment": "NOTE: the vastResponse property should ideally be marked as a required field for this event, but unfortunately, in the case of an empty vast response, we currently emit an EMPTY_VAST_RESPONSE followed by a VAST_RESPONSE, and the vastResponse property is not present in the latter. We need to fix this so that we don't emit both of those events in the empty response case, and update this schema to flag vastResponse as required for VAST_RESPONSE.",
      "required": [
        "eventType"
      ],
      "properties": {
        "eventType": {
          "type": "string",
          "const": "VAST_RESPONSE"
        }
      }
    },

    "eventFilledAvail": {
      "$id": "#/definitions/eventFilledAvail",
      "required": [
        "eventType",
        "avail"
      ],
      "properties": {
        "eventType": {
          "type": "string",
          "const": "FILLED_AVAIL"
        }
      }
    },

    "eventFilledOverlayAvail": {
      "$id": "#/definitions/eventFilledOverlayAvail",
      "required": [
        "eventType",
        "avail"
      ],
      "properties": {
        "eventType": {
          "type": "string",
          "const": "FILLED_OVERLAY_AVAIL"
        }
      }
    },

    "eventErrorVastMissingOverlays": {
      "$id": "#/definitions/eventErrorVastMissingOverlays",
      "required": [
        "eventType",
        "adsRequestUrl",
        "requestHeaders"
      ],
      "properties": {
        "eventType": {
          "type": "string",
          "const": "ERROR_VAST_MISSING_OVERLAYS"
        }
      }
    },

    "eventErrorFiringBeaconFailed": {
      "$id": "#/definitions/eventErrorFiringBeaconFailed",
      "required": [
        "eventType",
        "error",
        "beaconInfo"
      ],
      "properties": {
        "eventType": {
          "type": "string",
          "const": "ERROR_FIRING_BEACON_FAILED"
        }
      }
    },

    "eventWarningNoAdvertisements": {
      "$id": "#/definitions/eventWarningNoAdvertisements",
      "required": [
        "eventType"
      ],
      "_comment": "We should really have a more descriptive error field for these events",
      "properties": {
        "eventType": {
          "type": "string",
          "const": "WARNING_NO_ADVERTISEMENTS"
        }
      }
    },

    "eventUnknownHost": {
      "$id": "#/definitions/eventUnknownHost",
      "required": [
        "eventType",
        "requestHeaders"
      ],
      "properties": {
        "eventType": {
          "type": "string",
          "const": "ERROR_UNKNOWN_HOST"
        }
      }
    },

    "eventErrorAdsTimeout": {
      "$id": "#/definitions/eventErrorAdsTimeout",
      "required": [
        "eventType",
        "adsRequestUrl",
        "requestHeaders"
      ],
      "properties": {
        "eventType": {
          "type": "string",
          "const": "ERROR_ADS_TIMEOUT"
        }
      }
    },

    "eventPlannedAvail": {
      "$id": "#/definitions/eventPlannedAvail",
      "required": [
        "eventType"
      ],
      "_comment": "TODO: Flesh this out as we implement it",
      "properties": {
        "eventType": {
          "type": "string",
          "const": "PLANNED_AVAIL"
        }
      }
    },

    "eventEmptyVastResponse": {
      "$id": "#/definitions/eventEmptyVastResponse",
      "required": [
        "eventType"
      ],
      "properties": {
        "eventType": {
          "type": "string",
          "const": "EMPTY_VAST_RESPONSE"
        }
      }
    },

    "eventEmptyVmapResponse": {
      "$id": "#/definitions/eventEmptyVmapResponse",
      "required": [
        "eventType"
      ],
      "properties": {
        "eventType": {
          "type": "string",
          "const": "EMPTY_VMAP_RESPONSE"
        }
      }
    },

    "eventErrorUnknown": {
      "$id": "#/definitions/eventErrorUnknown",
      "required": [
        "eventType"
      ],
      "_comment": "TODO: we should have a field for the exception message or something",
      "properties": {
        "eventType": {
          "type": "string",
          "const": "ERROR_UNKNOWN"
        }
      }
    },

    "eventVastRedirect": {
      "$id": "#/definitions/eventVastRedirect",
      "required": [
        "eventType"
      ],
      "properties": {
        "eventType": {
          "type": "string",
          "const": "VAST_REDIRECT"
        }
      }
    },

    "eventRedirectedVastResponse": {
      "$id": "#/definitions/eventRedirectedVastResponse",
      "required": [
        "eventType"
      ],
      "properties": {
        "eventType": {
          "type": "string",
          "const": "REDIRECTED_VAST_RESPONSE"
        }
      },
      "_comment": "NOTE that the property vastResponse is not required because empty vast responses do not contain a vastResponse."
    },

    "eventErrorAdsResponseParse": {
      "$id": "#/definitions/eventErrorAdsResponseParse",
      "required": [
        "eventType"
      ],
      "_comment": "We should have a field with an error message here",
      "properties": {
        "eventType": {
          "type": "string",
          "const": "ERROR_ADS_RESPONSE_PARSE"
        }
      }
    },

    "eventErrorAdsInvalidResponse": {
      "$id": "#/definitions/eventErrorAdsInvalidResponse",
      "required": [
        "eventType",
        "additionalInfo"
      ],
      "properties": {
        "eventType": {
          "type": "string",
          "const": "ERROR_ADS_INVALID_RESPONSE"
        }
      }
    },

    "eventErrorAdsMissingImpression": {
      "$id": "#/definitions/eventErrorAdsMissingImpression",
      "required": [
        "eventType"
      ],
      "properties": {
        "eventType": {
          "type": "string",
          "const": "ERROR_VAST_MISSING_IMPRESSION"
        }
      }
    },

    "eventErrorDisallowedHost": {
      "$id": "#/definitions/eventErrorDisallowedHost",
      "required": [
        "eventType"
      ],
      "properties": {
        "eventType": {
          "type": "string",
          "const": "ERROR_DISALLOWED_HOST"
        }
      }
    },

    "eventPersonalizationDisabled": {
      "$id": "#/definitions/eventPersonalizationDisabled",
      "required": [
        "eventType"
      ],
      "properties": {
        "eventType": {
          "type": "string",
          "const": "ERROR_PERSONALIZATION_DISABLED"
        }
      }
    },

    "eventWarningDynamicVariableSubFailed": {
      "$id": "#/definitions/eventWarningDynamicVariableSubFailed",
      "required": [
        "eventType",
        "adsRequestUrl"
      ],
      "properties": {
        "eventType": {
          "type": "string",
          "const": "WARNING_URL_VARIABLE_SUBSTITUTION_FAILED"
        }
      }
    },

    "eventVodTimeBasedAvailPlanVastResponseForOffset": {
      "$id": "#/definitions/eventVodTimeBasedAvailPlanVastResponseForOffset",
      "required": [
        "eventType",
        "vastResponse"
      ],
      "properties": {
        "eventType": {
          "type": "string",
          "const": "VOD_TIME_BASED_AVAIL_PLAN_VAST_RESPONSE_FOR_OFFSET"
        }
      }
    },

    "eventVodTimeBasedAvailPlanSuccess": {
      "$id": "#/definitions/eventVodTimeBasedAvailPlanSuccess",
      "required": [
        "eventType",
        "vodCreativeOffsets"
      ],
      "properties": {
        "eventType": {
          "type": "string",
          "const": "VOD_TIME_BASED_AVAIL_PLAN_SUCCESS"
        }
      }
    },

    "creativeUniqueId": {
      "type": "string",
      "description": "The unique identifier for the ad, used as a key for transcoding. This is the ID field for the creative in the VAST response, if available. Otherwise, it's the mezzanine URL of the ad. "
    },

    "adSystem": {
      "type": "string",
      "description": "The value of the <code>AdSystem</code> tag in the VAST response. "
    },

    "vastDuration": {
      "type": "number",
      "description": "The duration of the ad, as parsed from the VAST response."
    },

    "transcodedAdDuration": {
      "type": "number",
      "description": "The duration of the ad, calculated from the transcoded asset."
    },

    "adContent": {
      "$id": "#/properties/adContent",
      "type": ["object", "null"],
      "title": "adContent",
      "description": "Information about the content of the inserted ad.",
      "additionalProperties": false,
      "properties": {
        "adPlaylistUris": {
          "$id": "#/properties/adContent/adPlaylistUris",
          "type": "object",
          "title": "adPlaylistUris",
          "description": "The mapping from the origin manifest for a variant to the ad manifest for the variant. For DASH, this contains a single entry, because all variants are represented in a single DASH manifest. ",
          "additionalProperties": {
            "$id": "#/properties/adContent/adPlaylistUris/adPlaylistUri",
            "type": "string",
            "description": "The URL of the ad manifest for the specific variant."
          }
        }
      }
    },

    "adMezzanineUri": {
      "type": "string",
      "description": "The URL of the mezzanine version of the ad, which is the input to the transcoder."
    },

    "bitrate": {
      "type": "integer",
      "examples": [
        533
      ],
      "description": "The bitrate."
    },
    "width": {
      "type": "integer",
      "examples": [
        1280
      ],
      "description": "Width in pixels."
    },
    "height": {
      "type": "integer",
      "examples": [
        720
      ],
      "description": "Height in pixels."
    },

    "trackingEvents": {
      "type": "object",
      "title": "trackingEvents",
      "description": "The tracking beacon URLs for the various tracking events for the ad. The keys are the event names, and the values are a list of beacon URLs.",

      "additionalProperties":  {
        "type": "array",
        "description": "The list of beacon URLs for the specified tracking event (impression, complete, and so on)",
        "items": {
          "type": "string",
          "description": "The beacon URLs for this tracking event."
        }
      }
    },

    "nonLinearAds": {
      "$id": "#/properties/nonLinearAds",
      "type": "object",
      "title": "nonLinearAds",
      "description": "A NonLinearAds as it appears in the VAST response.",
      "required": [
        "nonLinearAdList",
        "nonLinearTrackingEvents"
      ],
      "properties": {
        "nonLinearAdList": {
          "type": "array",
          "description": "List of non linear ads as they exist within one NonLinearAds.",
          "items": {
            "type": "object",
            "title": "nonLinearAdList",
            "description": "List of NonLinearAd as they are parsed from its parent NonLinearAds.",
            "properties": {
              "nonLinearAdId": {
                "type": "string",
                "description": "Ad ID of this non linear ad."
              },
              "nonLinearAdSystem": {
                "type": "string",
                "description": "Ad system of this non linear ad's parent Inline ad."
              },
              "nonLinearAdTitle": {
                "type": "string",
                "description": "Ad title of this non linear ad's parent Inline ad."
              },
              "nonLinearCreativeId": {
                "type": "string",
                "description": "Creative ID of this non linear ad's parent Creative ad."
              },
              "nonLinearCreativeAdId": {
                "type": "string",
                "description": "Creative ad ID of this non linear ad."
              },
              "nonLinearCreativeSequence": {
                "type": "string",
                "description": "Creative sequence of this non linear ad."
              },
              "nonLinearWidth": {
                "type": "string",
                "description": "Width of this non linear ad."
              },
              "nonLinearHeight": {
                "type": "string",
                "description": "Height of this non linear ad."
              },
              "nonLinearExpandedWidth": {
                "type": "string",
                "description": "Expanded width of this non linear ad."
              },
              "nonLinearExpandedHeight": {
                "type": "string",
                "description": "Expanded height of this non linear ad."
              },
              "nonLinearScalable": {
                "type": "boolean",
                "description": "Boolean denoting if this non linear ad is scalable."
              },
              "nonLinearMaintainAspectRatio": {
                "type": "boolean",
                "description": "Boolean denoting if aspect ratio should be maintained for this non linear ad."
              },
              "nonLinearMinSuggestedDuration": {
                "type": "string",
                "description": "Min suggested duration for this non linear ad."
              },
              "nonLinearApiFramework": {
                "type": "string",
                "description": "API framework for this non linear ad's parent Inline ad."
              },
              "nonLinearStaticResource": {
                "type": "string",
                "description": "Static resource for this non linear ad."
              },
              "nonLinearStaticResourceCreativeType": {
                "type": "string",
                "description": "Static Resource creative type for this non linear ad."
              },
              "nonLinearIFrameResource": {
                "type": "string",
                "description": "I-Frame resource for this non linear ad."
              },
              "nonLinearHtmlResource": {
                "type": "string",
                "description": "HTML resource for this non linear ad."
              },
              "nonLinearAdParameters": {
                "type": "string",
                "description": "Ad parameters for this non linear ad."
              },
              "nonLinearClickThrough": {
                "type": "string",
                "description": "Click Through data for this non linear ad."
              },
              "nonLinearClickTracking": {
                "type": "string",
                "description": "Click Tracking data for this non linear ad."
              },
              "nonLinearClickTrackingId": {
                "type": "string",
                "description": "Click Tracking ID for this non linear ad."
              }
            }
          }
        },
        "nonLinearTrackingEvents": { "$ref": "#/definitions/trackingEvents" },
        "extensions": {
          "$id": "#/properties/nonLinearAds/extensions",
          "type": "array",
          "description": "Extensions that exist for this NonLinearAds.",
          "items": {
            "$id": "#/properties/nonLinearAds/extensions/items",
            "type": "object",
            "title": "Extensions",
            "description": "Extensions found in non linear ads",
            "additionalProperties":  false,
            "properties": {
              "extensionType": {
                "$id": "#/properties/nonLinearAds/extensions/extensionType",
                "type": "string",
                "description": "The value of the extension type attribute of the <code>Extensions</code> tag.",
                "examples": [
                  "FreeWheel"
                ]
              },
              "extensionContent": {
                "$id": "#/properties/nonLinearAds/extensions/extensionContent",
                "type": "string",
                "description": "The extension content attribute of the <code>Extensions</code> tag.",
                "examples": [
                  "progressive"
                ]
              }
            }
          }
        }
      }
    },
    "adBreakTrackingEvents": {
      "$id": "#/properites/adBreakTrackingEvents",
      "type": "object",
      "title": "adBreakTrackingEvents",
      "description": "These are all VMAP ad break tracking events.",
      "additionalProperties": {
        "type": "array",
        "description": "VMAP/ad break tracking events and corresponding URL",
        "items": {
          "type": "string",
          "description": "The beacon URLs for this tracking event."
        }
      }
    },
    "vastAd": {
      "$id": "#/properties/vastAd",
      "type": "object",
      "title": "vastAd",
      "description": "Information about a single ad parsed from the VAST response.",
      "required": [
        "vastAdId",
        "adSystem",
        "adTitle",
        "creativeId",
        "creativeAdId",
        "duration",
        "vastMediaFiles",
        "trackingEvents"
      ],
      "additionalProperties":  false,
      "properties": {
        "vastAdId": {
          "$id": "#/properties/vastAd/vastAdId",
          "type": "string",
          "description": "The value of the id attribute of the <code>Ad</code> tag in the VAST response",
          "examples": [
            "ad1"
          ]
        },
        "adSystem": {"$ref": "#/definitions/adSystem" } ,
        "adTitle": {
          "$id": "#/properties/vastAd/adTitle",
          "type": "string",
          "description": "The media files that are available for the ad in the VAST response.",
          "examples": [
            "External NCA1C1L1 LinearInlineSkippable"
          ]
        },
        "creativeId": {
          "$id": "#/properties/vastAd/creativeId",
          "type": "string",
          "description": "The value of the id attribute of the <code>Creative</code> tag in the VAST response.",
          "examples": [
            "creative1"
          ]
        },
        "creativeAdId": {
          "$id": "#/properties/vastAd/creativeAdId",
          "type": "string",
          "description": "The value of the adId attribute of the <code>Creative</code> tag in the VAST response."
        },
        "duration": {
          "$id": "#/properties/vastAd/duration",
          "type": "number",
          "description": "The approximate duration of the ad, based on the <code>duration</code> tag in the <code>linear</code> element of the VAST response.",
          "examples": [
            30,
            30.0
          ]
        },
        "vastMediaFiles": {
          "$id": "#/properties/vastAd/vastMediaFiles",
          "type": "array",
          "description": "The list of available media files for the ad in the VAST response.",
          "items": {
            "$id": "#/properties/vastAd/vastMediaFiles/items",
            "type": "object",
            "title": "vastMediaFile",
            "description": "Information about a media file for the ad.",
            "required": [
              "uri",
              "id",
              "delivery",
              "type",
              "apiFramework",
              "width",
              "height",
              "bitrate"
            ],
            "additionalProperties":  false,
            "properties": {
              "uri": { "$ref": "#/definitions/adMezzanineUri" },
              "id": {
                "$id": "#/properties/vastAd/vastMediaFiles/items/properties/id",
                "type": "string",
                "description": "The value of the id attribute of the <code>MediaFile</code> tag.",
                "examples": [
                  "GDFP"
                ]
              },
              "delivery": {
                "$id": "#/properties/vastAd/vastMediaFiles/items/properties/delivery",
                "type": "string",
                "description": "The protocol used for the media file, set to either progressive or streaming.",
                "examples": [
                  "progressive"
                ]
              },
              "type": {
                "$id": "#/properties/vastAd/vastMediaFiles/items/properties/type",
                "type": "string",
                "description": "The MIME type of the media file, taken from the type attribute of the <code>MediaFile</code> tag.",
                "examples": [
                  "video/mp4"
                ]
              },
              "apiFramework": {
                "$id": "#/properties/vastAd/vastMediaFiles/items/properties/apiFramework",
                "type": "string",
                "description": "The API framework needed to manage the media file. Example: <code>VPAID</code>."
              },
              "width": {
                "$ref": "#/definitions/width"
              },
              "height": {
                "$ref": "#/definitions/height"
              },
              "bitrate": {
                "$ref": "#/definitions/bitrate"
              }
            }
          }
        },
        "trackingEvents": { "$ref": "#/definitions/trackingEvents" },
        "vastAdTagUri": {
          "$id": "#/properties/vastAd/vastAdTagUri",
          "type": "string",
          "description": "The VMAP-specific redirect URI for an ad.",
          "examples": [
            "https://ads.redirect.com/redirect1"
          ]
        }
      }
    }
  }
}
```

# AWS Elemental MediaTailor 매니페스트 로그 설명 및 이벤트 유형
<a name="log-types"></a>

다음 섹션에서는 매니페스트를 요청하고 수신할 때 MediaTailor가 오리진 서버의 이벤트를 설명하기 위해 내보내는 로그를 설명합니다. 로그입니다`ManifestService`.

**Topics**
+ [ManifestService 이벤트](#log-types-origininteraction)
+ [매니페스트 로그 속성](#manifest-logs-main)

## ManifestService 이벤트
<a name="log-types-origininteraction"></a>

MediaTailor와 오리진의 상호 작용 중에 다음 이벤트가 발생합니다.


| Log | 설명 | 
| --- | --- | 
| CONFIG\$1SECURITY\$1ERROR | MediaTailor 구성에 보안 문제가 있습니다. | 
| CONFIG\$1SYNTAX\$1ERROR | 오리진 및 자산 경로로 인해 URL 형식이 잘못되었습니다. | 
| CONNECTION\$1ERROR | 오리진에 대한 MediaTailor 연결이 거부되거나 실패했습니다. | 
| GENERATED\$1MANIFEST | MediaTailor에서 매니페스트를 생성했습니다.이러한 로그를 수신하려면 디버그 모드가 활성화되어 있어야 합니다. 활성화 방법을 포함하여 디버그 로그 모드에 대한 자세한 내용은 섹션을 참조하세요[디버그 로그 생성](debug-log-mode.md). | 
| HOST\$1DISALLOWED | MediaTailor는이 호스트에 대한 HTTP 요청을 허용하지 않습니다. | 
| INCOMPATIBLE\$1HLS\$1VERSION | 매니페스트는 호환되지 않는 HLS 버전을 사용합니다. MediaTailor에는 버전 3 이상이 필요합니다. | 
| INVALID\$1SINGLE\$1PERIOD\$1DASH\$1MANIFEST | 단일 기간 DASH 매니페스트가 잘못되었습니다. MediaTailor가 단일 기간 DASH 매니페스트를 통과하고 있습니다. | 
| IO\$1ERROR | MediaTailor에서 오리진과 통신하는 동안 IO 오류가 발생했습니다. | 
| LAST\$1PERIOD\$1MISSING\$1AUDIO | 오리진 오디오 또는 비디오 정렬 오류로 AdaptationSets 인해 DASH 매니페스트의 마지막 기간에 모든 오디오가 누락되었습니다. 재생 문제를 방지하려면 최소한 다음 요청까지 마지막 기간 게시를 연기합니다. | 
| LAST\$1PERIOD\$1MISSING\$1AUDIO\$1WARNING | 오리진 오디오 또는 비디오 정렬 오류로 AdaptationSets 인해 DASH 매니페스트의 마지막 기간에 모든 오디오가 누락되었습니다. 마지막 기간을 게시(지연하지 않음)하도록 선택합니다. 오디오가 누락되면 재생 문제가 발생할 수 있습니다. | 
| MANIFEST\$1ERROR | MediaTailor 매니페스트 요청이 실패했습니다. | 
| NO\$1MASTER\$1OR\$1MEDIA\$1PLAYLIST | 오리진 응답에는 기본 재생 목록 또는 미디어 재생 목록이 포함되어 있지 않습니다. | 
| NO\$1MASTER\$1PLAYLIST | 오리진 응답에는 예상 기본 재생 목록이 포함되어 있지 않습니다. | 
| NO\$1MEDIA\$1PLAYLIST | 오리진 응답에 예상 미디어 재생 목록이 포함되어 있지 않습니다. | 
| ORIGIN\$1MANIFEST | MediaTailor가 오리진 매니페스트를 가져왔습니다.이러한 로그를 수신하려면 디버그 모드가 활성화되어 있어야 합니다. 활성화 방법을 포함하여 디버그 로그 모드에 대한 자세한 내용은 섹션을 참조하세요[디버그 로그 생성](debug-log-mode.md). | 
| PARSING\$1ERROR | 오리진이 매니페스트 요청을 구문 분석할 수 없습니다. | 
| SCTE35\$1PARSING\$1ERROR | MediaTailor가 매니페스트에서 Signal Binary 요소를 구문 분석할 수 없습니다. | 
| SESSION\$1INITIALIZED | 세션이 초기화되었습니다.이러한 로그를 수신하려면 디버그 모드가 활성화되어 있어야 합니다. 활성화 방법을 포함하여 디버그 로그 모드에 대한 자세한 내용은 섹션을 참조하세요[디버그 로그 생성](debug-log-mode.md). | 
| TIMEOUT\$1ERROR | MediaTailor 매니페스트 요청 시간이 초과되었습니다. | 
| TRACKING\$1RESPONSE | MediaTailor는 추적 응답을 제공했습니다.이러한 로그를 수신하려면 디버그 모드가 활성화되어 있어야 합니다. 활성화 방법을 포함하여 디버그 로그 모드에 대한 자세한 내용은 섹션을 참조하세요[디버그 로그 생성](debug-log-mode.md). | 
| UNKNOWN\$1ERROR | MediaTailor에서 알 수 없는 오류가 발생했습니다. | 
| UNKNOWN\$1HOST | 호스트를 알 수 없습니다. | 
| UNSUPPORTED\$1SINGLE\$1PERIOD\$1DASH\$1MANIFEST | 단일 기간 DASH 매니페스트는 지원되지 않습니다. MediaTailor가 단일 기간 DASH 매니페스트를 통과하고 있습니다. | 

## 매니페스트 로그 속성
<a name="manifest-logs-main"></a>

이 섹션에서는 매니페스트 로그의 속성을 설명합니다.


| 속성 | Type | 필수 | 
| --- | --- | --- | 
| awsAccountId | 문자열 | true | 
| eventTimestamp | 문자열 | true | 
| originId | 문자열 | true | 
| customerId | 문자열 | false | 
| eventType | 문자열 | false | 
| sessionId | 문자열 | false | 
| originRequestUrl | 문자열 | false | 
| mediaTailorPath | 문자열 | false | 
| requestId | 문자열 | false | 
| responseBody | 문자열 | false | 
| sessionType | 문자열(법정 값: [DASH, HLS]) | false | 
| requestNextToken | 문자열 | false | 
| eventDescription | 문자열 | false | 
| assetPath | 문자열 | false | 
| originFullUrl | 문자열 | false | 
| originPrefixUrl | 문자열 | false | 
| additionalInfo | 문자열 | false | 
| cause | 문자열 | false | 
| response | 문자열 | false | 
| httpCode | 문자열 | false | 
| errorMessage | 문자열 | false | 
| adAdsResponse | 문자열 | false | 
| adAdsRawResponse | 문자열 | false | 
| adAdsRequest | 문자열 | false | 
| adNumNewAvails | 문자열 | false | 
| generatedMediaPlaylist | 문자열 | false | 
| requestStartTime | 문자열 | false | 
| requestEndTime | 문자열 | false | 
| requestStartTimeEpochMillis | 문자열 | false | 
| requestEndTimeEpochMillis | 문자열 | false | 

# AWS Elemental MediaTailor 트랜스코딩 로그 설명 및 이벤트 유형
<a name="tm-log-format"></a>

다음 섹션에서는 광고 스티칭을 위해 크리에이티브를 준비할 때 MediaTailor가 트랜스코딩 서비스의 이벤트를 설명하기 위해 내보내는 로그를 설명합니다. 로그입니다`TranscodeService`.

**Topics**
+ [TranscodeService 이벤트](#log-types-tminteraction)
+ [트랜스코딩 로그 속성](#transcode-logs-main)

## TranscodeService 이벤트
<a name="log-types-tminteraction"></a>

광고를 트랜스코딩하는 동안 MediaTailor 상호 작용 중에 다음 이벤트가 발생합니다.


| Log | 설명 | 
| --- | --- | 
| IMPORT\$1ERROR | 가져오기 작업 중에 MediaTailor에서 내부 오류가 발생했습니다(미리 조정된 광고의 경우). 빈 광고 세트 사용. | 
| INITIALIZED | MediaTailor는 트랜스코딩 작업 또는 가져오기 작업(미리 조정된 광고의 경우)을 초기화했습니다. | 
| INTERNAL\$1ERROR | MediaTailor에서 내부 오류가 발생했습니다. 빈 광고 세트 사용. | 
| MISSING\$1VARIANTS | MediaTailor에서 변형이 누락되어 광고를 트랜스코딩할 수 없습니다. 빈 광고 세트 사용. | 
| PROFILE\$1NOT\$1FOUND | 트랜스코딩할 프로필이 누락되어 MediaTailor가 광고를 트랜스코딩할 수 없습니다. 빈 광고 세트 사용. | 
| TRANSCODE\$1COMPLETED | 비디오 트랜스코딩이 완료되었습니다. 광고는 광고 삽입에 사용할 수 있습니다. | 
| TRANSCODE\$1ERROR | MediaTailor에서 트랜스코딩 작업 중에 내부 오류가 발생했습니다. 빈 광고 세트 사용. | 
| TRANSCODE\$1IN\$1PROGRESS | 비디오 트랜스코딩이 진행 중입니다. 트랜스코딩된 비디오가 준비되지 않았습니다. 빈 광고 세트 사용. | 

## 트랜스코딩 로그 속성
<a name="transcode-logs-main"></a>

이 섹션에서는 트랜스코딩 로그의 속성을 설명합니다.


| 속성 | Type | 필수 | 설명 | 
| --- | --- | --- | --- | 
| awsAccountId | 문자열 | true | 세션에 사용된 MediaTailor 구성의 AWS 계정 ID입니다. | 
| eventTimestamp | 문자열 | true | 이벤트의 날짜 및 시간 | 
| originId | 문자열 | true | MediaTailor 구성의 구성 이름. 이것은 구성의 일부이기도 한 동영상 콘텐츠 원본과 다릅니다. | 
| eventType | 문자열 | false | 이 로그 메시지를 트리거한 이벤트의 코드. 예시: TRANSCODE\$1ERROR. | 
| eventDescription | 문자열 | false | 이 로그 메시지를 트리거한 이벤트에 대한 짧은 설명으로, MediaTailor 서비스에서 제공합니다. 기본적으로 이 문자열은 비어 있습니다. | 
| sessionId | 문자열 | false | MediaTailor가 플레이어 세션에 지정한 고유한 숫자 식별자. 세션에 대해 플레이어가 하는 모든 요청은 세션 ID가 동일합니다. 예시: e039fd39-09f0-46b2-aca9-9871cc116cde. | 
| creativeUniqueId | 문자열 | false | 트랜스코딩되는 광고 크리에이티브의 고유 식별자입니다. | 
| profileName | 문자열 | false |  | 
| adUri | 문자열 | false | 광고 크리에이티브의 URI입니다. | 
| transcodeRequestId | 문자열 | false | 이 트랜스코딩 요청의 고유 식별자입니다. | 
| cacheStatus | 문자열 | false | MediaTailor가 트랜스코딩된 광고를 캐싱했는지 여부를 나타냅니다. | 

# 벤딩된 로그를 사용하여 AWS Elemental MediaTailor 로그 전송
<a name="vended-logs"></a>

벤딩된 로그를 사용하면 유연성을 높이고 MediaTailor가 재생 구성에서 내보내는 로그를 전송할 위치를 제어할 수 있습니다.

MediaTailor는 벤딩 로그를 사용하여 구성과 관련된 모든 로그 활동을 Amazon CloudWatch Logs로 전송합니다. 그런 다음 CloudWatch Logs는 지정한 로그의 백분율을 선택한 대상으로 전송합니다. 지원되는 대상은 Amazon CloudWatch Logs 로그 그룹, Amazon S3 버킷 또는 Amazon Data Firehose 스트림입니다.

판매 로그는 볼륨 할인 요금으로 사용할 수 있으므로 로그를 CloudWatch Logs로 직접 전송하는 것과 비교하여 비용을 절감할 수 있습니다. 요금은 [Amazon CloudWatch 요금](https://aws.amazon.com/cloudwatch/pricing/)*의 로그 탭에서 판매* 로그를 참조**하세요**.

벤딩 로그를 사용하려면 다음을 수행해야 합니다.

1. [권한 추가](#vended-logs-perms).

1. [로그 전송 대상 생성](#vended-logs-destinations).

1. [CloudWatch Logs에서 로그 전송 구성](#vended-logs-delivery).

1. [MediaTailor에서 판매 로그 활성화](#vended-logs-config).

판매 로그에 대한 자세한 내용은 CloudWatch Logs 사용 설명서의 [AWS 서비스에서 로깅 활성화](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html)를 참조하세요. MediaTailor는 벤딩된 로그의 V2를 지원합니다.

## 1단계: MediaTailor 로그 전송에 대한 권한 추가
<a name="vended-logs-perms"></a>

판매 로그를 설정하는 사람에게는 전송 대상을 생성하고, 로그 전송을 구성하고, MediaTailor에서 판매 로그를 활성화할 수 있는 권한이 있어야 합니다. 다음 정책을 사용하여 판매 로그를 설정할 수 있는 적절한 권한이 있는지 확인합니다.

**CloudWatch Logs 및 전송 대상에 대한 정책**  
*Amazon CloudWatch Logs 사용 설명서*의 다음 섹션에서는 CloudWatch Logs 및 전송 대상의 로그를 사용할 수 있는 정책을 제공합니다. 여러 위치로 로그를 전송하는 경우 여러 정책을 생성하는 대신 정책 설명을 하나의 정책으로 결합할 수 있습니다.  
+ [CloudWatch Logs로 전송된 로그](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-infrastructure-V2-CloudWatchLogs)
+ [Amazon S3로 보낸 로그](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-infrastructure-V2-S3)
+ [Firehose로 전송된 로그](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AWS-logs-and-resource-policy.html#AWS-logs-infrastructure-V2-Firehose)

**콘솔에서 설정하기 위한 정책**  
API 또는 대신 콘솔을 통한 판매 로그 전송을 설정하는 경우 정책에 다음과 같은 추가 권한이 AWS CLI있어야 합니다.

**MediaTailor의 판매 로그에 대한 정책**  
MediaTailor에서 판매 로그 전송을 생성, 확인 또는 수정하려면 정책에 다음 권한이 있어야 합니다.

권한 추가 및 정책 작업에 대한 자세한 내용은 섹션을 참조하세요[에 대한 자격 증명 및 액세스 관리 AWS Elemental MediaTailor](security-iam.md).

## 2단계: MediaTailor 로그의 전송 대상 생성
<a name="vended-logs-destinations"></a>

로그가 전송될 리소스를 생성합니다. 이후 단계에서 로그 전송을 구성하는 데 사용할 리소스의 ARN을 기록합니다.

**CloudWatch Logs 로그 그룹 전송 대상**  
로그 그룹을 생성하는 데 도움이 되도록 다음 중 하나를 사용합니다.  
+ 콘솔의 경우 Amazon [ CloudWatch Logs 사용 설명서의 CloudWatch Logs에서 로그 그룹 생성을](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html#Create-Log-Group) 참조하세요. *Amazon CloudWatch *
+ API의 경우 Amazon CloudWatch Logs API 참조의 [CreateLogGroup](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateLogGroup.html)을 참조하세요. *Amazon CloudWatch * 
+ SDKs 및 CLI의 경우 Amazon CloudWatch Logs 사용 설명서의 [AWS SDK와 `CreateLogGroup` 함께 사용을 AWS CLI](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/example_cloudwatch-logs_CreateLogGroup_section.html) 참조하세요. *Amazon CloudWatch * 

**Amazon S3 버킷 전송 대상**  
버킷을 생성하는 데 도움이 되도록 다음 중 하나를 사용합니다.  
+ 콘솔, SDKs 및 CLI의 경우 *Amazon Simple Storage Service 사용 설명서*의 [버킷 생성을](https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-bucket-overview.html) 참조하세요.
+ API의 경우 *Amazon Simple Storage Service API* 참조의 [CreateBucket](https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateBucket.html)을 참조하세요.

**Firehose 스트림 전송 대상**  
스트림 생성에 대한 도움말은 *Amazon Data* [Firehose 개발자 안내서의 콘솔에서 Firehose 스트림 생성을](https://docs.aws.amazon.com/firehose/latest/dev/basic-create.html) 참조하세요.

## 3단계: MediaTailor 재생 구성에 대해 판매 로그 활성화
<a name="vended-logs-config"></a>

이전 단계에서 생성한 전송 대상으로 로그를 전송할 재생 구성을 생성하거나 업데이트합니다. 이후 단계에서 로그 전송을 구성하는 데 사용할 구성의 이름을 기록합니다.
+ 콘솔을 통해 벤딩된 로그를 활성화하려면 [구성 생성](configurations-create.md) 또는 구성 [구성 설정 편집](configurations-edit.md) 편집을 사용하여 **로깅** 설정에 액세스합니다. **로깅 전략**에서 **판매 로그**를 선택합니다.
+ API를 통해 벤딩된 로그를 활성화하려면 기존 구성이 있어야 합니다. `ConfigureLogsForPlaybackConfiguration`를 사용하여 로깅 전략를 추가합니다`Vended logs`.

CloudWatch Logs로 로그를 직접 전송하는 레거시 MediaTailor 로깅 전략을 사용 중이고 벤딩된 로그로 마이그레이션하려는 경우 섹션을 참조하세요[로깅 전략 마이그레이션](vended-logs-migrate.md).

**중요**  
 로그 전략을 레거시 CloudWatch에서 판매 로그로 변경하면 업데이트를 저장하는 즉시 MediaTailor가이 변경을 수행합니다. 판매 로깅을 완전히 구성할 때까지 로그 수신을 중지합니다.

## 4단계: CloudWatch Logs에서 로그 전송 구성
<a name="vended-logs-delivery"></a>

CloudWatch Logs에서는 로그 전송 부분을 나타내는 세 가지 요소를 생성해야 합니다. 이러한 요소는 *Amazon CloudWatch Logs API 참조*의 [CreateDelivery](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateDelivery.html)에 자세히 설명되어 있습니다. CloudWatch Logs API를 사용하여 전송을 구성하는 상위 단계는 다음과 같습니다.

**CloudWatch Logs(API)에서 로그 전송을 구성하려면**

1. [https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliverySource.html](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliverySource.html)를 사용하여 로그 소스를 추가합니다.

   는 로그를 생성하는 재생 구성을 `DeliverySource` 나타냅니다. 를 생성하려면 재생 구성의 이름이 필요합니다`DeliverySource`.

1. [https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestination.html](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestination.html)를 사용하여 로그를 작성할 대상을 추가합니다.

   는 전송 대상을 `DeliveryDestination` 나타냅니다. 를 생성하려면 로그 그룹, 버킷 또는 스트림의 ARN이 필요합니다`DeliveryDestination`.

1. 계정 간에 로그를 전송하는 [https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestinationPolicy.html](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_PutDeliveryDestinationPolicy.html) 경우를 사용합니다.

   전송 대상이 재생 구성과 다른 계정에 있는 경우이 필요합니다`DeliveryDestinationPolicy`. 이 정책은 CloudWatch Logs가에 로그를 전송하도록 허용합니다`DeliveryDestination`.

1. [https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateDelivery.html](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateDelivery.html)를 사용하여를 `DeliverySource`에 연결합니다`DeliveryDestination`.

   는 `DeliverySource`와 간의 연결을 `Delivery` 나타냅니다`DeliveryDestination`.

# AWS Elemental MediaTailor 로깅 전략 마이그레이션
<a name="vended-logs-migrate"></a>

 로그 전략을 레거시 CloudWatch에서 판매 로그로 변경하면 업데이트를 저장하는 즉시 MediaTailor가이 변경을 수행합니다. 로깅 워크플로의 중단을 방지하려면 다음 단계를 사용하여 로깅 전략을 마이그레이션하세요.

1. 에 설명된 단계를 따릅니다[벤딩된 로그 사용](vended-logs.md). 에서 두 로깅 전략(**벤딩 로그** 및 **레거시 CloudWatch**)을 *모두* [MediaTailor에서 판매 로그 활성화](vended-logs.md#vended-logs-config)선택합니다.

   MediaTailor는 판매된 로그를 통해 CloudWatch Logs로 직접 로그를 전송합니다.

1. 로깅 전략 및 전송 대상에 따라 워크플로에서 필요한 변경을 수행합니다.

1. 다시 살펴보고 **로깅 전략**에서 **레거시 CloudWatch**를 [MediaTailor에서 판매 로그 활성화](vended-logs.md#vended-logs-config) 제거합니다.

# Amazon CloudWatch Logs에 직접 AWS Elemental MediaTailor 로그 작성
<a name="monitoring-cw-logs"></a>

MediaTailor는 세션 활동 및 광고 결정 서버 상호 작용에 대한 자세한 정보가 포함된 로그를 생성하여 Amazon CloudWatch에 기록합니다. 로그는 세션 중에 발생하는 활동에 대한 순차적 설명을 제공합니다.

MediaTailor는 로그 전송 및 볼륨 할인 요금의 유연성을 위해 판매 로그를 사용할 수도 있습니다. 벤딩된 로그에 대한 자세한 내용은 섹션을 참조하세요[벤딩된 로그 사용](vended-logs.md).

**Topics**
+ [Amazon CloudWatch Logs에 대한 권한](monitoring-permissions.md)
+ [AWS Elemental MediaTailor 채널 어셈블리에 대한 "실행 중" 로그](as-run-log.md)
+ [AWS Elemental MediaTailor Amazon CloudWatch Logs Insights의 ADS 로그 분석](monitor-cloudwatch-ads-logs.md)

# Amazon CloudWatch Logs에 대한 권한
<a name="monitoring-permissions"></a>

 AWS Identity and Access Management (IAM)을 사용하여 Amazon CloudWatch에 대한 AWS Elemental MediaTailor 액세스 권한을 부여하는 역할을 생성합니다. 계정에 대해 CloudWatch Logs를 게시하려면 다음 단계를 수행해야 합니다. CloudWatch는 계정에 대한 지표를 자동으로 게시합니다.

**MediaTailor가 CloudWatch에 액세스할 수 있도록 허용하려면**

1. IAM 콘솔([https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/))을 엽니다.

1. IAM 콘솔의 탐색 창에서 **역할**을 선택하고 **역할 생성**을 선택합니다.

1. **다른 AWS 계정** 역할 유형을 선택합니다.

1. **계정 ID**에 AWS 계정 ID를 입력합니다.

1. **Require external ID(외부 ID 필요)**를 선택하고 **Midas**를 입력합니다. 이 옵션은 요청에 올바른 `sts:ExternalId`가 포함된 경우에만 서비스가 역할을 맡을 수 있도록 허용하는 조건을 신뢰 정책에 자동으로 추가합니다.

1. **다음: 권한**을 선택합니다.

1. 역할이 완료할 수 있는 작업을 지정하는 권한 정책을 추가합니다. 다음 옵션 중 하나를 선택한 다음 **Next: Review(다음: 검토)**를 선택합니다.
   + Amazon CloudWatch Logs에 대한 전체 액세스를 제공하는 **CloudWatchLogsFullAccess** Amazon CloudWatch 
   + Amazon CloudWatch에 대한 전체 액세스를 제공하는 **CloudWatchFullAccess** Amazon CloudWatch

1. **역할 이름**에 **MediaTailorLogger**를 입력한 다음 **역할 생성**을 선택합니다.

1. **역할** 페이지에서 방금 생성한 역할을 선택합니다.

1. 보안 주체를 업데이트하도록 신뢰 관계를 편집합니다.

   1. 역할의 **요약** 페이지에서 **신뢰 관계** 탭을 선택합니다.

   1. **신뢰 관계 편집**을 선택합니다.

   1. 정책 문서에서 보안 주체를 MediaTailor 서비스로 변경합니다. 형식은 다음과 같아야 합니다.

      ```
      "Principal": {
         "Service": "mediatailor.amazonaws.com"
      },
      ```

      전체 결과는 다음과 같습니다.

   1. **신뢰 정책 업데이트**를 선택합니다.

# AWS Elemental MediaTailor 채널 어셈블리에 대한 "실행 중" 로그
<a name="as-run-log"></a>

CloudWatch 로그 그룹의 *실행 중* `MediaTailor/Channel/AsRunLog` 로그에는 재생되는 프로그램 및 광고 시간에 대한 정보가 표시됩니다.

채널을 생성하면 실행 중 로그가 기본적으로 비활성화됩니다. 콘솔 또는 AWS Command Line Interface (AWS CLI)를 사용하여 계정의 각 채널에 대해 실행 중 로그 상태를 활성화 및 비활성화할 수 있습니다.

실행 중 로그를 활성화하면 MediaTailor는 MediaTailor가 CloudWatch Logs 계정에서 실행 중 로그를 작성하고 관리할 수 있는 서비스 연결 역할을 자동으로 생성합니다. 서비스 연결 역할에 대한 자세한 내용은 [MediaTailor에 서비스 연결 역할 사용](using-service-linked-roles.md)를 참조하세요.

**참고**  
실행 로그는 현재 기본 프로그램만 지원합니다. 지금은 프로그램 규칙에 의해 생성된 alternateMedia를 지원하지 않습니다. 즉, 현재 alternateMedia에 대한 As Run Log를 생성하지 않습니다.

**Topics**
+ [실행 중 로그 활성화](enabling-as-run-log.md)
+ [실행 중 로그 비활성화](disabling-as-run-log.md)

# 실행 중 로그 활성화
<a name="enabling-as-run-log"></a>

실행 중 로그를 활성화하려면 채널 이름을 지정하고 해당 채널에 대해 *실행 중* 로그 유형을 활성화합니다.

------
#### [ Console ]

**채널을 생성할 때 실행 중 로그를 활성화하려면**

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/mediatailor/](https://console.aws.amazon.com/mediatailor/) MediaTailor 콘솔을 엽니다.

1. 탐색 창에서 **채널 어셈블리** > **채널을** 선택합니다.

1. 탐색 모음에서 **채널 생성을** 선택합니다.

1. **채널 세부 정보 설정**, **출력 구성** 및 **액세스 제어** 창에서 원하는 대로 채널을 구성합니다.

1. **액세스 제어** 창에서 **다음을** 선택합니다.

1. **로깅** 창의 **로그 유형**에서 **실행 중 활성화**를 선택하여 실행 중 로그를 활성화합니다.

**채널을 업데이트할 때 실행 중 로그를 활성화하려면**
**참고**  
채널이 현재 실행 중인 경우 채널을 업데이트하려면 먼저 해당 채널을 중지해야 합니다. 채널을 중지한 후 **작업** > **편집**을 선택하여 채널 업데이트를 시작할 수 있습니다.

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/mediatailor/](https://console.aws.amazon.com/mediatailor/) MediaTailor 콘솔을 엽니다.

1. 탐색 창에서 **채널 어셈블리** > **채널을** 선택합니다.

1. 업데이트하려는 채널을 선택하여 실행 중 로그를 활성화합니다.

1. **작업(Actions)** > **편집(Edit)**을 선택합니다.

1. **채널 세부 정보 설정**, **출력 구성** 및 **액세스 제어** 창에서 채널 구성을 원하는 대로 업데이트합니다.

1. **액세스 제어** 창에서 **다음을** 선택합니다.

1. **로깅** 창의 **로그 유형**에서 **실행 중 활성화**를 선택하여 실행 중 로그를 활성화합니다.

****로깅** 탭에서 실행 중 로그를 활성화하려면**
**참고**  
채널이 현재 실행 중인 경우 **작업** > **편집**을 선택하여 실행 중 로그를 활성화하는 대신 **로깅** 탭을 사용해야 합니다.

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/mediatailor/](https://console.aws.amazon.com/mediatailor/) MediaTailor 콘솔을 엽니다.

1. 탐색 창에서 **채널 어셈블리** > **채널을** 선택합니다.

1. 실행 중 로그를 활성화할 채널을 선택합니다.

1. 탐색 모음의 채널 이름 아래에서 **로깅**을 선택합니다.

1. **로깅** > **로그 유형**에서 **실행 중**을 선택하여 실행 중 로그를 활성화합니다.

------
#### [ AWS Command Line Interface (AWS CLI) ]

**실행 중 로그를 활성화하려면**

[configure-logs-for-channel](https://docs.aws.amazon.com/cli/latest/reference/mediatailor/configure-logs-for-channel.html) 명령을 실행하고 필요한 파라미터에 적절한 값을 지정합니다.

이 예제는 Linux, macOS 또는 Unix용으로 형식이 지정되며, 가독성을 높이기 위해 백슬래시(\$1) 줄 연속 문자를 사용합니다.

```
$ aws mediatailor configure-logs-for-channel \
--channel-name MyChannel \
--log-types AS_RUN
```

이 예제는 Microsoft Windows용으로 포맷되었으며 가독성을 높이기 위해 캐럿(^) 줄 연속 문자를 사용합니다.

```
C:\> aws mediatailor configure-logs-for-channel ^
--channel-name MyChannel ^
--log-types AS_RUN
```

위치:
+ `MyChannel`는 사용자가 소유하고 실행 중 로그를 활성화하려는 채널의 이름입니다.

이 명령이 성공적으로 실행되면 다음과 비슷한 출력이 표시됩니다.

```
{
    "ChannelName": "MyChannel",
    "LogTypes": [
       "AS_RUN"
    ]
}
```

------

# 실행 중 로그 비활성화
<a name="disabling-as-run-log"></a>

채널이 활성화된 채널에 대해 실행 중 로그를 비활성화하려면 채널 이름을 지정하고 해당 채널에 대해 *실행 중* 로그 유형을 비활성화합니다.

------
#### [ Console ]

**채널을 업데이트할 때 실행 중 로그를 비활성화하려면**
**참고**  
채널이 현재 실행 중인 경우 채널을 업데이트하려면 먼저 해당 채널을 중지해야 합니다. 채널을 중지한 후 **작업** > **편집**을 선택하여 채널 업데이트를 시작할 수 있습니다.

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/mediatailor/](https://console.aws.amazon.com/mediatailor/) MediaTailor 콘솔을 엽니다.

1. 탐색 창에서 **채널 어셈블리** > **채널을** 선택합니다.

1. 업데이트하려는 채널을 선택하여 실행 중 로그를 활성화합니다.

1. **작업(Actions)** > **편집(Edit)**을 선택합니다.

1. **채널 세부 정보 설정**, **출력 구성** 및 **액세스 제어** 창에서 채널 구성을 원하는 대로 업데이트합니다.

1. **액세스 제어** 창에서 **다음을** 선택합니다.

1. **로깅** 창의 **로그 유형**에서 **실행 중 활성화**를 선택 취소하여 실행 중 로그를 비활성화합니다.

****로깅** 탭에서 실행 중 로그를 비활성화하려면**
**참고**  
채널이 현재 실행 중인 경우 **작업** > **편집**을 선택하여 실행 중 로그를 비활성화하는 대신 **로깅** 탭을 사용해야 합니다.

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/mediatailor/](https://console.aws.amazon.com/mediatailor/) MediaTailor 콘솔을 엽니다.

1. 탐색 창에서 **채널 어셈블리** > **채널을** 선택합니다.

1. 실행 중 로그를 비활성화할 채널을 선택합니다.

1. 탐색 모음의 채널 이름 아래에서 **로깅**을 선택합니다.

1. **로깅** > **로그 유형**에서 **실행 중**을 선택 취소하여 실행 중 로그를 비활성화합니다.

------
#### [ AWS Command Line Interface (AWS CLI) ]

**실행 중 로그를 비활성화하려면**

[configure-logs-for-channel](https://docs.aws.amazon.com/cli/latest/reference/mediatailor/configure-logs-for-channel.html) 명령을 실행하고 필요한 파라미터에 적절한 값을 지정합니다.

이 예제는 Linux, macOS 또는 Unix용으로 형식이 지정되며, 가독성을 높이기 위해 백슬래시(\$1) 줄 연속 문자를 사용합니다.

```
$ aws mediatailor configure-logs-for-channel \
--channel-name MyChannel \
--log-types
```

이 예제는 Microsoft Windows용으로 포맷되었으며 가독성을 높이기 위해 캐럿(^) 줄 연속 문자를 사용합니다.

```
C:\> aws mediatailor configure-logs-for-channel ^
--channel-name MyChannel ^
--log-types
```

위치:
+ `MyChannel`는 사용자가 소유하고 실행 중 로그를 비활성화하려는 채널의 이름입니다.

이 명령이 성공적으로 실행되면 다음과 비슷한 출력이 표시됩니다.

```
{
    "ChannelName": "MyChannel",
    "LogTypes": []
}
```

------

# AWS Elemental MediaTailor Amazon CloudWatch Logs Insights의 ADS 로그 분석
<a name="monitor-cloudwatch-ads-logs"></a>

Amazon CloudWatch Logs Insights를 사용하여 AWS Elemental MediaTailor 광고 결정 서버(ADS) 로그를 보고 쿼리할 수 있습니다. MediaTailor는 정상적인 처리 및 오류 조건을 위해 이벤트 로그를 CloudWatch로 전송합니다. 로그는 JSON 스키마를 준수합니다. CloudWatch Logs Insights를 통해 기간별로 로그를 선택한 다음 이에 대한 쿼리를 실행할 수 있습니다.

일반적인 내용은 [ CloudWatch Logs 인사이트를 사용하여 로그 데이터 분석을](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AnalyzingLogData.html) 참조하세요.

**참고**  
로그에 액세스하려면 Amazon CloudWatch에 액세스할 수 있는 권한이 필요합니다. 지침은 [Amazon CloudWatch Logs에 대한 권한](monitoring-permissions.md) 섹션을 참조하세요.

**CloudWatch 콘솔을 사용하여 ADS 로그를 보고 쿼리하려면**

1. [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/)에서 CloudWatch 콘솔을 엽니다.

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

1. 검색 창에를 입력한 **AdDec**다음 드롭다운 목록에서를 선택합니다`MediaTailor/AdDecisionServerInteractions`.

1. (선택 사항) 보고 싶은 기간을 조정합니다.

1. (선택 사항) 대화 상자의 쿼리를 변경합니다. 일반 지침은 [CloudWatch Logs 인사이트 쿼리 구문](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax.html)을 참조하세요. MediaTailor ADS에 대한 쿼리 예제는 섹션을 참조하세요[ADS 로그 쿼리](querying-the-ads-logs.md).

1. **쿼리 실행**을 선택합니다. 쿼리는 몇 초 정도 걸릴 수 있으며,이 시간 동안 **쿼리 실행** 대신 **취소**가 나타납니다.

1. (선택 사항) 결과를 CSV 파일 형식으로 내보내려면 **작업**을 선택한 후 **Download query results (CSV)(쿼리 결과 다운로드(CSV))**를 선택합니다.

**참고**  
콘솔은 쿼리 결과에 반환되고 내보내는 레코드 수를 제한하므로 대량 데이터의 경우 API, AWS Command Line Interface (AWS CLI) 또는 SDK를 사용합니다.

**Topics**
+ [ADS 로그 쿼리](querying-the-ads-logs.md)

# ADS 로그 쿼리
<a name="querying-the-ads-logs"></a>

CloudWatch Logs Insights는 로그 쿼리를 위한 다양한 옵션을 제공합니다. 쿼리 구문에 대한 자세한 내용은 [CloudWatch Logs 인사이트 쿼리 구문](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/CWL_QuerySyntax.html)을 참조하세요. 이 섹션에서는 ADS 로그 쿼리를 시작할 수 있도록 일반적인 쿼리의 예를 제공합니다. 모든 쿼리는 현재 시간 범위 설정의 로그에 대해 실행됩니다.

다음 쿼리에서는 ADS 로그의 모든 정보를 검색합니다.

```
fields @timestamp, eventType, sessionId, requestId, @message
| sort sessionId, @timestamp asc
```

다음 쿼리에서는 ADS에 대한 모든 요청을 검색합니다. 이 쿼리는 MediaTailor 로그에 대한 요청 헤더 콘텐츠를 검색하는 방법을 보여줍니다.

```
fields @timestamp, adsRequestUrl, requestHeaders.0.value as @userAgent, requestHeaders.1.value as @xForwardedFor, sessionId, requestId
| filter eventType = "MAKING_ADS_REQUEST"
| sort @timestamp asc
```

다음 쿼리는 지정된 세션에 대해 삽입된 MediaTailor 광고를 검색합니다.

```
fields @timestamp, sessionId, requestId, @message
| filter eventType = "FILLED_AVAIL"
| sort @timestamp asc
```

다음 쿼리는 MediaTailor가 플레이어를 대신하여 호출한 추적 URLs을 검색합니다.

```
fields @timestamp, beaconInfo.trackingEvent, beaconInfo.beaconUri, beaconInfo.headers.0.value as @userAgent, beaconInfo.headers.1.value as @xForwardedFor, sessionId, requestId
| filter eventType = "BEACON_FIRED"
| sort @timestamp asc
```

다음 쿼리에서는 `sessionId`를 기준으로 결과를 필터링하여 특정 재생 세션에 대한 정보를 검색합니다.

```
fields @timestamp, eventType, sessionId, requestId, @message
| filter sessionId = "0aaf6507-c6f9-4884-bfe7-f2f841cb8195"
| sort @timestamp asc
```

다음 쿼리에서는 `requestId`를 기준으로 결과를 필터링하여 단일 요청에 대한 정보를 검색합니다.

```
fields @timestamp, eventType, sessionId, requestId, @message
| filter requestId = "f5d3cf39-6258-4cf1-b3f6-a34ff8bf641d"
| sort @timestamp asc
```

다음 쿼리에서는 기록된 각 이벤트 유형에 대해 로그 항목의 개수를 검색합니다.

```
fields eventType
| stats count() as @eventCount by eventType
```

다음 쿼리에서는 건너뛴 광고가 있었던 모든 가능 구간에 대해 가능 구간 ID와 건너뛴 광고의 목록을 검색합니다.

```
fields avail.availId
| parse @message '"skippedAds":[*]' as @skippedAdsList
| filter ispresent(@skippedAdsList)
```

# AWS Elemental MediaTailor 로그 볼륨 제어
<a name="log-configuration"></a>

MediaTailor 광고 삽입 세션 로그는 경우에 따라 상세하게 표시됩니다. 로그 비용을 줄이기 위해 MediaTailor가 Amazon CloudWatch Logs로 보내는 세션 로그의 비율을 정의할 수 있습니다. 예를 들어 재생 구성에 1,000개의 광고 삽입 세션이 있고 백분율 활성화 값을 로 설정하면 `60` MediaTailor는 600개의 세션에 대한 로그를 CloudWatch Logs로 전송합니다. MediaTailor는 로그를 전송할 세션을 무작위로 결정합니다. 특정 세션에 대한 로그를 보려면 [디버그 로그 모드를](debug-log-mode.md) 사용할 수 있습니다.

로깅 백분율을 설정하면 MediaTailor는 계정에 CloudWatch Logs를 작성하는 데 필요한 권한을 MediaTailor에 부여하는 서비스 연결 역할을 자동으로 생성합니다. MediaTailor가 서비스 연결 역할을 사용하는 방법에 대한 자세한 내용은 섹션을 참조하세요[MediaTailor에 서비스 연결 역할 사용](using-service-linked-roles.md).

## 로그 구성 생성
<a name="creating-log-configuration"></a>

MediaTailor가 CloudWatch Logs에 쓰는 세션 로그의 비율을 제어하려면 재생 *구성에 대한 로그* 구성을 생성합니다. 로그 구성을 생성할 때 *재생 구성 이름과* *백분율 활성화* 값을 지정합니다.

------
#### [ Console ]

***기존* 재생 구성에 대한 로그 구성을 생성하려면**

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/mediatailor/](https://console.aws.amazon.com/mediatailor/) MediaTailor 콘솔을 엽니다.

1. **재생 구성** 창에서 로그 구성을 설정할 재생 구성을 선택합니다.

1. **편집**을 선택합니다.

1. **로그 구성**에서 **백분율 활성화** 값을 지정합니다.

***새* 재생 구성에 대한 로그 구성을 생성하려면**
+ [로그 구성](configurations-create.md#configurations-log-configurations)의 프로시저를 따르세요.

------
#### [ AWS Command Line Interface (AWS CLI) ]

***기존* 재생 구성에 대한 로그 구성을 생성하려면**

를 사용하여 로그 구성을 생성하려면 [configure-logs-for-playback-configuration](https://docs.aws.amazon.com/cli/latest/reference/mediatailor/configure-logs-for-playback-configuration.html) 명령을 AWS CLI실행하고 필요한 파라미터에 적절한 값을 지정합니다.

이 예제는 Linux, macOS 또는 Unix용으로 형식이 지정되며, 가독성을 높이기 위해 백슬래시(\$1) 줄 연속 문자를 사용합니다.

```
$ aws mediatailor configure-logs-for-playback-configuration \
--percent-enabled 10 \
--playback-configuration-name MyPlaybackConfiguration
```

이 예제는 Microsoft Windows용으로 포맷되었으며 가독성을 높이기 위해 캐럿(^) 줄 연속 문자를 사용합니다.

```
C:\> aws mediatailor configure-logs-for-playback-configuration ^
--percent-enabled 10 ^
--playback-configuration-name MyPlaybackConfiguration
```

위치:
+ `percent-enabled`는 MediaTailor가 CloudWatch Logs로 보내는 재생 구성 세션 로그의 백분율입니다.
+ `playback-configuration-name`는 로그 구성 설정을 위한 재생 구성의 이름입니다.

이 명령이 성공적으로 실행되면 다음과 비슷한 출력이 표시됩니다.

```
{
    "PercentEnabled": 10,
    "PlaybackConfigurationName": "MyPlaybackConfiguration"
}
```

***새* 재생 구성에 대한 로그 구성을 생성하려면**
+ [put-playback-configuration](https://docs.aws.amazon.com/cli/latest/reference/mediatailor/put-playback-configuration.html) 명령에 `configure-logs-for-playback-configuration` 옵션을 사용합니다.

------

## 로그 구성 비활성화
<a name="deactivating-logging-configuration"></a>

로그 구성을 생성한 후에는 삭제할 수 없으며 *비활성화*만 할 수 있습니다. 로그 구성을 비활성화하려면 MediaTailor 콘솔 또는 API를 사용하여 **활성화된 백분율** 값을 **0**으로 설정합니다. 그러면 해당 재생 구성에 대한 모든 세션 로깅이 꺼집니다.

MediaTailor가 계정의 로그 구성에 사용하는 서비스 연결 역할을 삭제하려면 먼저 모든 로그 구성을 비활성화해야 합니다. 서비스 연결 역할을 삭제하는 방법에 대한 자세한 내용은 섹션을 참조하세요[MediaTailor에 서비스 연결 역할 사용](using-service-linked-roles.md).

------
#### [ Console ]

**재생 구성에서 로그 구성을 비활성화하려면**

1. 에 로그인 AWS Management Console 하고 [https://console.aws.amazon.com/mediatailor/](https://console.aws.amazon.com/mediatailor/) MediaTailor 콘솔을 엽니다.

1. **재생 구성** 창에서 로그 구성을 비활성화하려는 재생 구성을 선택합니다.

1. **편집**을 선택합니다.

1. **로그 구성**에서 **활성화된 백분율** 값을 로 설정합니다`0`. 이렇게 하면이 재생 구성에 대한 모든 세션 로깅이 꺼집니다.

1. **저장**을 선택합니다.

------
#### [ AWS Command Line Interface (AWS CLI) ]

**로그 구성을 비활성화하려면**
+ [configure-logs-for-playback-configuration](https://docs.aws.amazon.com/cli/latest/reference/mediatailor/configure-logs-for-playback-configuration.html) 명령을 `0` 사용하여 `percent-enabled` 값을 로 설정합니다.

------

# AWS Elemental MediaTailor 로그 및 이벤트 필터링
<a name="logs-filter"></a>

MediaTailor의 재생 구성에서 내보낸 로그에는 재생 세션 중에 발생하는 다양한 활동에 대한 정보가 포함됩니다. 이러한 활동은 로그의 이벤트 유형에서 식별됩니다. 기본적으로 많은 이벤트가 기록됩니다. Amazon CloudWatch에서 로그 비용을 제어하는 데 도움이 되도록 MediaTailor가 내보내는 로그를 지정할 수 있습니다.

MediaTailor는 로그 필터링을 제어하므로 다음을 수행할 수 있습니다.
+ 로그에서 제외할 로그 이벤트 지정
+ 광고 결정 서버(ADS)에서 원시 응답 로깅 활성화

이러한 로그 필터링 기본 설정을 각 재생 세션에 대해 독립적으로 설정하거나 재생 구성에 대한 모든 재생 세션의 기본값으로 설정할 수 있습니다.
+ 세션별로 로그를 필터링하려면 재생 세션 초기화 요청에 쿼리 파라미터를 포함합니다.
+ 재생 구성별로 로그를 필터링하려면 MediaTailor 콘솔 또는 API를 사용하여 재생 구성 설정의 기본 설정을 지정합니다.

다음 섹션에서는 세션 및 재생 구성에서 로그 필터링을 활성화하기 위한 지침을 제공합니다.

# 세션별 로그 필터
<a name="logs-filter-session"></a>

각 세션에 대한 사용자 지정 로그 세부 정보 수준을 정의하려면 초기 서버 측 또는 클라이언트 측 재생 세션 요청에 다음 파라미터를 추가합니다. 파라미터에 값을 추가하여 포함하거나 제외하려는 이벤트를 쉼표로 구분된 형식으로 나타냅니다.
+ `aws.adsInteractionLogPublishOptInEventTypes` 특정 광고 결정 서버(ADS) 상호 작용에 대한 로그를 수신합니다.
+ `aws.adsInteractionLogExcludeEventTypes` 특정 ADS 상호 작용에 대한 로그 수신을 중지합니다.
+ `aws.manifestServiceLogExcludeEventTypes` 특정 매니페스트 서비스 상호 작용에 대한 로그 수신을 중지합니다.

MediaTailor에서 내보내는 로그 및 이벤트 유형 목록은 [매니페스트 로그](log-types.md), [ADS 로그](ads-log-format.md)및 섹션을 참조하세요[로그 트랜스코딩](tm-log-format.md).

로그 필터링을 위한 쿼리 파라미터를 전달하지 않으면 MediaTailor는 모든 로그를 전송 대상에 기록합니다.

**Example 로그 필터를 사용한 서버 측 세션 초기화**  
매니페스트 로그 및 ADS 로그`MAKING_ADS_REQUEST`에서 `GENERATED_MANIFEST` 및 `PARSING_ERROR` 이벤트를 제외하려면 세션 초기화 요청은 다음과 같습니다.  

```
GET <mediatailorURL>/v1/master/<hashed-account-id>/<origin-id>/index.m3u8?aws.logMode=DEBUG&aws.manifestServiceLogExcludeEventTypes=GENERATED_MANIFEST,PARSING_ERROR&aws.adsInteractionLogExcludeEventTypes=MAKING_ADS_REQUEST
```
ADS에서 원시 로그를 활성화하려면 `AdsInteractionPublishOptInEventType` 파라미터 `RAW_ADS_RESPONSE` 값을 포함합니다.  

```
GET <mediatailorURL>/v1/master/<hashed-account-id>/<origin-id>/index.m3u8?aws.adsInteractionPublishOptInEventType=RAW_ADS_RESPONSE
```

**Example 로그 필터를 사용한 클라이언트 측 세션 초기화**  
클라이언트 측 세션 초기화 중에 로그 이벤트를 제외하려면 MediaTailor에 대한 클라이언트의 POST 요청에 `availSuppression` 및 로그 유형 파라미터를 포함합니다. 클라이언트 측 재생 세션 요청을 구성하는 방법에 대한 자세한 내용은 [클라이언트 측 광고 추적](ad-reporting-client-side.md) 단원을 참조하십시오. 다음 예제에서는 매니페스트 로그 및 ADS 로그`MAKING_ADS_REQUEST`에서 `CONFIG_SECURITY_ERROR` 및 `PARSING_ERROR` 이벤트를 제외합니다.  

```
POST parent.m3u8
   {
       "adsInteractionLog": {
           ...
           "excludeEventTypes": [
               "MAKING_ADS_REQUEST"
           ]
       },
       "manifestServiceLog": {
           ...
           "excludeEventTypes": [
               "GENERATED_MANIFEST",
               "PARSING_ERROR"
           ]
       },
      "logMode": "DEBUG"
   }
```
 ADS에서 원시 로그를 활성화하려면 `publishOptInEventTypes` 파라미터 `RAW_ADS_RESPONSE `값을 포함합니다.  

```
POST parent.m3u8
   {
       "adsInteractionLog": {
           "publishOptInEventTypes": ["RAW_ADS_RESPONSE"],
           "excludeEventTypes": [
               "MAKING_ADS_REQUEST"
           ]
       },
       "manifestServiceLog": {
           ...
           "excludeEventTypes": [
               "GENERATED_MANIFEST",
               "PARSING_ERROR"
           ]
       },
       "logMode": "DEBUG"
   }
```

# 재생별 구성 로그 필터
<a name="logs-filter-config"></a>

재생 구성의 설정을 사용하여 MediaTailor가이 재생 구성에서 기본값으로 내보내는 로그 이벤트 유형을 정의합니다. MediaTailor는 세션 초기화 요청에 쿼리 파라미터 필터링을 포함하지 않는 모든 세션에 대해 이러한 기본 로그 필터링 설정을 사용합니다.

다음을 수행하도록 선택할 수 있습니다.
+ 특정 광고 결정 서버(ADS) 상호 작용에 대한 로그를 수신합니다.
+ 특정 ADS 상호 작용에 대한 로그를 제외합니다.
+ 특정 매니페스트 서비스 상호 작용에 대한 로그를 제외합니다.

MediaTailor 콘솔에서 이러한 설정을 지정하려면 섹션을 참조하세요[구성 생성](configurations-create.md). MediaTailor API의 경우 API 참조[https://docs.aws.amazon.com/mediatailor/latest/apireference/API_PutPlaybackConfiguration.html](https://docs.aws.amazon.com/mediatailor/latest/apireference/API_PutPlaybackConfiguration.html)의 *AWS Elemental MediaTailor 섹션을 참조*하세요.

MediaTailor에서 내보내는 로그 및 이벤트 유형 목록은 [매니페스트 로그](log-types.md), [ADS 로그](ads-log-format.md)및 섹션을 참조하세요[로그 트랜스코딩](tm-log-format.md).

# AWS Elemental MediaTailor 디버그 로그 생성
<a name="debug-log-mode"></a>

디버그 로그를 사용하여 MediaTailor 광고 삽입 재생 세션 문제를 해결합니다. 디버그 로그를 생성하려면 플레이어의 MediaTailor 요청에서 디버그하도록 로그 모드를 설정합니다. 서버 측 보고의 경우 *재생 요청*에서 로그 모드를 설정합니다. 클라이언트 측 보고의 경우 *세션 초기화 요청*에서 로그 모드를 설정합니다.

로그 모드가 디버그로 설정된 경우 MediaTailor는 모든 로그 이벤트 유형을 CloudWatch Logs에 기록합니다. 로그는 다음 이벤트에 대한 정보를 제공합니다. 디버그 로그에서 생성된 데이터의 전체 목록은 [디버그 로그 필드를](https://docs.aws.amazon.com/mediatailor/latest/ug/debug-log-mode.html#debug-log-mode-fields) 참조하세요.
+ **오리진 상호** 작용 - 오리진 서버와의 MediaTailor 상호 작용에 대한 세부 정보입니다. 오리진 매니페스트 응답, 매니페스트 유형 및 오리진 URL을 예로 들 수 있습니다.
+ **생성된 매니페스트** - MediaTailor의 재생 세션 응답에 대한 세부 정보입니다. 예를 들어 MediaTailor가 생성하는 매니페스트입니다.
+ **세션 초기화됨** - 세션 ID와 같은 세션 초기화 세부 정보입니다.

세션별로 수신하는 로그 이벤트 유형을 사용자 지정하려면 섹션을 참조하세요[로그 및 이벤트 필터링](logs-filter.md).

## 사전 조건
<a name="prerequisites"></a>

로그 모드를 디버깅으로 설정하려면 먼저 아직 로그를 CloudWatch로 전송할 수 있는 권한을 MediaTailor에 부여해야 합니다. MediaTailor가 CloudWatch에 액세스할 수 있는 권한을 부여하면 디버그 로그 모드를 활성화할 준비가 된 것입니다. MediaTailor에 CloudWatch에 액세스할 수 있는 권한을 부여하는 방법에 대한 자세한 내용은 [ Amazon CloudWatch에 대한 권한 설정을 참조하세요](https://docs.aws.amazon.com/mediatailor/latest/ug/monitoring-permissions.html).

## 디버깅하도록 로그 모드를 설정하는 방법
<a name="how-to-turn-on-debug-log-mode"></a>

이 섹션에서는 서버 측 보고 및 클라이언트 측 보고를 위해 디버깅하도록 로그 모드를 설정하는 방법을 설명합니다.

### 서버 측 보고
<a name="server-side-reporting"></a>

서버 측 보고의 경우 HLS 또는 DASH MediaTailor 엔드포인트에 대한 플레이어의 `GET HTTP` 재생 요청에 `?aws.logMode=DEBUG` 쿼리 파라미터와 값을 포함합니다. 서버 측 보고에 대한 일반적인 내용은 [서버 측 보고를 참조하세요](https://docs.aws.amazon.com/mediatailor/latest/ug/ad-reporting-server-side.html).

**중요**  
`DEBUG` 값은 대소문자를 구분합니다.

 가 포함된 재생 요청은 다음과 `?aws.logMode=DEBUG` 같습니다.

**Example HLS 엔드포인트에 대한 재생 요청**  

```
GET <mediatailorURL>/v1/master/<hashed-account-id>/<origin-id>/<asset-id>?aws.logMode=DEBUG
```
로그 모드를 디버그로 설정한 후에는 디버그 로깅 세션이 활성 상태인지 확인하는 것이 좋습니다. 디버그 세션이 활성 상태인지 확인하려면 세션 ID에 대한 CloudWatch 로그가 있는지 확인합니다. 세션 ID는 MediaTailor가 제공하는 재생 엔드포인트에 포함됩니다. 자세한 내용은 [Verify that the debug log mode is active for your playback session](#debug-active) 단원을 참조하십시오.

### 클라이언트 측 보고
<a name="client-side-reporting"></a>

클라이언트 측 보고의 경우 MediaTailor /v1/session 엔드포인트에 대한 클라이언트의 `POST HTTP` 세션 초기화 요청 본문에 `logMode` 키와 `DEBUG` 값을 포함합니다. 클라이언트 측 보고에 대한 일반적인 내용은 [클라이언트 측 보고를 참조하세요](https://docs.aws.amazon.com/mediatailor/latest/ug/ad-reporting-client-side.html).

**중요**  
`DEBUG` 값은 대소문자를 구분합니다.

 로그 모드를 디버그로 설정한 후에는 디버그 세션이 활성 상태인지 확인하는 것이 좋습니다. 디버그 세션이 활성 상태인지 확인하려면 CloudWatch 로그에 세션 ID와 연결된 `SESSION_INITIALIZED` 이벤트가 있는지 확인합니다. 세션 ID는 MediaTailor가 제공하는 재생 엔드포인트에 포함됩니다. 자세한 내용은 [Verify that the debug log mode is active for your playback session](#debug-active) 단원을 참조하십시오.

## 최대 활성 디버그 세션
<a name="maximum-active-debug-log-sessions"></a>

최대 10개의 활성 디버그 로그 세션을 보유할 수 있습니다. 플레이어가 세션 초기화 또는 재생 요청을 MediaTailor로 보내면 MediaTailor는 한도에 도달했는지 확인합니다. 있는 경우 MediaTailor는 오래된 세션이 있는지 확인합니다. 일정 기간 내에 액세스하지 않은 세션은 기한이 경과합니다. 라이브 스트림의 경우이 기간은 10분이고 VOD 스트림의 경우 30분입니다.

최대 활성 디버그 로그 세션 한도에 도달하면 세션의 CloudWatch Logs에 디버그 로그가 기록되지 않습니다. 세션에 대한 CloudWatch Logs에 디버그 로그가 표시되지 않으면이 한도에 도달했을 수 있습니다. 한도에 도달했는지 확인하려면 섹션을 참조하세요[Verify that the debug log mode is active for your playback session](#debug-active).

## 로그 필드 디버그
<a name="debug-log-mode-fields"></a>

 다음 표에는 MediaTailor가 CloudWatch에 쓰는 디버그 로그 필드가 나열되어 있습니다.


| 필드 | 설명 | 
| --- | --- | 
| awsAccountId |  AWS 계정 ID. | 
| customerId | MediaTailor 고객 ID입니다. | 
| eventTimestamp | 디버그 로그 이벤트와 연결된 ISO 8601 타임스탬프입니다. | 
| eventType | 디버그 로그 이벤트의 유형입니다.값:[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/mediatailor/latest/ug/debug-log-mode.html) | 
| originRequestUrl | 이 요청에 대해 검색되는 오리진 서버의 URL입니다. | 
| mediaTailorPath | 초기 매니페스트 요청에서 MediaTailor에 전달된 파라미터를 포함하여 호출된 MediaTailor 엔드포인트입니다. | 
| requestId | MediaTailor에 대한 특정 HTTP 요청의 ID입니다. | 
| responseBody | MediaTailor의 응답 본문에 있는 매니페스트입니다. 이는 원시 오리진 매니페스트 또는 MediaTailor에서 생성한 매니페스트입니다. | 
| sessionId | 재생 세션 ID입니다. | 
| sessionType | 재생 세션의 유형입니다.값: `HLS`, `DASH`  | 

## 디버그 로그 읽기
<a name="read-the-debug-logs"></a>

MediaTailor는 디버그 로그를 Amazon CloudWatch Logs에 기록합니다. 일반적인 CloudWatch Logs 요금이 적용됩니다. CloudWatch Insights를 사용하여 디버그 로그를 읽습니다. CloudWatch Logs Insights를 사용하는 방법에 대한 자세한 내용은 AWS [ CloudWatch Logs 사용 설명서의 CloudWatch Logs Insights를 사용하여 로그 데이터 분석을](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/AnalyzingLogData.html) 참조하세요. * CloudWatch *

**참고**  
디버그 로그가 CloudWatch에 표시되는 데 몇 분 정도 걸릴 수 있습니다. 로그가 나타나지 않으면 몇 분 정도 기다렸다가 다시 시도하십시오. 그래도 로그가 표시되지 않으면 최대 활성 디버그 로그 세션 수에 도달한 것일 수 있습니다. 이 경우 CloudWatch 쿼리를 실행하여 재생 세션에 대해 초기화된 디버그 세션이 있는지 확인합니다. 자세한 내용은 [Verify that the debug log mode is active for your playback session](#debug-active) 단원을 참조하십시오.

### 예제
<a name="query-examples"></a>

 이 섹션에는 MediaTailor 디버그 로그 데이터를 읽는 데 사용할 수 있는 예제 쿼리가 포함되어 있습니다.

**Example 1: 디버그 로그 모드가 재생 세션에 대해 활성 상태인지 확인**  

```
fields @timestamp, @message
 | filter sessionId = "32002de2-837c-4e3e-9660-f3075e8dfd90"
 | filter eventType = "SESSION_INITIALIZED" # client-side reporting
 or mediaTailorPath like “/v1/master" # server-side reporting HLS
 or mediaTailorPath like “/v1/dash" # server-side reporting DASH
```

**Example 2: 오리진의 응답 보기**  

```
fields @timestamp, responseBody, @message, mediaTailorPath
 | filter eventType = "ORIGIN_MANIFEST" and sessionId = "32002de2-837c-4e3e-9660-f3075e8dfd90"
```

**Example 3: 지정된 세션에 대해 MediaTailor에서 생성된 매니페스트 보기**  

```
fields @timestamp, responseBody, @message
 | filter mediaTailorPath like "/v1/master/" and eventType = "GENERATED_MANIFEST" and sessionId = "32002de2-837c-4e3e-9660-f3075e8dfd90"
```

**Example 4: 지정된에 대한 모든 이벤트 보기 `requestId`**  
 이 쿼리를 사용하여 오리진 매니페스트와 MediaTailor에서 생성된 매니페스트를 봅니다.  

```
fields @timestamp, responseBody, @message, mediaTailorPath
 | filter requestId = "e5ba82a5-f8ac-4efb-88a0-55bed21c45b4"
```