

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

# AWS Elemental MediaTailor 리소스 모니터링 및 태그 지정
<a name="monitoring"></a>

모니터링은 AWS Elemental MediaTailor 및 다른 AWS 솔루션의 안정성, 가용성 및 성능을 유지하는 데 중요한 부분입니다.는 MediaTailor를 모니터링하고, 이상이 있을 때 보고하고, 필요한 경우 자동 조치를 취할 수 있도록 다음과 같은 모니터링 도구를 AWS 제공합니다.
+ *Amazon CloudWatch*는 AWS 리소스와 AWS 실행 중인 애플리케이션을 실시간으로 모니터링합니다. 지표를 수집 및 추적하고, 사용자 지정 대시보드를 생성할 수 있으며, 지정된 지표가 지정한 임곗값에 도달하면 사용자에게 알리거나 조치를 취하도록 경보를 설정할 수 있습니다. 예를 들어 CloudWatch에서 Amazon EC2 인스턴스의 CPU 사용량 또는 기타 지표를 추적하고 필요할 때 자동으로 새 인스턴스를 시작할 수 있습니다. 자세한 내용은 [Amazon CloudWatch 사용자 안내서](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/)를 참조하세요.
+ *Amazon CloudWatch Logs*를 사용하면 광고 결정 서버(ADS)와의 모든 상호 작용에서 로그 파일을 모니터링, 저장 및 액세스할 수 있습니다. AWS Elemental MediaTailor 는 광고 요청, 리디렉션, 응답, 보고 요청 및 응답에 대한 로그를 내보냅니다. ADS 및 오리진 서버의 오류도 Amazon CloudWatch의 로그 그룹으로 내보내집니다. 또한 MediaTailor는 건너뛴 광고와 해당 광고를 건너뛴 이유에 대한 정보도 제공합니다. 자세한 내용은 [광고 건너뛰기 문제 해결](troubleshooting-ad-skipping-overview.md) 단원을 참조하십시오. 또한 매우 내구성이 뛰어난 스토리지에 로그 데이터를 저장할 수 있습니다. 일반 정보는 [Amazon CloudWatch Logs 사용 설명서를](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/) 참조하세요. ADS 로그 및 Amazon CloudWatch Logs Insights를 통한 분석을 위해 ADS 로그에 액세스하는 방법에 대한 자세한 내용은 섹션을 참조하세요[AWS Elemental MediaTailor Amazon CloudWatch Logs Insights의 ADS 로그 분석](monitor-cloudwatch-ads-logs.md).

**Topics**
+ [AWS Elemental MediaTailor 로그 보기](monitoring-through-logs.md)
+ [Amazon CloudWatch 지표 AWS Elemental MediaTailor 를 사용한 모니터링](monitoring-cloudwatch-metrics.md)
+ [AWS Elemental MediaTailor API 호출 기록](logging-using-cloudtrail.md)
+ [AWS Elemental MediaTailor 채널 어셈블리 알림 수신](channel-assembly-alerts.md)
+ [AWS Elemental MediaTailor 리소스 태그 지정](tagging.md)
+ [워크플로 모니터를 사용하여 AWS 미디어 서비스 모니터링](monitor-with-workflow-monitor.md)

