Class: Google::Cloud::Storage::Bucket::Lifecycle

Inherits:
Array
  • Object
show all
Defined in:
lib/google/cloud/storage/bucket/lifecycle.rb

Overview

Bucket Lifecycle

A special-case Array for managing the Object Lifecycle Management rules for a bucket. Accessed via #lifecycle.

Examples:

Specifying the lifecycle management rules for a new bucket.

require "google/cloud/storage"

storage = Google::Cloud::Storage.new

bucket = storage.create_bucket "my-bucket" do |b|
  b.lifecycle.add_set_storage_class_rule "COLDLINE", age: 10
  b.lifecycle.add_delete_rule age: 30, is_live: false
end

Retrieving a bucket's lifecycle management rules.

require "google/cloud/storage"

storage = Google::Cloud::Storage.new
bucket = storage.bucket "my-bucket"

bucket.lifecycle.size #=> 2
rule = bucket.lifecycle.first
rule.action #=> "SetStorageClass"
rule.storage_class #=> "COLDLINE"
rule.age #=> 10
rule.matches_storage_class #=> ["STANDARD", "NEARLINE"]
rule.matches_prefix #=> ["myprefix/foo"]
rule.matches_suffix #=> [".jpg", ".png"]

Updating the bucket's lifecycle management rules in a block.

require "google/cloud/storage"

storage = Google::Cloud::Storage.new
bucket = storage.bucket "my-bucket"

bucket.lifecycle do |l|
  # Remove the last rule from the array
  l.pop
  # Remove all rules with the given condition
  l.delete_if do |r|
    r.matches_storage_class.include? "NEARLINE"
  end
  l.add_set_storage_class_rule "COLDLINE", age: 10, is_live: true
  l.add_delete_rule age: 30, is_live: false
end

See Also:

Defined Under Namespace

Classes: Rule

Instance Method Summary collapse

Instance Method Details

#add_abort_incomplete_multipart_upload_rule(age: nil, matches_prefix: nil, matches_suffix: nil) ⇒ Object

Adds a AbortIncompleteMultipartUpload lifecycle rule to the Object Lifecycle Management rules for a bucket.

Examples:

require "google/cloud/storage"

storage = Google::Cloud::Storage.new

bucket = storage.create_bucket "my-bucket" do |b|
  b.lifecycle.add_abort_incomplete_multipart_upload_rule age: 10,
                                                         matches_prefix: ["images/"],
                                                         matches_suffix: [".pdf"]
end

Parameters:

  • age (Integer) (defaults to: nil)

    The age of a file (in days). This condition is satisfied when a file reaches the specified age.

  • matches_prefix (Array<String,Symbol>) (defaults to: nil)

    Files having their name with the specified list of prefixs will be matched. Arguments will be converted from symbols to strings.

  • matches_suffix (Array<String,Symbol>) (defaults to: nil)

    Files having their name with the specified list of suffixes will be matched. Arguments will be converted from symbols to strings.

See Also:



308
309
310
311
312
313
314
315
316
317
# File 'lib/google/cloud/storage/bucket/lifecycle.rb', line 308

def add_abort_incomplete_multipart_upload_rule age: nil,
                                               matches_prefix: nil,
                                               matches_suffix: nil
  push Rule.new(
    "AbortIncompleteMultipartUpload",
    age: age,
    matches_prefix: Array(matches_prefix),
    matches_suffix: Array(matches_suffix)
  )
end

#add_delete_rule(age: nil, created_before: nil, custom_time_before: nil, days_since_custom_time: nil, days_since_noncurrent_time: nil, is_live: nil, matches_storage_class: nil, noncurrent_time_before: nil, num_newer_versions: nil, matches_prefix: nil, matches_suffix: nil) ⇒ Object

Adds a Delete lifecycle rule to the Object Lifecycle Management rules for a bucket.

Examples:

require "google/cloud/storage"

storage = Google::Cloud::Storage.new

bucket = storage.create_bucket "my-bucket" do |b|
  b.lifecycle.add_delete_rule age: 30, is_live: false
end

