

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

# ADS 요청에 대한 MediaTailor 동적 광고 변수
<a name="variables"></a>

AWS Elemental MediaTailor 는 동적 광고 변수를 사용하여 보기 세션의 정보를 광고 결정 서버(ADS)로 전달합니다. 이 정보는 ADS가 최종 사용자에게 가장 관련성이 높은 광고를 선택하는 데 도움이 됩니다.

이 섹션에서는 동적 광고 변수에 대한 개요와 특정 구현 가이드에 대한 링크를 제공합니다. step-by-step 구성 지침은 아래의 개별 주제를 참조하세요.

**동적 변수 유형**  
MediaTailor는 네 가지 유형의 동적 변수를 지원합니다.
+ **세션 변수** - 세션 ID 및 SCTE-35 데이터와 같이 자동으로 생성된 값입니다. [ADS 요청에 대한 MediaTailor 세션 변수](variables-session.md)을(를) 참조하세요.
+ **플레이어 변수** - 비디오 플레이어가 전송한 사용자 지정 파라미터입니다. [ADS 요청에 대한 MediaTailor 플레이어 변수](variables-player.md)을(를) 참조하세요.
+ **구성 별칭이** 있는 **도메인 변수** - 다중 오리진 구성을 위한 동적 URL 도메인입니다.
+ **구성 별칭** - 동적 변수 대체를 위해 미리 정의된 매핑입니다. [구성 별칭](configuration-aliases-overview.md)을(를) 참조하세요.

**일반 사용 사례**  
동적 광고 변수를 사용하여 다음을 수행합니다.
+ 최종 사용자 인구 통계 및 기본 설정을 ADS에 전달
+ 지리적 위치에 따라 요청을 다른 오리진으로 라우팅
+ MediaPackage 통합을 사용하여 시간 이동 보기 활성화
+ A/B 테스트 및 장애 조치 시나리오 구현

다음 섹션에서는 MediaTailor에서 동적 광고 변수를 사용하는 방법에 대한 추가 세부 정보를 제공합니다.

**Topics**
+ [세션 변수](variables-session.md)
+ [플레이어 변수](variables-player.md)
+ [도메인 변수](variables-domains.md)
+ [구성 별칭](configuration-aliases-overview.md)
+ [ADS 파라미터 전달](passing-paramters-to-the-ads.md)
+ [파라미터 라우팅](parameter-routing-behavior.md)
+ [MediaPackage 통합](mediapackage-integration-param.md)
+ [세션 동작](parameter-session-behavior.md)
+ [파라미터 참조](parameter-comprehensive-reference.md)
+ [파라미터 문제 해결](parameter-troubleshooting.md)
+ [별칭 문제 해결](configuration-aliases-troubleshooting.md)

파라미터 형식 지정 요구 사항 및 문제 해결은 [MediaTailor 파라미터 참조 및 제한 사항](parameter-comprehensive-reference.md) 및 섹션을 참조하세요[MediaTailor 파라미터 문제 해결 가이드](parameter-troubleshooting.md).

# ADS 요청에 대한 MediaTailor 세션 변수
<a name="variables-session"></a>

AWS Elemental MediaTailor 는 템플릿 ADS URL의이 섹션에 나열된 변수 중 하나 이상을 지정 AWS Elemental MediaTailor 하도록를 구성할 때 세션 데이터를 Ad Decision Server(ADS)로 전송합니다. 개별 변수를 사용할 수 있으며 여러 변수를 연결하여 단일 값을 생성할 수 있습니다. MediaTailor는 일부 값을 생성하고 매니페스트 및 플레이어의 세션 초기화 요청과 같은 소스에서 나머지 값을 가져옵니다.