# 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"
```

# Amazon CloudWatch 지표 AWS Elemental MediaTailor 를 사용한 모니터링
<a name="monitoring-cloudwatch-metrics"></a>

CloudWatch를 사용하여 AWS Elemental MediaTailor 지표를 모니터링할 수 있습니다. CloudWatch는 서비스 성능에 대한 원시 데이터를 수집하고 해당 데이터를 읽기 가능하며 실시간에 가까운 지표로 처리합니다. 이러한 통계는 15개월간 보관되므로 기록 정보에 액세스하고 웹 애플리케이션 또는 서비스가 어떻게 실행되고 있는지 전체적으로 더 잘 파악할 수 있습니다. 특정 임곗값을 주시하다가 해당 임곗값이 충족될 때 알림을 전송하거나 조치를 취하도록 경보를 설정할 수도 있습니다. 자세한 내용은 [Amazon CloudWatch 사용 설명서](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/)를 참조하세요.

지표는 오래된 매니페스트를 조사할 때 유용할 수 있습니다. 자세한 내용은 [지표를 사용하여 오래된 매니페스트 진단](stale-manifest-diagnose.md) 단원을 참조하십시오.

지표는 먼저 서비스 네임스페이스별로 그룹화된 다음 각 네임스페이스 내에서 다양한 차원 조합별로 그룹화됩니다.

**CloudWatch 콘솔을 사용하여 지표를 보려면**

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

1. 탐색 창에서 **지표(Metrics)**를 선택합니다.

1. **모든 지표**에서 **MediaTailor** 네임스페이스를 선택합니다.

1. 지표 차원을 선택하여 지표를 봅니다(예: **originID**).

1. 확인할 기간을 지정합니다.

**AWS Command Line Interface (AWS CLI)를 사용하여 지표를 보려면**
+ 명령 프롬프트에서 다음 명령을 사용합니다.

  ```
  aws cloudwatch list-metrics --namespace "AWS/MediaTailor"
  ```

## AWS Elemental MediaTailor CloudWatch 지표
<a name="metrics"></a>

 AWS Elemental MediaTailor 네임스페이스에는 다음 지표가 포함됩니다. 이 지표는 기본적으로 계정으로 게시됩니다.

### 채널 어셈블리(CA) 지표
<a name="metrics.channel-assembly"></a>

다음 표에서는 채널 또는 채널 출력별로 모든 지표를 사용할 수 있습니다.


| 지표 | 설명 | 
| --- | --- | 
|  4xxErrorCount  |  `4xx` 오류 수입니다.  | 
|  5xxErrorCount  |  `5xx` 오류 수입니다.  | 
|  RequestCount  |   요청 총 수 트랜잭션 수는 주로 플레이어가 업데이트된 매니페스트를 요청하는 빈도와 플레이어 수에 따라 달라집니다. 각 플레이어 요청은 트랜잭션으로 간주됩니다.  | 
|  TotalTime  |  클라이언트 및 네트워크에서 바이트를 수신하고 쓰는 데 사용된 시간을 포함하여 애플리케이션 서버가 요청을 처리하는 데 걸린 시간입니다.  | 

#### 서버 측 광고 삽입(SSAI) 지표
<a name="metrics.server-side-ad-insertion"></a>

다음 표에는 서버 측 광고 삽입 지표가 나열되어 있습니다.


| 지표 | 설명 | 
| --- | --- | 
|  AdDecisionServer.Ads  |  지정한 CloudWatch 기간 내에 광고 결정 서버(ADS) 응답에 포함된 광고 수입니다.  | 
|  AdDecisionServer.Duration  |  지정한 CloudWatch 기간 내에 MediaTailor가 ADS에서 수신한 모든 광고의 총 지속 시간입니다. 이 기간은 지정한 기간보다 클 수 `Avail.Duration` 있습니다.  | 
|  AdDecisionServer.Errors  |  지정한 CloudWatch 기간 내에 MediaTailor가 ADS로부터 수신한 비 HTTP 200 상태 코드 응답, 빈 응답 및 시간 초과 응답 수입니다.  | 
|  AdDecisionServer.FillRate  |  ADS에서 응답이 해당 개별 광고 시간에 대해 지정된 시간을 채우는 비율의 단순 평균. 가중 평균을 얻으려면 `AdDecisionServer.Duration`을 `Avail.Duration`의 백분율로 계산합니다. 단순 및 가중 평균에 대한 자세한 내용은 [단순 및 가중 평균](#metrics-simple-average) 단원을 참조하십시오.  | 
|  AdDecisionServer.Latency  |  MediaTailor가 ADS에 보낸 요청에 대한 밀리초 단위의 응답 시간입니다.  | 
|  AdDecisionServer.Timeouts  |  지정한 CloudWatch 기간 동안 ADS에 대한 시간 초과 요청 수입니다.  | 
|  AdNotReady  |  지정한 기간 동안 내부 트랜스코더 서비스에 의해 아직 트랜스코딩되지 않은 광고에 대해 ADS가 가리킨 횟수. 이 지표에 대한 높은 값은 전체적으로 낮은 `Avail.FillRate`의 한 원인이 되었을지도 모릅니다.  | 
|  AdsBilled  |  MediaTailor가 삽입에 따라 고객에게 청구하는 광고 수입니다.  | 
|  Avail.Duration  |  CloudWatch 기간 내에 계획된 총 광고 시간 밀리초 수입니다. 계획된 합계는 오리진 매니페스트의 광고 가능 기간을 기반으로 합니다.  | 
|  Avail.FilledDuration  |  MediaTailor가 CloudWatch 기간 내에 광고로 채울 계획된 광고 가능 시간 밀리초입니다.  | 
|  Avail.FillRate  |  CloudWatch 기간 내에 MediaTailor가 개별 광고 시간을 채울 비율의 계획된 단순 평균입니다. 가중 평균을 얻으려면 `Avail.FilledDuration`을 `Avail.Duration`의 백분율로 계산합니다. 단순 및 가중 평균에 대한 자세한 내용은 [단순 및 가중 평균](#metrics-simple-average) 단원을 참조하십시오. MediaTailor`Avail.FillRate`가 달성할 수 있는 최대값은에 의해 제한됩니다`AdDecisionServer.FillRate`. `Avail.FillRate`가 낮은 경우 `AdDecisionServer.FillRate`와 비교합니다. `AdDecisionServer.FillRate`가 낮은 경우 ADS가 광고 시간 지속시간에 비해 충분한 광고를 반환하지 않고 있을 수 있습니다.  | 
|  Avail.Impression  |  MediaTailor가 서버 측 비컨 중에 보는 노출 추적 이벤트가 있는 광고 수(노출 수가 아님).  | 
|  Avail.ObservedDuration  |  CloudWatch 기간 내에 발생한 광고 시간의 관측된 총 밀리초 수입니다. `Avail.ObservedDuration`는 광고 시간 종료 시 방출되며 광고 시간 동안 매니페스트에 보고된 세그먼트의 지속 시간을 기반으로 합니다.  | 
|  Avail.ObservedFilledDuration  |  MediaTailor가 CloudWatch 기간 내에 광고로 채운 관찰된 광고 가능 시간 밀리초입니다.  | 
|  Avail.ObservedFillRate  |  MediaTailor가 CloudWatch 기간 내에 개별 광고 시간을 채운 비율의 관찰된 단순 평균입니다. 첫 번째 `CUE-IN` 태그에서 HLS 매니페스트에 대해서만 내보내집니다. `CUE-IN` 태그가 없는 경우 MediaTailor는이 지표를 내보내지 않습니다.  | 
|  Avail.ObservedSlateDuration  |  CloudWatch 기간 내에 삽입된 슬레이트의 관찰된 총 밀리초 수입니다.  | 
|  GetManifest.Age  |  매니페스트의 총 수명을 밀리초 단위로 표시합니다. 오리진이 매니페스트를 생성하는 시점부터 MediaTailor가 개인화된 매니페스트를 보내는 시점까지 측정됩니다. 매니페스트 수명 측정을 위한 지표에 대한 자세한 내용은 섹션을 참조하세요[지표를 사용하여 오래된 매니페스트 진단](stale-manifest-diagnose.md).  | 
|  GetManifest.Errors  |  지정한 CloudWatch 기간에 MediaTailor가 매니페스트를 생성하는 동안 수신된 오류 수입니다.  | 
|  GetManifest.Latency  |  매니페스트 생성 요청에 대한 MediaTailor 응답 시간입니다. 매니페스트 수명 측정을 위한 지표에 대한 자세한 내용은 섹션을 참조하세요[지표를 사용하여 오래된 매니페스트 진단](stale-manifest-diagnose.md).  | 
|  GetManifest.MediaTailorAge  |  매니페스트가 MediaTailor에 밀리초 단위로 저장된 시간입니다. MediaTailor가 오리진 응답을 수신하는 시점부터 MediaTailor가 개인화된 매니페스트를 보내는 시점까지 측정됩니다. 매니페스트 수명 측정을 위한 지표에 대한 자세한 내용은 섹션을 참조하세요[지표를 사용하여 오래된 매니페스트 진단](stale-manifest-diagnose.md).  | 
|  Origin.Age  |  오리진에 매니페스트가 있는 밀리초 단위의 시간입니다. 오리진이 매니페스트를 생성할 때부터 MediaTailor가 오리진 요청을 보낼 때까지 측정됩니다. 모든 `origin.*` 지표는 오리진에서 직접 이행되는 요청에 대해 내보내집니다. 캐시된 오리진 응답에는 생성되지 않습니다. 매니페스트 수명 측정을 위한 지표에 대한 자세한 내용은 섹션을 참조하세요[지표를 사용하여 오래된 매니페스트 진단](stale-manifest-diagnose.md).  | 
|  Origin.Errors  |  지정한 CloudWatch 기간 동안 MediaTailor가 오리진 서버에서 수신한 비 HTTP 200 상태 코드 응답 및 시간 초과 응답 수입니다. 모든 `origin.*` 지표는 오리진에서 직접 이행되는 요청에 대해 내보내집니다. 캐시된 오리진 응답에는 생성되지 않습니다.  | 
|  Origin.ManifestFileSizeBytes  |  HLS와 DASH 모두에 대한 오리진 매니페스트의 파일 크기입니다. 일반적으로이 지표는와 함께 사용됩니다`Origin.ManifestFileSizeTooLarge`. 모든 `origin.*` 지표는 오리진에서 직접 이행되는 요청에 대해 내보내집니다. 캐시된 오리진 응답에는 생성되지 않습니다.  | 
|  Origin.ManifestFileSizeTooLarge  |  매니페스트 크기가 구성된 양보다 큰 오리진의 응답 수입니다. 일반적으로이 지표는와 함께 사용됩니다`Origin.ManifestFileSizeBytes`. 모든 `origin.*` 지표는 오리진에서 직접 이행되는 요청에 대해 내보내집니다. 캐시된 오리진 응답에는 생성되지 않습니다.  | 
|  Origin.Timeouts  |  지정한 CloudWatch 기간 동안 오리진 서버에 대한 시간 초과 요청 수입니다. 모든 `origin.*` 지표는 오리진에서 직접 이행되는 요청에 대해 내보내집니다. 캐시된 오리진 응답에는 생성되지 않습니다.  | 
|  Requests  |  모든 요청 유형에서 초당 동시 트랜잭션 수입니다. 트랜잭션 수는 주로 플레이어 수와 플레이어가 업데이트된 매니페스트를 요청하는 빈도에 따라 달라집니다. 각 플레이어 요청은 트랜잭션으로 간주됩니다.  | 
|  SkippedReason.DurationExceeded  |  ADS가 지정된 가용 기간보다 긴 광고 기간을 반환했기 때문에 가용 시간에 삽입되지 않은 광고 수입니다. 이 지표의 값이 높으면 `AdDecisionServer.Ads` `Avail.Ads`와 지표 간의 불일치가 발생할 수 있습니다. 건너뛴 광고 이유에 대한 자세한 내용은 섹션을 참조하세요[광고 건너뛰기 문제 해결](troubleshooting-ad-skipping-overview.md).  | 
|  SkippedReason.EarlyCueIn  |  초기 로 인해 건너뛴 광고 수입니다`CUE-IN`.  | 
|  SkippedReason.ImportError  |  가져오기 작업의 오류로 인해 건너뛴 광고 수입니다.  | 
|  SkippedReason.ImportInProgress  |  기존 활성 가져오기 작업으로 인해 건너뛴 광고 수입니다.  | 
|  SkippedReason.InternalError  |  MediaTailor 내부 오류로 인해 건너뛴 광고 수입니다.  | 
|  SkippedReason.NewCreative  |  클라이언트가 자산을 처음 요청했기 때문에 가용성에 삽입되지 않은 광고 수입니다. 이 지표의 값이 높으면 자산을 성공적으로 트랜스코딩할 수 있을 `Avail.FillRate`때까지 일시적으로 전체가 낮아질 수 있습니다.  | 
|  SkippedReason.NoVariantMatch  |  광고와 콘텐츠 간에 변형이 일치하지 않아 건너뛴 광고 수입니다.  | 
|  SkippedReason.PersonalizationThresholdExceeded  |  이 구성에서 **개인화 임계값** 설정을 초과하는 광고 기간입니다.  | 
|  SkippedReason.ProfileNotFound  |  트랜스코딩 프로파일을 찾을 수 없어 건너뛴 광고 수입니다.  | 
|  SkippedReason.TranscodeError  |  트랜스코딩 오류로 인해 건너뛴 광고 수입니다.  | 
|  SkippedReason.TranscodeInProgress  |  광고가 아직 트랜스코딩되지 않았기 때문에 가능 구간에 삽입되지 않은 광고 수입니다. 이 지표의 값이 높으면 자산을 성공적으로 트랜스코딩할 수 있을 `Avail.FillRate`때까지 일시적으로 전체가 낮아질 수 있습니다.  | 
|  GetAssets.Requests  |  CloudWatch 기간 내에 HLS Interstitials 세션에 대해 수신된 자산 목록 요청 수입니다. 이 지표를 사용하여 지연 바인딩 광고 결정 볼륨을 모니터링하고 HLS Interstitials 사용량의 규모를 이해할 수 있습니다.  | 
|  GetAssets.Latency  |  HLS Interstitials 세션의 자산 목록 요청에 대한 밀리초 단위 응답 시간입니다. 이 지표를 모니터링하여 최적의 광고 결정 성능을 보장하고 지연 바인딩 워크플로에서 잠재적 병목 현상을 식별합니다.  | 

**참고**  
HLS Interstitials 세션의 경우 광고 결정의 지연 바인딩 특성으로 인해 일부 지표가 다르게 동작합니다.  
`Avail.ObservedFilledDuration` MediaTailor는 실제 클라이언트 측 재생 동작을 관찰할 수 `Avail.FilledDuration` 없으므로가 일치합니다.
`Avail.ObservedSlateDuration`는 관찰된 재생이 아닌 자산 목록 응답에서 계획된 슬레이트 기간을 보고합니다.
"Observed" 접두사가 붙은 지표는 HLS Interstitials 세션의 예상 값을 제공합니다.

### 단순 및 가중 평균
<a name="metrics-simple-average"></a>

ADS에서 MediaTailor의 광고 요청에 대한 응답과 MediaTailor가 광고 시간을 채우는 방법에 대한 단순 평균 및 가중 평균을 검색할 수 있습니다.
+ *단순 평균*이 `AdDecisionServer.FillRate`와 `Avail.FillRate`에 제공됩니다. 해당 기간 동안의 개별 광고 시간의 채움 비율(백분율)의 평균입니다. 단순 평균은 개별 광고 시간의 지속시간 간 차이를 감안하지 않습니다.
+ *가중 평균*은 모든 광고 시간 지속시간의 합계에 대한 채움 비율(백분율)입니다. 단순 평균과 가중 평균은 (`AdDecisionServer.Duration`\$1100)/`Avail.Duration`과 (`Avail.FilledDuration`\$1100)/`Avail.Duration`으로 계산됩니다. 이러한 평균은 각 광고 시간의 지속 시간의 차이를 감안하여 지속시간이 길수록 더 많은 가중치를 부여합니다.

단 하나의 광고 시간이 포함된 기간의 경우 `AdDecisionServer.FillRate`로 제공되는 단순 평균은 (`AdDecisionServer.Duration`\$1100/`Avail.Duration`)으로 계산되는 가중 평균과 동일한 값입니다. `Avail.FillRate`로 제공되는 단순 평균은 (`Avail.FilledDuration`\$1100)/`Avail.Duration`으로 계산되는 가중 평균과 동일한 값입니다.

**예제**

지정한 기간에 다음과 같이 2가지 광고 시간이 있다고 가정합니다.
+ 첫 번째 광고 시간의 지속시간은 90초입니다.
  + 광고 시간에 대한 ADS 응답은 45초의 광고를 제공합니다(50% 채움).
  + MediaTailor는 45초 분량의 광고 시간을 채웁니다(50% 채워짐).
+ 두 번째 광고 시간의 지속시간은 120초입니다.
  + 광고 시간에 대한 ADS 응답은 120초의 광고를 제공합니다(100% 채움).
  + MediaTailor는 90초 분량의 광고 시간을 채웁니다(75% 채워짐).

지표는 다음과 같습니다.
+ `Avail.Duration`은 두 광고 시간 지속시간의 합인 201입니다(90 \$1 120).
+ `AdDecisionServer.Duration`은 두 응답 지속시간의 합인 165입니다(45 \$1 120).
+ `Avail.FilledDuration`은 두 채워진 지속시간의 합인 135입니다(45 \$1 90).
+ `AdDecisionServer.FillRate`는 각 광고 시간에 대한 백분율의 평균인 75%입니다((50% \$1 100%) / 2). 이것은 단순 평균입니다.
+ ADS 채움 비율의 가중 평균은 `AdDecisionServer.Duration`으로서 `Avail.Duration`의 평균인 78.57%입니다((165\$1100) / 210). 이 계산을 통해 지속시간 간의 차이를 설명할 수 있습니다.
+ `Avail.FillRate`는 각 광고 시간에 대한 채움 백분율의 평균인 62.5%입니다((50% \$1 75%) / 2). 이것은 단순 평균입니다.
+ MediaTailor 가용 채우기 속도의 가중 평균은 64.29%이며, 이는 `Avail.Duration`: (135\$1100) / 210의 백분율`Avail.FilledDuration`로 표시됩니다. 이 계산을 통해 지속시간 간의 차이를 설명할 수 있습니다.

MediaTailor`Avail.FillRate`가 모든 광고 가능 구간에 대해 달성할 수 있는 가장 높은 값은 100%입니다. ADS는 가용 시간보다 더 많은 광고 시간을 반환할 수 있지만 MediaTailor는 가용 시간만 채울 수 있습니다.

## AWS Elemental MediaTailor CloudWatch 차원
<a name="dimensions"></a>

다음 차원을 사용하여 AWS Elemental MediaTailor 데이터를 필터링할 수 있습니다.


| 차원 | 설명 | 
| --- | --- | 
|  `Configuration Name`  |  지표가 속하는 구성을 나타냅니다.  | 

# 지표를 사용하여에서 오래된 매니페스트 진단 AWS Elemental MediaTailor
<a name="stale-manifest-diagnose"></a>

오래된 매니페스트는 최근에 업데이트되지 않은 매니페스트입니다. 다양한 요인(예: 다운스트림 시스템 요구 사항)에 따라 광고 삽입 워크플로마다 매니페스트가 기한 경과로 간주되기 전에가 경과해야 하는 시간에 대한 허용 오차가 다를 수 있습니다. Amazon CloudWatch 지표를 사용하여 워크플로의 기한 경과 허용치를 초과하는 매니페스트를 식별하고 매니페스트 업데이트 지연의 원인을 식별할 수 있습니다.

다음 지표는 오래된 매니페스트와 그 원인을 식별하는 데 도움이 됩니다.

MediaTailor가 내보내는 모든 지표에 대한 자세한 내용은 섹션을 참조하세요[AWS Elemental MediaTailor CloudWatch 지표](monitoring-cloudwatch-metrics.md#metrics).


| 지표 | 정의 | 사용 | 
| --- | --- | --- | 
| GetManifest.Age |  이 구성에 `Origin.Age` 대해 `GetManifest.MediaTailorAge` 및를 모두 포함하여 매니페스트의 총 수명을 측정합니다.  |  이 지표를 사용하여 업데이트 임계값을 초과하고 오래된 매니페스트를 식별할 수 있습니다. 기한 경과 매니페스트가 제공될 때 알림을 받도록이 지표에 대한 경보를 설정합니다. 경보에 대한 자세한 내용은 Amazon CloudWatch 사용 설명서의 [지표에 대한 경보](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/ConsoleAlarms.html)를 참조하세요. *Amazon CloudWatch * 경보가 수신되면 `Origin.Age` 및 `GetManifest.MediaTailorAge`를 사용하여 MediaTailor 또는 오리진이 기한 경과를 유발하는지 확인합니다.  | 
| Origin.Age | 이 구성을 위해 MediaTailor로 보내기 전에 오리진에 매니페스트가 있는 기간을 측정합니다.응답이 콘텐츠 전송 네트워크(CDN)에서 오는 경우이 지표는 내보내지지 않습니다. 를 내보내`Origin.Age`려면 응답이 오리진에서 와야 합니다. |  를 사용하여 오래된 매니페스트를 식별하면 `Origin.Age` 지표와 지표를 분석하여 어떤 `GetManifest.MediaTailorAge`가 매니페스트 기한 경과의 원인이 되는지 확인할 `GetManifest.Age`수 있습니다. `Origin.Age`가 오리진에서 일반적인 처리 시간보다 긴 경우 업스트림 시스템이 문제를 일으켰을 수 있으므로 진단에 집중해야 합니다.  | 
| GetManifest.MediaTailorAge | MediaTailor가이 구성을 위해이 매니페스트를 저장한 기간을 측정합니다. |  를 사용하여 오래된 매니페스트를 식별하면 `GetManifest.MediaTailorAge` 지표와 지표를 분석하여 어떤 `Origin.Age`가 매니페스트 기한 경과의 원인이 되는지 확인할 `GetManifest.Age`수 있습니다. `GetManifest.MediaTailorAge`가 MediaTailor의 일반적인 매니페스트 개인 설정 시간보다 긴 경우 MediaTailor가 문제를 일으킬 가능성이 높으므로 진단에 집중해야 합니다. `GetManifest.Latency`는 MediaTailor가 개인화된 매니페스트를 생성하는 데 걸리는 시간을 추가로 식별할 수 있습니다.  | 
| GetManifest.Latency | MediaTailor가 요청을 처리하고이 구성에 대한 개인화된 매니페스트를 생성하는 데 걸리는 시간을 측정합니다. |  `Origin.Age` 및 `GetManifest.Latency`를 비교`GetManifest.MediaTailorAge`하고 MediaTailor가 지연된 매니페스트 전송의 원인이라고 판단하면 지표를 분석하여 매니페스트 개인화 프로세스가 매니페스트 기한 초과에 기여하는지 확인할 수 있습니다. `GetManifest.MediaTailorAge`는 매니페스트가 MediaTailor에 저장되는 총 시간을 측정합니다.는 MediaTailor가 요청에 대한 응답으로 매니페스트를 개인화하는 스토리지 시간의 양을 `GetManifest.Latency` 측정합니다.  | 

# AWS Elemental MediaTailor API 호출 기록
<a name="logging-using-cloudtrail"></a>

AWS Elemental MediaTailor 는 MediaTailor에서 사용자 AWS CloudTrail, 역할 또는 서비스가 수행한 작업에 대한 레코드를 제공하는 AWS 서비스와 통합됩니다. CloudTrail은 MediaTailor에 대한 모든 API 호출을 이벤트로 캡처합니다. 캡처되는 호출에는 MediaTailor 콘솔의 호출과 MediaTailor API 작업에 대한 코드 호출이 포함됩니다. 추적을 생성하면 MediaTailor 이벤트를 포함한 CloudTrail 이벤트를 지속적으로 Amazon S3 버킷에 배포할 수 있습니다. 추적을 구성하지 않은 경우에도 **이벤트 기록**에서 CloudTrail 콘솔의 최신 이벤트를 볼 수 있습니다. CloudTrail에서 수집한 정보를 사용하여 MediaTailor에 수행된 요청, 요청이 수행된 IP 주소, 요청을 수행한 사람, 요청이 수행된 시간 및 추가 세부 정보를 확인할 수 있습니다.

CloudTrail에 대한 자세한 설명은 [AWS CloudTrail 사용자 가이드](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)를 참조하십시오.

## AWS Elemental MediaTailor CloudTrail의 정보
<a name="service-name-info-in-cloudtrail"></a>

 AWS 계정을 생성할 때 계정에서 CloudTrail이 활성화됩니다. 활동이 발생하면 AWS Elemental MediaTailor해당 활동이 **이벤트 기록**의 다른 AWS 서비스 이벤트와 함께 CloudTrail 이벤트에 기록됩니다. AWS 계정에서 최근 이벤트를 보고 검색하고 다운로드할 수 있습니다. 자세한 내용은 [CloudTrail 이벤트 기록을 사용하여 이벤트 보기](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html)를 참조하세요.

에 대한 이벤트를 포함하여 AWS 계정에 이벤트를 지속적으로 기록하려면 추적을 AWS Elemental MediaTailor생성합니다. CloudTrail은 *추적*을 사용하여 Amazon S3 버킷으로 로그 파일을 전송할 수 있습니다. 기본적으로 콘솔에서 추적을 생성하면 추적이 모든 AWS 리전에 적용됩니다. 추적은 AWS 파티션의 모든 리전에서 이벤트를 로깅하고 지정한 Amazon S3 버킷으로 로그 파일을 전송합니다. 또한 CloudTrail 로그에서 수집된 이벤트 데이터를 추가로 분석하고 조치를 취하도록 다른 AWS 서비스를 구성할 수 있습니다. 자세한 내용은 다음을 참조하세요.
+ [AWS 계정에 대한 추적 생성](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-and-update-a-trail.html)
+ [AWS CloudTrail 로그와의 서비스 통합](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-aws-service-specific-topics.html#cloudtrail-aws-service-specific-topics-integrations)
+ [CloudTrail에 대한 Amazon SNS 알림 구성](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/configure-sns-notifications-for-cloudtrail.html)
+ [여러 리전에서 CloudTrail 로그 파일 받기](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/receive-cloudtrail-log-files-from-multiple-regions.html) 및 [여러 계정에서 CloudTrail 로그 파일 받기](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-receive-logs-from-multiple-accounts.html)

모든 AWS Elemental MediaTailor 작업은 CloudTrail에서 로깅되며 [AWS Elemental MediaTailor API 참조](https://docs.aws.amazon.com/mediatailor/latest/apireference/Welcome.html)에 문서화됩니다. 예를 들어, `PutPlaybackConfiguration` 및 `ListPlaybackConfigurations` 작업에 대한 호출은 CloudTrail 로그 파일의 항목을 생성합니다.

모든 이벤트 및 로그 항목에는 요청을 생성한 사용자에 대한 정보가 들어 있습니다. ID 정보를 이용하면 다음을 쉽게 판단할 수 있습니다.
+ 루트 사용자 또는 AWS Identity and Access Management (IAM) 자격 증명으로 요청이 이루어졌는지 여부
+ 역할 또는 페더레이션 사용자에 대한 임시 보안 자격 증명을 사용하여 요청이 생성되었는지 여부
+ 요청이 다른 AWS 서비스에서 이루어졌는지 여부

자세한 내용은 [CloudTrail userIdentity 요소](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-user-identity.html)를 참조하십시오.

## AWS Elemental MediaTailor 로그 파일 항목 이해
<a name="understanding-service-name-entries"></a>

트레일이란 지정한 S3 버킷에 이벤트를 로그 파일로 입력할 수 있게 하는 구성입니다. CloudTrail 로그 파일에는 하나 이상의 로그 항목이 포함될 수 있습니다. 이벤트는 모든 소스로부터의 단일 요청을 나타내며 요청 작업, 작업 날짜와 시간, 요청 파라미터 등에 대한 정보가 들어 있습니다. CloudTrail 로그 파일은 퍼블릭 API 직접 호출의 주문 스택 트레이스가 아니므로 특정 순서로 표시되지 않습니다.

다음은 `PutPlaybackConfiguration` 태스크를 보여 주는 CloudTrail 로그 항목이 나타낸 예제입니다.

```
{
    "eventVersion": "1.05",
    "userIdentity": {
        "type": "IAMUser",
        "principalId": "AIDAEXAMPLE",
        "arn": "arn:aws:iam::111122223333:user/testuser",
        "accountId": "111122223333",
        "accessKeyId": "AIDAEXAMPLE",
        "userName": "testuser"
    },
    "eventTime": "2018-12-28T22:53:46Z",
    "eventSource": "mediatailor.amazonaws.com",
    "eventName": "PutPlaybackConfiguration",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "1.2.3.4",
    "userAgent": "PostmanRuntime/7.4.0",
    "requestParameters": {
        "VideoContentSourceUrl": "http://examplevideo.com",
        "Name": "examplename",
        "AdDecisionServerUrl": "http://exampleads.com"
    },
    "responseElements": {
        "SessionInitializationEndpointPrefix": "https://777788889999.mediatailor.us-east-1.amazonaws.com/v1/session/AKIAIOSFODNN7EXAMPLE/examplename/",
        "DashConfiguration": {
            "ManifestEndpointPrefix": "https://777788889999.mediatailor.us-east-1.amazonaws.com/v1/dash/AKIAIOSFODNN7EXAMPLE/examplename/",
            "MpdLocation": "EMT_DEFAULT"
        },
        "AdDecisionServerUrl": "http://exampleads.com",
        "CdnConfiguration": {},
        "PlaybackEndpointPrefix": "https://777788889999.mediatailor.us-east-1.amazonaws.com",
        "HlsConfiguration": {
            "ManifestEndpointPrefix": "https://777788889999.mediatailor.us-east-1.amazonaws.com/v1/master/AKIAIOSFODNN7EXAMPLE/examplename/"
        },
        "VideoContentSourceUrl": "http://examplevideo.com",
        "Name": "examplename"
    },
    "requestID": "1a2b3c4d-1234-5678-1234-1a2b3c4d5e6f",
    "eventID": "987abc65-1a2b-3c4d-5d6e-987abc654def",
    "readOnly": false,
    "eventType": "AwsApiCall",
    "recipientAccountId": "111122223333"
}
```

다음은 `GetPlaybackConfiguration` 태스크를 보여 주는 CloudTrail 로그 항목이 나타낸 예제입니다.

```
{
    "eventVersion": "1.05",
    "userIdentity": {
        "type": "IAMUser",
        "principalId": "AIDAEXAMPLE",
        "arn": "arn:aws:iam::111122223333:user/testuser",
        "accountId": "111122223333",
        "accessKeyId": "AIDAEXAMPLE",
        "userName": "testuser"
    },
    "eventTime": "2018-12-28T22:52:37Z",
    "eventSource": "mediatailor.amazonaws.com",
    "eventName": "GetPlaybackConfiguration",
    "awsRegion": "us-west-2",
    "sourceIPAddress": "1.2.3.4",
    "userAgent": "PostmanRuntime/7.4.0",
    "requestParameters": {
        "Name": "examplename"
    },
    "responseElements": null,
    "requestID": "0z1y2x3w-0123-4567-9876-6q7r8s9t0u1v",
    "eventID": "888ddd77-3322-eeww-uuii-abc123jkl343",
    "readOnly": true,
    "eventType": "AwsApiCall",
    "recipientAccountId": "111122223333"
}
```

# AWS Elemental MediaTailor 채널 어셈블리 알림 수신
<a name="channel-assembly-alerts"></a>

MediaTailor는 채널 어셈블리 리소스에서 발생하는 문제 또는 잠재적 문제에 대한 알림을 생성합니다. 알림은 문제, 문제가 발생한 시간 및 영향을 받는 리소스를 설명합니다.

MediaTailor ListAlerts API를 사용하여 , AWS Management Console AWS Command Line Interface (AWS CLI), AWS SDKs 또는 프로그래밍 방식으로 알림을 볼 수 있습니다. [ListAlerts](https://docs.aws.amazon.com/mediatailor/latest/apireference/API_ListAlerts.html) 

**중요**  
알림은 2021년 7월 14일 이후에 생성된 채널 어셈블리 리소스에만 사용할 수 있습니다.


**채널 어셈블리 알림**  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/mediatailor/latest/ug/channel-assembly-alerts.html)

## 매니페스트 관련 알림 문제 해결
<a name="channel-assembly-troubleshooting-manifest-alerts"></a>

`UNPARSABLE_MANIFEST`, `VARIANT_DURATION_MISMATCH`또는와 같은 매니페스트 관련 알림이 발생하면 다음을 `TARGET_DURATION_MISMATCH`확인합니다.

1. **소스 요구 사항 확인**: 콘텐츠가에 설명된 요구 사항을 충족하는지 확인합니다[MediaTailor 광고 삽입을 위한 콘텐츠 소스 통합](integrating-origin.md).

1. **매니페스트 로그 확인**: 자세한 매니페스트 오류 분석 및 이벤트 유형은 섹션을 참조하세요[AWS Elemental MediaTailor 매니페스트 로그 설명 및 이벤트 유형](log-types.md).

1. **오류 코드 확인**: 자세한 오류 분석은 섹션을 참조하세요[MediaTailor 문제 해결](troubleshooting.md).

1. **매니페스트 형식 검토**: 매니페스트가 스트리밍 프로토콜(HLS 또는 DASH)의 올바른 형식 사양을 따르는지 확인합니다.

## 알림 보기
<a name="channel-assembly-viewing-alerts-procedure"></a>

모든 MediaTailor 채널 어셈블리 리소스에 대한 알림을 볼 수 있습니다. 채널 및 프로그램에 대한 알림을 볼 때 MediaTailor에는 채널 또는 프로그램에 포함된 모든 관련 리소스가 포함됩니다. 예를 들어 특정 프로그램에 대한 알림을 볼 때 프로그램에 포함된 소스 위치 및 VOD 소스에 대한 알림도 표시됩니다.

알림을 보려면 다음 절차를 수행합니다.

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

**콘솔에서 알림을 보려면**

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

1. 알림을 보려는 리소스를 선택합니다.

1. **알림을** 보려면 알림 탭을 선택합니다.

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

채널 어셈블리 리소스에 대한 알림을 나열하려면 리소스의 [Amazon 리소스 이름(ARN)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)이 필요합니다. AWS Command Line Interface (AWS CLI)에서 `describe-resource_type` 명령을 사용하여 리소스의 ARN을 가져올 수 있습니다. 예를 들어 [describe-channel](https://docs.aws.amazon.com/cli/latest/reference/mediatailor/describe-channel.html) 명령을 실행하여 특정 채널의 ARN을 가져옵니다.

```
aws mediatailor describe-channel --channel-name MyChannelName
```

그런 다음 [aws mediatailor list-alerts](https://docs.aws.amazon.com/cli/latest/reference/mediatailor/list-alerts.html) 명령을 사용하여 리소스와 연결된 알림을 나열합니다.

```
aws mediatailor list-alerts --resource-arn arn:aws:mediatailor:region:aws-account-id:resource-type/resource-name
```

------
#### [ API ]

채널 어셈블리 리소스에 대한 알림을 나열하려면 리소스의 [Amazon 리소스 이름(ARN)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)이 필요합니다. MediaTailor API에서 `DescribeResource` 작업을 사용하여 리소스의 ARN을 가져올 수 있습니다. 예를 들어 [DescribeChannel](https://docs.aws.amazon.com/mediatailor/latest/apireference/API_DescribeChannel.html) 작업을 사용하여 특정 채널의 ARN을 가져옵니다.

그런 다음 [ListAlerts](https://docs.aws.amazon.com/mediatailor/latest/apireference/API_ListAlerts.html) API를 사용하여 리소스에 대한 알림을 나열합니다.

------

## 알림 처리
<a name="channel-assembly-handling-alerts"></a>

알림이 발생하면에서 알림을 보거나 AWS Command Line Interface (AWS CLI), AWS SDKs 또는 MediaTailor Alerts API를 AWS Management Console사용하여 문제의 가능한 원인을 확인합니다.

문제를 해결하면 MediaTailor가 알림을 지웁니다.

# AWS Elemental MediaTailor 리소스 태그 지정
<a name="tagging"></a>

*태그*는 사용자가 할당하거나가 AWS 리소스에 AWS 할당하는 메타데이터 레이블입니다. 각 태그는 *키*와 *값*으로 구성됩니다. 사용자가 할당하는 태그에 대해 키와 값을 정의합니다. 예를 들어 키를 `stage`로 정의하고 리소스 하나의 값을 `test`로 정의할 수 있습니다.

태그는 다음을 지원합니다.
+  AWS 리소스를 식별하고 구성합니다. 많은 AWS 서비스가 태그 지정을 지원하므로 서로 다른 서비스의 리소스에 동일한 태그를 할당하여 리소스가 관련이 있음을 나타낼 수 있습니다. 예를 들어 AWS Elemental MediaTailor 구성에 할당한 AWS Elemental MediaPackage 채널 및 엔드포인트에 동일한 태그를 할당할 수 있습니다.
+  AWS 비용을 추적합니다. AWS 결제 및 비용 관리 대시보드에서 이러한 태그를 활성화합니다.는 태그를 AWS 사용하여 비용을 분류하고 월별 비용 할당 보고서를 제공합니다. 자세한 내용은 [AWS Billing 사용자 가이드](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/)의 [비용 할당 태그 사용](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html)을 참조하세요.
+  AWS 리소스에 대한 액세스를 제어합니다. 자세한 내용은 [IAM 사용 설명서](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)의 [태그를 사용한 액세스 제어](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html)를 참조하십시오.

다음 섹션에서는 태그에 대한 자세한 정보를 제공합니다 AWS Elemental MediaTailor.

## 에서 지원되는 리소스 AWS Elemental MediaTailor
<a name="supported-resources"></a>

의 다음 리소스는 태그 지정을 AWS Elemental MediaTailor 지원합니다.
+ 채널
+ 구성
+ SourceLocations
+ VodSources

## 태그 제한 사항
<a name="tagging-restrictions"></a>

 AWS Elemental MediaTailor 리소스의 태그에는 다음과 같은 기본 제한이 적용됩니다.
+ 리소스에 할당할 수 있는 최대 태그 수 - 50개 
+ 최대 키 길이 - 유니코드 128자 
+ 최대 값 길이 - 유니코드 256자 
+ 키 및 값에 사용할 수 있는 문자 - a-z, A-Z, 0-9, 공백 및 \$1 . : / = \$1 - @ 문자
+ 키와 값은 대/소문자를 구분합니다.
+ 키 접두사로 `aws:`를 사용하지 마세요. AWS 전용입니다.

## 에서 태그 관리 AWS Elemental MediaTailor
<a name="tagging-add-edit-delete"></a>

태그를 리소스의 속성으로 설정합니다. AWS Elemental MediaTailor API 또는 AWS Command Line Interface ()를 통해 태그를 추가, 편집 및 삭제할 수 있습니다AWS CLI. 자세한 내용은 [AWS Elemental MediaTailor API 참조](https://docs.aws.amazon.com/mediatailor/latest/apireference/Welcome.html)를 참조하세요.

# 워크플로 모니터를 사용하여 AWS 미디어 서비스 모니터링
<a name="monitor-with-workflow-monitor"></a>

워크플로 모니터는 AWS 미디어 워크플로의 검색, 시각화 및 모니터링을 위한 도구입니다. 워크플로 모니터는 AWS 콘솔 및 API에서 사용할 수 있습니다. 워크플로 모니터를 사용하여 워크플로 리소스의 시각적 매핑인 *시그널 맵*을 검색하고 생성할 수 있습니다. 매핑된 리소스를 모니터링하기 위해 Amazon CloudWatch 경보와 Amazon EventBridge 규칙 템플릿을 생성하고 관리할 수 있습니다. 생성한 모니터링 템플릿은 반복성을 허용하기 위해 배포 가능한 AWS CloudFormation 템플릿으로 변환됩니다. AWS 권장 경보 템플릿은 사전 정의된 모범 사례 모니터링을 제공합니다.

 **검색**

시그널 맵을 활용하여 미디어 워크플로와 연결된 상호 연결된 AWS 리소스를 자동으로 검색합니다. 지원되는 모든 서비스 리소스에서 검색을 시작할 수 있으며 워크플로의 전체 매핑을 생성합니다. 시그널 맵은 독립 실행형 시각화 도구로 사용하거나 모니터링 템플릿과 결합하여 보강할 수 있습니다.

![\[워크플로 모니터 검색 구성 요소\]](http://docs.aws.amazon.com/ko_kr/mediatailor/latest/ug/images/workflowmonitor-discovery.png)


**모니터링**

사용자 지정 CloudWatch 경보 및 EventBridge 규칙 템플릿을 생성하여 미디어 워크플로의 상태를 모니터링할 수 있습니다. 모범 사례 경보 템플릿은 워크플로 모니터 환경으로 가져올 수 있습니다. 모범 사례 경보 템플릿을 그대로 사용하거나 워크플로에 맞게 편집할 수 있습니다. 생성한 템플릿은 반복적으로 배포할 수 있도록 CloudFormation 템플릿으로 변환됩니다.

![\[워크플로 모니터 모니터링 구성 요소\]](http://docs.aws.amazon.com/ko_kr/mediatailor/latest/ug/images/workflowmonitor-monitoring.png)


**참고**  
워크플로 모니터를 사용하는 데 드는 직접적인 비용은 없습니다. 그러나 워크플로를 모니터링하기 위해 생성하고 사용하는 리소스와 관련된 비용이 발생합니다.  
모니터링이 배포되면 Amazon CloudWatch 및 Amazon EventBridge 리소스가 생성됩니다. AWS Management Console을 사용할 때 모니터링을 시그널 맵에 배포하기 전에 생성되는 리소스 수에 대한 알림을 받게 됩니다. 요금에 대한 자세한 내용은 [CloudWatch 요금](https://aws.amazon.com/cloudwatch/pricing/) 및 [EventBridge 요금](https://aws.amazon.com/eventbridge/pricing/) 단원을 참조하세요.  
워크플로 모니터는 AWS CloudFormation 템플릿을 사용하여 CloudWatch 및 EventBridge 리소스를 배포합니다. 이러한 템플릿은 배포 과정 중 워크플로 모니터를 통해 생성되는 표준 클래스 Amazon Simple Storage Service 버킷에 저장되며 객체 스토리지 및 리콜 요금이 부과됩니다. 요금에 대한 자세한 내용은 [Amazon S3 요금](https://aws.amazon.com/s3/pricing/)을 참조하세요.  
워크플로 모니터 AWS Elemental MediaPackage 채널 신호 맵에서 생성된 미리 보기는 MediaPackage 오리진 엔드포인트에서 전송되며 데이터 전송 요금이 발생합니다. 요금은 [MediaPackage 요금](https://aws.amazon.com/mediapackage/pricing/) 단원을 참조하세요.

## 워크플로 모니터 구성 요소
<a name="monitor-with-workflow-monitor-components"></a>

워크플로 모니터의 주요 구성 요소는 4가지입니다.
+ CloudWatch 경보 템플릿 - CloudWatch를 사용하여 모니터링할 조건을 정의합니다. 자체 경보 템플릿을 생성하거나에서 생성한 사전 정의된 템플릿을 가져올 수 있습니다 AWS. 자세한 내용은 다음을 참조하세요. [AWS 미디어 워크플로를 모니터링하기 위한 CloudWatch 경보 그룹 및 템플릿](monitor-with-workflow-monitor-configure-alarms.md) 
+ EventBridge 규칙 템플릿 - 경보가 트리거될 때 EventBridge에서 알림을 보내는 방법을 정의합니다. 자세한 내용은 다음을 참조하세요. [AWS 미디어 워크플로를 모니터링하기 위한 EventBridge 규칙 그룹 및 템플릿](monitor-with-workflow-monitor-configure-notifications.md) 
+ 시그널 맵 - 자동화된 프로세스를 사용하여 기존 AWS 리소스를 사용하여 AWS Elemental 워크플로 맵을 생성합니다. 시그널 맵을 사용하면 워크플로의 리소스를 검색하고 해당 리소스에 모니터링을 배포할 수 있습니다. 자세한 내용은 [워크플로 모니터 시그널 맵](monitor-with-workflow-monitor-configure-signal-maps.md) 단원을 참조하세요.
+ 개요 - 개요 페이지에서는 여러 시그널 맵의 상태를 한 위치에서 직접 모니터링할 수 있습니다. 워크플로의 지표, 로그 및 경보를 검토할 수 있습니다. 자세한 내용은 [워크플로 모니터 개요](monitor-with-workflow-monitor-operate-overview.md) 단원을 참조하세요.

## 지원되는 서비스
<a name="monitor-with-workflow-monitor-supported-services"></a>

워크플로 모니터는 다음 서비스와 연관된 리소스의 자동 검색과 시그널 매핑을 지원합니다.
+ AWS Elemental MediaConnect
+ AWS Elemental MediaLive
+ AWS Elemental MediaPackage
+ AWS Elemental MediaTailor
+ Amazon S3
+ Amazon CloudFront

**Topics**
+ [워크플로 모니터 구성 요소](#monitor-with-workflow-monitor-components)
+ [지원되는 서비스](#monitor-with-workflow-monitor-supported-services)
+ [AWS 미디어 서비스를 모니터링하도록 워크플로 모니터 구성](monitor-with-workflow-monitor-configure.md)
+ [워크플로 모니터 사용](monitor-with-workflow-monitor-operate.md)

# AWS 미디어 서비스를 모니터링하도록 워크플로 모니터 구성
<a name="monitor-with-workflow-monitor-configure"></a>

워크플로 모니터를 처음으로 설정하려면 경보 및 이벤트 템플릿을 생성하고 미디어 워크플로를 모니터링하는 데 사용되는 시그널 맵을 검색하세요. 다음 가이드에서는 관리자 및 운영자 수준의 IAM 역할을 모두 설정하고, 워크플로 모니터 리소스를 생성하고, 워크플로에 모니터링을 배포하는 데 필요한 단계를 다룹니다.

**Topics**
+ [워크플로 모니터 시작하기](monitor-with-workflow-monitor-configure-getting-started.md)
+ [워크플로 모니터 그룹 및 템플릿](monitor-with-workflow-monitor-configure-templates.md)
+ [워크플로 모니터 시그널 맵](monitor-with-workflow-monitor-configure-signal-maps.md)
+ [워크플로 모니터 할당량](monitor-with-workflow-monitor-configure-quotas.md)

# 워크플로 모니터 시작하기
<a name="monitor-with-workflow-monitor-configure-getting-started"></a>

다음 단계에서는 워크플로 모니터를 처음 사용할 때 알아야 할 기본적인 개요를 제공합니다.

1. 관리자 및 운영자 수준 역할에 대한 워크플로 모니터 IAM 권한 설정: [워크플로 모니터링 IAM 정책](monitor-with-workflow-monitor-configure-getting-started-IAM.md) 

1. 경보 템플릿을 빌드하거나 AWS다음에서 생성한 사전 정의된 템플릿을 가져옵니다. [CloudWatch 경보](monitor-with-workflow-monitor-configure-alarms.md) 

1. EventBridge에서 전달할 알림 이벤트 빌드: [EventBridge 규칙 ](monitor-with-workflow-monitor-configure-notifications.md)

1. 기존 AWS Elemental 리소스를 사용하여 시그널 맵을 검색합니다. [시그널 맵 ](monitor-with-workflow-monitor-configure-signal-maps.md) 

1. 시그널 맵에 경보 템플릿 및 알림 규칙 연결: [템플릿 연결](monitor-with-workflow-monitor-configure-signal-maps-attach.md)

1. 템플릿을 배포하여 시그널 맵 모니터링 시작: [모니터링 템플릿 배포](monitor-with-workflow-monitor-configure-deploy.md)

1.  AWS 콘솔의 개요 섹션을 사용하여 워크플로 모니터 리소스 모니터링 및 검토: [개요](monitor-with-workflow-monitor-operate-overview.md)

![\[워크플로 모니터를 설정하는 개별 단계입니다. 먼저 IAM 역할을 생성합니다. 그런 다음 경보 및 이벤트 템플릿을 생성합니다. 그런 다음 시그널 맵을 검색하고 템플릿을 맵에 연결합니다. 템플릿이 시그널 맵에 연결되면 템플릿을 배포해야 합니다. 마지막으로 템플릿과 개요 리소스를 사용하여 모니터링합니다.\]](http://docs.aws.amazon.com/ko_kr/mediatailor/latest/ug/images/workflowmonitor-overview-steps.png)


# 워크플로 모니터링 IAM 정책
<a name="monitor-with-workflow-monitor-configure-getting-started-IAM"></a>

 워크플로 모니터는 여러 AWS 서비스와 상호 작용하여 시그널 맵을 생성하고 CloudWatch 및 EventBridge 리소스와 CloudFormation 템플릿을 빌드합니다. 워크플로 모니터는 다양한 서비스와 상호 작용하므로 이러한 서비스에 대해 특정 AWS Identity and Access Management (IAM) 정책을 할당해야 합니다. 다음 예시는 관리자 및 운영자 IAM 역할 모두에 필요한 IAM 정책을 보여줍니다.

## 관리자 IAM 정책
<a name="monitor-with-workflow-monitor-configure-getting-started-IAM-administrator"></a>

다음은 관리자 수준의 워크플로 모니터 IAM 정책에 대한 예시 정책입니다. 이 역할을 통해 워크플로 모니터 리소스 및 워크플로 모니터와 상호 작용하는 지원 서비스 리소스를 생성하고 관리할 수 있습니다.

------
#### [ JSON ]

****  

```
{
  
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "cloudwatch:List*",
        "cloudwatch:Describe*",
        "cloudwatch:Get*",
        "cloudwatch:PutAnomalyDetector",
        "cloudwatch:PutMetricData",
        "cloudwatch:PutMetricAlarm",
        "cloudwatch:PutCompositeAlarm",
        "cloudwatch:PutDashboard",
        "cloudwatch:DeleteAlarms",
        "cloudwatch:DeleteAnomalyDetector",
        "cloudwatch:DeleteDashboards",
        "cloudwatch:TagResource",
        "cloudwatch:UntagResource"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "cloudformation:List*",
        "cloudformation:Describe*",
        "cloudformation:CreateStack",
        "cloudformation:UpdateStack",
        "cloudformation:DeleteStack",
        "cloudformation:TagResource",
        "cloudformation:UntagResource"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "cloudfront:List*",
        "cloudfront:Get*"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeNetworkInterfaces"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "events:List*",
        "events:Describe*",
        "events:CreateEventBus",
        "events:PutRule",
        "events:PutTargets",
        "events:EnableRule",
        "events:DisableRule",
        "events:DeleteRule",
        "events:RemoveTargets",
        "events:TagResource",
        "events:UntagResource"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "logs:Describe*",
        "logs:Get*",
        "logs:TagLogGroup",
        "logs:TagResource",
        "logs:UntagLogGroup",
        "logs:UntagResource"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "mediaconnect:List*",
        "mediaconnect:Describe*"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "medialive:*"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "mediapackage:List*",
        "mediapackage:Describe*"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "mediapackagev2:List*",
        "mediapackagev2:Get*"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "mediapackage-vod:List*",
        "mediapackage-vod:Describe*"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "mediatailor:List*",
        "mediatailor:Describe*",
        "mediatailor:Get*"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "resource-groups:ListGroups",
        "resource-groups:GetGroup",
        "resource-groups:GetTags",
        "resource-groups:GetGroupQuery",
        "resource-groups:GetGroupConfiguration",
        "resource-groups:CreateGroup",
        "resource-groups:UngroupResources",
        "resource-groups:GroupResources",
        "resource-groups:DeleteGroup",
        "resource-groups:UpdateGroupQuery",
        "resource-groups:UpdateGroup",
        "resource-groups:Tag",
        "resource-groups:Untag"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:*"
      ],
      "Resource": "arn:aws:s3:::workflow-monitor-templates*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "sns:TagResource",
        "sns:UntagResource"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "tag:Get*",
        "tag:Describe*",
        "tag:TagResources",
        "tag:UntagResources"
      ],
      "Resource": "*"
    }
  ]
}
```

------

## 운영자 IAM 정책
<a name="monitor-with-workflow-monitor-configure-getting-started-IAM-operator"></a>

다음은 운영자 수준의 워크플로 모니터 IAM 정책에 대한 예시 정책입니다. 이 역할을 통해 워크플로 모니터 리소스 및 워크플로 모니터와 상호 작용하는 지원 서비스 리소스에 대해 제한된 액세스 권한과 읽기 전용 액세스 권한을 부여받을 수 있습니다.

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "cloudwatch:List*",
        "cloudwatch:Describe*",
        "cloudwatch:Get*"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "cloudformation:List*",
        "cloudformation:Describe*"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "cloudfront:List*",
        "cloudfront:Get*"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeNetworkInterfaces"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "events:List*",
        "events:Describe*"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "logs:Describe*",
        "logs:Get*"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "mediaconnect:List*",
        "mediaconnect:Describe*"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "medialive:List*",
        "medialive:Get*",
        "medialive:Describe*"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "mediapackage:List*",
        "mediapackage:Describe*"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "mediapackagev2:List*",
        "mediapackagev2:Get*"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "mediapackage-vod:List*",
        "mediapackage-vod:Describe*"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "mediatailor:List*",
        "mediatailor:Describe*",
        "mediatailor:Get*"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:Get*",
        "s3:List*"
      ],
      "Resource": "arn:aws:s3:::workflow-monitor-templates*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "tag:Get*",
        "tag:Describe*"
      ],
      "Resource": "*"
    }
  ]
}
```