Parameters:

  • age (Integer) (defaults to: nil)

    The age of a file (in days). This condition is satisfied when a file reaches the specified age.

  • created_before (String, Date) (defaults to: nil)

    A date in RFC 3339 format with only the date part (for instance, "2013-01-15"). This condition is satisfied when a file is created before midnight of the specified date in UTC.

  • custom_time_before (String, Date) (defaults to: nil)

    A date in RFC 3339 format with only the date part (for instance, "2013-01-15"). This condition is satisfied when the custom time on an object is before this date in UTC.

  • days_since_custom_time (Integer) (defaults to: nil)

    Represents the number of days elapsed since the user-specified timestamp set on an object. The condition is satisfied if the days elapsed is at least this number. If no custom timestamp is specified on an object, the condition does not apply.

  • days_since_noncurrent_time (Integer) (defaults to: nil)

    Represents the number of days elapsed since the noncurrent timestamp of an object. The condition is satisfied if the days elapsed is at least this number. The value of the field must be a nonnegative integer. If it's zero, the object version will become eligible for Lifecycle action as soon as it becomes noncurrent. Relevant only for versioning-enabled buckets. (See Google::Cloud::Storage::Bucket#versioning?)

  • is_live (Boolean) (defaults to: nil)

    Relevant only for versioned files. If the value is true, this condition matches live files; if the value is false, it matches archived files.

  • matches_storage_class (String, Symbol, Array<String,Symbol>) (defaults to: nil)

    Files having any of the storage classes specified by this condition will be matched. Values include STANDARD, NEARLINE, COLDLINE, and ARCHIVE. REGIONAL,MULTI_REGIONAL, and DURABLE_REDUCED_AVAILABILITY are supported as legacy storage classes. Arguments will be converted from symbols and lower-case to upper-case strings.

  • noncurrent_time_before (String, Date) (defaults to: nil)

    A date in RFC 3339 format with only the date part (for instance, "2013-01-15"). This condition is satisfied when the noncurrent time on an object is before this date in UTC. This condition is relevant only for versioned objects.

  • num_newer_versions (Integer) (defaults to: nil)

    Relevant only for versioned files. If the value is N, this condition is satisfied when there are at least N versions (including the live version) newer than this version of the file.

  • matches_prefix (Array<String,Symbol>) (defaults to: nil)

    Files having their name with the specified list of prefixs will be matched. Arguments will be converted from symbols to strings.

  • matches_suffix (Array<String,Symbol>) (defaults to: nil)

    Files having their name with the specified list of suffixes will be matched. Arguments will be converted from symbols to strings.

See Also:



252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
# File 'lib/google/cloud/storage/bucket/lifecycle.rb', line 252

def add_delete_rule age: nil,
                    created_before: nil,
                    custom_time_before: nil,
                    days_since_custom_time: nil,
                    days_since_noncurrent_time: nil,
                    is_live: nil,
                    matches_storage_class: nil,
                    noncurrent_time_before: nil,
                    num_newer_versions: nil,
                    matches_prefix: nil,
                    matches_suffix: nil
  push Rule.new(
    "Delete",
    age: age,
    created_before: created_before,
    custom_time_before: custom_time_before,
    days_since_custom_time: days_since_custom_time,
    days_since_noncurrent_time: days_since_noncurrent_time,
    is_live: is_live,
    matches_storage_class: storage_class_for(matches_storage_class),
    noncurrent_time_before: noncurrent_time_before,
    num_newer_versions: num_newer_versions,
    matches_prefix: Array(matches_prefix),
    matches_suffix: Array(matches_suffix)
  )
end

#add_set_storage_class_rule(storage_class, age: nil, created_before: nil, custom_time_before: nil, days_since_custom_time: nil, days_since_noncurrent_time: nil, is_live: nil, matches_storage_class: nil, noncurrent_time_before: nil, num_newer_versions: nil, matches_prefix: nil, matches_suffix: nil) ⇒ Object

Adds a SetStorageClass lifecycle rule to the Object Lifecycle Management rules for a bucket.

Examples:

