View a markdown version of this page

SEQUENTIAL_EXECUTOR - AWS Elemental MediaTailor

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

SEQUENTIAL_EXECUTOR

사용해야 하는 경우

는 순서대로 한 번에 하나씩 일련의 함수를 SEQUENTIAL_EXECUTOR 실행합니다. 각 단계에서는 단계 결과를 사용할 수 있습니다.

로직에 서로의 결과에 의존하는 여러 단계가 필요한 SEQUENTIAL_EXECUTOR 경우에 사용합니다. 일반적인 사용 사례에는 자격 증명 데이터를 가져온 다음 이를 사용하여 대상 세그먼트를 검색하고, 분류 단계를 실행한 다음 결과에 따라 다양한 외부 서비스를 조건부로 호출하고, 여러 데이터 소스에서 복잡한 광고 요청 URLs 구축하는 것이 포함됩니다.

구성 필드

SEQUENTIAL_EXECUTOR 함수에는 다음 필드가 있습니다.

  • 런타임 - 표현식 언어입니다. 이를 로 설정합니다JSONATA.

  • FunctionList - 1~10단계로 구성된 정렬된 목록입니다. 각 단계는 실행할 함수FunctionId의를 지정합니다. 선택적으로 RunCondition 표현식을 추가하여 단계가 실행되거나 건너뛰는지 여부를 제어할 수 있습니다.

  • 출력 - 모든 단계가 완료된 후 생성할 값을 정의합니다. 각 항목은 출력 키(예: player_params.envelope)를 시퀀스의 모든 단계에서 생성된 데이터를 참조할 수 있는 표현식에 매핑합니다. 생략하면 시퀀스의 개별 함수에서 모든 출력이 사용됩니다.

  • TimeoutMilliseconds(필수) - 전체 시퀀스가 완료되는 최대 시간입니다. 시퀀스가이 제한 시간을 초과하면 MediaTailor는 시퀀스의 모든 출력을 삭제합니다.

정렬된 실행 및 데이터 흐름

MediaTailor는 처음부터 끝까지 시퀀스의 각 단계를 실행합니다. 각 단계가 완료되면 생성되는 값이 실행 중인 결과 집합에 병합됩니다. 후속 단계에서는 원래 세션 데이터와 이전 단계에서 생성된 모든 값에 액세스할 수 있습니다.

임시 데이터는 단계 간에 데이터를 전달하는 기본 메커니즘입니다. 함수가 temp.* 키에 쓰면 다음 단계에서 해당 값을 읽을 수 있습니다. 이전 단계에서 작성한 플레이어 파라미터 및 광고 요청 필드도 이후 단계에서 볼 수 있습니다.

참고

임시 데이터는 객체 및 배열을 포함한 모든 데이터 유형을 허용합니다. 플레이어 파라미터 및 광고 요청 필드는 문자열, 숫자, 부울 및 null만 허용합니다).

단계별 실행 조건

시퀀스의 각 단계에는 선택적 RunCondition 필드가 있습니다. 이 필드에는 true 또는를 반환하는 표현식이 포함되어 있습니다false. MediaTailor는 해당 단계를 실행하기 직전에 RunCondition 표현식을 평가합니다.

RunCondition 표현식이 로 평가되면 false MediaTailor는 단계를 완전히 건너뛰고 다음 단계로 이동합니다. RunCondition 필드를 생략하면 단계가 항상 실행됩니다.

{ "FunctionId": "retryFetch", "RunCondition": "{%temp.statusCode = 500%}" }

이 메커니즘을 사용하면 조건부 파이프라인을 구축할 수 있습니다. 예를 들어 1단계에서 자격 증명 가져오기를 실행한 다음 1단계에서 유효한 자격 증명을 반환한 경우에만 2단계에서 세그먼트 조회를 조건부로 실행할 수 있습니다.

출력 블록 작동 방식

