awscdk-construct-ad-decision-server
TypeScript icon, indicating that this package has built-in type declarations

0.0.6 • Public • Published

awscdk-construct-ad-decision-server

View on Construct Hub

CDK Construct for setting up a simple Ad Decision Server (ADS)

  • Specify a list of ad creative files
  • AdDecisionServer creates an API Gateway endpoint backed by a Lambda function that returns a VAST file based on the duration of the ad break
  • The ad break's duration (in sec) needs to be specified as a query string (e.g. "?duration=30")
  • The Lambda function generates a VAST file using the creatives that fills the ad break
  • If clearanceRule: 'SEQUENCIAL' is set, the Lambda function tries to fill the ad break with the ad creatives from the beginning and gives up when there's no more space in the ad break.
  • If clearanceRule: 'LONGEST_FIRST' (default) is set, the Lambda function tries to fill the ad break using the longest ad creative and, when the remaining break does not fit the longest ad, it moves to the 2nd longest ad creative.

Install

NPM

Usage

import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';
import { AdDecisionServer } from 'awscdk-construct-ad-decision-server';

export class ExampleStack extends cdk.Stack {
  constructor(scope: Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    // Build an Ad Decision Server (ADS) that returns 3x creatives
    const ads = new AdDecisionServer(this, 'AdDecisionServer', {
      creatives: [
        {
          duration: 30,
          url: `${AD_CREATIVE_URL}/30sec.mp4`,
          delivery: 'progressive',
          mimeType: 'video/mp4',
          width: 1280,
          height: 720,
        },
        {
          duration: 15,
          url: `${AD_CREATIVE_URL}/15sec.mp4`,
          delivery: 'progressive',
          mimeType: 'video/mp4',
          width: 1280,
          height: 720,
        },
        {
          duration: 60,
          url: `${AD_CREATIVE_URL}/60sec.mp4`,
          delivery: 'progressive',
          mimeType: 'video/mp4',
          width: 1280,
          height: 720,
        },
      ],
      clearanceRule: 'SEQUENCIAL', // Specify how ADS clear inventory: LONGEST_FIRST (defalut) or SEQUENCIAL
    });

    // You can use the ADS with MediaTailor
    const {emt, cf} = new MediaTailorWithCloudFront(this, 'MediaTailorWithCloudFront', {
      videoContentSourceUrl: ORIGIN_URL,
      adDecisionServerUrl: `${ads.url}?duration=[session.avail_duration_secs]`,
      slateAdUrl: SLATE_URL,
    });
  }
}

Package Sidebar

Install

npm i awscdk-construct-ad-decision-server

Weekly Downloads

25

Version

0.0.6

License

MIT

Unpacked Size

328 kB

Total Files

75

Last publish

Collaborators

  • kuu