Skip to content

StreamingDistribution ​

The StreamingDistribution resource allows you to create and manage AWS CloudFront StreamingDistributions for delivering streaming content to viewers.

Minimal Example ​

Create a basic streaming distribution with required properties and a couple of common optional settings.

ts
import AWS from "alchemy/aws/control";

const basicStreamingDistribution = await AWS.CloudFront.StreamingDistribution("basicStreamingDist", {
  StreamingDistributionConfig: {
    Comment: "Basic Streaming Distribution for educational content",
    Enabled: true,
    Origins: [{
      DomainName: "example-origin.com",
      Id: "exampleOrigin",
      OriginPath: "/path/to/content"
    }],
    DefaultCacheBehavior: {
      TargetOriginId: "exampleOrigin",
      ViewerProtocolPolicy: "redirect-to-https",
      AllowedMethods: ["GET", "HEAD"],
      CachedMethods: ["GET", "HEAD"],
      ForwardedValues: {
        QueryString: false
      },
      MinTtl: 0,
      MaxTtl: 86400,
      DefaultTtl: 3600
    }
  },
  Tags: [
    { Key: "Environment", Value: "Development" },
    { Key: "Project", Value: "StreamingService" }
  ]
});

Advanced Configuration ​

Configure a streaming distribution with advanced settings such as custom error responses and additional caching behaviors.

ts
const advancedStreamingDistribution = await AWS.CloudFront.StreamingDistribution("advancedStreamingDist", {
  StreamingDistributionConfig: {
    Comment: "Advanced Streaming Distribution with custom settings",
    Enabled: true,
    Origins: [{
      DomainName: "advanced-origin.com",
      Id: "advancedOrigin",
      OriginPath: "/advanced/path"
    }],
    DefaultCacheBehavior: {
      TargetOriginId: "advancedOrigin",
      ViewerProtocolPolicy: "https-only",
      AllowedMethods: ["GET", "HEAD", "OPTIONS"],
      CachedMethods: ["GET", "HEAD"],
      ForwardedValues: {
        QueryString: true,
        Cookies: { Forward: "all" }
      },
      MinTtl: 0,
      MaxTtl: 31536000,
      DefaultTtl: 86400
    },
    CustomErrorResponses: [{
      ErrorCode: 404,
      ResponsePagePath: "/404.html",
      ResponseCode: "404",
      ErrorCachingMinTtl: 300
    }]
  },
  Tags: [
    { Key: "Environment", Value: "Production" },
    { Key: "Project", Value: "StreamingApp" }
  ]
});

Dynamic Content Delivery ​

Create a streaming distribution optimized for dynamic content delivery and enhanced security settings.

ts
const dynamicStreamingDistribution = await AWS.CloudFront.StreamingDistribution("dynamicStreamingDist", {
  StreamingDistributionConfig: {
    Comment: "Streaming Distribution for dynamic content with security",
    Enabled: true,
    Origins: [{
      DomainName: "dynamic-origin.com",
      Id: "dynamicOrigin",
      OriginPath: "/dynamic/content"
    }],
    DefaultCacheBehavior: {
      TargetOriginId: "dynamicOrigin",
      ViewerProtocolPolicy: "redirect-to-https",
      AllowedMethods: ["GET", "HEAD"],
      CachedMethods: ["GET", "HEAD"],
      ForwardedValues: {
        QueryString: true,
        Cookies: { Forward: "none" }
      },
      MinTtl: 0,
      MaxTtl: 3600,
      DefaultTtl: 1800
    },
    ViewerCertificate: {
      CloudFrontDefaultCertificate: true
    }
  },
  Tags: [
    { Key: "Environment", Value: "Staging" },
    { Key: "Project", Value: "DynamicStreaming" }
  ]
});