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.
Each lifecycle configuration has a list of rules. Each rule has the following attributes:
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.
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
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
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
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.
bucket | [R] |
@return [Bucket] Returns the bucket this
lifecycle configuration
belongs to. |
@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.
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_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]