View a markdown version of this page

範例 2:A/B 流量分割 - AWS Elemental MediaTailor

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

範例 2:A/B 流量分割

案例

串流服務想要使用 CUSTOM_OUTPUT 函數,在 A/B 測試的兩個廣告決策伺服器 (ADS) URLs 之間隨機分割廣告請求流量。一半的廣告請求會移至 v1 端點,一半則會移至 v2 端點。

Configuration

A/B 流量分割 (CUSTOM_OUTPUT):

{ "FunctionId": "abTestAdsUrl", "FunctionType": "CUSTOM_OUTPUT", "CustomOutputConfiguration": { "Runtime": "JSONATA", "Output": { "adsRequest.url": "{%$random() < 0.5 ? 'https://ads.example.com/v1/decision?session=' & session.id : 'https://ads.example.com/v2/decision?session=' & session.id%}" } } }

在此組態中:

  • FunctionId — 此函數的唯一名稱。

  • FunctionTypeCUSTOM_OUTPUT評估表達式而不進行 HTTP 呼叫。

  • Output — 映射adsRequest.url到會隨機選取兩個 ADS URLs 之一的表達式。

函數映射

{ "FunctionMapping": { "PRE_ADS_REQUEST": "abTestAdsUrl" } }

函數執行時會發生什麼情況

  1. 播放期間遇到廣告休息時間。

  2. MediaTailor 會執行PRE_ADS_REQUEST生命週期掛鉤並執行 abTestAdsUrl

  3. $random() 函數會傳回介於 0 和 1 之間的值。如果值小於 0.5,函數會將 ADS URL 設定為 v1 端點。否則,它會將 URL 設定為 v2 端點。

每個廣告休息時間都會評估 $random()函數,因此分割是每個廣告請求,而不是每個工作階段。

提示

若要調整流量分割比率,請變更閾值。例如, $random() < 0.8會將 80% 的流量傳送至第一個 URL,並將 20% 傳送至第二個 URL。

注意

寫入 可adsRequest.url覆寫目前廣告休息時間播放組態中設定的預設 ADS URL。

如需詳細資訊,請參閱CUSTOM_OUTPUTPRE_ADS_REQUESTJSONata 表達式參考