------

# 워크플로 모니터 그룹 및 템플릿
<a name="monitor-with-workflow-monitor-configure-templates"></a>

워크플로 모니터링을 시그널 맵에 배포하려면 먼저 CloudWatch 경보 및 EventBridge 알림을 위한 그룹과 템플릿을 생성해야 합니다. CloudWatch 템플릿은 경보를 트리거하는 데 사용할 시나리오와 임곗값을 정의합니다. EventBridge 템플릿은 이러한 경보가 사용자에게 보고되는 방식을 결정합니다.

연결된 리소스의 매핑만 사용하고 워크플로 모니터의 모니터링 템플릿 기능은 사용하지 않으려는 경우 CloudWatch 및 EventBridge 템플릿 없이 시그널 맵을 사용할 수 있습니다. 시그널 맵 사용에 대한 자세한 내용은 [시그널 맵 ](monitor-with-workflow-monitor-configure-signal-maps.md) 단원을 참조하세요.

**Topics**
+ [AWS 미디어 워크플로를 모니터링하기 위한 CloudWatch 경보 그룹 및 템플릿](monitor-with-workflow-monitor-configure-alarms.md)
+ [AWS 미디어 워크플로를 모니터링하기 위한 EventBridge 규칙 그룹 및 템플릿](monitor-with-workflow-monitor-configure-notifications.md)

