

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

# 함수 빠른 시작 안내서
<a name="monetization-functions-quickstart"></a>

이 안내서에서는 첫 번째 함수를 생성하고, 재생 구성에 연결하고, 실행되었는지 확인하는 방법을 안내합니다. 결국에는 각 최종 사용자의 디바이스 유형(`ctv`, `mobile`또는 `desktop`)을 분류하고 모든 ADS 요청에서 사용할 수 있는 플레이어 파라미터로 저장하는 작동 함수가 있습니다.

## 사전 조건
<a name="monetization-functions-quickstart-prereqs"></a>

시작하기 전에 기존 MediaTailor 재생 구성이 있는지 확인합니다. 없으면 [MediaTailor 시작하기](getting-started.md) 섹션을 참조하세요.

## 1단계: 함수 만들기
<a name="monetization-functions-quickstart-step1"></a>

이 단계에서는 사용자 에이전트 문자열을 기반으로 최종 사용자의 디바이스 유형을 분류하고 결과를 플레이어 파라미터에 저장하는 함수를 생성합니다. 함수는 [JSONata 표현식 참조](monetization-functions-jsonata.md) 표현식과 함께 사용자 지정 출력 유형(외부 API 직접 호출 없음)을 사용하여 사용자 에이전트를 평가합니다.

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

1. 탐색 창에서 **함수**를 선택합니다.

1. **함수 생성**을 선택합니다.

1. 생성 마법사 모달에서 **처음부터 생성을** 선택한 다음 **계속**을 선택합니다.

1. **함수 유형**에서 **사용자 지정 출력** 타일을 선택합니다.

1. **함수 세부 정보**에서 다음을 입력합니다.
   + **함수 ID**: `myFirstFunction`
   + **설명:** `Classify device type from user agent`

1. **사용자 지정 출력 구성**의 **출력** 섹션에서 행을 하나 추가합니다.
   + **키**: `player_params.deviceType`
   + **값**: `{% $contains(session.user_agent, 'CTV') ? 'ctv' : $contains(session.user_agent, 'Mobile') ? 'mobile' : 'desktop' %}`

1. **함수 생성**을 선택합니다.

성공 알림은 함수가 생성되었음을 확인하며 함수 세부 정보 페이지로 리디렉션됩니다.

결과 함수 구성은 다음과 같습니다.

```
{
    "FunctionId": "myFirstFunction",
    "FunctionType": "CUSTOM_OUTPUT",
    "Description": "Classify device type from user agent",
    "CustomOutputConfiguration": {
        "Runtime": "JSONATA",
        "Output": {
            "player_params.deviceType": "{% $contains(session.user_agent, 'CTV') ? 'ctv' : $contains(session.user_agent, 'Mobile') ? 'mobile' : 'desktop' %}"
        }
    }
}
```

## 2단계: 함수를 재생 구성에 연결
<a name="monetization-functions-quickstart-step2"></a>

함수를 재생 구성의 수명 주기 후크에 매핑합니다. 매핑은 MediaTailor에 함수를 실행할 시기를 알려줍니다.

1. 탐색 창에서 **구성을** 선택합니다.

1. 업데이트할 재생 구성을 선택합니다.

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

1. **함수 구성 섹션을 확장합니다**.

1. **세션 초기화 후크**의 경우 드롭다운`myFirstFunction`에서를 선택합니다.

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

수명 [PRE\_SESSION\_초기화](monetization-functions-hooks-pre-session.md) 주기 후크`myFirstFunction`에 연결됩니다. 결과 함수 매핑은 다음과 같습니다.

```
{
    "FunctionMapping": {
        "PRE_SESSION_INITIALIZATION": "myFirstFunction"
    }
}
```

MediaTailor는이 재생 구성에서 모든 새 세션이 시작될 때 함수를 한 번 실행합니다.

## 3단계: 세션 시작 및 함수 실행 확인
<a name="monetization-functions-quickstart-step3"></a>

새 재생 세션을 시작하여 함수를 트리거합니다. 재생 구성의 세션 초기화 엔드포인트에 세션 초기화 요청을 사용합니다.

MediaTailor는 옵트인할 필요 없이 모든 함수 실행에 대한 CloudWatch 지표를 자동으로 게시합니다. 세션을 시작한 후 `AWS/MediaTailor` 네임스페이스에서 다음 지표를 확인하여 함수가 실행되었는지 확인합니다.
+ `PreSessionInitHook.Invocations` - 후크가 실행되었는지 확인합니다.
+ `PreSessionInitHook.Errors` - 함수가 성공한 경우 0이어야 합니다.
+ `Function.Invocations` - 실행된 개별 함수를 확인합니다. 이 지표에는 `FunctionId`, `FunctionType`및 `HookType`차원이 포함되어 있으므로 로 `myFirstFunction` 필터링할 수 있습니다.

