Skip to content

ContinuousDeploymentPolicy ​

The ContinuousDeploymentPolicy resource allows you to manage deployment policies for AWS CloudFront distributions, enabling you to streamline your deployment process. For more information, refer to the AWS CloudFront ContinuousDeploymentPolicys documentation.

Minimal Example ​

This example demonstrates how to create a basic Continuous Deployment Policy with the required properties.

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

const continuousDeploymentPolicy = await AWS.CloudFront.ContinuousDeploymentPolicy("basicPolicy", {
  ContinuousDeploymentPolicyConfig: {
    // The configuration for the continuous deployment policy
    Name: "BasicDeploymentPolicy",
    Staging: {
      // Specify the staging settings
      Origin: {
        DomainName: "staging.example.com",
        Id: "stagingOrigin"
      }
    },
    Production: {
      // Specify the production settings
      Origin: {
        DomainName: "production.example.com",
        Id: "productionOrigin"
      }
    }
  },
  adopt: true // Adopt if the resource already exists
});

Advanced Configuration ​

This example shows how to set up a Continuous Deployment Policy with additional configurations for custom cache behavior and error responses.

ts
const advancedPolicy = await AWS.CloudFront.ContinuousDeploymentPolicy("advancedPolicy", {
  ContinuousDeploymentPolicyConfig: {
    Name: "AdvancedDeploymentPolicy",
    Staging: {
      Origin: {
        DomainName: "staging.example.com",
        Id: "stagingOrigin"
      },
      CacheBehavior: {
        TargetOriginId: "stagingOrigin",
        ViewerProtocolPolicy: "redirect-to-https",
        AllowedMethods: ["GET", "HEAD", "OPTIONS"],
        CachedMethods: ["GET", "HEAD"],
        Compress: true
      }
    },
    Production: {
      Origin: {
        DomainName: "production.example.com",
        Id: "productionOrigin"
      },
      ErrorResponses: [
        {
          ErrorCode: 404,
          ResponsePagePath: "/404.html",
          ResponseCode: "404",
          ErrorCachingMinTTL: 60
        }
      ]
    }
  }
});

Staging and Production Separation ​

In this example, we create a Continuous Deployment Policy that clearly separates staging and production environments with different origins.

ts
const separatedPolicy = await AWS.CloudFront.ContinuousDeploymentPolicy("separatedPolicy", {
  ContinuousDeploymentPolicyConfig: {
    Name: "SeparatedDeploymentPolicy",
    Staging: {
      Origin: {
        DomainName: "staging.example.com",
        Id: "stagingOrigin"
      },
      CacheBehavior: {
        TargetOriginId: "stagingOrigin",
        AllowedMethods: ["GET", "HEAD"],
        CachedMethods: ["GET", "HEAD"],
        DefaultTTL: 86400,
        MaxTTL: 31536000,
        MinTTL: 0
      }
    },
    Production: {
      Origin: {
        DomainName: "production.example.com",
        Id: "productionOrigin"
      },
      CacheBehavior: {
        TargetOriginId: "productionOrigin",
        AllowedMethods: ["GET", "HEAD", "OPTIONS"],
        ViewerProtocolPolicy: "https-only"
      }
    }
  }
});