Skip to content

CachePolicy

The CachePolicy resource lets you manage AWS CloudFront CachePolicys which define how CloudFront caches content based on request and response headers, cookies, and query strings.

Minimal Example

Create a basic cache policy with default settings.

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

const basicCachePolicy = await AWS.CloudFront.CachePolicy("basicCachePolicy", {
  CachePolicyConfig: {
    Name: "BasicCachePolicy",
    Comment: "A basic cache policy for demonstration purposes.",
    DefaultTtl: 86400, // 1 day in seconds
    MaxTtl: 31536000,  // 1 year in seconds
    MinTtl: 0,
    ParametersInCacheKeyAndForwardedToOrigin: {
      CookiesConfig: {
        CookieBehavior: "none"
      },
      EnableAcceptEncodingGzip: true,
      EnableAcceptEncodingBrotli: false,
      HeadersConfig: {
        HeaderBehavior: "none"
      },
      QueryStringsConfig: {
        QueryStringBehavior: "none"
      }
    }
  }
});

Advanced Configuration

Configure a cache policy with advanced settings including query string and header configurations.

ts
const advancedCachePolicy = await AWS.CloudFront.CachePolicy("advancedCachePolicy", {
  CachePolicyConfig: {
    Name: "AdvancedCachePolicy",
    Comment: "An advanced cache policy with specific query string and header settings.",
    DefaultTtl: 3600, // 1 hour in seconds
    MaxTtl: 86400,    // 1 day in seconds
    MinTtl: 0,
    ParametersInCacheKeyAndForwardedToOrigin: {
      CookiesConfig: {
        CookieBehavior: "all"
      },
      EnableAcceptEncodingGzip: true,
      EnableAcceptEncodingBrotli: true,
      HeadersConfig: {
        HeaderBehavior: "whitelist",
        Headers: ["Authorization", "X-Custom-Header"]
      },
      QueryStringsConfig: {
        QueryStringBehavior: "all"
      }
    }
  }
});

Caching for Dynamic Content

Create a cache policy designed for dynamic content that needs more frequent updates.

ts
const dynamicCachePolicy = await AWS.CloudFront.CachePolicy("dynamicCachePolicy", {
  CachePolicyConfig: {
    Name: "DynamicCachePolicy",
    Comment: "A cache policy optimized for dynamic content.",
    DefaultTtl: 300,  // 5 minutes in seconds
    MaxTtl: 3600,     // 1 hour in seconds
    MinTtl: 0,
    ParametersInCacheKeyAndForwardedToOrigin: {
      CookiesConfig: {
        CookieBehavior: "all"
      },
      EnableAcceptEncodingGzip: true,
      EnableAcceptEncodingBrotli: false,
      HeadersConfig: {
        HeaderBehavior: "all"
      },
      QueryStringsConfig: {
        QueryStringBehavior: "whitelist",
        QueryStrings: ["sessionId", "userId"]
      }
    }
  }
});