함수가 실패하면 MediaTailor는 기본적으로 매니페스트 로그에 오류 로그 이벤트를 내보냅니다(구성 필요 없음).
+ `PRE_SESSION_INIT_HOOK_ERROR` - `errorType` 및의 후크 수준 실패`cause`.
+ `PRE_SESSION_INIT_FUNCTION_ERROR` - 특정 `functionId` 및 오류 세부 정보가 포함된 함수 수준 실패입니다.

다음 예제에서는 함수 표현식의 구문 오류에 대한 `PRE_SESSION_INIT_FUNCTION_ERROR` 이벤트를 보여줍니다.

```
{
    "eventTimestamp": "2024-01-01T12:00:00.076000000Z",
    "eventType": "PRE_SESSION_INIT_FUNCTION_ERROR",
    "eventDescription": "Function execution failed",
    "awsAccountId": "123456789012",
    "originId": "my-config",
    "sessionId": "session-123",
    "requestId": "req-abc",
    "eventId": "5dc6f040-0f72-4e8c-a64e-25eeef62708c",
    "functionId": "myFirstFunction",
    "functionType": "CUSTOM_OUTPUT",
    "executionTimeMs": 2,
    "errorType": "SYNTAX_ERROR",
    "cause": "Expected \")\" before end of expression",
    "input": {}
}
```

`eventId` 필드를 사용하여 동일한 실행에 대한 후크 및 함수 오류 이벤트를 상호 연관시킵니다. `errorType` 필드는 실패 클래스를 알려줍니다. 오류 유형 및 수정 사항의 전체 목록은 [문제 해결 및 모니터링](monetization-functions-troubleshooting.md) 섹션을 참조하세요.

**참고**  
자세한 성공 로깅을 위해 매니페스트 로그 구성에서 `PRE_SESSION_INIT_HOOK_SUMMARY` 및 `PRE_SESSION_INIT_FUNCTION_COMPLETED` 이벤트를 옵트인합니다. 요약 이벤트는 모든 실행에 대한 후크 결과를 표시합니다. 완료된 이벤트에는 각 함수의 입력, 출력 및 HTTP 요청/응답 세부 정보가 표시됩니다. 로그 비용을 최소화하기 위해 기본적으로 비활성화됩니다. 자세한 내용은 [문제 해결 및 모니터링](monetization-functions-troubleshooting.md) 단원을 참조하십시오.

## 백그라운드에서 일어나는 일
<a name="monetization-functions-quickstart-behind-scenes"></a>

다음은 방금 생성한 함수에 대한 전체 요청 흐름입니다.

1. 플레이어가 MediaTailor로 세션을 시작합니다.

1. MediaTailor는 `PRE_SESSION_INITIALIZATION` 수명 주기 후크를 실행하고를 실행합니다`myFirstFunction`.

1. 함수는 `session.user_agent` 필드를 평가하고 `ctv`, `mobile`또는를 `desktop`에 씁니다`player_params.deviceType`.

1. MediaTailor는 세션을 생성하고 매니페스트를 플레이어에게 반환합니다.

1. 재생 중에 플레이어가 광고 시간을 겪습니다.

1. MediaTailor는 `PRE_ADS_REQUEST` 수명 주기 후크를 실행한 다음 ADS 요청을 구성합니다. `deviceType`는 플레이어 파라미터에 저장되므로 동적 변수 대체를 통해 ADS 요청 URL에 포함할 수 있습니다.

1. ADS는 디바이스 유형을 사용하여 대상 광고 크리에이티브를 반환합니다.

1. MediaTailor는 광고를 매니페스트에 연결하여 플레이어에게 반환합니다.

어떤 이유로든 함수가 실패하면 MediaTailor는 출력을 삭제하고 연결된 함수가 없는 것처럼 진행합니다. 최종 사용자는 디바이스 유형 타겟팅 없이도 여전히 광고를 볼 수 있습니다.

## 제안된 주제
<a name="monetization-functions-quickstart-suggested-topics"></a>

이제 재생 구성에 작업 함수가 연결되었습니다. 여기에서:
+ 각 수명 주기 후크에서 사용할 수 있는 입력 필드 및 출력 네임스페이스에 대한 자세한 내용은 섹션을 참조하세요[수명 주기 후크](monetization-functions-hooks.md).
+ 다양한 함수 유형과 이를 함께 연결하는 방법에 대해 알아보려면 섹션을 참조하세요[함수 유형 및 구성](monetization-functions-types.md).
+ 전체 작업 예제를 보려면 섹션을 참조하세요[함수 예제](monetization-functions-examples.md).