Class: Google::Cloud::Storage::Project

Inherits:
Object
  • Object
show all
Defined in:
lib/google/cloud/storage/project.rb

Overview

# Project

Represents the project that storage buckets and files belong to. All data in Google Cloud Storage belongs inside a project. A project consists of a set of users, a set of APIs, billing, authentication, and monitoring settings for those APIs.

Google::Cloud::Storage::Project is the main object for interacting with Google Storage. Bucket objects are created, read, updated, and deleted by Google::Cloud::Storage::Project.

See Google::Cloud#storage

Examples:

require "google/cloud/storage"

storage = Google::Cloud::Storage.new

bucket = storage.bucket "my-bucket"
file = bucket.file "path/to/my-file.ext"

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(service) ⇒ Project



58
59
60
# File 'lib/google/cloud/storage/project.rb', line 58

def initialize service
  @service = service
end

Instance Attribute Details

#serviceObject



52
53
54
# File 'lib/google/cloud/storage/project.rb', line 52

def service
  @service
end

Class Method Details

.default_projectObject



81
82
83
84
85
86
# File 'lib/google/cloud/storage/project.rb', line 81

def self.default_project
  ENV["STORAGE_PROJECT"] ||
    ENV["GOOGLE_CLOUD_PROJECT"] ||
    ENV["GCLOUD_PROJECT"] ||
    Google::Cloud::Core::Environment.project_id
end

Instance Method Details

#bucket(bucket_name) ⇒ Google::Cloud::Storage::Bucket? Also known as: find_bucket

Retrieves bucket by name.

Examples:

require "google/cloud/storage"

storage = Google::Cloud::Storage.new

bucket = storage.bucket "my-bucket"
puts bucket.name

Parameters:

  • bucket_name (String)

    Name of a bucket.

Returns:



153
154
155
156
157
158
# File 'lib/google/cloud/storage/project.rb', line 153

def bucket bucket_name
  gapi = service.get_bucket bucket_name
  Bucket.from_gapi gapi, service
rescue Google::Cloud::NotFoundError
  nil
end

#buckets(prefix: nil, token: nil, max: nil) ⇒ Array<Google::Cloud::Storage::Bucket> Also known as: find_buckets

Retrieves a list of buckets for the given project.

Examples:

require "google/cloud/storage"

storage = Google::Cloud::Storage.new

buckets = storage.buckets
buckets.each do |bucket|
  puts bucket.name
end

Retrieve buckets with names that begin with a given prefix:

require "google/cloud/storage"

storage = Google::Cloud::Storage.new

user_buckets = storage.buckets prefix: "user-"
user_buckets.each do |bucket|
  puts bucket.name
end

