Class: AWSCDK::DLM::CfnLifecyclePolicy::RetainRuleProperty

Inherits:
Jsii::Struct
  • Object
show all
Defined in:
dlm/cfn_lifecycle_policy.rb

Overview

[Custom snapshot and AMI policies only] Specifies a retention rule for snapshots created by snapshot policies, or for AMIs created by AMI policies.

For snapshot policies that have an ArchiveRule , this retention rule applies to standard tier retention. When the retention threshold is met, snapshots are moved from the standard to the archive tier.

For snapshot policies that do not have an ArchiveRule , snapshots are permanently deleted when this retention threshold is met.

You can retain snapshots based on either a count or a time interval.

  • Count-based retention

You must specify Count . If you specify an ArchiveRule for the schedule, then you can specify a retention count of 0 to archive snapshots immediately after creation. If you specify a FastRestoreRule , ShareRule , or a CrossRegionCopyRule , then you must specify a retention count of 1 or more.

  • Age-based retention

You must specify Interval and IntervalUnit . If you specify an ArchiveRule for the schedule, then you can specify a retention interval of 0 days to archive snapshots immediately after creation. If you specify a FastRestoreRule , ShareRule , or a CrossRegionCopyRule , then you must specify a retention interval of 1 day or more.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(count: nil, interval: nil, interval_unit: nil) ⇒ RetainRuleProperty

Returns a new instance of RetainRuleProperty.

Parameters:

  • count (Numeric, nil) (defaults to: nil)

    The number of snapshots to retain for each volume, up to a maximum of 1000.

  • interval (Numeric, nil) (defaults to: nil)

    The amount of time to retain each snapshot.

  • interval_unit (String, nil) (defaults to: nil)

    The unit of time for time-based retention.



1835
1836
1837
1838
1839
1840
1841
1842
# File 'dlm/cfn_lifecycle_policy.rb', line 1835

def initialize(count: nil, interval: nil, interval_unit: nil)
  @count = count
  Jsii::Type.check_type(@count, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJudW1iZXIifQ==")), "count") unless @count.nil?
  @interval = interval
  Jsii::Type.check_type(@interval, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJudW1iZXIifQ==")), "interval") unless @interval.nil?
  @interval_unit = interval_unit
  Jsii::Type.check_type(@interval_unit, JSON.parse(Base64.strict_decode64("eyJwcmltaXRpdmUiOiJzdHJpbmcifQ==")), "intervalUnit") unless @interval_unit.nil?
end

Instance Attribute Details

#countNumeric? (readonly)

The number of snapshots to retain for each volume, up to a maximum of 1000.

For example if you want to retain a maximum of three snapshots, specify 3 . When the fourth snapshot is created, the oldest retained snapshot is deleted, or it is moved to the archive tier if you have specified an ArchiveRule .



1850
1851
1852
# File 'dlm/cfn_lifecycle_policy.rb', line 1850

def count
  @count
end

#intervalNumeric? (readonly)

The amount of time to retain each snapshot.

The maximum is 100 years. This is equivalent to 1200 months, 5200 weeks, or 36500 days.



1857
1858
1859
# File 'dlm/cfn_lifecycle_policy.rb', line 1857

def interval
  @interval
end

#interval_unitString? (readonly)

The unit of time for time-based retention.

For example, to retain snapshots for 3 months, specify Interval=3 and IntervalUnit=MONTHS . Once the snapshot has been retained for 3 months, it is deleted, or it is moved to the archive tier if you have specified an ArchiveRule .



1864
1865
1866
# File 'dlm/cfn_lifecycle_policy.rb', line 1864

def interval_unit
  @interval_unit
end

Class Method Details

.jsii_propertiesObject



1866
1867
1868
1869
1870
1871
1872
# File 'dlm/cfn_lifecycle_policy.rb', line 1866

def self.jsii_properties
  {
    :count => "count",
    :interval => "interval",
    :interval_unit => "intervalUnit",
  }
end

Instance Method Details

#to_jsiiObject



1874
1875
1876
1877
1878
1879
1880
1881
1882
# File 'dlm/cfn_lifecycle_policy.rb', line 1874

def to_jsii
  result = {}
  result.merge!({
    "count" => @count,
    "interval" => @interval,
    "intervalUnit" => @interval_unit,
  })
  result.compact
end