# AWS 미디어 워크플로를 모니터링하기 위한 CloudWatch 경보 그룹 및 템플릿
<a name="monitor-with-workflow-monitor-configure-alarms"></a>

워크플로 모니터 경보를 통해 기존의 CloudWatch 지표를 기반으로 시그널 맵에 대한 경보를 설정할 수 있습니다. 경보 템플릿 그룹을 생성하여 워크플로에 중요한 경보 유형을 정렬하고 분류할 수 있습니다. 각 경보 템플릿 그룹 내에 모니터링하려는 특정 CloudWatch 지표와 파라미터가 포함된 경보 템플릿을 생성합니다. 자체 경보 템플릿을 생성하거나에서 생성한 권장 경보 템플릿을 가져올 수 있습니다 AWS. 경보 템플릿 그룹을 생성하고 해당 그룹 내에 경보 템플릿을 생성한 후에는 이러한 경보 템플릿 그룹 중 하나 이상을 시그널 맵에 연결할 수 있습니다.

 먼저 경보 템플릿 그룹을 생성해야 합니다. 경보 템플릿 그룹을 생성한 후 자체 템플릿을 생성하거나에서 생성한 권장 템플릿을 사용할 수 있습니다 AWS. 자체 경보 템플릿을 생성하려면 이 페이지를 계속 진행합니다. 권장 템플릿 가져오기에 대한 자세한 내용은 [권장 템플릿](monitor-with-workflow-monitor-configure-alarms-recommended-templates.md) 단원을 참조하세요.

