Class AWS::S3::BucketLifecycleConfiguration
In: lib/aws/s3/bucket_lifecycle_configuration.rb
Parent: Object

A lifecycle configuration specify {Rule rules} that manage the way Amazon S3 stores objects. The rules apply to objects whose keys match the rule‘s prefix.

## Rules

A rule is comprised primarily of an id, prefix and set of configuration options. Configuration options on the rules can specify:

  • When to expire an object
  • When to transition an object to Glacier
  • Whether the rule is enabled or disabled

See {Rule} for more information on all of the attributes and methods available for rules.

## Expiring Objects

You can add a rule to a bucket lifecycle configuration using {add_rule} inside of an {update} block that will expire an object after a given number of days:

    # delete backups after they are 1 year old
    bucket.lifecycle_configuration.update do
      add_rule('backups/', :expiration_time => 365)
    end

You can also define the rule to expire objects at a specific date:

    # delete backups on January 1st of next year
    bucket.lifecycle_configuration.update do
      date = Date.new(Time.now.year + 1, 01, 01)
      add_rule('backups/', :expiration_time => date)
    end

## Transitioning Objects to Glacier

You can add a rule to a bucket lifecycle configuration using {add_rule} inside of an {update} block that will transition objects to Glacier after a given number of days:

    # move backups to Glacier after 3 days
    bucket.lifecycle_configuration.update do
      add_rule('backups/', :glacier_transition_time => 3)
    end

You can also define the rule to transition objects at a specific date:

    # transition all backups on January 1st of next year
    bucket.lifecycle_configuration.update do
      date = Date.new(Time.now.year + 1, 01, 01)
      add_rule('backups/', :glacier_transition_time => date)
    end

## Replacing Rules

If you prefer to completely replace a lifecycle configuration, call {add_rule} inside a {replace} block instead of an `update` block:

    # replace all existing rules with the following
    bucket.lifecycle_configuration.replace do
      add_rule('backups/', :glacier_transition_time => 10)
      add_rule('temp/', :expiration_time => 30)
    end

## Removing Rules

You can delete specific rules with {remove_rule}.

    # delete all disabled rules
    bucket.lifecycle_configuration.update do
      rules.each do |rule|
        remove_rule(rule) if rule.disabled?
      end
    end

You can also remove all rules in a single call with {clear}:

    # remove all rules from this lifecycle configuration
    bucket.lifecycle_configuration.clear

## Editing Existing Rules

You can also make changes to existing rules.

    # change the expiration days to 10 for EVERY rule
    bucket.lifecycle_configuration.update do
      rules.each do |rule|
        rule.expiration_time = 10
      end
    end

Please be aware, if you add, remove or edit rules outside of an {update} or {replace} block, then you must call `update` yourself or the changes will not be persisted.

Methods

add_rule   clear   new   parse_xml   persist   remove   remove_rule   replace   rules   to_xml   update  

Classes and Modules

Class AWS::S3::BucketLifecycleConfiguration::Rule

Attributes

bucket  [R]  @return [Bucket] Returns the bucket this lifecycle configuration
  belongs to.

Public Class methods

Public Instance methods

@overload add_rule(prefix, options = {})

  @param [String] prefix objects whose keys begin with this prefix
    will be affected by the rule.

  @option options [String] :id A unique ID for this rule.  If an ID
    is not provided, one will be generated.

  @option options [Boolean] :disabled (false) By default, all rules
    will have the status of enabled.  You can override this default
    by passing `:disabled` => true.

  @option options [Date, Integer] :expiration_time (nil) Indicates
    the lifetime for objects matching the given prefix.

  @option options [Date, Integer] :glacier_transition_time (nil)
    Indicates the time before objects matching the given prefix will
    be transitioned into the Amazon Glacier storage tier.

  @return [Rule] Returns the rule that was added, as a {Rule} object.
remove()

Alias for clear

Removes a single rule. You can pass a rule id or a {Rule} object.

    # remove a single rule by its ID
    bucket.lifecycle_configuration.update do
      remove_rule('rule-id')
    end

    # remove all disabled rules
    bucket.lifecycle_configuration.update do
      rules.each do |rule|
        remove_rule(rule) if rule.disabled?
      end
    end

If you call remove_rule outside an update block you need to call update to save the changes.

@param [Rule,String] rule_or_rule_id

@return [nil]

Yields to the given block. Before yielding, the current rules will be blanked out. This allows you to provide all new rules.

When the block is complete, a single call will be made to save the new rules.

    bucket.lifecycle_configuration.rules.size #=> 3

    # replace the existing 3 rules with a single rule
    bucket.lifecycle_configuration.replace
      add_rule 'temp/', 10
    end

    bucket.lifecycle_configuration.rules.size #=> 1

@return [Array<Hash>] Returns an array of rules.

@return [String] Returns an xml string representation of this

  bucket lifecycle configuration.

Saves changes made to this lifecycle configuration.

    # set the number of days before expiration for all rules to 10
    config = bucket.lifecycle_configuration
    config.rules.each do |rule|
      rule.expiration_time = 10
    end
    config.update

You can call update with a block. Changes are persisted at the end of the block.

    # shorter version of the example above
    bucket.lifecycle_configuration.update do
      rules.each {|rule| rule.expiration_time = 10 }
    end

A block method for updating a BucketLifecycleConfiguration. All modifications made inside the block are persisted at the end of the block.

    # 1 request
    bucket.lifecycle_configuration.update do
      add_rule 'prefix/a', 10
      add_rule 'prefix/b', 5
    end

    # 2 requests
    bucket.lifecycle_configuration.add_rule 'prefix/a', 10
    bucket.lifecycle_configuration.add_rule 'prefix/b', 5

@return [nil]

Protected Instance methods

[Validate]