require "google/cloud/storage"

storage = Google::Cloud::Storage.new

bucket = storage.create_bucket "my-bucket" do |b|
  b.lifecycle.add_set_storage_class_rule "COLDLINE", age: 10
end

Parameters:

  • storage_class (String, Symbol)

    The target storage class. Required if the type of the action is SetStorageClass. The argument will be converted from symbols and lower-case to upper-case strings.

  • age (Integer) (defaults to: nil)

    The age of a file (in days). This condition is satisfied when a file reaches the specified age.

  • created_before (String, Date) (defaults to: nil)

    A date in RFC 3339 format with only the date part (for instance, "2013-01-15"). This condition is satisfied when a file is created before midnight of the specified date in UTC.

  • custom_time_before (String, Date) (defaults to: nil)

    A date in RFC 3339 format with only the date part (for instance, "2013-01-15"). This condition is satisfied when the custom time on an object is before this date in UTC.

  • days_since_custom_time (Integer) (defaults to: nil)

    Represents the number of days elapsed since the user-specified timestamp set on an object. The condition is satisfied if the days elapsed is at least this number. If no custom timestamp is specified on an object, the condition does not apply.

  • days_since_noncurrent_time (Integer) (defaults to: nil)

    Represents the number of days elapsed since the noncurrent timestamp of an object. The condition is satisfied if the days elapsed is at least this number. The value of the field must be a nonnegative integer. If it's zero, the object version will become eligible for Lifecycle action as soon as it becomes noncurrent. Relevant only for versioning-enabled buckets. (See Google::Cloud::Storage::Bucket#versioning?)

  • is_live (Boolean) (defaults to: nil)

    Relevant only for versioned files. If the value is true, this condition matches live files; if the value is false, it matches archived files.

  • matches_storage_class (String, Symbol, Array<String,Symbol>) (defaults to: nil)

    Files having any of the storage classes specified by this condition will be matched. Values include STANDARD, NEARLINE, COLDLINE, and ARCHIVE. REGIONAL,MULTI_REGIONAL, and DURABLE_REDUCED_AVAILABILITY are supported as legacy storage classes. Arguments will be converted from symbols and lower-case to upper-case strings.

  • noncurrent_time_before (String, Date) (defaults to: nil)

    A date in RFC 3339 format with only the date part (for instance, "2013-01-15"). This condition is satisfied when the noncurrent time on an object is before this date in UTC. This condition is relevant only for versioned objects.

  • num_newer_versions (Integer) (defaults to: nil)

    Relevant only for versioned files. If the value is N, this condition is satisfied when there are at least N versions (including the live version) newer than this version of the file.

  • matches_prefix (Array<String,Symbol>) (defaults to: nil)

    Files having their name with the specified list of prefixs will be matched. Arguments will be converted from symbols to strings.

  • matches_suffix (Array<String,Symbol>) (defaults to: nil)

    Files having their name with the specified list of suffixes will be matched. Arguments will be converted from symbols to strings.

See Also:



159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
# File 'lib/google/cloud/storage/bucket/lifecycle.rb', line 159

def add_set_storage_class_rule storage_class,
                               age: nil,
                               created_before: nil,
                               custom_time_before: nil,
                               days_since_custom_time: nil,
                               days_since_noncurrent_time: nil,
                               is_live: nil,
                               matches_storage_class: nil,
                               noncurrent_time_before: nil,
                               num_newer_versions: nil,
                               matches_prefix: nil,
                               matches_suffix: nil
  push Rule.new(
    "SetStorageClass",
    storage_class: storage_class_for(storage_class),
    age: age,
    created_before: created_before,
    custom_time_before: custom_time_before,
    days_since_custom_time: days_since_custom_time,
    days_since_noncurrent_time: days_since_noncurrent_time,
    is_live: is_live,
    matches_storage_class: storage_class_for(matches_storage_class),
    noncurrent_time_before: noncurrent_time_before,
    num_newer_versions: num_newer_versions,
    matches_prefix: Array(matches_prefix),
    matches_suffix: Array(matches_suffix)
  )
end