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:
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.
bucket | [R] |
@return [Bucket] Returns the bucket this
lifecycle configuration
belongs to. |
@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.
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
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]