View a markdown version of this page

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

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

示例 2: A/B 流量分割

场景

一家流媒体服务希望使用 CUSTOM_OUTPUT 函数在两个广告决策服务器 (ADS) 网址之间随机分配广告请求流量进行 A/B 测试。一半的广告请求发送到 v1 终端节点,一半发送到 v2 终端节点。

配置

A/B 流量分割(自定义输出):

{ "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— 此函数的唯一名称。

  • FunctionType— 在不进行 HTTP 调用的情况下CUSTOM_OUTPUT评估表达式。

  • Output— 映射adsRequest.url到随机选择两个 ADS 网址之一的表达式。

函数映射

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

函数运行时会发生什么

  1. 在播放过程中遇到广告中断。

  2. MediaTailor 运行PRE_ADS_REQUEST生命周期挂钩并运行abTestAdsUrl

  3. $random()函数返回一个介于 0 和 1 之间的值。如果该值小于 0.5,则该函数将 ADS 网址设置为 v1 端点。否则,它会将 URL 设置为 v2 端点。

$random()函数是在每个广告时段进行评估的,因此拆分是根据广告请求进行的,而不是按会话进行的。

提示

要调整流量分割率,请更改阈值。例如,$random() < 0.8将 80% 的流量发送到第一个 URL,将 20% 的流量发送到第二个 URL。

注意

写入adsRequest.url会覆盖当前广告时段的播放配置中配置的默认 ADS 网址。

有关更多信息,请参阅 自定义输出PRE_ADS_REQUESTjsonata 表达式参考