이 단원에서는 워크플로 모니터를 사용하여 CloudWatch 경보를 생성하는 방법에 대해 다룹니다. CloudWatch 서비스에서 경보를 처리하는 방식 및 경보 구성 요소에 대한 자세한 내용은 *Amazon CloudWatch 사용 설명서*의 [CloudWatch 경보 사용](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html)을 참조하세요.

## 경보 템플릿 그룹 생성
<a name="monitor-with-workflow-monitor-alarms-groups-create"></a>

경보 템플릿 그룹을 사용하면 워크플로에 중요한 경보 유형을 정렬하고 분류할 수 있습니다.

**경보 템플릿 그룹을 생성하려면**

1. 워크플로 모니터 콘솔의 탐색 창에서 **CloudWatch 경보 템플릿**을 선택합니다.

1. **경보 템플릿 그룹 생성**을 선택합니다.

1. 경보 템플릿 그룹에 고유한 **그룹 이름**과 **설명**(선택 사항)을 지정합니다.

1. **생성**을 선택하면 새로 생성된 경보 템플릿 그룹의 세부 정보 페이지로 이동합니다.

## 경보 템플릿 생성
<a name="monitor-with-workflow-monitor-configure-alarms-templates-create"></a>

모니터링하려는 CloudWatch 지표와 파라미터가 포함된 경보 템플릿을 생성할 수 있습니다.

