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

A lifecycle configuration is collections of rules for a single bucket that instructs that instruct Amazon S3 to delete certain objects after a period of days.

Rules

Each lifecycle configuration has a list of rules. Each rule has the following attributes:

  • +prefix+
  • +expiration_days+
  • +status+
  • +id+

Objects with keys matching a rule prefix will be deleted after expiration_days have passed.

A rule is comprised primarily of a prefix and number of expiration days. Objects with keys that start with the given prefix will be automatically deleted after "expiration days" have passed. Rules also have an ID and a status (they can be disabled).

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

Adding Rules

You can add a rule to a bucket lifecycle configuration using {add_rule}.

  # add a rule that deletes backups after they are 1 year old
  bucket.lifecycle_configuration.update do
    add_rule('backups/', 365)
  end

If you perfer to specify a rule‘s ID or status (defaults to ‘Enabled’) you can do this with {add_rule}.

  # add a rule that deletes backups after they are 1 year old
  bucket.lifecycle_configuration.update do
    add_rule('backups/', 365, :id => 'backup-rule', :disabled => true
  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/', 30)
    add_rule('temp/', 10)
  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:

  # 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_days = 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

@param [String] prefix

@param [Integer] expiration_days Indicates the lifetime for objects

  matching the given prefix.

@param [Hash] options

@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.

@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_days = 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_days = 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]