Retrieve all buckets: (See Bucket::List#all)

require "google/cloud/storage"

storage = Google::Cloud::Storage.new

buckets = storage.buckets
buckets.all do |bucket|
  puts bucket.name
end

Parameters:

  • prefix (String) (defaults to: nil)

    Filter results to buckets whose names begin with this prefix.

  • token (String) (defaults to: nil)

    A previously-returned page token representing part of the larger set of results to view.

  • max (Integer) (defaults to: nil)

    Maximum number of buckets to return.

Returns:



130
131
132
133
134
# File 'lib/google/cloud/storage/project.rb', line 130

def buckets prefix: nil, token: nil, max: nil
  options = { prefix: prefix, token: token, max: max }
  gapi = service.list_buckets options
  Bucket::List.from_gapi gapi, service, prefix, max
end

#create_bucket(bucket_name, acl: nil, default_acl: nil, location: nil, storage_class: nil, logging_bucket: nil, logging_prefix: nil, website_main: nil, website_404: nil, versioning: nil) {|bucket| ... } ⇒ Google::Cloud::Storage::Bucket

Creates a new bucket with optional attributes. Also accepts a block for defining the CORS configuration for a static website served from the bucket. See Bucket::Cors for details.

The API call to create the bucket may be retried under certain conditions. See Google::Cloud#storage to control this behavior.

You can pass [website settings](cloud.google.com/storage/docs/website-configuration) for the bucket, including a block that defines CORS rule. See Bucket::Cors for details.

Examples:

require "google/cloud/storage"

storage = Google::Cloud::Storage.new

bucket = storage.create_bucket "my-bucket"

Configure the bucket in a block:

require "google/cloud/storage"

storage = Google::Cloud::Storage.new

bucket = storage.create_bucket "my-bucket" do |b|
  b.website_main = "index.html"
  b.website_404 = "not_found.html"
  b.cors.add_rule ["http://example.org", "https://example.org"],
                   "*",
                   response_headers: ["X-My-Custom-Header"],
                   max_age: 300
end

Parameters:

  • bucket_name (String)

    Name of a bucket.

  • acl (String) (defaults to: nil)

    Apply a predefined set of access controls to this bucket.

    Acceptable values are:

    • ‘auth`, `auth_read`, `authenticated`, `authenticated_read`, `authenticatedRead` - Project team owners get OWNER access, and allAuthenticatedUsers get READER access.

    • ‘private` - Project team owners get OWNER access.

    • ‘project_private`, `projectPrivate` - Project team members get access according to their roles.

    • ‘public`, `public_read`, `publicRead` - Project team owners get OWNER access, and allUsers get READER access.

    • ‘public_write`, `publicReadWrite` - Project team owners get OWNER access, and allUsers get WRITER access.

  • default_acl (String) (defaults to: nil)

    Apply a predefined set of default object access controls to this bucket.

    Acceptable values are:

    • ‘auth`, `auth_read`, `authenticated`, `authenticated_read`, `authenticatedRead` - File owner gets OWNER access, and allAuthenticatedUsers get READER access.

    • ‘owner_full`, `bucketOwnerFullControl` - File owner gets OWNER access, and project team owners get OWNER access.

    • ‘owner_read`, `bucketOwnerRead` - File owner gets OWNER access, and project team owners get READER access.

    • ‘private` - File owner gets OWNER access.

    • ‘project_private`, `projectPrivate` - File owner gets OWNER access, and project team members get access according to their roles.

    • ‘public`, `public_read`, `publicRead` - File owner gets OWNER access, and allUsers get READER access.

  • location (String) (defaults to: nil)

    The location of the bucket. Object data for objects in the bucket resides in physical storage within this region. Possible values include ‘ASIA`, `EU`, and `US`. (See the [developer’s guide](cloud.google.com/storage/docs/bucket-locations) for the authoritative list. The default value is ‘US`.

  • logging_bucket (String) (defaults to: nil)

    The destination bucket for the bucket’s logs. For more information, see [Access Logs](cloud.google.com/storage/docs/access-logs).

  • logging_prefix (String) (defaults to: nil)

    The prefix used to create log object names for the bucket. It can be at most 900 characters and must be a [valid object name](cloud.google.com/storage/docs/bucket-naming#objectnames) . By default, the object prefix is the name of the bucket for which the logs are enabled. For more information, see [Access Logs](cloud.google.com/storage/docs/access-logs).

  • storage_class (Symbol, String) (defaults to: nil)

    Defines how objects in the bucket are stored and determines the SLA and the cost of storage. Values include ‘:multi_regional`, `:regional`, `:nearline`, `:coldline`, `:standard`, and `:dra` (Durable Reduced Availability), as well as the strings returned by Bucket#storage_class. For more information, see [Storage Classes](cloud.google.com/storage/docs/storage-classes). The default value is `:standard`, which is equivalent to `:multi_regional` or `:regional` depending on the bucket’s location settings.

  • versioning (Boolean) (defaults to: nil)

    Whether [Object Versioning](cloud.google.com/storage/docs/object-versioning) is to be enabled for the bucket. The default value is ‘false`.

  • website_main (String) (defaults to: nil)

    The index page returned from a static website served from the bucket when a site visitor requests the top level directory. For more information, see [How to Host a Static Website ](cloud.google.com/storage/docs/website-configuration#step4).

  • website_404 (String) (defaults to: nil)

    The page returned from a static website served from the bucket when a site visitor requests a resource that does not exist. For more information, see [How to Host a Static Website ](cloud.google.com/storage/docs/website-configuration#step4).

Yields:

  • (bucket)

    a block for configuring the bucket before it is created

Yield Parameters:

  • cors (Bucket)

    the bucket object to be configured

Returns:

See Also:



279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
# File 'lib/google/cloud/storage/project.rb', line 279

def create_bucket bucket_name, acl: nil, default_acl: nil,
                  location: nil, storage_class: nil,
                  logging_bucket: nil, logging_prefix: nil,
                  website_main: nil, website_404: nil, versioning: nil
  new_bucket = Google::Apis::StorageV1::Bucket.new({
    name: bucket_name,
    location: location,
    storage_class: storage_class_for(storage_class)
  }.delete_if { |_, v| v.nil? })
  updater = Bucket::Updater.new(new_bucket).tap do |b|
    b.logging_bucket = logging_bucket unless logging_bucket.nil?
    b.logging_prefix = logging_prefix unless logging_prefix.nil?
    b.website_main = website_main unless website_main.nil?
    b.website_404 = website_404 unless website_404.nil?
    b.versioning = versioning unless versioning.nil?
  end
  yield updater if block_given?
  updater.check_for_mutable_cors!
  gapi = service.insert_bucket \
    new_bucket, acl: acl_rule(acl), default_acl: acl_rule(default_acl)
  Bucket.from_gapi gapi, service
end

#projectObject

The Storage project connected to.

Examples:

require "google/cloud/storage"

storage = Google::Cloud::Storage.new(
  project: "my-todo-project",
  keyfile: "/path/to/keyfile.json"
)

storage.project #=> "my-todo-project"


75
76
77
# File 'lib/google/cloud/storage/project.rb', line 75

def project
  service.project
end