**경보 템플릿을 생성하려면**

1. 경보 템플릿 그룹의 세부 정보 페이지에서 **경보 템플릿 생성**을 선택합니다.

1. 경보 템플릿에 고유한 **템플릿 이름**과 **설명**(선택 사항)을 지정합니다.

1. **지표 선택** 섹션에서 다음을 수행합니다.

   1. **대상 리소스 유형**을 선택합니다. 대상 리소스 유형은 각 서비스에 대한 리소스(예: MediaLive 및 MediaPackage의 채널 또는 MediaConnect의 흐름)입니다.

   1. **지표 이름**을 선택합니다. 이는 경보의 기반이 될 CloudWatch 지표입니다. 지표 목록은 선택한 **대상 리소스 유형**에 따라 달라집니다.

1. **경보 설정** 섹션에서 다음을 수행합니다.
**참고**  
CloudWatch 서비스에서 경보를 처리하는 방식 및 경보 구성 요소에 대한 자세한 내용은 *Amazon CloudWatch 사용 설명서*의 [CloudWatch 경보 사용](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html)을 참조하세요.

   1. **통계**를 선택합니다. 이는 지표를 모니터링하는 데 사용할 **합계** 또는 **평균** 등의 값입니다.

   1. **비교 연산자**를 선택합니다. 이 필드는 다음 단계에서 설정할 **임곗값**을 참조합니다.

   1. **임곗값**을 설정합니다. 이는 **비교 연산자**가 보다 큼, 보다 작음, 같음 상태를 결정하는 데 사용하는 숫자 값입니다.

   1. **기간**을 설정합니다. 이는 초 단위의 시간 값입니다. **기간**은 **통계**, **비교 연산자**, **임곗값**이 상호 작용하여 경보 트리거 여부를 결정하는 시간입니다.

   1. **데이터 포인트**를 설정합니다. 이 값에 따라 경보 트리거에 필요한 데이터 포인트 수가 결정됩니다.

   1. **누락 데이터 처리** 방법을 선택합니다. 이 선택 항목에 따라 해당 경보가 누락된 데이터에 반응하는 방식이 결정됩니다.

1. **생성**을 선택하여 프로세스를 완료합니다.

완성된 경보 템플릿의 예시에는 다음과 같은 파라미터가 포함될 수 있습니다. MediaConnect 흐름의 **대상 리소스 유형**은 연결 끊김 **지표 이름**을 모니터링합니다. **통계** 값은 합계로, **비교 연산자**는 ‘크거나 같음’으로, **임곗값**은 10으로 설정되어 있습니다. **기간**은 60초로 설정되어 있으며 **데이터 포인트** 1개 중 1개만 필요합니다. **누락 데이터 처리**는 ‘무시’로 설정되어 있습니다.

이러한 설정의 결과로 워크플로 모니터는 흐름의 연결이 끊기는지 모니터링합니다. 60초 내에 연결이 10회 이상 끊기면 경보가 트리거됩니다. 60초 내에 10회 이상의 연결 끊김이 한 번이라도 발생하면 경보가 트리거됩니다.

# AWS 미디어 워크플로를 모니터링하기 위한 권장 경보 템플릿
<a name="monitor-with-workflow-monitor-configure-alarms-recommended-templates"></a>

워크플로 모니터의 권장 템플릿은 지표에 적합한 사전 정의된 경보 설정이 있는 AWS 엄선된 Elemental 서비스 지표입니다. 사용자 지정 경보 템플릿을 생성하지 않으려는 경우 권장 템플릿은에서 생성한 모범 사례 모니터링 템플릿을 제공합니다 AWS.

워크플로 모니터에는 각 지원 서비스에 권장되는 템플릿 그룹이 포함되어 있습니다. 이러한 그룹은 특정 유형의 워크플로에 모범 사례 모니터링을 적용하도록 설계되었습니다. 각 템플릿 그룹에는 서비스별 지표에서 구성된 엄선된 경보가 포함되어 있습니다. 예를 들어 MediaLive 멀티플렉스 워크플로에 권장되는 템플릿 그룹에는 MediaConnect CDI 워크플로와 다른 사전 구성된 지표 세트가 포함되어 있습니다.

**권장 경보 템플릿을 사용하려면**

