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 Method Summary collapse

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 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"],
                   "*",
                   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 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.

  • 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 . By default, the object prefix is the name of the bucket for which the logs are enabled. For more information, see 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. 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 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 .

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

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