의 출력 블록은 모든 단계가 완료된 후 시퀀스가 생성하는 내용을 SEQUENTIAL_EXECUTOR 제어합니다.

  • 출력 블록 존재 - MediaTailor는 최종 누적 상태를 기준으로 출력 블록의 표현식을 평가하고 해당 출력만 저장합니다. 순차 출력 블록에서 참조되지 않는 이전 단계에서 생성된 모든 출력은 삭제됩니다.

  • 출력 블록 없음 - MediaTailor는 모든 단계의 누적된 모든 출력을 직접 저장합니다.

작은 정보

모든 함수의 출력이 전달되도록 하려면 출력 블록을 생략합니다. 누적된 결과를 저장하기 전에 필터링, 이름 바꾸기 또는 변환해야 하는 경우 출력 블록을 추가합니다.

제한 시간 구성

TimeoutMilliseconds 필드는 전체 시퀀스의 기한을 설정합니다. 이 제한 시간은 함수에서 수행한 HTTP 호출을 포함하여 모든 단계를 다룹니다. 시퀀스가 제한 시간을 초과하면 MediaTailor는 시퀀스의 모든 출력을 삭제하고 연결된 함수가 없는 것처럼 진행합니다.

개별 HTTP_REQUEST 함수는 여전히 자체 RequestTimeoutMilliseconds 설정을 준수합니다. 시퀀스 제한 시간은 총 실행 시간을 제한하는 외부 경계 역할을 합니다.

예: HTTP 실패 시 재시도

이 예제에서는 자격 증명 API를 호출하고 첫 번째 호출에서 서버 오류가 반환되면 자동으로 재시도합니다. SEQUENTIAL_EXECUTOR에서 오케스트레이션한 두 개의 HTTP_REQUEST 함수를 사용합니다.

1단계 - 기본 가져오기(fetchIdentity):

{ "FunctionId": "fetchIdentity", "FunctionType": "HTTP_REQUEST", "HttpRequestConfiguration": { "Runtime": "JSONATA", "MethodType": "GET", "Url": "{%'https://identity.example.com/v1/resolve?ip=' & session.client_ip%}", "Headers": { "Accept": "application/json" }, "RequestTimeoutMilliseconds": 1000, "Output": { "temp.statusCode": "{%response.statusCode%}", "temp.envelope": "{%response.statusCode = 200 ? response.body.envelope : null%}" } } }

2단계 - 실패 시 재시도(retryIdentity):

{ "FunctionId": "retryIdentity", "FunctionType": "HTTP_REQUEST", "HttpRequestConfiguration": { "Runtime": "JSONATA", "MethodType": "GET", "Url": "{%'https://identity-fallback.example.com/v1/resolve?ip=' & session.client_ip%}", "Headers": { "Accept": "application/json" }, "RequestTimeoutMilliseconds": 1000, "Output": { "temp.statusCode": "{%response.statusCode%}", "temp.envelope": "{%response.statusCode = 200 ? response.body.envelope : null%}" } } }

시퀀스(identityWithRetry):

{ "FunctionId": "identityWithRetry", "FunctionType": "SEQUENTIAL_EXECUTOR", "SequentialExecutorConfiguration": { "Runtime": "JSONATA", "TimeoutMilliseconds": 2000, "FunctionList": [ { "FunctionId": "fetchIdentity" }, { "FunctionId": "retryIdentity", "RunCondition": "{%temp.statusCode >= 500%}" } ], "Output": { "player_params.envelope": "{%temp.envelope%}" } } }

작동 방식:

  1. fetchIdentity는 자격 증명 API를 호출하고 상태 코드와 봉투를에 씁니다temp.*.

  2. 상태 코드가 500 이상이면 2단계RunCondition의가 로 평가true되고 retryIdentity 실행됩니다. 재시도 응답temp.envelope으로 temp.statusCode 및를 덮어씁니다.

  3. 첫 번째 호출이 성공하면 2단계를 건너뜁니다.

  4. 시퀀스 출력 블록은 temp.envelope에 씁니다player_params.envelope.