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.
34 35 36 37 38 39 40 41 |
# File 'lib/aws/s3/bucket.rb', line 34 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.
44 45 46 |
# File 'lib/aws/s3/bucket.rb', line 44 def name @name end |
Instance Method Details
#==(other) ⇒ Boolean
Returns true if the two buckets have the same name.
131 132 133 |
# File 'lib/aws/s3/bucket.rb', line 131 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
198 199 200 201 202 203 |
# File 'lib/aws/s3/bucket.rb', line 198 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.
215 216 217 218 |
# File 'lib/aws/s3/bucket.rb', line 215 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.
297 298 299 |
# File 'lib/aws/s3/bucket.rb', line 297 def as_tree = {} objects.as_tree() end |
#delete ⇒ nil
the bucket must be empty.
Deletes the current bucket.
107 108 109 110 |
# File 'lib/aws/s3/bucket.rb', line 107 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.
115 116 117 118 |
# File 'lib/aws/s3/bucket.rb', line 115 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).
58 59 60 |
# File 'lib/aws/s3/bucket.rb', line 58 def empty? versions.first ? false : true end |
#enable_versioning ⇒ nil
Enables versioning on this bucket.
70 71 72 73 74 75 |
# File 'lib/aws/s3/bucket.rb', line 70 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
136 137 138 |
# File 'lib/aws/s3/bucket.rb', line 136 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.
143 144 145 146 147 148 149 150 151 152 153 154 155 |
# File 'lib/aws/s3/bucket.rb', line 143 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.
64 65 66 |
# File 'lib/aws/s3/bucket.rb', line 64 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.
171 172 173 |
# File 'lib/aws/s3/bucket.rb', line 171 def multipart_uploads MultipartUploadCollection.new(self) end |
#objects ⇒ ObjectCollection
Returns Represents all objects(keys) in this bucket.
159 160 161 |
# File 'lib/aws/s3/bucket.rb', line 159 def objects ObjectCollection.new(self) end |
#owner ⇒ String
Returns bucket owner id.
121 122 123 |
# File 'lib/aws/s3/bucket.rb', line 121 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.
259 260 261 262 263 264 265 266 |
# File 'lib/aws/s3/bucket.rb', line 259 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.
275 276 277 278 |
# File 'lib/aws/s3/bucket.rb', line 275 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.
305 306 307 |
# File 'lib/aws/s3/bucket.rb', line 305 def presigned_post( = {}) PresignedPost.new(self, ) end |
#suspend_versioning ⇒ nil
Suspends versioning on this bucket.
79 80 81 82 83 84 |
# File 'lib/aws/s3/bucket.rb', line 79 def suspend_versioning client.set_bucket_versioning( :bucket_name => @name, :state => :suspended) nil end |
#url ⇒ String
Returns the url for this bucket.
48 49 50 51 52 53 54 |
# File 'lib/aws/s3/bucket.rb', line 48 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.
87 88 89 |
# File 'lib/aws/s3/bucket.rb', line 87 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
99 100 101 |
# File 'lib/aws/s3/bucket.rb', line 99 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.
165 166 167 |
# File 'lib/aws/s3/bucket.rb', line 165 def versions BucketVersionCollection.new(self) end |