Class: AWS::S3::Bucket
- Inherits:
-
Object
- Object
- AWS::S3::Bucket
- Defined in:
- lib/aws/s3/bucket.rb
Overview
Represents a single S3 bucket.
Instance Attribute Summary collapse
-
#name ⇒ String
readonly
The bucket name.
Instance Method Summary collapse
-
#==(other) ⇒ Boolean
Returns true if the two buckets have the same name.
-
#acl ⇒ AccessControlList
Returns the bucket’s access control list.
-
#acl=(acl) ⇒ nil
Sets the bucket’s access control list.
-
#as_tree(options = {}) ⇒ Tree
Returns a tree that allows you to expose the bucket contents like a directory structure.
-
#delete ⇒ nil
Deletes the current bucket.
-
#delete! ⇒ nil
Deletes any objects and versions which may be in the bucket, then deletes the bucket.
-
#empty? ⇒ Boolean
Returns true if the bucket has no objects (this includes versioned objects that are delete markers).
-
#enable_versioning ⇒ nil
Enables versioning on this bucket.
-
#eql?(other_bucket) ⇒ Boolean
Returns true if the two buckets have the same name.
-
#exists? ⇒ Boolean
Returns true if the bucket exists in S3.
-
#initialize(name, options = {}) ⇒ Bucket
constructor
A new instance of Bucket.
-
#location_constraint ⇒ String?
Returns the location constraint for a bucket (if it has one), nil otherwise.
-
#multipart_uploads ⇒ MultipartUploadCollection
Represents all of the multipart uploads that are in progress for this bucket.
-
#objects ⇒ ObjectCollection
Represents all objects(keys) in this bucket.
-
#owner ⇒ String
Bucket owner id.
-
#policy ⇒ Policy?
Returns the bucket policy.
-
#policy=(policy) ⇒ nil
Sets the bucket’s policy.
-
#presigned_post(options = {}) ⇒ Object
Generates fields for a presigned POST to this object.
-
#suspend_versioning ⇒ nil
Suspends versioning on this bucket.
-
#url ⇒ String
Returns the url for this bucket.
-
#versioning_enabled? ⇒ Boolean
(also: #versioned?)
Returns
true
if version is enabled on this bucket. -
#versioning_state ⇒ Symbol
Returns the versioning status for this bucket.
-
#versions ⇒ BucketVersionCollection
Represents all of the versioned objects stored in this bucket.
Constructor Details
#initialize(name, options = {}) ⇒ Bucket
Returns a new instance of Bucket.
42 43 44 45 46 47 48 49 |
# File 'lib/aws/s3/bucket.rb', line 42 def initialize(name, = {}) # the S3 docs disagree with what the service allows, # so it's not safe to toss out invalid bucket names # S3::Client.validate_bucket_name!(name) @name = name @owner = [:owner] super end |
Instance Attribute Details
#name ⇒ String (readonly)
Returns The bucket name.
52 53 54 |
# File 'lib/aws/s3/bucket.rb', line 52 def name @name end |
Instance Method Details
#==(other) ⇒ Boolean
Returns true if the two buckets have the same name.
139 140 141 |
# File 'lib/aws/s3/bucket.rb', line 139 def ==(other) other.kind_of?(Bucket) && other.name == name end |
#acl ⇒ AccessControlList
Returns the bucket’s access control list. This will be an instance of AccessControlList, plus an additional change
method:
bucket.acl.change do |acl|
acl.grants.reject! do |g|
g.grantee.canonical_user_id != bucket.owner.id
end
end
206 207 208 209 210 211 |
# File 'lib/aws/s3/bucket.rb', line 206 def acl acl = client.get_bucket_acl(:bucket_name => name).acl acl.extend ACLProxy acl.bucket = self acl end |
#acl=(acl) ⇒ nil
Sets the bucket’s access control list. acl
can be:
-
An XML policy as a string (which is passed to S3 uninterpreted)
-
An AccessControlList object
-
Any object that responds to
to_xml
-
Any Hash that is acceptable as an argument to AccessControlList#initialize.
223 224 225 226 |
# File 'lib/aws/s3/bucket.rb', line 223 def acl=(acl) client.set_bucket_acl(:bucket_name => name, :acl => acl) nil end |
#as_tree(options = {}) ⇒ Tree
Returns a tree that allows you to expose the bucket contents like a directory structure.
305 306 307 |
# File 'lib/aws/s3/bucket.rb', line 305 def as_tree = {} objects.as_tree() end |
#delete ⇒ nil
the bucket must be empty.
Deletes the current bucket.
115 116 117 118 |
# File 'lib/aws/s3/bucket.rb', line 115 def delete client.delete_bucket(:bucket_name => @name) nil end |
#delete! ⇒ nil
Deletes any objects and versions which may be in the bucket, then deletes the bucket.
123 124 125 126 |
# File 'lib/aws/s3/bucket.rb', line 123 def delete! versions.each{|version| version.delete } delete end |
#empty? ⇒ Boolean
Returns true if the bucket has no objects (this includes versioned objects that are delete markers).
66 67 68 |
# File 'lib/aws/s3/bucket.rb', line 66 def empty? versions.first ? false : true end |
#enable_versioning ⇒ nil
Enables versioning on this bucket.
78 79 80 81 82 83 |
# File 'lib/aws/s3/bucket.rb', line 78 def enable_versioning client.set_bucket_versioning( :bucket_name => @name, :state => :enabled) nil end |
#eql?(other_bucket) ⇒ Boolean
Returns true if the two buckets have the same name
144 145 146 |
# File 'lib/aws/s3/bucket.rb', line 144 def eql?(other_bucket) self == other_bucket end |
#exists? ⇒ Boolean
This method only indicates if there is a bucket in S3, not if you have permissions to work with the bucket or not.
Returns true if the bucket exists in S3.
151 152 153 154 155 156 157 158 159 160 161 162 163 |
# File 'lib/aws/s3/bucket.rb', line 151 def exists? begin versioned? # makes a get bucket request without listing contents # raises a client error if the bucket doesn't exist or # if you don't have permission to get the bucket # versioning status. true rescue Errors::NoSuchBucket => e false # bucket does not exist rescue Errors::ClientError => e true # bucket exists end end |
#location_constraint ⇒ String?
Returns the location constraint for a bucket (if it has one), nil otherwise.
72 73 74 |
# File 'lib/aws/s3/bucket.rb', line 72 def location_constraint client.get_bucket_location(:bucket_name => name).location_constraint end |
#multipart_uploads ⇒ MultipartUploadCollection
Returns Represents all of the multipart uploads that are in progress for this bucket.
179 180 181 |
# File 'lib/aws/s3/bucket.rb', line 179 def multipart_uploads MultipartUploadCollection.new(self) end |
#objects ⇒ ObjectCollection
Returns Represents all objects(keys) in this bucket.
167 168 169 |
# File 'lib/aws/s3/bucket.rb', line 167 def objects ObjectCollection.new(self) end |
#owner ⇒ String
Returns bucket owner id.
129 130 131 |
# File 'lib/aws/s3/bucket.rb', line 129 def owner @owner || client.list_buckets.owner end |
#policy ⇒ Policy?
Returns the bucket policy. This will be an instance of Policy. The returned policy will also have the methods of PolicyProxy mixed in, so you can use it to change the current policy or delete it, for example:
if policy = bucket.policy
# add a statement
policy.change do |p|
p.allow(...)
end
# delete the policy
policy.delete
end
Note that changing the policy is not an atomic operation; it fetches the current policy, yields it to the block, and then sets it again. Therefore, it’s possible that you may overwrite a concurrent update to the policy using this method.
267 268 269 270 271 272 273 274 |
# File 'lib/aws/s3/bucket.rb', line 267 def policy policy = client.get_bucket_policy(:bucket_name => name).policy policy.extend(PolicyProxy) policy.bucket = self policy rescue Errors::NoSuchBucketPolicy => e nil end |
#policy=(policy) ⇒ nil
Sets the bucket’s policy.
283 284 285 286 |
# File 'lib/aws/s3/bucket.rb', line 283 def policy=(policy) client.set_bucket_policy(:bucket_name => name, :policy => policy) nil end |
#presigned_post(options = {}) ⇒ Object
Generates fields for a presigned POST to this object. All options are sent to the PresignedPost constructor.
313 314 315 |
# File 'lib/aws/s3/bucket.rb', line 313 def presigned_post( = {}) PresignedPost.new(self, ) end |
#suspend_versioning ⇒ nil
Suspends versioning on this bucket.
87 88 89 90 91 92 |
# File 'lib/aws/s3/bucket.rb', line 87 def suspend_versioning client.set_bucket_versioning( :bucket_name => @name, :state => :suspended) nil end |
#url ⇒ String
Returns the url for this bucket.
56 57 58 59 60 61 62 |
# File 'lib/aws/s3/bucket.rb', line 56 def url if client.dns_compatible_bucket_name?(name) "http://#{name}.s3.amazonaws.com/" else "http://s3.amazonaws.com/#{name}/" end end |
#versioning_enabled? ⇒ Boolean Also known as: versioned?
Returns true
if version is enabled on this bucket.
95 96 97 |
# File 'lib/aws/s3/bucket.rb', line 95 def versioning_enabled? versioning_state == :enabled end |
#versioning_state ⇒ Symbol
Returns the versioning status for this bucket. States include:
-
:enabled
- currently enabled -
:suspended
- currently suspended -
:unversioned
- versioning has never been enabled
107 108 109 |
# File 'lib/aws/s3/bucket.rb', line 107 def versioning_state client.get_bucket_versioning(:bucket_name => @name).status end |
#versions ⇒ BucketVersionCollection
Returns Represents all of the versioned objects stored in this bucket.
173 174 175 |
# File 'lib/aws/s3/bucket.rb', line 173 def versions BucketVersionCollection.new(self) end |