1. 단계에 따라 [경보 템플릿 그룹을 생성](monitor-with-workflow-monitor-configure-alarms.md#monitor-with-workflow-monitor-alarms-groups-create)하거나 기존 그룹을 선택합니다.

1. **경보 템플릿** 섹션에서 **가져오기**를 선택합니다. AWS 권장 템플릿을 템플릿 그룹으로 가져와야 합니다.

1. **CloudWatch 경보 템플릿 그룹** 드롭다운을 사용하여 AWS 권장 그룹을 선택합니다. 이 그룹에는 특정 서비스에 대해 선별된 경보가 포함되어 있습니다.

1. 확인란을 사용하여 가져올 템플릿을 선택합니다. 각 템플릿에는 지표와 사전 구성된 모니터링 값이 나열되고 지표에 대한 설명이 제공됩니다. 템플릿 선택을 마쳤으면 **추가** 버튼을 선택합니다.

1. 템플릿을 선택하면 **가져올 경보 템플릿** 섹션으로 이동합니다. 선택 사항을 검토하고 **가져오기**를 선택합니다.

1. 가져오기가 완료되면 선택한 템플릿이 템플릿 그룹에 추가됩니다. 템플릿을 더 추가하려면 가져오기 프로세스를 반복합니다.

1. 가져오기 후 가져온 템플릿을 사용자 지정할 수 있습니다. 경보 설정은 경보 요구 사항에 맞게 수정할 수 있습니다.

    

# AWS 미디어 워크플로를 모니터링하기 위한 EventBridge 규칙 그룹 및 템플릿
<a name="monitor-with-workflow-monitor-configure-notifications"></a>

CloudWatch는 Amazon EventBridge 규칙을 사용하여 알림을 보냅니다. 먼저 이벤트 템플릿 그룹을 생성합니다. 이후 해당 이벤트 템플릿 그룹에 알림을 생성하는 조건과 알림을 받는 사람을 결정하는 이벤트 템플릿을 생성합니다.

이 단원에서는 워크플로 모니터를 사용하여 EventBridge 규칙을 생성하는 방법에 대해 다룹니다. EventBridge 서비스에서 규칙을 사용하는 방식에 대한 자세한 내용은 *Amazon EventBridge 사용 설명서*의 [EventBridge 규칙](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-rules.html)을 참조하세요.

## 이벤트 템플릿 그룹 생성
<a name="monitor-with-workflow-monitor-configure-notifications-group-create"></a>

이벤트 템플릿 그룹을 사용하면 사용 사례에 따라 이벤트를 정렬하고 분류할 수 있습니다.

**이벤트 템플릿 그룹을 생성하려면**

1. 워크플로 모니터 콘솔의 탐색 창에서 **EventBridge 규칙 템플릿**을 선택합니다.

1. **이벤트 템플릿 그룹 생성**을 선택합니다.

1. 경보 템플릿 그룹에 고유한 **그룹 이름**과 **설명**(선택 사항)을 지정합니다.

1. **생성**을 선택하면 새로 생성된 경보 템플릿 그룹의 세부 정보 페이지로 이동합니다.

## 이벤트 템플릿 생성
<a name="monitor-with-workflow-monitor-configure-notifications-template-create"></a>

 생성한 이벤트 템플릿에 따라 알림을 보낼 수 있습니다.

**이벤트 템플릿을 생성하려면**

1. 이벤트 템플릿 그룹의 세부 정보 페이지에서 **이벤트 템플릿 생성**을 선택합니다.

1. 이벤트 템플릿에 고유한 **템플릿 이름**과 **설명**(선택 사항)을 지정합니다.

1. **규칙 설정** 섹션에서 다음을 수행합니다.

   1. **이벤트 유형**을 선택합니다. 이벤트 유형을 선택할 때에서 생성한 여러 이벤트 중에서 선택하거나 **신호 맵 활성 경보**를 AWS 선택하여 경보 템플릿에서 생성한 경보를 사용할 수 있습니다.

   1. **대상 서비스**를 선택합니다. 이 서비스에 따라 이 이벤트에 대한 알림 수신 방법이 결정됩니다. Amazon Simple Notification Service 또는 CloudWatch 로그를 선택할 수 있습니다.

   1. 대상 서비스를 선택한 후 **대상**을 선택합니다. 선택한 대상 서비스에 따라 Amazon SNS 주제 또는 CloudWatch 로그 그룹이 됩니다.

1. **생성**을 선택하여 프로세스를 완료합니다.

# 워크플로 모니터 시그널 맵
<a name="monitor-with-workflow-monitor-configure-signal-maps"></a>

시그널 맵은 미디어 워크플로에 있는 AWS 리소스의 시각적 매핑입니다. 워크플로 모니터를 사용하여 지원되는 리소스 유형에서 시그널 맵 검색을 시작할 수 있습니다. 검색 프로세스 중에 워크플로 모니터는 연결된 모든 AWS 리소스를 자동으로 재귀적으로 매핑합니다. 시그널 맵이 생성된 후에는 워크플로 모니터 콘솔을 사용하여 모니터링 템플릿 배포, 지표 보기, 매핑된 리소스의 세부 정보 보기 등의 작업을 수행할 수 있습니다.

**Topics**
+ [AWS 미디어 워크플로에 대한 시그널 맵 생성](monitor-with-workflow-monitor-configure-signal-maps-create.md)
+ [AWS 미디어 워크플로의 시그널 맵 보기](monitor-with-workflow-monitor-configure-signal-maps-view.md)
+ [AWS 미디어 워크플로의 시그널 맵에 경보 및 이벤트 템플릿 연결](monitor-with-workflow-monitor-configure-signal-maps-attach.md)
+ [AWS 미디어 워크플로의 시그널 맵에 템플릿 배포](monitor-with-workflow-monitor-configure-deploy.md)
+ [AWS 미디어 워크플로의 시그널 맵 업데이트](monitor-with-workflow-monitor-configure-signal-maps-update.md)
+ [AWS 미디어 워크플로의 시그널 맵 삭제](monitor-with-workflow-monitor-configure-signal-maps-delete.md)

# AWS 미디어 워크플로에 대한 시그널 맵 생성
<a name="monitor-with-workflow-monitor-configure-signal-maps-create"></a>

워크플로 모니터 시그널 맵을 사용하여 미디어 워크플로에 연결된 모든 AWS 리소스의 시각적 매핑을 생성할 수 있습니다.

**시그널 맵을 생성하려면**

1. 워크플로 모니터 콘솔의 탐색 창에서 **시그널 맵**을 선택합니다.

1. **시그널 맵 생성**을 선택합니다.

1. 시그널 맵에 **이름**과 **설명**을 지정합니다.

1. **새 시그널 맵 검색** 섹션에 현재 계정과 선택한 리전의 리소스가 표시됩니다. 리소스를 선택하여 시그널 맵 검색을 시작합니다. 선택한 리소스가 검색의 시작점이 됩니다.

1. **생성**을 선택합니다. 검색 프로세스가 완료될 때까지 잠시 기다리세요. 프로세스가 완료되면 새 시그널 맵이 표시됩니다.
**참고**  
워크플로 모니터 AWS Elemental MediaPackage 채널 신호 맵에서 생성된 미리 보기는 MediaPackage 오리진 엔드포인트에서 전송되며 데이터 전송 요금이 발생합니다. 요금은 [MediaPackage 요금](https://aws.amazon.com/mediapackage/pricing/) 단원을 참조하세요.

# AWS 미디어 워크플로의 시그널 맵 보기
<a name="monitor-with-workflow-monitor-configure-signal-maps-view"></a>

워크플로 모니터 시그널 맵을 사용하면 미디어 워크플로에서 연결된 모든 AWS 리소스의 시각적 매핑을 볼 수 있습니다.

**시그널 맵 보기**

시그널 맵을 선택하면 시그널 맵을 모니터링하거나 구성하는 데 사용할 수 있는 두 가지 보기가 표시됩니다. **시그널 맵 모니터링** 및 **시그널 맵 구성** 버튼은 시그널 맵 콘솔 섹션의 오른쪽 상단에 있으며 상황에 따라 달라지는 버튼입니다.

탐색 창의 시그널 맵 섹션을 사용하여 **시그널 맵**을 선택하면 시그널 맵이 구성 보기에 표시됩니다. 구성 보기에서는 이 시그널 맵에 연결된 템플릿 그룹을 변경하고, 연결된 템플릿을 배포하고, 시그널 맵의 기본 세부 정보와 태그를 볼 수 있습니다.

탐색 창의 **개요** 섹션을 사용하여 시그널 맵을 선택하면 시그널 맵이 모니터링 보기에 표시됩니다. 모니터링 보기에는 이 시그널 맵에 대한 CloudWatch 경보, EventBridge 규칙, 알림, 로그 및 지표가 표시됩니다.

오른쪽 상단의 **시그널 맵 모니터링/구성** 버튼을 선택하여 언제든지 보기를 변경할 수 있습니다. 구성 보기에는 관리자 수준의 IAM 권한이 필요합니다. 필요한 IAM 권한은 [워크플로 모니터링 IAM 정책](monitor-with-workflow-monitor-configure-getting-started-IAM.md)에서 확인할 수 있습니다.

**시그널 맵 탐색**

시그널 맵에는 워크플로 모니터에서 검색된 지원되는 모든 AWS 리소스에 대한 노드가 포함됩니다. 썸네일 미리 보기를 사용할 수 있는 경우 MediaLive 채널 및 MediaPackage 엔드포인트와 같은 특정 리소스에서 콘텐츠의 썸네일 미리 보기를 표시할 수 있습니다.

리소스 노드를 선택하고 **작업** 드롭다운 메뉴에서 **선택한 리소스 세부 정보 보기**를 선택하면 관련 서비스의 세부 정보 페이지로 이동합니다. 예를 들어 MediaLive 채널을 선택하고 **선택한 리소스 세부 정보 보기**를 선택하면 해당 채널에 대한 MediaLive 콘솔의 세부 정보 페이지가 열립니다.

리소스 노드를 선택하면 활성 경보 목록이 해당 노드로만 필터링됩니다. 활성 경보에서 리소스의 **대상 ARN**을 선택하면 선택한 리소스가 열린 상태로 관련 서비스의 세부 정보 페이지로 이동합니다.

# AWS 미디어 워크플로의 시그널 맵에 경보 및 이벤트 템플릿 연결
<a name="monitor-with-workflow-monitor-configure-signal-maps-attach"></a>

경보 및 이벤트 템플릿을 생성한 후에는 이 템플릿을 시그널 맵에 연결해야 합니다. 생성한 모든 경보 및 이벤트 템플릿은 검색된 모든 시그널 맵에 연결할 수 있습니다.

**시그널 맵에 경보 및 이벤트 템플릿을 연결하려면**

1. 워크플로 모니터 콘솔의 탐색 창에서 **시그널 맵**을 선택하고 작업할 시그널 맵을 선택합니다.

1. 시그널 맵 페이지의 오른쪽 상단에 있는 **CloudWatch 경보 템플릿 그룹** 탭에서 ** CloudWatch 경보 템플릿 그룹 연결**을 선택합니다.

   1. 새 섹션이 열리면 이 시그널 맵에 적용할 경보 템플릿 그룹을 모두 선택한 다음 **추가**를 선택합니다. 그러면 선택한 경보 템플릿 그룹이 **연결된 CloudWatch 경보 템플릿 그룹** 섹션으로 이동합니다.

   1. **저장**을 선택하면 변경 사항이 저장되고 시그널 맵 페이지로 돌아갑니다.

1. 시그널 맵 페이지 오른쪽에서 **EventBridge 규칙 템플릿 그룹** 탭을 선택한 다음 ** EventBridge 규칙 템플릿 그룹 연결**을 선택합니다.

   1. 새 섹션이 열리면 이 시그널 맵에 적용할 이벤트 템플릿 그룹을 모두 선택한 다음 **추가**를 선택합니다. 그러면 선택한 규칙 템플릿 그룹이 **연결된 EventBridge 규칙 템플릿 그룹** 섹션으로 이동합니다.

   1. **저장**을 선택하면 변경 사항이 저장되고 시그널 맵 페이지로 돌아갑니다.

1. CloudWatch 경보 및 EventBridge 규칙 템플릿을 시그널 맵에 할당했지만 모니터링이 아직 배포되지 않았습니다. 다음 단원에서는 모니터링 리소스 배포에 대해 설명합니다.

# AWS 미디어 워크플로의 시그널 맵에 템플릿 배포
<a name="monitor-with-workflow-monitor-configure-deploy"></a>

경보 및 이벤트 템플릿을 시그널 맵에 연결한 후에는 모니터링을 배포해야 합니다. 배포가 완료될 때까지 시그널 맵 모니터링은 활성화되지 않습니다.

워크플로 모니터는 선택한 시그널 맵과 관련된 경보만 배포합니다. 예를 들어 연결된 경보 템플릿 그룹에는 MediaLive, MediaPackage, MediaConnect 등의 여러 서비스에 대한 경보가 포함될 수 있습니다. 선택한 시그널 맵에 MediaLive 리소스만 포함된 경우 MediaPackage 또는 MediaConnect 경보는 배포되지 않습니다.

**모니터링 템플릿을 배포하려면**

1. 경보 및 이벤트 템플릿 그룹을 시그널 맵에 연결하고 변경 사항을 저장한 후 **작업** 드롭다운 메뉴에서 **모니터 배포**를 선택합니다.

1. 배포를 확인하라는 메시지가 표시되고 생성될 CloudWatch 및 EventBridge 리소스 수가 표시됩니다. 계속하려면 **배포**를 선택합니다.
**참고**  
워크플로 모니터를 사용하는 데 드는 직접적인 비용은 없습니다. 그러나 워크플로를 모니터링하기 위해 생성하고 사용하는 리소스와 관련된 비용이 발생합니다.  
모니터링이 배포되면 Amazon CloudWatch 및 Amazon EventBridge 리소스가 생성됩니다. AWS Management Console을 사용할 때 모니터링을 시그널 맵에 배포하기 전에 생성되는 리소스 수에 대한 알림을 받게 됩니다. 요금에 대한 자세한 내용은 [CloudWatch 요금](https://aws.amazon.com/cloudwatch/pricing/) 및 [EventBridge 요금](https://aws.amazon.com/eventbridge/pricing/) 단원을 참조하세요.  
워크플로 모니터는 AWS CloudFormation 템플릿을 사용하여 CloudWatch 및 EventBridge 리소스를 배포합니다. 이러한 템플릿은 배포 과정 중 워크플로 모니터를 통해 생성되는 표준 클래스 Amazon Simple Storage Service 버킷에 저장되며 객체 스토리지 및 리콜 요금이 부과됩니다. 요금에 대한 자세한 내용은 [Amazon S3 요금](https://aws.amazon.com/s3/pricing/)을 참조하세요.

1. 배포 상태가 시그널 맵의 이름 옆에 표시됩니다. 배포 상태는 CloudFormation 콘솔의 **스택** 섹션에도 표시됩니다. 잠시 후 리소스가 생성되고 배포되면 시그널 맵 모니터링이 시작됩니다.

# AWS 미디어 워크플로의 시그널 맵 업데이트
<a name="monitor-with-workflow-monitor-configure-signal-maps-update"></a>

워크플로가 변경되면 시그널 맵을 다시 검색하고 모니터링 리소스를 다시 배포해야 할 수 있습니다. 워크플로 모니터는 워크플로 변경 기능이 없는 시각화 및 모니터링 도구입니다. 시그널 맵은 워크플로의 특정 시점을 시각화한 것입니다. 미디어 워크플로의 일부를 추가, 제거하거나 크게 수정한 경우 시그널 맵을 다시 검색하는 것이 좋습니다. 모니터링 리소스가 시그널 맵에 연결된 경우 재검색 프로세스 후 모니터링을 재배포하는 것이 좋습니다.

**시그널 맵을 다시 검색하려면**

1. 워크플로 모니터 콘솔의 탐색 창에서 **시그널 맵**을 선택하고 작업할 시그널 맵을 선택합니다.

1. **시그널 맵 구성** 보기에 있는지 확인합니다. 보기 변경에 대한 자세한 내용은 [시그널 맵 보기 ](monitor-with-workflow-monitor-configure-signal-maps-view.md) 단원을 참조하세요.

1. 시그널 맵 페이지의 오른쪽 상단에서 **작업** 드롭다운 메뉴를 선택합니다. **재검색**을 선택합니다.

1. 재검색 화면이 표시됩니다. 다시 검색하려는 워크플로에 속한 리소스를 선택합니다. **재검색** 버튼을 선택합니다.

1. 현재 워크플로에 따라 시그널 맵이 다시 빌드됩니다. 모니터링 리소스를 재배포해야 하는 경우 이 시그널 맵 페이지에서 작업을 계속 진행합니다. 이전에 연결한 모니터링 템플릿은 계속 연결되어 있지만 재배포가 필요합니다.

**시그널 맵 재검색 후 모니터링 템플릿을 재배포하려면**

1. 재검색 후에는 업데이트된 시그널 맵으로 이동합니다. 모니터링 템플릿을 재배포하려면 **작업** 드롭다운 메뉴에서 **모니터 배포**를 선택합니다.

1. 배포를 확인하라는 메시지가 표시되고 생성될 CloudWatch 및 EventBridge 리소스 수가 표시됩니다. 계속하려면 **배포**를 선택합니다.

1. 배포 상태가 시그널 맵의 이름 옆에 표시됩니다. 잠시 후 리소스가 생성되고 배포되면 시그널 맵 모니터링이 시작됩니다.

    

# AWS 미디어 워크플로의 시그널 맵 삭제
<a name="monitor-with-workflow-monitor-configure-signal-maps-delete"></a>

시그널 맵이 더 이상 필요하지 않은 경우 삭제할 수 있습니다. 시그널 맵에 배포된 모니터링 템플릿이 있는 경우 삭제 과정에서 이 시그널 맵에 배포된 CloudWatch 및 EventBridge 리소스를 삭제할 것인지 묻는 메시지가 표시됩니다. 배포된 리소스를 삭제해도 해당 리소스를 생성한 템플릿에는 영향을 주지 않습니다. 이 리소스 삭제는 사용되지 않는 CloudWatch 및 EventBridge 리소스가 배포된 채로 남아 있지 않도록 하기 위한 것입니다.

**시그널 맵을 삭제하려면**

1. 워크플로 모니터 콘솔의 탐색 창에서 **시그널 맵**을 선택하고 삭제하려는 시그널 맵 옆의 라디오 버튼을 선택합니다.

1. **삭제** 버튼을 선택합니다. 모니터링 리소스 삭제를 확인하라는 메시지가 표시됩니다. **삭제**를 선택하여 모니터링 리소스 삭제 프로세스를 시작합니다.

1. **모니터 배포** 열에 현재 상태가 표시됩니다. 상태가 **DELETE\$1COMPLETE**로 변경되면 **삭제** 버튼을 다시 선택합니다.

1. 시그널 맵 삭제를 확인하라는 메시지가 표시됩니다. **삭제**를 선택하여 진행하고 시그널 맵을 삭제합니다.

 

# 워크플로 모니터 할당량
<a name="monitor-with-workflow-monitor-configure-quotas"></a>

다음 섹션에는 워크플로 모니터 리소스에 대한 할당량이 포함되어 있습니다. 각 할당량은 ‘계정별’ 기준으로 적용됩니다. 계정의 할당량을 늘려야 하는 경우 다음 표에 달리 명시되지 않는 한 [AWS Service Quotas 콘솔](https://console.aws.amazon.com/servicequotas/home)을 사용하여 증가를 요청할 수 있습니다.


**할당량**  

| 리소스 유형 | 할당량 | 
| --- | --- | 
| CloudWatch 경보 템플릿 그룹 | 20 | 
| CloudWatch 경보 템플릿 | 200 | 
| EventBridge 규칙 템플릿 그룹 | 20 | 
| EventBridge 규칙 템플릿 | 200 | 
| 시그널 맵 | 30 | 
| 시그널 맵: 단일 시그널 맵에 연결된 CloudWatch 경보 템플릿 그룹 | 5이 할당량은 늘릴 수 없습니다. | 
| 시그널 맵: 단일 시그널 맵에 연결된 EventBridge 규칙 템플릿 그룹 | 5이 할당량은 늘릴 수 없습니다. | 

# 워크플로 모니터 사용
<a name="monitor-with-workflow-monitor-operate"></a>

워크플로 모니터 콘솔의 **개요** 및 **시그널 맵** 섹션에서는 워크플로의 현재 상태와 관련 경보, 지표 및 로그를 검토할 수 있습니다.

**Topics**
+ [워크플로 모니터 개요](monitor-with-workflow-monitor-operate-overview.md)
+ [워크플로 모니터에 대한 개요 로그 및 지표](monitor-with-workflow-monitor-operate-logs-metrics.md)
+ [워크플로 모니터 시그널 맵 사용](monitor-with-workflow-monitor-operate-signal-maps.md)

# 워크플로 모니터 개요
<a name="monitor-with-workflow-monitor-operate-overview"></a>

워크플로 모니터 콘솔의 **개요** 섹션은 시그널 맵에 대한 정보를 한눈에 볼 수 있는 대시보드입니다. 개요 섹션에서는 각 시그널 맵 모니터링의 현재 상태와 CloudWatch 지표 및 관련 CloudWatch 로그를 확인할 수 있습니다. 시그널 맵을 선택하면 해당 시그널 맵의 콘솔 페이지로 이동할 수 있습니다.

**개요 필터링**

개요 섹션의 **검색** 창에서 상황에 맞는 제약 조건을 사용하여 시그널 맵 목록을 필터링할 수 있습니다. 검색 창을 선택하면 필터링할 수 있는 **속성** 목록이 표시됩니다. 속성을 선택하면 같음, 포함, 같지 않음, 포함하지 않음 등의 **연산자**가 표시됩니다. 연산자를 선택하면 선택한 속성 유형에 따른 리소스 목록이 생성됩니다. 이러한 리소스 중 하나를 선택하면 정의한 제약 조건에 맞는 시그널 맵만 시그널 맵 목록에 표시됩니다.

# 워크플로 모니터에 대한 개요 로그 및 지표
<a name="monitor-with-workflow-monitor-operate-logs-metrics"></a>

시그널 맵에 대한 CloudWatch 지표와 로그를 보려면 시그널 맵 이름 옆의 라디오 버튼을 선택합니다. 지표와 로그 모두에 대한 탭 인터페이스가 시그널 맵 목록 아래에 표시됩니다.

**CloudWatch 지표**

선택한 시그널 맵에 대한 CloudWatch 지표는 상황에 따라 달라지며 해당 시그널 맵 워크플로에 사용된 서비스와 관련된 지표만 표시합니다. 화면의 지표 도구를 사용하여 표시된 지표 기간과 시간 범위를 사용자 지정할 수 있습니다.

**CloudWatch 로그**

CloudWatch 로그 그룹을 시그널 맵에 연결한 경우 해당 그룹이 여기에 표시됩니다.

# 워크플로 모니터 시그널 맵 사용
<a name="monitor-with-workflow-monitor-operate-signal-maps"></a>

콘솔의 **개요** 섹션에서 특정 시그널 맵을 선택하여 해당 시그널 맵 및 연결된 모니터링 리소스에 대한 자세한 정보를 볼 수 있습니다.

시그널 맵을 선택하면 시그널 맵과 추가 정보가 포함된 여러 개의 탭 섹션이 표시됩니다.
+ CloudWatch 경보
+ EventBridge 규칙
+ AWS 요소 알림
+ Metrics
+ 로그
+ 기본 세부 정보

**시그널 맵 탐색**

시그널 맵에는 워크플로 모니터에서 검색된 지원되는 모든 AWS 리소스에 대한 노드가 포함됩니다. 썸네일 미리 보기를 사용할 수 있는 경우 MediaLive 채널 및 MediaPackage 엔드포인트와 같은 특정 리소스에서 콘텐츠의 썸네일 미리 보기를 표시할 수 있습니다.

리소스 노드를 선택하고 **작업** 드롭다운 메뉴에서 **선택한 리소스 세부 정보 보기**를 선택하면 관련 서비스의 세부 정보 페이지로 이동합니다. 예를 들어 MediaLive 채널을 선택하고 **선택한 리소스 세부 정보 보기**를 선택하면 해당 채널에 대한 MediaLive 콘솔의 세부 정보 페이지가 열립니다.

리소스 노드를 선택하면 활성 경보 목록이 해당 노드로만 필터링됩니다. 활성 경보에서 리소스의 **대상 ARN**을 선택하면 선택한 리소스가 열린 상태로 관련 서비스의 세부 정보 페이지로 이동합니다.