Skip to content
GitHubXDiscord

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.

Create a basic cache policy with default settings.

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"
}
}
}
});

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

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"
}
}
}
});

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

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"]
}
}
}
});