Skip to content

ResponseHeadersPolicy ​

The ResponseHeadersPolicy resource lets you configure HTTP response headers for your CloudFront distributions. For more information, refer to the AWS CloudFront ResponseHeadersPolicys documentation.

Minimal Example ​

Create a basic ResponseHeadersPolicy with essential settings:

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

const basicPolicy = await AWS.CloudFront.ResponseHeadersPolicy("basic-response-policy", {
  ResponseHeadersPolicyConfig: {
    Name: "BasicPolicy",
    Comment: "A basic response headers policy example",
    SecurityHeadersConfig: {
      ContentSecurityPolicy: {
        ContentSecurityPolicy: "default-src 'self'",
        Override: true
      },
      StrictTransportSecurity: {
        AccessControlMaxAgeSec: 31536000,
        IncludeSubdomains: true,
        Override: true
      },
      XSSProtection: {
        ModeBlock: true,
        Override: true
      }
    }
  }
});

Advanced Configuration ​

Configure a ResponseHeadersPolicy with more advanced security settings, including CORS and custom headers:

ts
const advancedPolicy = await AWS.CloudFront.ResponseHeadersPolicy("advanced-response-policy", {
  ResponseHeadersPolicyConfig: {
    Name: "AdvancedPolicy",
    Comment: "An advanced response headers policy example",
    SecurityHeadersConfig: {
      ContentSecurityPolicy: {
        ContentSecurityPolicy: "default-src 'self'; img-src https://*.example.com",
        Override: true
      },
      StrictTransportSecurity: {
        AccessControlMaxAgeSec: 63072000,
        IncludeSubdomains: true,
        Override: true
      },
      XSSProtection: {
        ModeBlock: true,
        Override: true
      },
      CORSConfig: {
        AccessControlAllowOrigins: ["https://example.com"],
        AccessControlAllowHeaders: ["*"],
        AccessControlAllowMethods: ["GET", "POST"],
        AccessControlExposeHeaders: ["X-My-Custom-Header"],
        AccessControlMaxAgeSec: 3000,
        Override: true
      },
      CustomHeadersConfig: {
        Headers: [
          {
            Header: "X-Custom-Header",
            Value: "CustomValue",
            Override: true
          }
        ]
      }
    }
  }
});

Inherit from Existing Policy ​

Create a ResponseHeadersPolicy that inherits settings from an existing policy:

ts
const inheritedPolicy = await AWS.CloudFront.ResponseHeadersPolicy("inherited-response-policy", {
  ResponseHeadersPolicyConfig: {
    Name: "InheritedPolicy",
    Comment: "A response headers policy that inherits from an existing policy",
    SecurityHeadersConfig: {
      ContentSecurityPolicy: {
        ContentSecurityPolicy: "default-src 'self';",
        Override: false // Inherit existing policy
      },
      StrictTransportSecurity: {
        AccessControlMaxAgeSec: 31536000,
        IncludeSubdomains: true,
        Override: false // Inherit existing policy
      }
    }
  },
  adopt: true // Adopt existing resource if it already exists
});