다음 표에서는 템플릿 ADS 요청 URL 구성에 사용할 수 있는 세션 데이터 변수를 설명합니다. 표에 나열된 섹션 번호는 SCTE(케이블 통신 엔지니어 협회)-35 사양의 2019a 버전, [디지털 프로그램 삽입 대기열 메시지](https://account.scte.org/standards/library/catalog/scte-35-digital-program-insertion-cueing-message/), 광고 미리 가져오기에 대한 자세한 내용은 섹션을 참조하세요[광고 미리 가져오기](prefetching-ads.md).


| 이름 | 광고 미리 가져오기에 사용 가능 | SCTE-35 사양 섹션 | 설명 | 
| --- | --- | --- | --- | 
| [avail.index] | 예 |  | 인덱스에서 광고 가능성의 위치를 나타내는 숫자입니다. 재생 세션을 시작할 때 MediaTailor는 매니페스트에 있는 모든 광고 시간의 인덱스를 생성하고 세션의 나머지 기간 동안 인덱스를 저장합니다. MediaTailor가 ADS에 가용을 채우도록 요청하면 여기에는 광고 가능 인덱스 번호가 포함됩니다. 이 파라미터를 사용하면 ADS가 경쟁 배제 및 빈도 제한과 같은 기능을 사용하여 광고 선택을 개선할 수 있습니다. | 
| [avail.random] | 예 |  | MediaTailor가 ADS에 대한 각 요청에 대해 생성하는 0에서 10,000,000,000 사이의 난수입니다. 일부 광고 서버는 이 파라미터를 사용하여 광고를 경쟁사와 분리하는 것과 같은 기능을 활성화합니다. | 
| [scte.archive\$1allowed\$1flag] | 예 | 10.3.3.1 | 선택적 부울 값입니다. 이 값이 0이면 세그먼트에 레코딩 제한이 적용됩니다. 이 값이 1이면 세그먼트에 레코딩 제한이 적용되지 않습니다. | 
| [scte.avail\$1num] | 예 | 9.7.2.1 | MediaTailor가 SCTE-35 필드에서 긴 숫자avail\$1num로 구문 분석한 값입니다. MediaTailor는이 값을 사용하여 선형 광고 가능 시간을 지정할 수 있습니다.값은 정수여야 합니다. | 
| [scte.avails\$1expected] | 예 | 9,7.2.1 | 현재 이벤트 내의 예상 가용 수를 제공하는 선택적 긴 값입니다. | 
| [scte.delivery\$1not\$1restricted\$1flag] | 예 | 10.3.3.1 | 선택적 부울 값입니다. 이 값이 0이면 다음 5비트가 예약됩니다. 이 값이 1인 경우 다음 5비트는 SCTE-35 사양에 설명된 의미를 따릅니다. | 
| [scte.device\$1restrictions] | 예 | 10.3.3.1 | 사전 정의된 독립 및 비계층적 디바이스 그룹 3개에 신호를 보내는 선택적 정수 값입니다. 이 변수에 대한 자세한 내용은 SCTE-35 사양의 segments\$1expected 설명을 참조하세요. | 
| [scte.event\$1id] | 예 | 9.1 및 9.7.2.1 | MediaTailor가 SCTE-35 필드에서 긴 숫자splice\$1event\$1id로 구문 분석한 값입니다. MediaTailor는이 값을 사용하여 선형 광고 가능 시간을 지정하거나 광고 포드 위치와 같은 광고 서버 쿼리 문자열을 채웁니다.값은 정수여야 합니다. | 
| [scte.no\$1regional\$1blackout\$1flag] | 예 | 10.3.3.1 | 선택적 부울 값입니다. 이 값이 0이면 리전 블랙아웃 제한이 세그먼트에 적용됩니다. 이 값이 1이면 리전 블랙아웃 제한이 세그먼트에 적용되지 않습니다. | 
| [scte.segment\$1num] | 예 | 10.3.3.1 | 세그먼트 모음 내의 세그먼트에 번호를 지정하는 선택적 정수 값입니다. 이 변수에 대한 자세한 내용은 SCTE-35 사양의 segment\$1num 설명을 참조하세요. | 
| [scte.segmentation\$1event\$1id]  | 예 | 10.3.3.1 | MediaTailor는이 변수를 로 노출합니다[scte.event_id](#scte.event_id). | 
| [scte.segmentation\$1type\$1id] | 예 | 10.3.3.1 | 분할 유형을 지정하는 선택적 8비트 정수 값입니다. 이 변수에 대한 자세한 내용은 SCTE-35 사양의 segmentation\$1type\$1id 설명을 참조하세요. | 
| [scte.segmentation\$1upid] |  `segmentation_upid_type`: 예 `private_data`: 예  |  **segmentation\$1upid**: 10.3.3.1 관리형 프라이빗 UPID: 10.3.3.3  |  SCTE-35 `segmentation_upid` 요소에 해당합니다. `segmentation_upid` 요소에는 `segmentation_upid_type` 및가 포함되어 있습니다`segmentation_upid_length`. MediaTailor는 다음 `segmentation_upid` 유형을 지원합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/mediatailor/latest/ug/variables-session.html)  | 
| [scte.segmentation\$1upid.assetId] | 예 |  | 포드버스터 워크플로를 segmentation\$1 upid\$1type 위해 Managed Private UPID(0xC)와 함께 사용됩니다. MediaTailor는 MPU의 private\$1data JSON 구조에 있는 assetId 파라미터에서이 값을 도출합니다. 자세한 내용은 [Managed Private UPID JSON structure for a podbuster workflow](#podbuster-workflow) 단원을 참조하십시오. | 
| [scte.segmentation\$1upid.cueData.key] | 예 |  | 포드버스터 워크플로를 segmentation\$1 upid\$1type 위해 Managed Private UPID(0xC)와 함께 사용됩니다. MediaTailor는 MPU의 private\$1data JSON 구조의 cueData.key 파라미터에서이 값을 도출합니다. 자세한 내용은 [Managed Private UPID JSON structure for a podbuster workflow](#podbuster-workflow) 단원을 참조하십시오. | 
| [scte.segmentation\$1upid.cueData.value] | 예 |  | 포드버스터 워크플로를 segmentation\$1 upid\$1type 위해 Managed Private UPID(0xC)와 함께 사용됩니다. MediaTailor는 MPU의 private\$1data JSON 구조의 cueData.key 파라미터에서이 값을 도출합니다. 자세한 내용은 [Managed Private UPID JSON structure for a podbuster workflow](#podbuster-workflow) 단원을 참조하십시오.값은 문자열일 수 있습니다. | 
| [scte.segmentation\$1upid.private\$1data.\$1index\$1] | 예 |  | 대상 광고 워크플로를 segmentation\$1upid\$1type 위해 Managed Private UPID(0xC)와 함께 사용됩니다. MediaTailor는 콜론으로 구분된 분할 UPID 토큰을 분할하고 인덱싱된 세션 변수를 생성합니다. 인덱스는 콜론으로 구분된 목록의 위치에 해당하며 초기 콜론의 선행 공백은 무시합니다.예를 들어 인 경우 다음을 `segmentation_upid = ":3213214:2313321/5:3943"`수행합니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/mediatailor/latest/ug/variables-session.html) 값은 문자열일 수 있습니다. | 
| [scte.segments\$1expected] | 예 | 10.3.3.1 | 세그먼트 모음 내의 개별 세그먼트의 예상 수를 제공하는 선택적 정수 값입니다. 이 변수에 대한 자세한 내용은 SCTE-35 사양의 segments\$1expected 설명을 참조하세요. | 
| [scte.sub\$1segment\$1num] | 예 | 10.3.3.1 | 하위 세그먼트 모음 내의 특정 하위 세그먼트를 식별하는 선택적 정수 값입니다. 이 변수에 대한 자세한 내용은 SCTE-35 사양의 sub\$1segment\$1num 설명을 참조하세요. | 
| [scte.sub\$1segments\$1expected] | 예 | 10.3.3.1 | 하위 세그먼트 모음 내의 개별 하위 세그먼트의 예상 개수를 제공하는 선택적 정수 값입니다. 이 변수에 대한 자세한 내용은 SCTE-35 사양의 sub\$1segments\$1expected 설명을 참조하세요. | 
| [scte.unique\$1program\$1id] | 예 | 9.7.2.1 | SCTE-35 splice\$1insert 필드에서 MediaTailor가 구문 분석한 정수 값입니다unique\$1program\$1id. ADS는 고유 프로그램 ID(UPID)를 사용하여 라이브 선형 스트림에 대한 프로그램 수준의 광고 타겟팅을 제공합니다. SCTE-35 명령이 스플라이스 삽입이 아닌 경우 MediaTailor는 이를 빈 값으로 설정합니다.값은 정수여야 합니다. | 
| [session.avail\$1duration\$1ms] | 예 |  |  광고 가용성 슬롯의 밀리초 단위 기간입니다. 기본값은 300,000ms입니다. 다음과 같이 입력 매니페스트에서 기간 값을 AWS Elemental MediaTailor 가져옵니다. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/mediatailor/latest/ug/variables-session.html)  | 
| [session.avail\$1duration\$1secs] | 예 |  | 광고 가용성 슬롯 또는 광고 가능 시간의 초 단위 지속 시간으로, 가장 가까운 초로 반올림됩니다. MediaTailor는를 결정하는 것과 동일한 방식으로이 값을 결정합니다[session.avail\$1duration\$1ms]. | 
| [session.client\$1ip] | 아니요 |  | MediaTailor 요청이 시작된 원격 IP 주소입니다. X-forwarded-for 헤더가 설정된 경우 해당 값은 MediaTailor가에 사용하는 값입니다client\$1ip. | 
| [session.id] | 아니요 |  | 현재 재생 세션의 고유한 숫자 식별자입니다. 플레이어가 세션에 대해 실행하는 모든 요청의 경우 id가 동일하므로 이 id는 단일 시청에 대한 여러 요청을 관련시키기 위한 ADS 필드에 사용될 수 있습니다. | 
| [session.referer] | 아니요 |  | 일반적으로 비디오 플레이어를 호스팅하는 페이지의 URL입니다. MediaTailor는 플레이어가 MediaTailor에 요청할 때 사용한 Referer 헤더 값으로이 변수를 설정합니다. 플레이어가이 헤더를 제공하지 않으면 MediaTailor는를 [session.referer] 비워 둡니다. 매니페스트 엔드포인트 앞에 콘텐츠 전송 네트워크(CDN) 또는 프록시를 사용하고이 변수를 표시하려면 여기에서 플레이어의 올바른 헤더를 프록시합니다. | 
| [session.user\$1agent] | 아니요 |  | MediaTailor가 플레이어의 세션 초기화 요청에서 수신한 User-Agent 헤더입니다. 매니페스트 엔드포인트의 앞에서 CDN 또는 프록시를 사용 중인 경우 여기 플레이어에서 올바른 헤더에 프록시를 설정해야 합니다. | 
| [session.uuid] | 아니요 |  |  의 대안입니다**[session.id]**. 이는 다음과 같은 현재 재생 세션의 고유한 식별자입니다. <pre>e039fd39-09f0-46b2-aca9-9871cc116cde</pre>  | 
| [avail.source\$1content\$1time\$1epoch\$1ms] | 아니요 |  |  HLS의 경우 값은 가용 구간을 시작한 오리진 세그먼트의 PDT입니다. DASH의 경우 값은가 `<Period>` 포함된 `<SupplementalProperty> urn:scte:dash:utc-time`의 입니다`<EventStream>`. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/mediatailor/latest/ug/variables-session.html)  | 

**Example**  
ADS가 `deviceSession`이라는 쿼리 파라미터에 고유한 세션 식별자를 사용하여 전달될 것을 요구하는 경우 AWS Elemental MediaTailor 의 템플릿 ADS URL은 다음과 같이 보일 수 있습니다.  

```
https://my.ads.server.com/path?deviceSession=[session.id]
```
AWS Elemental MediaTailor 는 각 스트림에 대한 고유 식별자를 자동으로 생성하고 대신 식별자를 입력합니다`session.id`. 식별자가 인 경우 MediaTailor가 ADS에 보내는 `1234567`최종 요청은 다음과 같습니다.  

```
https://my.ads.server.com/path?deviceSession=1234567
```
ADS에 여러 쿼리 파라미터를 전달해야 하는 경우의 템플릿 ADS URL은 다음과 같을 AWS Elemental MediaTailor 수 있습니다.  

```
https://my.ads.server.com/sample?e=[scte.avails_expected]&f=[scte.segment_num]&g=[scte.segments_expected]&h=[scte.sub_segment_num]&j=[scte.sub_segments_expected]&k=[scte.segmentation_type_id]
```
다음 DASH 마커 예제 XML 조각은를 사용하는 방법을 보여줍니다`scte35:SpliceInsert`.  

```
<Period start="PT444806.040S" id="123456" duration="PT15.000S">
  <EventStream timescale="90000" schemeIdUri="urn:scte:scte35:2013:xml">
    <Event duration="1350000">
      <scte35:SpliceInfoSection protocolVersion="0" ptsAdjustment="180832" tier="4095">
        <scte35:SpliceInsert spliceEventId="1234567890" spliceEventCancelIndicator="false" outOfNetworkIndicator="true" spliceImmediateFlag="false" uniqueProgramId="1" availNum="1" availsExpected="1">
          <scte35:Program><scte35:SpliceTime ptsTime="5672624400"/></scte35:Program>
          <scte35:BreakDuration autoReturn="true" duration="1350000"/>
        </scte35:SpliceInsert>
      </scte35:SpliceInfoSection>
```
다음 DASH 마커 예제 XML 조각은 사용 방법을 보여줍니다`scte35:TimeSignal`.  

```
<Period start="PT346530.250S" id="123456" duration="PT61.561S">
  <EventStream timescale="90000" schemeIdUri="urn:scte:scte35:2013:xml">
    <Event duration="5310000">
      <scte35:SpliceInfoSection protocolVersion="0" ptsAdjustment="183003" tier="4095">
        <scte35:TimeSignal>
          <scte35:SpliceTime ptsTime="3442857000"/>
        </scte35:TimeSignal>
        <scte35:SegmentationDescriptor segmentationEventId="1234567" segmentationEventCancelIndicator="false" segmentationDuration="8100000" segmentationTypeId="52" segmentNum="0" segmentsExpected="0">
          <scte35:DeliveryRestrictions webDeliveryAllowedFlag="false" noRegionalBlackoutFlag="false" archiveAllowedFlag="false" deviceRestrictions="3"/>
          <scte35:SegmentationUpid segmentationUpidType="12" segmentationUpidLength="2">0100</scte35:SegmentationUpid>
        </scte35:SegmentationDescriptor>
      </scte35:SpliceInfoSection>
    </Event>
```
다음 DASH 마커 예제 XML 조각은 사용 방법을 보여줍니다`scte35:Binary`.  

```
<Period start="PT444806.040S" id="123456" duration="PT15.000S">
  <EventStream schemeIdUri="urn:scte:scte35:2014:xml+bin" timescale="1">
    <Event presentationTime="1541436240" duration="24" id="29">
      <scte35:Signal xmlns="http://www.scte.org/schemas/35/2016">
        <scte35:Binary>/DAhAAAAAAAAAP/wEAUAAAHAf+9/fgAg9YDAAAAAAAA25aoh</Binary>
      </scte35:Signal>
    </Event>
    <Event presentationTime="1541436360" duration="24" id="30">
      <scte35:Signal xmlns="http://www.scte.org/schemas/35/2016">
        <scte35:Binary>QW5vdGhlciB0ZXN0IHN0cmluZyBmb3IgZW5jb2RpbmcgdG8gQmFzZTY0IGVuY29kZWQgYmluYXJ5Lg==</Binary>
      </scte35:Signal>
    </Event>
```
다음 HLS 태그 예제에서는를 사용하는 방법을 보여줍니다`EXT-X-DATERANGE`.  

```
#EXT-X-DATERANGE:ID="splice-6FFFFFF0",START-DATE="2014-03-05T11:
15:00Z",PLANNED-DURATION=59.993,SCTE35-OUT=0xFC002F0000000000FF0
00014056FFFFFF000E011622DCAFF000052636200000000000A0008029896F50
000008700000000
```
다음 HLS 태그 예제에서는를 사용하는 방법을 보여줍니다`EXT-X-CUE-OUT`.  

```
#EXT-OATCLS-SCTE35:/DA0AAAAAAAAAAAABQb+ADAQ6QAeAhxDVUVJQAAAO3/PAAEUrEoICAAAAAAg+2UBNAAANvrtoQ==  
#EXT-X-ASSET:CAID=0x0000000020FB6501  
#EXT-X-CUE-OUT:201.467
```
다음 HLS 태그 예제에서는를 사용하는 방법을 보여줍니다`EXT-X-SPLICEPOINT-SCTE35`.  

```
#EXT-X-SPLICEPOINT-SCTE35:/DA9AAAAAAAAAP/wBQb+uYbZqwAnAiVDVUVJAAAKqX//AAEjW4AMEU1EU05CMDAxMTMyMjE5M19ONAAAmXz5JA==
```
다음 예제에서는 `scte35:Binary` 디코딩을 사용하는 방법을 보여줍니다.  

```
{
  "table_id": 252,
  "section_syntax_indicator": false,
  "private_indicator": false,
  "section_length": 33,
  "protocol_version": 0,
  "encrypted_packet": false,
  "encryption_algorithm": 0,
  "pts_adjustment": 0,
  "cw_index": 0,
  "tier": "0xFFF",
  "splice_command_length": 16,
  "splice_command_type": 5,
  "splice_command": {
    "splice_event_id": 448,
    "splice_event_cancel_indicator": false,
    "out_of_network_indicator": true,
    "program_splice_flag": true,
    "duration_flag": true,
    "splice_immediate_flag": false,
    "utc_splice_time": {
      "time_specified_flag": false,
      "pts_time": null
    },
    "component_count": 0,
    "components": null,
    "break_duration": {
      "auto_return": false,
      "duration": {
        "pts_time": 2160000,
        "wall_clock_seconds": 24.0,
        "wall_clock_time": "00:00:24:00000"
      }
    },
    "unique_program_id": 49152,
    "avail_num": 0,
    "avails_expected": 0
    "segment_num": 0,
    "segments_expected": 0,
    "sub_segment_num": 0,
    "sub_segments_expected": 0
  },
  "splice_descriptor_loop_length": 0,
  "splice_descriptors": null,
  "Scte35Exception": {
    "parse_status": "SCTE-35 cue parsing completed with 0 errors.",
    "error_messages": [],
    "table_id": 252,
    "splice_command_type": 5
  }
}
```

# ADS 요청에 대한 MediaTailor 플레이어 변수
<a name="variables-player"></a>

AWS Elemental MediaTailor 는 템플릿 ADS URL에서 `player_params.<query_parameter_name>` 변수를 지정하도록 AWS Elemental MediaTailor 를 구성할 때 플레이어에서 수신한 데이터를 ADS로 전송합니다. 예를 들어 플레이어가 요청에 `user_id` 이름이 인 쿼리 파라미터를 MediaTailor로 보내는 경우 ADS 요청에 해당 데이터를 전달하기 위해를 ADS URL 구성`[player_params.user_id]`에 포함합니다.

이렇게 하면 ADS 요청에 포함되어 있는 쿼리 파라미터를 제어할 수 있습니다. 일반적으로, ADS가 인식하는 특수 쿼리 파라미터를 ADS 요청 URL에 추가하고 키-값 페어를 파라미터의 값으로 제공합니다.

다음 절차에 사용된 예제는 다음 키-값 페어를 사용합니다.
+ 값이 *1인 param**1:*
+ 값이 *2인 param**2:*

**쿼리 파라미터를 키-값 페어로 추가하려면** 

1. 에서 파라미터를 참조하도록 ADS 요청 템플릿 URL을 AWS Elemental MediaTailor구성합니다. 다음 URL은 예제 파라미터가 포함되어 있음을 보여줍니다.

   ```
   https://my.ads.com/path?param1=[player_params.param1]&param2=[player_params.param2]
   ```

1. (선택 사항) 서버 측 광고 추적 보고의 경우 플레이어의 키 값 페어를 URL 인코딩합니다. MediaTailor는 세션 초기화 요청을 수신하면 값을 ADS 요청 URL로 대체하기 전에 값을 한 번 URL 디코딩합니다.
**참고**  
ADS가 URL 인코딩 값을 요구하는 경우 플레이어에서 값을 두 번 URL 인코딩합니다. 이렇게 하면 MediaTailor에서 수행한 디코딩으로 인해 ADS에 대해 한 번 인코딩된 값이 생성됩니다.

   예를 들어 ADS에 전송된 값의 디코딩된 표현이 `param1=value1:&param2=value2:`인 경우 URL 인코딩된 표현은 `param1=value1%3A&param2=value2%3A`입니다.

1. 플레이어의 세션 초기화 호출에서 키-값 페어를 단일 쿼리 파라미터의 값으로 MediaTailor에 전달합니다. 다음 예제 호출은 서버 측 및 클라이언트 측 광고 추적 보고에 대해 예제 키-값 페어를 제공합니다.
   + 서버 측 광고 추적 보고에 대한 예제 요청 - URL 인코딩 페어 사용

     HLS:

     ```
     <master>.m3u8?ads.param1=value1%3A&ads.param2=value2%3A
     ```

     DASH:

     ```
     <manifest>.mpd?ads.param1=value1%3A&ads.param2=value2%3A
     ```
   + 클라이언트 측 광고 추적 보고에 대한 예제 요청 - URL 인코딩 사용하지 않음

     HLS:

     ```
     POST <master>.m3u8
         {
             "adsParams": {
                "param1": "value1:",
                "param2": "value2:"
            }
         }
     ```

     DASH:

     ```
     POST <manifest>.mpd
         {
             "adsParams": {
                "param1": "value1:",
                "param2": "value2:"
            }
         }
     ```

서버 측 보고의 경우 MediaTailor는 플레이어 요청이 수신될 때 파라미터를 디코딩합니다. 클라이언트 측 보고의 경우 JSON 페이로드에서 수신된 파라미터는 변경되지 않습니다. MediaTailor는 ADS에 다음 요청을 보냅니다.

```
https://my.ads.com/<path>?param1=value1:&param2=value2:
```

이러한 방식으로 `param1` 및 `param2` 키-값 페어는 최고 수준의 쿼리 파라미터로 ADS 요청에 포함됩니다.

# 여러 콘텐츠 소스에 대한 MediaTailor 도메인 변수
<a name="variables-domains"></a>

AWS Elemental MediaTailor 동적 도메인 변수를 사용하면 **my-ads-server.com** URL의 부분과 같은 여러 도메인을 구성의 플레이어 파라미터 http://my-ads-server.com와 함께 사용할 수 있습니다. 이렇게 하면 단일 구성에서 둘 이상의 콘텐츠 소스 또는 광고 결정 서버(ADS)를 사용할 수 있습니다.

 URI가 포함된 모든 파라미터와 함께 도메인 변수를 사용할 수 있습니다.
+ `AdDecisionServerUrl`
+ `AdSegmentUrlPrefix`
+ `ContentSegmentUrlPrefix`
+ `LivePreroll.AdDecisionServerUrl`
+ `VideoContentSourceUrl`

 도메인 변수는 *구성 별*칭과 함께 동적 변수 교체를 수행하는 데 사용됩니다. 구성 별칭은 동적 도메인 구성에 사용되는 플레이어 파라미터에 별칭 및 값 집합을 매핑합니다. 설정 절차는 단원을 참조하십시오[MediaTailor를 사용하여 구성 별칭 생성 및 사용](creating-configuration-aliases.md). 자세한 참조 정보는 섹션을 참조하세요[MediaTailor 구성 별칭 개요](configuration-aliases-overview.md).

# MediaTailor 구성 별칭 개요
<a name="configuration-aliases-overview"></a>

AWS Elemental MediaTailor 구성 별칭을 사용하면 URL 도메인 및 기타 지원되는 필드에서 동적 변수 교체가 가능합니다. 이 기능을 사용하여 여러 도메인을 사용하고 세션 초기화 중에 URLs 동적으로 구성합니다.

## 사용 사례
<a name="configuration-aliases-use-cases"></a>

구성 별칭을 사용하면 다음 시나리오에서 정교한 다중 구성 아키텍처를 사용할 수 있습니다.
+ **지리적 라우팅:** 리전별 별칭을 사용하여 최종 사용자 위치에 따라 요청을 다른 오리진 또는 광고 서버로 라우팅합니다. 구현 지침은 [CloudFront 오리진 장애 조치를 참조하세요](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/high_availability_origin_failover.html).
+ **콘텐츠 기반 라우팅:** 다양한 콘텐츠 유형을 특수 오리진 또는 처리 파이프라인으로 전달합니다. 라우팅 동작 구성은 섹션을 참조하세요[MediaTailor에 대한 CDN 라우팅 동작 설정](cdn-routing-behaviors.md).
+ **장애 조치 시나리오:** 별칭 전환을 사용하여 자동 장애 조치를 통해 백업 오리진 및 광고 서버를 구현합니다. 자세한 구현은 [MQAR을 사용하여 MediaTailor에 대한 다중 리전 복원력 구현](media-quality-resiliency.md) 및 섹션을 참조하세요[에 대한 CDN 통합 계획 AWS Elemental MediaTailor](planning-cdn-integration.md).
+ **A/B 테스트:** 플레이어 파라미터를 기반으로 트래픽을 라우팅하여 다양한 광고 서버, 오리진 또는 구성을 테스트합니다. 로드 테스트 지침은 [실제 사용자 모니터링을 사용하여 Amazon CloudFront에 대한 성능 테스트 준비 및 실행](https://aws.amazon.com/blogs/networking-and-content-delivery/prepare-and-run-performance-tests-for-amazon-cloudfront-with-real-user-monitoring/)을 참조하세요.
+ **디바이스별 최적화:** 다양한 디바이스 유형 또는 기능에 대한 콘텐츠 전송 및 광고 제공을 최적화합니다. 포괄적인 지침은 섹션을 참조하세요[MediaTailor, MediaPackage 및 CDN을 사용하여 매니페스트 필터링 설정](cdn-emp-manifest-filtering.md).
+ **로드 밸런싱:** 동적 라우팅을 사용하여 여러 오리진 또는 광고 서버에 로드를 분산합니다. 구현 지침은 [MQAR을 사용하여 MediaTailor에 대한 다중 리전 복원력 구현](media-quality-resiliency.md) 및 섹션을 참조하세요[에 대한 CDN 통합 계획 AWS Elemental MediaTailor](planning-cdn-integration.md).

## 지원되는 필드
<a name="configuration-aliases-supported"></a>

다음 구성 필드에서 동적 변수를 사용할 수 있습니다.
+ `VideoContentSourceUrl`
+ `AdDecisionServerUrl`
+ `LivePreroll.AdDecisionServerUrl`
+ `AdSegmentUrlPrefix`
+ `ContentSegmentUrlPrefix`
+ `TranscodeProfileName`
+ `SlateAdUrl`
+ `StartUrl`
+ `EndUrl`

다음 섹션에서는 구성 별칭을 사용하는 방법을 설명합니다.

**Topics**
+ [사용 사례](#configuration-aliases-use-cases)
+ [지원되는 필드](#configuration-aliases-supported)
+ [생성 및 사용](creating-configuration-aliases.md)
+ [흐름 예](configuration-aliases-examples.md)

# MediaTailor를 사용하여 구성 별칭 생성 및 사용
<a name="creating-configuration-aliases"></a>

도메인 변수를 사용하기 전에 구성에 대한 구성 별칭을 생성합니다. 세션 초기화 시 구성 별칭을 도메인 대체 변수로 사용합니다.

**제한 사항**  
구성 별칭을 사용할 때 다음 제한 사항에 유의하세요.
+ 도메인에 사용되는 모든 동적 변수는 `ConfigurationAliases` 동적 변수로 정의되어야 합니다.
+ 플레이어 파라미터 변수에는 접두사가 붙어야 합니다`player_params.`. 예를 들어 `player_params.origin_domain`입니다.
+ 별칭이 지정된 값 목록은 중요한 URLs(`VideoContentSourceUrl`, `AdSegmentUrlPrefix`, `ContentSegmentUrlPrefix`)의 도메인 변수에 대해 포괄적이어야 합니다.
+ 동적 변수를 지정하지 않거나 잘못된 별칭을 사용하는 중요한 URLs의 도메인 변수에 대한 요청이 이루어진 경우 HTTP `400` 상태 코드와 함께 요청이 실패합니다. 중요하지 않은 필드(`SlateAdUrl`, `TranscodeProfileName`, 범퍼 URLs)는 경고를 로깅하지만 요청에 실패하지는 않습니다.

**누락된 별칭에 대한 대체 동작**  
구성 별칭을 찾을 수 없거나 유효하지 않은 경우 MediaTailor는 다음 대체 동작을 구현합니다.
+ **도메인 변수:** 도메인 변수 별칭이 누락되거나 유효하지 않은 경우 HTTP 400 상태 코드와 함께 요청이 실패합니다. 모든 도메인 변수에는 유효한 별칭이 정의되어 있어야 합니다.
+ **비도메인 변수:** URLs의 비도메인 부분에 사용되는 변수(예: 경로 요소 또는 쿼리 파라미터)의 경우 별칭이 누락되면 빈 문자열이 대체됩니다.
+ **구성 검증:** MediaTailor는 구성 생성 및 업데이트 작업 중에 필요한 모든 별칭이 있는지 확인합니다.

## 1단계: 구성 별칭 생성
<a name="dynamic-domains-creating-configuration-alias"></a>

MediaTailor 콘솔을 사용하여 도메인 교체에 사용할 구성 별칭을 생성하려면 다음 절차를 수행합니다.

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

**콘솔을 사용하여 구성 별칭을 생성하려면**

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

1. **구성 페이지의 구성 별칭** 섹션에서 **플레이어 파라미터 추가**를 선택합니다. **** 

1. **플레이어 파라미터**에 동적 변수로 사용할 플레이어 파라미터의 이름을 입력합니다. 예를 들어 `player_params.origin_domain`입니다.

1. **별칭**에 플레이어 파라미터에 사용할 별칭과 해당 값을 입력합니다.

1. **확인**을 선택합니다.

   AWS Elemental MediaTailor 는 **구성 별칭** 섹션의 테이블에 새 파라미터를 표시합니다.

1. 이전 단계를 반복하여 플레이어 파라미터를 더 추가합니다.

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

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

**API를 사용하여 구성 별칭을 생성하려면**  
MediaTailor 구성을 생성하거나 업데이트할 때 다음 JSON 구조와 함께 `ConfigurationAliases` 파라미터를 사용합니다.

```
{
                "ConfigurationAliases": {
                "player_params.origin_domain": {
                "pdx": "abc.mediapackage.us-west-2.amazonaws.com",
                "iad": "xyz.mediapackage.us-east-1.amazonaws.com"
                },
                "player_params.ad_type": {
                "customized": "abc12345",
                "default": "defaultAdType"
                }
                }
                }
```

------

## 2단계: 세션 초기화에서 구성 별칭 사용
<a name="dynamic-domains-using-configuration-alias"></a>

구성 별칭을 설정한 후 세션 초기화 요청에서 도메인의 대체 변수로 사용할 수 있습니다. 이렇게 하면 세션의 도메인을 동적으로 구성할 수 있습니다.

**Example 기본 구성 별칭 예제**  
다음은 구성 별칭과 동적 도메인 변수를 포함하는 구성의 기본 예제입니다.  

```
PUT /playbackConfiguration
{
    "Name": "aliasedConfig",
    "AdDecisionServerUrl": "https://abc.execute-api.us-west-2.amazonaws.com/ads?sid=[session.id]&ad_type=[player_params.ad_type]",
    "VideoContentSourceUrl": "https://[player_params.origin_domain].mediapackage.[player_params.region].amazonaws.com/out/v1/[player_params.endpoint_id]",
    "ConfigurationAliases": {
        "player_params.origin_domain": {
            "pdx": "abc",
            "iad": "xyz"
        },
        "player_params.region": {
            "pdx": "us-west-2",
            "iad": "us-east-1"
        },
        "player_params.endpoint_id": {
            "pdx": "abcd",
            "iad": "wxyz"
        },
        "player_params.ad_type": {
            "customized": "abc12345",
            "default": "defaultAdType"
        }
    }
}
```

**Example 별칭을 사용한 세션 초기화**  
앞의 구성을 사용하면 플레이어 변수와 별칭을 사용한 세션 초기화 요청은 다음과 비슷합니다.  

```
POST index.m3u8
{
    "playerParams": {
        "origin_domain": "pdx",
        "region": "pdx",
        "endpoint_id": "pdx",
        "ad_type": "customized"
    }
}
```
MediaTailor는 별칭 문자열을 구성 별칭 구성의 매핑된 값으로 바꿉니다.  
ADS에 대한 요청은 다음과 같습니다.  

```
https://abc.execute-api.us-west-2.amazonaws.com/ads?sid=[session.id]&ad_type=abc12345
```
매니페스트의 오리진에 대한 요청은 다음과 같습니다.  

```
https://abc.mediapackage.us-west-2.amazonaws.com/out/v1/abcd
```

# MediaTailor를 사용한 구성 별칭 사용 예제
<a name="configuration-aliases-examples"></a>

다음 예제에서는 구성 별칭이 있는 전체 MediaTailor 구성, 별칭이 있는 세션 초기화 요청 및 별칭에 대한 처리 흐름을 보여줍니다.

**Example 별칭을 사용하여 구성 완료**  
다음 예제는 구성 별칭과 동적 도메인 변수를 포함하는 전체 구성을 보여줍니다.  

```
PUT /playbackConfiguration
{
    "Name": "aliasedConfig",
    "AdDecisionServerUrl": "https://abc.execute-api.us-west-2.amazonaws.com/ads?sid=[session.id]&ad_type=[player_params.ad_type]",
    "VideoContentSourceUrl": "https://[player_params.origin_domain].mediapackage.[player_params.region].amazonaws.com/out/v1/[player_params.endpoint_id]",
    
    "AdSegmentUrlPrefix": "https://[player_params.ad_cdn_domain]/ads/",
    "ContentSegmentUrlPrefix": "https://[player_params.content_cdn_domain]/content/",
    "TranscodeProfileName": "[player_params.transcode_profile]",
    "SlateAdUrl": "https://[player_params.slate_domain]/slate/[player_params.slate_type].mp4",
    "StartUrl": "https://[player_params.tracking_domain]/start?session=[session.id]",
    "EndUrl": "https://[player_params.tracking_domain]/end?session=[session.id]",
    
    "ConfigurationAliases": {
        "player_params.origin_domain": {
            "pdx": "abc",
            "iad": "xyz"
        },
        "player_params.region": {
            "pdx": "us-west-2",
            "iad": "us-east-1"
        },
        "player_params.endpoint_id": {
            "pdx": "abcd",
            "iad": "wxyz"
        },
        "player_params.ad_type": {
            "customized": "abc12345",
            "default": "defaultAdType"
        },
        "player_params.ad_cdn_domain": {
            "pdx": "ads-west.cdn.example.com",
            "iad": "ads-east.cdn.example.com"
        },
        "player_params.content_cdn_domain": {
            "pdx": "content-west.cdn.example.com",
            "iad": "content-east.cdn.example.com"
        },
        "player_params.transcode_profile": {
            "mobile": "mobile_optimized",
            "desktop": "high_quality",
            "tv": "4k_profile"
        },
        "player_params.slate_domain": {
            "pdx": "slate-west.example.com",
            "iad": "slate-east.example.com"
        },
        "player_params.slate_type": {
            "standard": "default_slate",
            "branded": "brand_slate"
        },
        "player_params.tracking_domain": {
            "pdx": "tracking-west.example.com",
            "iad": "tracking-east.example.com"
        }
    }
}
```

**Example 별칭을 사용한 세션 초기화**  
다음 예제에서는 플레이어 변수와 별칭을 지정하는 세션 초기화 요청을 보여줍니다.  

```
POST master.m3u8
{
    "playerParams": {
        "origin_domain": "pdx",
        "region": "pdx", 
        "endpoint_id": "pdx",
        "ad_type": "customized",
        "ad_cdn_domain": "pdx",
        "content_cdn_domain": "pdx",
        "transcode_profile": "mobile",
        "slate_domain": "pdx",
        "slate_type": "branded",
        "tracking_domain": "pdx"
    }
}
```

**Example 파라미터 처리 흐름**  
다음 예제에서 MediaTailor는 별칭 문자열을 구성 별칭의 매핑된 값으로 바꿉니다. 처리 결과 다음과 같은 요청이 발생합니다.  
+ ADS 요청:

  ```
  https://abc.execute-api.us-west-2.amazonaws.com/ads?sid=[session.id]&ad_type=abc12345
  ```
+ VideoContentSource 요청:

  ```
  https://abc.mediapackage.us-west-2.amazonaws.com/out/v1/abcd
  ```
+ AdSegmentUrlPrefix:

  ```
  https://ads-west.cdn.example.com/ads/
  ```
+ ContentSegmentUrlPrefix:

  ```
  https://content-west.cdn.example.com/content/
  ```
+ TranscodeProfileName:

  ```
  mobile_optimized
  ```
+ SlateAdUrl:

  ```
  https://slate-west.example.com/slate/brand_slate.mp4
  ```
+ StartUrl:

  ```
  https://tracking-west.example.com/start?session=[session.id]
  ```
+ EndUrl:

  ```
  https://tracking-west.example.com/end?session=[session.id]
  ```

# 파라미터를 ADS에 전달하는 MediaTailor
<a name="passing-paramters-to-the-ads"></a>

AWS Elemental MediaTailor 는 다음 단계를 사용하여 ADS에 대한 MediaTailor 요청에서 동적 변수 설정을 지원합니다.
+ 쿼리 파라미터에 지원되는 형식 지정에 대한 자세한 내용은 섹션을 참조하세요[MediaTailor 파라미터 참조 및 제한 사항](parameter-comprehensive-reference.md).
+ 구성 별칭 및 도메인 변수는 섹션을 참조하세요[MediaTailor 구성 별칭 개요](configuration-aliases-overview.md).
+ ADS 요청에 대한 추가 사용자 지정은 섹션을 참조하세요[고급 사용](#variables-advanced-usage).

**세션 초기화 방법**  
MediaTailor는 세션 초기화 및 파라미터 전달을 위한 여러 방법을 지원합니다.

1. **요청 본문이 있는 POST:**

   ```
   POST <master>.m3u8
   {
       "adsParams": {"param1": "value1", "param2": "value2"},
       "playerParams": {"param3": "value3"}
   }
   ```

1. **URL의 쿼리 파라미터:**

   ```
   GET <master>.m3u8?ads.param1=value1&ads.param2=value2&playerParams.param3=value3
   ```

**중요**  
초기화 시 파라미터를 한 번만 지정할 수 있습니다. 구성 별칭은 전달하기 전에 실제 값으로 확인됩니다.

**세션 및 플레이어 정보를 ADS에 전달하려면**

1. ADS와 협력하여 광고 쿼리에 응답하는 데 필요한 정보를 결정합니다 AWS Elemental MediaTailor.

1. ADS 요구 사항을 충족하는 템플릿 ADS 요청 URL을 사용하는 구성을 MediaTailor에서 생성합니다. URL에는 정적 파라미터를 포함시키고 동적 파라미터의 자리 표시자를 포함시킵니다. 구성의 **Ad decision server(광고 의사결정 서버)** 필드에 템플릿 URL을 입력합니다.

   다음 예제 템플릿 URL에서 `correlation`은 세션 데이터를 제공하고 `deviceType`은 플레이어 데이터를 제공합니다.

   ```
   https://my.ads.server.com/path?correlation=[session.id]&deviceType=[player_params.deviceType]
   ```

1. 플레이어에서는 AWS Elemental MediaTailor 이 플레이어 데이터의 파라미터를 제공하도록 세션 시작 요청을 구성합니다. 세션 시작 요청에 파라미터를 포함시키고 세션에 대한 후속적인 요청에서 이를 제외합니다.

   세션을 초기화하기 위해 플레이어가 수행하는 호출 유형에 따라 플레이어(클라이언트) 또는 MediaTailor(서버)가 세션에 대한 광고 추적 보고를 제공하는지 여부가 결정됩니다. 이러한 두 가지 옵션에 대한 자세한 내용은 [광고 추적 데이터 보고](ad-reporting.md) 단원을 참조하십시오.

   서버 측 또는 클라이언트 측 광고 추적 보고 중 어떤 것을 원하는지 여부에 따라 다음 호출 유형 중 하나를 실행합니다. 두 가지 예제 호출의 경우 모두 `userID`는 ADS를 위한 것이며 `auth_token`은 오리진을 위한 것입니다.
   + (선택 사항) 서버 측 광고 추적 보고를 위한 호출 - MediaTailor가를 사용하여 ADS로 전송할 파라미터의 접두사를 지정합니다`ads`. MediaTailor가 오리진 서버로 전송할 파라미터의 접두사를 끈 상태로 둡니다.

     다음 예제에서는에 대한 HLS 및 DASH에 대한 수신 요청을 보여줍니다 AWS Elemental MediaTailor. MediaTailor는 ADS에 대한 요청`deviceType`에서를 사용하고 오리진 서버에 대한 요청`auth_token`에서를 사용합니다.

     HLS 예:

     ```
     GET master.m3u8?ads.deviceType=ipad&auth_token=kjhdsaf7gh
     ```

     DASH 예:

     ```
     GET manifest.mpd?ads.deviceType=ipad&auth_token=kjhdsaf7gh
     ```
   + (선택 사항) 클라이언트 측 광고 추적 보고를 위한 호출 - `adsParams` 객체 내의 ADS에 대한 파라미터를 제공합니다.

     HLS 예:

     ```
     POST master.m3u8
         {
             "adsParams": {
                "deviceType": "ipad"
            }
         }
     ```

     DASH 예:

     ```
     POST manifest.mpd
         {
             "adsParams": {
                "deviceType": "ipad"
            }
         }
     ```

플레이어가 세션을 시작하면 템플릿 ADS 요청 URL의 변수를 세션 데이터 및 플레이어의 `ads` 파라미터로 바 AWS Elemental MediaTailor 꿉니다. 나머지 파라미터는 플레이어에서 오리진 서버로 전달됩니다.

**Example 광고 변수를 사용한 MediaTailor 요청**  
다음 예제에서는 앞에 나온 플레이어의 세션 초기화 호출 예제와 일치하는 AWS Elemental MediaTailor 에서의 ADS 및 오리진 서버로의 호출을 보여줍니다.  
+ MediaTailor는 세션 데이터와 플레이어의 디바이스 유형을 사용하여 ADS를 호출합니다.

  ```
  https://my.ads.server.com/path?correlation=896976764&deviceType=ipad
  ```
+ MediaTailor는 플레이어의 권한 부여 토큰을 사용하여 오리진 서버를 호출합니다.
  + HLS 예:

    ```
    https://my.origin.server.com/master.m3u8?auth_token=kjhdsaf7gh
    ```
  + DASH 예:

    ```
    https://my.origin.server.com/manifest.mpd?auth_token=kjhdsaf7gh
    ```

## 고급 사용
<a name="variables-advanced-usage"></a>

플레이어 및 세션 데이터로 다양한 방법으로 ADS 요청을 사용자 지정할 수 있습니다. ADS 호스트 이름만 포함하면 됩니다.

다음 예시에서는 요청을 사용자 지정할 수 있는 방법의 일부를 보여줍니다.
+ 플레이어 파라미터와 세션 파라미터를 연결하여 새 파라미터를 생성합니다. 예제: 

  ```
  https://my.ads.com?key1=[player_params.value1][session.id]
  ```
+ 플레이어 파라미터를 경로 요소의 일부로 사용합니다. 예제:

  ```
  https://my.ads.com/[player_params.path]?key=value
  ```
+ 플레이어 파라미터를 사용하여 단지 값을 전달하기 보다는 경로 요소와 키 자체를 둘 다 전달합니다. 예제: 

  ```
  https://my.ads.com/[player_params.path]?[player_params.key1]=[player_params.value1]
  ```

# ADS 및 오리진에 대한 MediaTailor 파라미터 라우팅
<a name="parameter-routing-behavior"></a>

AWS Elemental MediaTailor 는 접두사와 목적에 따라 쿼리 파라미터를 다른 대상으로 라우팅합니다. 파라미터 라우팅을 이해하는 것은 MediaPackage를 사용한 시간 이동 보기와 같은 오리진별 기능을 구현하는 데 필수적입니다.

**파라미터 라우팅 규칙**  
MediaTailor는 쿼리 파라미터에 대해 다음 라우팅 규칙을 사용합니다.
+ **오리진 파라미터(접두사 없음):** 특정 접두사가 없는 파라미터는 오리진별 기능을 위해 오리진 서버로 전달됩니다.
+ **ADS 파라미터(`ads.` 접두사):** 접두사가 인 파라미터`ads.`가 Ad Decision Server로 전송됩니다.
+ **매니페스트 파라미터(`manifest.` 접두사):** 접두사가 인 파라미터`manifest.`가 CDN 라우팅 및 권한 부여에 사용됩니다.

**Example 파라미터 라우팅 예제**  
다음 세션 초기화는 파라미터 라우팅을 보여줍니다.  

```
POST /v1/session/123456789/originId/index.m3u8
{
    "adsParams": {
        "param1": "value1",
        "param2": "value2"
    },
    "manifestParams": {
        "auth_token": "abc123"
    }
}
```
이 예시는 다음과 같이 설정되어 있습니다.  
+ `param1` 및 `param2`는 ADS로 전송됩니다.
+ `auth_token`는 CDN 라우팅 및 권한 부여에 사용됩니다.
+ 접두사가 없는 파라미터는 오리진 서버로 전달됩니다.

## 오리진 서버 파라미터 동작
<a name="origin-parameter-behavior"></a>

오리진 서버에 전달되는 파라미터는 시간 이동 보기, 콘텐츠 필터링 및 인증과 같은 오리진별 기능을 활성화합니다.

**일반적인 오리진 파라미터 사용 사례**  
오리진 파라미터는 일반적으로 다음에 사용됩니다.
+ **시간 이동 보기:** MediaPackage 시간 이동 콘텐츠에 대한 `start` 및 `end` 파라미터
+ **콘텐츠 인증:** 오리진 서버에 필요한 인증 토큰
+ **콘텐츠 필터링:** 반환되는 콘텐츠 변형을 제어하는 파라미터
+ **오리진별 기능:** 오리진 서버가 콘텐츠 처리에 사용하는 모든 파라미터

**중요**  
파라미터는 세션 초기화 시 처리되고 세션 전체에서 유지됩니다. 시간 전환 기간과 같은 파라미터를 수정하려면 업데이트된 값으로 새 세션을 생성해야 합니다.

# MediaTailor 및 MediaPackage 시간 이동 보기 통합
<a name="mediapackage-integration-param"></a>

AWS Elemental MediaTailor 는 시간 이동 보기 파라미터를 MediaPackage 오리진에 전달하여 스타트오버 및 캐치업 보기 기능을 활성화할 수 있습니다. 이 통합을 통해 뷰어는 이전 시점에서 라이브 콘텐츠 시청을 시작할 수 있습니다.

**MediaPackage 시간 이동 보기 파라미터**  
MediaPackage는 MediaTailor를 통해 전달할 수 있는 다음과 같은 시간 이동 보기 파라미터를 지원합니다.
+ `start`: 시간 이동 매니페스트의 시작을 정의하는 Epoch 또는 ISO 8601 타임스탬프
+ `end`: 시간 이동 매니페스트의 끝을 정의하는 Epoch 또는 ISO 8601 타임스탬프
+ `time_delay`: 콘텐츠 가용성을 지정된 초만큼 지연
+ `manifest_window_seconds`: 구성된 기간보다 짧은 매니페스트 요청

**Example MediaPackage 시간 이동 파라미터를 사용한 MediaTailor 세션 초기화 MediaPackage**  
다음 예제에서는 시간 이동 보기 파라미터로 세션을 초기화하는 방법을 보여줍니다.  

```
GET /v1/master/123456789/originId/index.m3u8?start=2024-08-26T10:00:00Z&end=2024-08-26T11:00:00Z
```
또는 명시적 세션 초기화 사용:  

```
POST /v1/session/123456789/originId/index.m3u8
{
    "adsParams": {
        "param1": "value1"
    }
}
```
추가 쿼리 파라미터 사용:  

```
?start=2024-08-26T10:00:00Z&end=2024-08-26T11:00:00Z
```

**세션 중 파라미터 동작**  
시간 이동 보기 파라미터에는 다음과 같은 특정 동작 특성이 있습니다.
+ **세션 초기화:** 세션이 생성될 때 파라미터가 처리됩니다.
+ **파라미터 지속성:** 재생 내내 파라미터가 세션과 연결된 상태로 유지됩니다.
+ **초기화 후 변경 불가:** 활성 세션 중에는 파라미터를 변경할 수 없습니다.
+ **새 세션 필요:** 시간 전환 기간을 수정하려면 업데이트된 파라미터 값으로 새 세션을 생성합니다.

**MediaPackage 스타트오버 기간 요구 사항**  
MediaPackage에서 작동하는 시간 이동 보기의 경우 다음을 확인하세요.

1. MediaPackage 엔드포인트에서 스타트오버 기간 구성(최대 24시간)

1. CDN이 필요한 쿼리 파라미터를 MediaPackage에 전달하는지 확인합니다.

1. 플레이어 세션에서 일관된 재생 기간을 사용하여 CDN 캐싱 개선

1. 시작 및 종료 시간이 구성된 시작 기간 내에 속하는지 확인

**중요**  
시간 이동 보기를 사용하는 경우 각 뷰어에 대해 고유한 시작 또는 종료 시간을 생성하는 대신 플레이어 세션에서 일관된 재생 기간을 사용합니다. 이렇게 하면 CDN에서 캐싱이 개선되고 잠재적인 제한이 방지됩니다.

MediaPackage 시간 이동 보기 구성 및 파라미터에 대한 자세한 내용은 *AWS Elemental MediaPackage 사용 설명서*의 [를 사용한 시간 이동 보기를 AWS Elemental MediaPackage](https://docs.aws.amazon.com/mediapackage/latest/ug/time-shifted.html) 참조하세요.

# MediaTailor 파라미터 세션 동작 및 지속성
<a name="parameter-session-behavior"></a>

AWS Elemental MediaTailor 는 세션 초기화 시 파라미터를 처리하고 세션 수명 주기 동안 파라미터를 유지합니다. 세션 동작을 이해하는 것은 동적 파라미터 시나리오를 구현하는 데 매우 중요합니다.

**세션 초기화 방법**  
MediaTailor는 파라미터를 사용한 세션 초기화를 위한 여러 방법을 지원합니다.

1. **암시적 세션 초기화:** 초기 매니페스트 요청에 포함된 파라미터

   ```
   GET /v1/master/123456789/originId/index.m3u8?manifest.auth_token=abc123&start=2024-08-26T10:00:00Z
   ```

1. **명시적 세션 초기화(POST):** 요청 본문에 제공된 파라미터

   ```
   POST /v1/session/123456789/originId/index.m3u8
   {
       "adsParams": {"param1": "value1"},
       "manifestParams": {"auth_token": "abc123"}
   }
   ```

1. **명시적 세션 초기화(GET):** 쿼리 파라미터로 제공되는 파라미터

   ```
   GET /v1/session/123456789/originId/index.m3u8?ads.param1=value1&manifestParams.auth_token=abc123
   ```

**파라미터 지속성 및 불변성**  
MediaTailor 파라미터 동작은 다음 규칙을 따릅니다.
+ **일회성 사양:** 파라미터는 세션 초기화 시 한 번만 지정할 수 있습니다.
+ **세션 전체 지속성:** 파라미터는 전체 세션에서 유지됩니다.
+ **초기화 후 변경 불가:** 세션이 생성된 후에는 파라미터를 수정할 수 없습니다.
+ **구성 별칭 확인:** 별칭은 대상으로 전달하기 전에 실제 값으로 확인됩니다.

**파라미터 수정 시나리오**  
재생 중에 파라미터를 수정하려면:
+ **새 세션 생성:** 업데이트된 파라미터 값으로 새 세션 초기화
+ **플레이어 전환:** 플레이어를 새 세션으로 원활하게 전환
+ **파라미터 상속:** 변경되지 않은 파라미터를 전달하여 일관성을 유지합니다.

**Example 시간 전환 파라미터 수정**  
1시간 기간에서 2시간 기간으로 변경하려면:  

1. 현재 세션: `start=2024-08-26T10:00:00Z&end=2024-08-26T11:00:00Z`

1. 새 세션 생성: `start=2024-08-26T10:00:00Z&end=2024-08-26T12:00:00Z`

1. 플레이어를 새 세션 URL로 전환

**중요**  
단일 세션에 대한 다중 다변량 재생 목록 요청은 첫 번째 요청 후 파라미터를 업데이트하지 않습니다. 파라미터는 세션 기간 동안 변경할 수 없습니다.

# MediaTailor 파라미터 참조 및 제한 사항
<a name="parameter-comprehensive-reference"></a>

동적 광고 변수를 구성하기 전에 모든 MediaTailor 구성에 적용되는 파라미터 형식 지정 요구 사항 및 제한 사항을 이해합니다.

AWS Elemental MediaTailor 는 매니페스트 쿼리 파라미터와 ADS 파라미터 모두에 대해 파라미터 문자 제한, 길이 제한 및 지원되는 형식에 대한 포괄적인 정보를 제공합니다.

## 매니페스트 쿼리 파라미터 문자 제한
<a name="manifest-parameter-character-restrictions"></a>

매니페스트 쿼리 파라미터는 특정 문자를 지원하며 길이 제한이 정의되어 있습니다.

**지원되는 문자(URL 인코딩 제외)**  
매니페스트 쿼리 파라미터에 다음 문자를 직접 사용할 수 있습니다.
+ 영숫자 문자(A\$1Z, a\$1z, 0\$19)
+ 마침표(.)
+ 하이픈(-)
+ 밑줄(\$1)
+ 백슬래시(\$1)

**URL 인코딩이 지원되는 문자**  
URL 인코딩 시 다음과 같은 특수 문자가 지원됩니다.
+ 마침표(.) = %2E
+ 대시(-) = %2D
+ 밑줄(\$1) = %5F
+ 백분율(%) = %25
+ 물결표(\$1) = %7E
+ 슬래시(/) = %2F
+ 별표(\$1) = %2A
+ 같음(=) = %3D
+ 질문(?) = %3F

**URL 인코딩 지원**  
MediaTailor는 URL 인코딩에 사용할 때 백분율(%) 기호를 지원합니다(예: hello%20world = hello world). HTTP 사양에 따라 유효한 URL 인코딩인 경우 URL 인코딩된 문자를 사용할 수 있습니다.

**지원되지 않는 문자**  
URL 인코딩 없이는 매니페스트 쿼리 파라미터에 `:`, , `?`, `&`, `=``%`, `/` (슬래시) 문자를 사용할 수 없습니다.

**중요**  
MediaTailor는 %%% 또는 ==와 같은 이중 문자를 지원하지 않습니다. 문자 제한으로 인해 전체 URLs 매니페스트 쿼리 파라미터 값으로 사용할 수 없습니다.

**길이 제한**  
모든 매니페스트 쿼리 파라미터(키와 값을 합친 값)의 총 길이는 2,000자를 초과할 수 없습니다.

## ADS 파라미터 길이 제한
<a name="ads-parameter-limitations"></a>

ADS에 대한 요청에 사용되는 파라미터에는 다음과 같은 길이 제한이 적용됩니다.
+ **ADS 파라미터 이름**: 최대 10,000자
+ **ADS 파라미터 값**: 최대 25,000자
+ **ADS URL**: 최대 25,000자

# MediaTailor 파라미터 문제 해결 가이드
<a name="parameter-troubleshooting"></a>

AWS Elemental MediaTailor 는 문자 제한, URL 인코딩 문제 및 구성 별칭 오류를 포함하여 MediaTailor의 일반적인 파라미터 관련 문제를 해결하기 위한 지침을 제공합니다.

## 문자 제한 오류
<a name="parameter-character-restriction-errors"></a>

지원되지 않는 문자가 포함된 파라미터 값은 오류 또는 예기치 않은 동작을 일으킬 수 있습니다.

**일반적인 증상**  
다음 증상은 문자 제한 문제를 나타낼 수 있습니다.
+ 매니페스트 URLs에 나타나지 않는 파라미터
+ 세션 초기화 중 HTTP 400 오류
+ 잘리거나 손상된 파라미터 값
+ 잘못된 URLs

**해결 단계**  
문자 제한 오류를 해결하려면: 

1. 지원되지 않는 문자에 대한 파라미터 값 검토: `:`, `?`, `&`, `=`, `%` `/` 

1. 특수 문자에 적절한 URL 인코딩 적용( 참조[MediaTailor 파라미터 참조 및 제한 사항](parameter-comprehensive-reference.md))

1. `%%%` 또는와 같은 이중 문자를 사용하지 마세요. `==` 

1. 전체 URLs 사용할 수 없는 경우 대체 파라미터 형식을 고려하세요.

**Example URL 인코딩 예제**  
를 사용하는 대신:   

```
manifest.redirect_url=https://example.com/path?param=value
```
URL 인코딩 형식 사용:   

```
manifest.redirect_url=https%3A%2F%2Fexample.com%2Fpath%3Fparam%3Dvalue
```

## 길이 제한 오류
<a name="parameter-length-limitation-errors"></a>

길이 제한을 초과하는 파라미터는 잘리거나 오류가 발생할 수 있습니다.

**길이 제한**  
다음 길이 제한이 적용됩니다([MediaTailor 파라미터 참조 및 제한 사항](parameter-comprehensive-reference.md)자세한 내용은 참조).
+ 매니페스트 쿼리 파라미터(총): 2,000자
+ ADS 파라미터 이름: 10,000자
+ ADS 파라미터 값: 25,000자
+ ADS URLs: 25,000자

**해결 전략**  
길이 제한을 처리하려면: 

1. 가능한 경우 더 짧은 파라미터 이름과 값을 사용합니다.

1. 큰 파라미터 값을 여러 개의 작은 파라미터로 분할

1. 구성 별칭을 사용하여 짧은 별칭을 더 긴 값에 매핑( 참조[MediaTailor 구성 별칭 개요](configuration-aliases-overview.md))

1. 파라미터 참조와 함께 대용량 데이터에 외부 스토리지 사용 고려

## 구성 별칭 오류
<a name="parameter-configuration-alias-errors"></a>

구성 별칭 문제로 인해 HTTP 400 오류 또는 예기치 않은 파라미터 값이 발생할 수 있습니다.

**일반적인 구성 별칭 오류**  
구성 별칭에서 일반적으로 발생하는 오류는 다음과 같습니다.
+ HTTP 400 오류: 누락되거나 잘못된 별칭 값
+ 도메인 변수가 올바르게 해결되지 않음
+ 플레이어 파라미터가 별칭 값으로 대체되지 않음

**해결 체크리스트**  
구성 별칭 오류를 해결하려면: 

1. 모든 도메인 변수가 로 정의되었는지 확인 `ConfigurationAliases`

1. 플레이어 파라미터 변수가 `player_params.` 접두사를 사용하는지 확인

1. 별칭이 지정된 값 목록이 중요한 URLs(`VideoContentSourceUrl`, `AdSegmentUrlPrefix`, `ContentSegmentUrlPrefix`)의 도메인 변수에 대해 완전한지 확인합니다.

1. 세션 초기화 요청이 유효한 별칭 값을 지정하는지 확인

1. ConfigurationAliases 파라미터의 JSON 구조 검증

자세한 문제 해결 지침은 섹션을 참조하세요[MediaTailor 구성 별칭 문제 해결 가이드](configuration-aliases-troubleshooting.md).

**Example 구성 별칭 검증**  
구성에 필요한 모든 별칭이 포함되어 있는지 확인합니다.  

```
"ConfigurationAliases": {
    "player_params.origin_domain": {
        "pdx": "abc.mediapackage.us-west-2.amazonaws.com",
        "iad": "xyz.mediapackage.us-east-1.amazonaws.com"
        // Must include all possible values used in session initialization
    }
}
```

## 파라미터 처리 흐름 문제
<a name="parameter-processing-flow-issues"></a>

파라미터 처리 흐름을 이해하면 파라미터 전달 및 변환 문제를 해결하는 데 도움이 됩니다.

**파라미터 처리 순서**  
MediaTailor는 다음 순서로 파라미터를 처리합니다.

1. 세션 초기화 파라미터 검증

1. 구성 별칭 확인(해당하는 경우)

1. 파라미터 필터링(ADS vs 오리진 vs 매니페스트)

1. URL 인코딩 및 형식 지정

1. URLs에 대한 파라미터 애플리케이션

**파라미터 흐름 디버깅**  
파라미터 처리 문제를 디버깅하려면: 

1. 세션 초기화 시 파라미터가 올바르게 지정되었는지 확인

1. 구성 별칭이 예상 값으로 확인되는지 확인

1. 파라미터가 올바른 URLs)에 나타나는지 확인

1. URL 인코딩이 올바르게 적용되었는지 확인

**Example 파라미터 흐름 예제**  
세션 초기화:   

```
POST master.m3u8
{
    "playerParams": {"origin_domain": "pdx"},
    "manifestParams": {"test": "123"}
}
```
별칭 확인 및 처리 후:   
+ 오리진 요청: `https://abc.mediapackage.us-west-2.amazonaws.com/out/v1/abcd`
+ 매니페스트 URL: `/v1/master/.../index.m3u8?aws.sessionId=session&test=123`

## 보안 고려 사항 및 모범 사례
<a name="parameter-security-considerations-troubleshooting"></a>

MediaTailor는 파라미터 처리를 위한 보안 조치를 구현하여 일반적인 보안 문제를 방지합니다.

**보안 조치**  
MediaTailor는 다음과 같은 보안 조치를 구현합니다.

1. 데이터베이스 팽창을 방지하기 위한 입력 크기 제한

1. 사용자 입력의 적절한 인코딩 및 삭제

1. 응답 손상을 방지하기 위한 입력의 URL 인코딩

**모범 사례**  
안전한 파라미터 처리를 위해 다음 모범 사례를 따르세요.
+ 전송하기 전에 클라이언트 측의 파라미터 값 검증
+ 구성 별칭을 사용하여 가능한 파라미터 값 제한
+ 파라미터에 민감한 정보를 포함하지 마세요.
+ 파라미터 사용량에서 비정상적인 패턴 모니터링
+ 파라미터 값을 권장 길이 제한 이내로 유지

# MediaTailor 구성 별칭 문제 해결 가이드
<a name="configuration-aliases-troubleshooting"></a>

AWS Elemental MediaTailor 는 일반적인 구성 별칭 문제 및 오류 시나리오에 대한 체계적인 문제 해결 지침을 제공합니다.

## 구성 별칭 검증 오류
<a name="configuration-alias-validation-errors"></a>

구성 별칭이 누락되거나 유효하지 않은 경우 MediaTailor는 문제를 식별하는 데 도움이 되도록 특정 오류 응답을 반환합니다.

**일반적인 오류 시나리오**  
다음 표에서는 일반적인 구성 별칭 오류와 해결 단계를 설명합니다.


| 오류 | 원인 | 해결 방법 | 
| --- | --- | --- | 
| HTTP 400: 잘못된 플레이어 파라미터 별칭 | ConfigurationAliases에서 플레이어 파라미터 값을 찾을 수 없음 | 플레이어 파라미터 값이 해당 ConfigurationAliases 매핑에 키로 존재하는지 확인 | 
| HTTP 400: 필수 구성 별칭 누락 | 해당 ConfigurationAliases 항목 없이 사용되는 도메인 변수 | 필요한 모든 별칭 매핑을 사용하여 누락된 플레이어 파라미터를 ConfigurationAliases에 추가 | 
| HTTP 400: 구성 검증 실패 | ConfigurationAliases 구조의 형식이 잘못되었거나 불완전함 | JSON 구조를 검증하고 모든 도메인 변수에 해당 별칭이 있는지 확인합니다. | 
| URLs의 빈 문자열 대체 | 도메인이 아닌 변수 별칭을 찾을 수 없음 | 누락된 별칭 매핑 추가 또는 ConfigurationAliases에 기본값 제공 | 

**검증 체크리스트**  
다음 체크리스트를 사용하여 구성 별칭 설정을 검증합니다.

1. **도메인 변수 적용 범위:** URLs 있는지 확인합니다. ConfigurationAliases 

1. **별칭 완전성:** 가능한 모든 플레이어 파라미터 값이 별칭 매핑에 키로 포함되어 있는지 확인합니다.

1. **JSON 구조:** ConfigurationAliases JSON의 형식이 올바르게 지정되고 중첩되었는지 확인

1. **파라미터 이름 지정:** 모든 플레이어 파라미터가 `player_params.` 접두사를 사용하는지 확인

1. **값 일관성:** 별칭 값이 의도한 용도에 맞는지 확인(URLs, 프로필 이름 등)

## 구성 별칭 확인 디버깅
<a name="configuration-alias-debugging"></a>

이 체계적인 접근 방식을 따라 구성 별칭 해결 문제를 디버깅합니다.

**Step-by-step 디버깅 방법론**  
다음 단계에 따라 구성 별칭 문제를 식별하고 해결합니다.

**구성 별칭 디버깅 절차**

1. **구성 구조 확인:** 재생 구성에 올바른 형식의 ConfigurationAliases가 포함되어 있는지 확인합니다.

   ```
   {
       "ConfigurationAliases": {
           "player_params.example_param": {
               "alias1": "value1",
               "alias2": "value2"
           }
       }
   }
   ```

1. **플레이어 파라미터 형식 확인:** 세션 초기화에 올바른 형식의 플레이어 파라미터가 포함되어 있는지 확인합니다.

   ```
   {
       "playerParams": {
           "example_param": "alias1"
       }
   }
   ```

1. **별칭 매핑 검증:** 플레이어 파라미터 값("alias1")이 ConfigurationAliases 매핑에 키로 존재하는지 확인합니다.

1. **간단한 구성으로 테스트:** 최소한의 구성으로 시작하여 문제를 격리합니다.

1. **오류 응답 모니터링:** 특정 검증 메시지에 대한 MediaTailor 오류 응답 확인

1. **해결된 URLs 확인:** 최종 해결된 URLs 유효하고 액세스 가능한지 확인

## 구성 별칭 모범 사례
<a name="configuration-alias-best-practices"></a>

다음 모범 사례를 따라 안정적인 구성 별칭 구현을 보장합니다.

**보안 고려 사항**  
구성 별칭을 사용할 때 다음 보안 조치를 구현합니다.
+ **입력 검증:** 별칭 확인에 사용하기 전에 모든 플레이어 파라미터 값을 검증합니다.
+ **별칭 값 삭제: **별칭 값에 예상 문자 및 형식만 포함되는지 확인합니다.
+ **도메인 제한:** 도메인 별칭을 신뢰할 수 있고 제어된 도메인으로 제한
+ **액세스 제어:** 권한 있는 직원으로만 구성 수정 제한

**성능 최적화**  
다음 권장 사항을 사용하여 구성 별칭 성능을 최적화합니다.
+ **별칭 수 최소화:** 처리 오버헤드를 줄이기 위해 필요한 별칭만 사용
+ **효율적인 이름 지정:** 별칭 및 파라미터에 명확하고 일관된 이름 지정 규칙 사용
+ **기본값:** 일반적인 사용 사례에 적합한 기본 별칭 제공
+ **구성 캐싱:** MediaTailor의 구성 캐싱을 활용하여 성능 향상

**유지 관리 및 모니터링**  
다음 방법을 사용하여 안정적인 구성 별칭 작업을 유지합니다.
+ **정기적인 검증:** 모든 별칭 매핑이 최신이고 작동하는지 정기적으로 검증합니다.
+ **오류 모니터링:** 누락되거나 잘못된 별칭과 관련된 HTTP 400 오류 모니터링
+ **설명서:** 모든 별칭 매핑 및 용도에 대한 명확한 설명서 유지
+ **테스트 절차:** 모든 별칭 조합에 대한 포괄적인 테스트 구현