Skip to content

LifecyclePolicy ​

The LifecyclePolicy resource allows you to manage AWS DLM LifecyclePolicys for automating the creation, retention, and deletion of EBS snapshots and AMIs.

Minimal Example ​

Create a basic lifecycle policy that retains snapshots every 24 hours for 7 days.

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

const basicLifecyclePolicy = await AWS.DLM.LifecyclePolicy("basicLifecyclePolicy", {
  ExecutionRoleArn: "arn:aws:iam::123456789012:role/DLMExecutionRole",
  Description: "Basic lifecycle policy for EBS snapshots",
  CreateInterval: 24,
  RetainInterval: 7,
  PolicyDetails: {
    ResourceTypes: ["VOLUME"],
    Schedules: [{
      Name: "DailySnapshot",
      CreateRule: {
        Interval: 24,
        IntervalUnit: "HOURS",
      },
      RetainRule: {
        Count: 7,
      },
    }],
  },
  Tags: [{
    Key: "Environment",
    Value: "Production"
  }]
});

Advanced Configuration ​

Configure a lifecycle policy to include cross-region copy of snapshots and specific exclusions.

ts
const advancedLifecyclePolicy = await AWS.DLM.LifecyclePolicy("advancedLifecyclePolicy", {
  ExecutionRoleArn: "arn:aws:iam::123456789012:role/DLMExecutionRole",
  Description: "Advanced lifecycle policy with cross-region copy and exclusions",
  CreateInterval: 12,
  RetainInterval: 30,
  PolicyDetails: {
    ResourceTypes: ["VOLUME"],
    Schedules: [{
      Name: "TwiceDailySnapshot",
      CreateRule: {
        Interval: 12,
        IntervalUnit: "HOURS",
      },
      RetainRule: {
        Count: 30,
      },
    }],
    CrossRegionCopyRules: [{
      TargetRegion: "us-west-2",
      RetainRule: {
        Count: 14,
      },
    }],
    Exclusions: {
      Tags: [{
        Key: "Backup",
        Value: "No"
      }]
    }
  },
  Tags: [{
    Key: "Environment",
    Value: "Testing"
  }]
});

Use Case: AMI Lifecycle Management ​

Manage AMIs for EC2 instances with specific tagging and retention policies.

ts
const amiLifecyclePolicy = await AWS.DLM.LifecyclePolicy("amiLifecyclePolicy", {
  ExecutionRoleArn: "arn:aws:iam::123456789012:role/DLMExecutionRole",
  Description: "AMI lifecycle policy for EC2 instances",
  CreateInterval: 24,
  RetainInterval: 14,
  PolicyDetails: {
    ResourceTypes: ["IMAGE"],
    Schedules: [{
      Name: "DailyAMICreation",
      CreateRule: {
        Interval: 24,
        IntervalUnit: "HOURS",
      },
      RetainRule: {
        Count: 14,
      },
    }],
    Exclusions: {
      Tags: [{
        Key: "Backup",
        Value: "False"
      }]
    }
  },
  Tags: [{
    Key: "Application",
    Value: "WebApp"
  }]
});