aws-sdk-s3 1.75.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/lib/aws-sdk-s3.rb +73 -0
- data/lib/aws-sdk-s3/bucket.rb +861 -0
- data/lib/aws-sdk-s3/bucket_acl.rb +277 -0
- data/lib/aws-sdk-s3/bucket_cors.rb +262 -0
- data/lib/aws-sdk-s3/bucket_lifecycle.rb +264 -0
- data/lib/aws-sdk-s3/bucket_lifecycle_configuration.rb +283 -0
- data/lib/aws-sdk-s3/bucket_logging.rb +251 -0
- data/lib/aws-sdk-s3/bucket_notification.rb +293 -0
- data/lib/aws-sdk-s3/bucket_policy.rb +242 -0
- data/lib/aws-sdk-s3/bucket_region_cache.rb +81 -0
- data/lib/aws-sdk-s3/bucket_request_payment.rb +236 -0
- data/lib/aws-sdk-s3/bucket_tagging.rb +251 -0
- data/lib/aws-sdk-s3/bucket_versioning.rb +312 -0
- data/lib/aws-sdk-s3/bucket_website.rb +292 -0
- data/lib/aws-sdk-s3/client.rb +11818 -0
- data/lib/aws-sdk-s3/client_api.rb +3014 -0
- data/lib/aws-sdk-s3/customizations.rb +34 -0
- data/lib/aws-sdk-s3/customizations/bucket.rb +162 -0
- data/lib/aws-sdk-s3/customizations/multipart_upload.rb +44 -0
- data/lib/aws-sdk-s3/customizations/object.rb +389 -0
- data/lib/aws-sdk-s3/customizations/object_summary.rb +85 -0
- data/lib/aws-sdk-s3/customizations/types/list_object_versions_output.rb +13 -0
- data/lib/aws-sdk-s3/encryption.rb +21 -0
- data/lib/aws-sdk-s3/encryption/client.rb +375 -0
- data/lib/aws-sdk-s3/encryption/decrypt_handler.rb +190 -0
- data/lib/aws-sdk-s3/encryption/default_cipher_provider.rb +65 -0
- data/lib/aws-sdk-s3/encryption/default_key_provider.rb +40 -0
- data/lib/aws-sdk-s3/encryption/encrypt_handler.rb +61 -0
- data/lib/aws-sdk-s3/encryption/errors.rb +15 -0
- data/lib/aws-sdk-s3/encryption/io_auth_decrypter.rb +58 -0
- data/lib/aws-sdk-s3/encryption/io_decrypter.rb +36 -0
- data/lib/aws-sdk-s3/encryption/io_encrypter.rb +71 -0
- data/lib/aws-sdk-s3/encryption/key_provider.rb +31 -0
- data/lib/aws-sdk-s3/encryption/kms_cipher_provider.rb +75 -0
- data/lib/aws-sdk-s3/encryption/materials.rb +60 -0
- data/lib/aws-sdk-s3/encryption/utils.rb +81 -0
- data/lib/aws-sdk-s3/encryptionV2/client.rb +388 -0
- data/lib/aws-sdk-s3/encryptionV2/decrypt_handler.rb +198 -0
- data/lib/aws-sdk-s3/encryptionV2/default_cipher_provider.rb +103 -0
- data/lib/aws-sdk-s3/encryptionV2/default_key_provider.rb +38 -0
- data/lib/aws-sdk-s3/encryptionV2/encrypt_handler.rb +66 -0
- data/lib/aws-sdk-s3/encryptionV2/errors.rb +13 -0
- data/lib/aws-sdk-s3/encryptionV2/io_auth_decrypter.rb +56 -0
- data/lib/aws-sdk-s3/encryptionV2/io_decrypter.rb +35 -0
- data/lib/aws-sdk-s3/encryptionV2/io_encrypter.rb +71 -0
- data/lib/aws-sdk-s3/encryptionV2/key_provider.rb +29 -0
- data/lib/aws-sdk-s3/encryptionV2/kms_cipher_provider.rb +99 -0
- data/lib/aws-sdk-s3/encryptionV2/materials.rb +58 -0
- data/lib/aws-sdk-s3/encryptionV2/utils.rb +116 -0
- data/lib/aws-sdk-s3/encryption_v2.rb +20 -0
- data/lib/aws-sdk-s3/errors.rb +115 -0
- data/lib/aws-sdk-s3/event_streams.rb +69 -0
- data/lib/aws-sdk-s3/file_downloader.rb +142 -0
- data/lib/aws-sdk-s3/file_part.rb +78 -0
- data/lib/aws-sdk-s3/file_uploader.rb +70 -0
- data/lib/aws-sdk-s3/legacy_signer.rb +189 -0
- data/lib/aws-sdk-s3/multipart_file_uploader.rb +227 -0
- data/lib/aws-sdk-s3/multipart_stream_uploader.rb +173 -0
- data/lib/aws-sdk-s3/multipart_upload.rb +401 -0
- data/lib/aws-sdk-s3/multipart_upload_error.rb +18 -0
- data/lib/aws-sdk-s3/multipart_upload_part.rb +423 -0
- data/lib/aws-sdk-s3/object.rb +1422 -0
- data/lib/aws-sdk-s3/object_acl.rb +333 -0
- data/lib/aws-sdk-s3/object_copier.rb +101 -0
- data/lib/aws-sdk-s3/object_multipart_copier.rb +182 -0
- data/lib/aws-sdk-s3/object_summary.rb +1181 -0
- data/lib/aws-sdk-s3/object_version.rb +550 -0
- data/lib/aws-sdk-s3/plugins/accelerate.rb +87 -0
- data/lib/aws-sdk-s3/plugins/bucket_arn.rb +212 -0
- data/lib/aws-sdk-s3/plugins/bucket_dns.rb +91 -0
- data/lib/aws-sdk-s3/plugins/bucket_name_restrictions.rb +45 -0
- data/lib/aws-sdk-s3/plugins/dualstack.rb +74 -0
- data/lib/aws-sdk-s3/plugins/expect_100_continue.rb +28 -0
- data/lib/aws-sdk-s3/plugins/get_bucket_location_fix.rb +25 -0
- data/lib/aws-sdk-s3/plugins/http_200_errors.rb +55 -0
- data/lib/aws-sdk-s3/plugins/iad_regional_endpoint.rb +62 -0
- data/lib/aws-sdk-s3/plugins/location_constraint.rb +35 -0
- data/lib/aws-sdk-s3/plugins/md5s.rb +84 -0
- data/lib/aws-sdk-s3/plugins/redirects.rb +45 -0
- data/lib/aws-sdk-s3/plugins/s3_host_id.rb +30 -0
- data/lib/aws-sdk-s3/plugins/s3_signer.rb +222 -0
- data/lib/aws-sdk-s3/plugins/sse_cpk.rb +70 -0
- data/lib/aws-sdk-s3/plugins/streaming_retry.rb +118 -0
- data/lib/aws-sdk-s3/plugins/url_encoded_keys.rb +97 -0
- data/lib/aws-sdk-s3/presigned_post.rb +686 -0
- data/lib/aws-sdk-s3/presigner.rb +253 -0
- data/lib/aws-sdk-s3/resource.rb +117 -0
- data/lib/aws-sdk-s3/types.rb +13154 -0
- data/lib/aws-sdk-s3/waiters.rb +243 -0
- metadata +184 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 75f8d275e892e31dfb80d004f49fb465fc4388e92f20e2827089d5dc76e0d821
|
|
4
|
+
data.tar.gz: 1f84cba631bb2e6a81d07ea671fec120d6bf33dcbfe6e427de26444c36627cf8
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: f034970098a597fd9d6eeb87a8a82c1ed30ff918ca292b1a0a3f380f08e5b8f504ec619b1763312720f1b28e1df6ba7b56c0bac19dc09c9923bc21aa8be189d1
|
|
7
|
+
data.tar.gz: 0bb581e24c1e3d0fa6306c574146f7ef1e85ff949911d7917c0f4cf8cf85b364cf8b0210ed2ba54a85ec5838a463368ede8f978846e123f79f78e92e3fffd4c9
|
data/lib/aws-sdk-s3.rb
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# WARNING ABOUT GENERATED CODE
|
|
4
|
+
#
|
|
5
|
+
# This file is generated. See the contributing guide for more information:
|
|
6
|
+
# https://github.com/aws/aws-sdk-ruby/blob/master/CONTRIBUTING.md
|
|
7
|
+
#
|
|
8
|
+
# WARNING ABOUT GENERATED CODE
|
|
9
|
+
|
|
10
|
+
require 'aws-sdk-kms'
|
|
11
|
+
require 'aws-sigv4'
|
|
12
|
+
require 'aws-sdk-core'
|
|
13
|
+
|
|
14
|
+
require_relative 'aws-sdk-s3/types'
|
|
15
|
+
require_relative 'aws-sdk-s3/client_api'
|
|
16
|
+
require_relative 'aws-sdk-s3/client'
|
|
17
|
+
require_relative 'aws-sdk-s3/errors'
|
|
18
|
+
require_relative 'aws-sdk-s3/waiters'
|
|
19
|
+
require_relative 'aws-sdk-s3/resource'
|
|
20
|
+
require_relative 'aws-sdk-s3/bucket'
|
|
21
|
+
require_relative 'aws-sdk-s3/bucket_acl'
|
|
22
|
+
require_relative 'aws-sdk-s3/bucket_cors'
|
|
23
|
+
require_relative 'aws-sdk-s3/bucket_lifecycle'
|
|
24
|
+
require_relative 'aws-sdk-s3/bucket_lifecycle_configuration'
|
|
25
|
+
require_relative 'aws-sdk-s3/bucket_logging'
|
|
26
|
+
require_relative 'aws-sdk-s3/bucket_notification'
|
|
27
|
+
require_relative 'aws-sdk-s3/bucket_policy'
|
|
28
|
+
require_relative 'aws-sdk-s3/bucket_request_payment'
|
|
29
|
+
require_relative 'aws-sdk-s3/bucket_tagging'
|
|
30
|
+
require_relative 'aws-sdk-s3/bucket_versioning'
|
|
31
|
+
require_relative 'aws-sdk-s3/bucket_website'
|
|
32
|
+
require_relative 'aws-sdk-s3/multipart_upload'
|
|
33
|
+
require_relative 'aws-sdk-s3/multipart_upload_part'
|
|
34
|
+
require_relative 'aws-sdk-s3/object'
|
|
35
|
+
require_relative 'aws-sdk-s3/object_acl'
|
|
36
|
+
require_relative 'aws-sdk-s3/object_summary'
|
|
37
|
+
require_relative 'aws-sdk-s3/object_version'
|
|
38
|
+
require_relative 'aws-sdk-s3/customizations'
|
|
39
|
+
require_relative 'aws-sdk-s3/event_streams'
|
|
40
|
+
|
|
41
|
+
# This module provides support for Amazon Simple Storage Service. This module is available in the
|
|
42
|
+
# `aws-sdk-s3` gem.
|
|
43
|
+
#
|
|
44
|
+
# # Client
|
|
45
|
+
#
|
|
46
|
+
# The {Client} class provides one method for each API operation. Operation
|
|
47
|
+
# methods each accept a hash of request parameters and return a response
|
|
48
|
+
# structure.
|
|
49
|
+
#
|
|
50
|
+
# s3 = Aws::S3::Client.new
|
|
51
|
+
# resp = s3.abort_multipart_upload(params)
|
|
52
|
+
#
|
|
53
|
+
# See {Client} for more information.
|
|
54
|
+
#
|
|
55
|
+
# # Errors
|
|
56
|
+
#
|
|
57
|
+
# Errors returned from Amazon Simple Storage Service are defined in the
|
|
58
|
+
# {Errors} module and all extend {Errors::ServiceError}.
|
|
59
|
+
#
|
|
60
|
+
# begin
|
|
61
|
+
# # do stuff
|
|
62
|
+
# rescue Aws::S3::Errors::ServiceError
|
|
63
|
+
# # rescues all Amazon Simple Storage Service API errors
|
|
64
|
+
# end
|
|
65
|
+
#
|
|
66
|
+
# See {Errors} for more information.
|
|
67
|
+
#
|
|
68
|
+
# @service
|
|
69
|
+
module Aws::S3
|
|
70
|
+
|
|
71
|
+
GEM_VERSION = '1.75.0'
|
|
72
|
+
|
|
73
|
+
end
|
|
@@ -0,0 +1,861 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# WARNING ABOUT GENERATED CODE
|
|
4
|
+
#
|
|
5
|
+
# This file is generated. See the contributing guide for more information:
|
|
6
|
+
# https://github.com/aws/aws-sdk-ruby/blob/master/CONTRIBUTING.md
|
|
7
|
+
#
|
|
8
|
+
# WARNING ABOUT GENERATED CODE
|
|
9
|
+
|
|
10
|
+
module Aws::S3
|
|
11
|
+
|
|
12
|
+
class Bucket
|
|
13
|
+
|
|
14
|
+
extend Aws::Deprecations
|
|
15
|
+
|
|
16
|
+
# @overload def initialize(name, options = {})
|
|
17
|
+
# @param [String] name
|
|
18
|
+
# @option options [Client] :client
|
|
19
|
+
# @overload def initialize(options = {})
|
|
20
|
+
# @option options [required, String] :name
|
|
21
|
+
# @option options [Client] :client
|
|
22
|
+
def initialize(*args)
|
|
23
|
+
options = Hash === args.last ? args.pop.dup : {}
|
|
24
|
+
@name = extract_name(args, options)
|
|
25
|
+
@data = options.delete(:data)
|
|
26
|
+
@client = options.delete(:client) || Client.new(options)
|
|
27
|
+
@waiter_block_warned = false
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# @!group Read-Only Attributes
|
|
31
|
+
|
|
32
|
+
# @return [String]
|
|
33
|
+
def name
|
|
34
|
+
@name
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
# Date the bucket was created.
|
|
38
|
+
# @return [Time]
|
|
39
|
+
def creation_date
|
|
40
|
+
data[:creation_date]
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# @!endgroup
|
|
44
|
+
|
|
45
|
+
# @return [Client]
|
|
46
|
+
def client
|
|
47
|
+
@client
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# @raise [NotImplementedError]
|
|
51
|
+
# @api private
|
|
52
|
+
def load
|
|
53
|
+
msg = "#load is not implemented, data only available via enumeration"
|
|
54
|
+
raise NotImplementedError, msg
|
|
55
|
+
end
|
|
56
|
+
alias :reload :load
|
|
57
|
+
|
|
58
|
+
# @raise [NotImplementedError] Raises when {#data_loaded?} is `false`.
|
|
59
|
+
# @return [Types::Bucket]
|
|
60
|
+
# Returns the data for this {Bucket}.
|
|
61
|
+
def data
|
|
62
|
+
load unless @data
|
|
63
|
+
@data
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
# @return [Boolean]
|
|
67
|
+
# Returns `true` if this resource is loaded. Accessing attributes or
|
|
68
|
+
# {#data} on an unloaded resource will trigger a call to {#load}.
|
|
69
|
+
def data_loaded?
|
|
70
|
+
!!@data
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
# @param [Hash] options ({})
|
|
74
|
+
# @return [Boolean]
|
|
75
|
+
# Returns `true` if the Bucket exists.
|
|
76
|
+
def exists?(options = {})
|
|
77
|
+
begin
|
|
78
|
+
wait_until_exists(options.merge(max_attempts: 1))
|
|
79
|
+
true
|
|
80
|
+
rescue Aws::Waiters::Errors::UnexpectedError => e
|
|
81
|
+
raise e.error
|
|
82
|
+
rescue Aws::Waiters::Errors::WaiterFailed
|
|
83
|
+
false
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
# @param [Hash] options ({})
|
|
88
|
+
# @option options [Integer] :max_attempts (20)
|
|
89
|
+
# @option options [Float] :delay (5)
|
|
90
|
+
# @option options [Proc] :before_attempt
|
|
91
|
+
# @option options [Proc] :before_wait
|
|
92
|
+
# @return [Bucket]
|
|
93
|
+
def wait_until_exists(options = {}, &block)
|
|
94
|
+
options, params = separate_params_and_options(options)
|
|
95
|
+
waiter = Waiters::BucketExists.new(options)
|
|
96
|
+
yield_waiter_and_warn(waiter, &block) if block_given?
|
|
97
|
+
waiter.wait(params.merge(bucket: @name))
|
|
98
|
+
Bucket.new({
|
|
99
|
+
name: @name,
|
|
100
|
+
client: @client
|
|
101
|
+
})
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
# @param [Hash] options ({})
|
|
105
|
+
# @option options [Integer] :max_attempts (20)
|
|
106
|
+
# @option options [Float] :delay (5)
|
|
107
|
+
# @option options [Proc] :before_attempt
|
|
108
|
+
# @option options [Proc] :before_wait
|
|
109
|
+
# @return [Bucket]
|
|
110
|
+
def wait_until_not_exists(options = {}, &block)
|
|
111
|
+
options, params = separate_params_and_options(options)
|
|
112
|
+
waiter = Waiters::BucketNotExists.new(options)
|
|
113
|
+
yield_waiter_and_warn(waiter, &block) if block_given?
|
|
114
|
+
waiter.wait(params.merge(bucket: @name))
|
|
115
|
+
Bucket.new({
|
|
116
|
+
name: @name,
|
|
117
|
+
client: @client
|
|
118
|
+
})
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
# @deprecated Use [Aws::S3::Client] #wait_until instead
|
|
122
|
+
#
|
|
123
|
+
# Waiter polls an API operation until a resource enters a desired
|
|
124
|
+
# state.
|
|
125
|
+
#
|
|
126
|
+
# @note The waiting operation is performed on a copy. The original resource
|
|
127
|
+
# remains unchanged.
|
|
128
|
+
#
|
|
129
|
+
# ## Basic Usage
|
|
130
|
+
#
|
|
131
|
+
# Waiter will polls until it is successful, it fails by
|
|
132
|
+
# entering a terminal state, or until a maximum number of attempts
|
|
133
|
+
# are made.
|
|
134
|
+
#
|
|
135
|
+
# # polls in a loop until condition is true
|
|
136
|
+
# resource.wait_until(options) {|resource| condition}
|
|
137
|
+
#
|
|
138
|
+
# ## Example
|
|
139
|
+
#
|
|
140
|
+
# instance.wait_until(max_attempts:10, delay:5) do |instance|
|
|
141
|
+
# instance.state.name == 'running'
|
|
142
|
+
# end
|
|
143
|
+
#
|
|
144
|
+
# ## Configuration
|
|
145
|
+
#
|
|
146
|
+
# You can configure the maximum number of polling attempts, and the
|
|
147
|
+
# delay (in seconds) between each polling attempt. The waiting condition is
|
|
148
|
+
# set by passing a block to {#wait_until}:
|
|
149
|
+
#
|
|
150
|
+
# # poll for ~25 seconds
|
|
151
|
+
# resource.wait_until(max_attempts:5,delay:5) {|resource|...}
|
|
152
|
+
#
|
|
153
|
+
# ## Callbacks
|
|
154
|
+
#
|
|
155
|
+
# You can be notified before each polling attempt and before each
|
|
156
|
+
# delay. If you throw `:success` or `:failure` from these callbacks,
|
|
157
|
+
# it will terminate the waiter.
|
|
158
|
+
#
|
|
159
|
+
# started_at = Time.now
|
|
160
|
+
# # poll for 1 hour, instead of a number of attempts
|
|
161
|
+
# proc = Proc.new do |attempts, response|
|
|
162
|
+
# throw :failure if Time.now - started_at > 3600
|
|
163
|
+
# end
|
|
164
|
+
#
|
|
165
|
+
# # disable max attempts
|
|
166
|
+
# instance.wait_until(before_wait:proc, max_attempts:nil) {...}
|
|
167
|
+
#
|
|
168
|
+
# ## Handling Errors
|
|
169
|
+
#
|
|
170
|
+
# When a waiter is successful, it returns the Resource. When a waiter
|
|
171
|
+
# fails, it raises an error.
|
|
172
|
+
#
|
|
173
|
+
# begin
|
|
174
|
+
# resource.wait_until(...)
|
|
175
|
+
# rescue Aws::Waiters::Errors::WaiterFailed
|
|
176
|
+
# # resource did not enter the desired state in time
|
|
177
|
+
# end
|
|
178
|
+
#
|
|
179
|
+
# @yieldparam [Resource] resource to be used in the waiting condition.
|
|
180
|
+
#
|
|
181
|
+
# @raise [Aws::Waiters::Errors::FailureStateError] Raised when the waiter
|
|
182
|
+
# terminates because the waiter has entered a state that it will not
|
|
183
|
+
# transition out of, preventing success.
|
|
184
|
+
#
|
|
185
|
+
# yet successful.
|
|
186
|
+
#
|
|
187
|
+
# @raise [Aws::Waiters::Errors::UnexpectedError] Raised when an error is
|
|
188
|
+
# encountered while polling for a resource that is not expected.
|
|
189
|
+
#
|
|
190
|
+
# @raise [NotImplementedError] Raised when the resource does not
|
|
191
|
+
#
|
|
192
|
+
# @option options [Integer] :max_attempts (10) Maximum number of
|
|
193
|
+
# attempts
|
|
194
|
+
# @option options [Integer] :delay (10) Delay between each
|
|
195
|
+
# attempt in seconds
|
|
196
|
+
# @option options [Proc] :before_attempt (nil) Callback
|
|
197
|
+
# invoked before each attempt
|
|
198
|
+
# @option options [Proc] :before_wait (nil) Callback
|
|
199
|
+
# invoked before each wait
|
|
200
|
+
# @return [Resource] if the waiter was successful
|
|
201
|
+
def wait_until(options = {}, &block)
|
|
202
|
+
self_copy = self.dup
|
|
203
|
+
attempts = 0
|
|
204
|
+
options[:max_attempts] = 10 unless options.key?(:max_attempts)
|
|
205
|
+
options[:delay] ||= 10
|
|
206
|
+
options[:poller] = Proc.new do
|
|
207
|
+
attempts += 1
|
|
208
|
+
if block.call(self_copy)
|
|
209
|
+
[:success, self_copy]
|
|
210
|
+
else
|
|
211
|
+
self_copy.reload unless attempts == options[:max_attempts]
|
|
212
|
+
:retry
|
|
213
|
+
end
|
|
214
|
+
end
|
|
215
|
+
Aws::Waiters::Waiter.new(options).wait({})
|
|
216
|
+
end
|
|
217
|
+
|
|
218
|
+
# @!group Actions
|
|
219
|
+
|
|
220
|
+
# @example Request syntax with placeholder values
|
|
221
|
+
#
|
|
222
|
+
# bucket.create({
|
|
223
|
+
# acl: "private", # accepts private, public-read, public-read-write, authenticated-read
|
|
224
|
+
# create_bucket_configuration: {
|
|
225
|
+
# location_constraint: "EU", # accepts EU, eu-west-1, us-west-1, us-west-2, ap-south-1, ap-southeast-1, ap-southeast-2, ap-northeast-1, sa-east-1, cn-north-1, eu-central-1
|
|
226
|
+
# },
|
|
227
|
+
# grant_full_control: "GrantFullControl",
|
|
228
|
+
# grant_read: "GrantRead",
|
|
229
|
+
# grant_read_acp: "GrantReadACP",
|
|
230
|
+
# grant_write: "GrantWrite",
|
|
231
|
+
# grant_write_acp: "GrantWriteACP",
|
|
232
|
+
# object_lock_enabled_for_bucket: false,
|
|
233
|
+
# })
|
|
234
|
+
# @param [Hash] options ({})
|
|
235
|
+
# @option options [String] :acl
|
|
236
|
+
# The canned ACL to apply to the bucket.
|
|
237
|
+
# @option options [Types::CreateBucketConfiguration] :create_bucket_configuration
|
|
238
|
+
# The configuration information for the bucket.
|
|
239
|
+
# @option options [String] :grant_full_control
|
|
240
|
+
# Allows grantee the read, write, read ACP, and write ACP permissions on
|
|
241
|
+
# the bucket.
|
|
242
|
+
# @option options [String] :grant_read
|
|
243
|
+
# Allows grantee to list the objects in the bucket.
|
|
244
|
+
# @option options [String] :grant_read_acp
|
|
245
|
+
# Allows grantee to read the bucket ACL.
|
|
246
|
+
# @option options [String] :grant_write
|
|
247
|
+
# Allows grantee to create, overwrite, and delete any object in the
|
|
248
|
+
# bucket.
|
|
249
|
+
# @option options [String] :grant_write_acp
|
|
250
|
+
# Allows grantee to write the ACL for the applicable bucket.
|
|
251
|
+
# @option options [Boolean] :object_lock_enabled_for_bucket
|
|
252
|
+
# Specifies whether you want S3 Object Lock to be enabled for the new
|
|
253
|
+
# bucket.
|
|
254
|
+
# @return [Types::CreateBucketOutput]
|
|
255
|
+
def create(options = {})
|
|
256
|
+
options = options.merge(bucket: @name)
|
|
257
|
+
resp = @client.create_bucket(options)
|
|
258
|
+
resp.data
|
|
259
|
+
end
|
|
260
|
+
|
|
261
|
+
# @example Request syntax with placeholder values
|
|
262
|
+
#
|
|
263
|
+
# bucket.delete()
|
|
264
|
+
# @param [Hash] options ({})
|
|
265
|
+
# @return [EmptyStructure]
|
|
266
|
+
def delete(options = {})
|
|
267
|
+
options = options.merge(bucket: @name)
|
|
268
|
+
resp = @client.delete_bucket(options)
|
|
269
|
+
resp.data
|
|
270
|
+
end
|
|
271
|
+
|
|
272
|
+
# @example Request syntax with placeholder values
|
|
273
|
+
#
|
|
274
|
+
# bucket.delete_objects({
|
|
275
|
+
# delete: { # required
|
|
276
|
+
# objects: [ # required
|
|
277
|
+
# {
|
|
278
|
+
# key: "ObjectKey", # required
|
|
279
|
+
# version_id: "ObjectVersionId",
|
|
280
|
+
# },
|
|
281
|
+
# ],
|
|
282
|
+
# quiet: false,
|
|
283
|
+
# },
|
|
284
|
+
# mfa: "MFA",
|
|
285
|
+
# request_payer: "requester", # accepts requester
|
|
286
|
+
# bypass_governance_retention: false,
|
|
287
|
+
# })
|
|
288
|
+
# @param [Hash] options ({})
|
|
289
|
+
# @option options [required, Types::Delete] :delete
|
|
290
|
+
# Container for the request.
|
|
291
|
+
# @option options [String] :mfa
|
|
292
|
+
# The concatenation of the authentication device's serial number, a
|
|
293
|
+
# space, and the value that is displayed on your authentication device.
|
|
294
|
+
# Required to permanently delete a versioned object if versioning is
|
|
295
|
+
# configured with MFA delete enabled.
|
|
296
|
+
# @option options [String] :request_payer
|
|
297
|
+
# Confirms that the requester knows that they will be charged for the
|
|
298
|
+
# request. Bucket owners need not specify this parameter in their
|
|
299
|
+
# requests. For information about downloading objects from requester
|
|
300
|
+
# pays buckets, see [Downloading Objects in Requestor Pays Buckets][1]
|
|
301
|
+
# in the *Amazon S3 Developer Guide*.
|
|
302
|
+
#
|
|
303
|
+
#
|
|
304
|
+
#
|
|
305
|
+
# [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
|
|
306
|
+
# @option options [Boolean] :bypass_governance_retention
|
|
307
|
+
# Specifies whether you want to delete this object even if it has a
|
|
308
|
+
# Governance-type Object Lock in place. You must have sufficient
|
|
309
|
+
# permissions to perform this operation.
|
|
310
|
+
# @return [Types::DeleteObjectsOutput]
|
|
311
|
+
def delete_objects(options = {})
|
|
312
|
+
options = options.merge(bucket: @name)
|
|
313
|
+
resp = @client.delete_objects(options)
|
|
314
|
+
resp.data
|
|
315
|
+
end
|
|
316
|
+
|
|
317
|
+
# @example Request syntax with placeholder values
|
|
318
|
+
#
|
|
319
|
+
# object = bucket.put_object({
|
|
320
|
+
# acl: "private", # accepts private, public-read, public-read-write, authenticated-read, aws-exec-read, bucket-owner-read, bucket-owner-full-control
|
|
321
|
+
# body: source_file,
|
|
322
|
+
# cache_control: "CacheControl",
|
|
323
|
+
# content_disposition: "ContentDisposition",
|
|
324
|
+
# content_encoding: "ContentEncoding",
|
|
325
|
+
# content_language: "ContentLanguage",
|
|
326
|
+
# content_length: 1,
|
|
327
|
+
# content_md5: "ContentMD5",
|
|
328
|
+
# content_type: "ContentType",
|
|
329
|
+
# expires: Time.now,
|
|
330
|
+
# grant_full_control: "GrantFullControl",
|
|
331
|
+
# grant_read: "GrantRead",
|
|
332
|
+
# grant_read_acp: "GrantReadACP",
|
|
333
|
+
# grant_write_acp: "GrantWriteACP",
|
|
334
|
+
# key: "ObjectKey", # required
|
|
335
|
+
# metadata: {
|
|
336
|
+
# "MetadataKey" => "MetadataValue",
|
|
337
|
+
# },
|
|
338
|
+
# server_side_encryption: "AES256", # accepts AES256, aws:kms
|
|
339
|
+
# storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE
|
|
340
|
+
# website_redirect_location: "WebsiteRedirectLocation",
|
|
341
|
+
# sse_customer_algorithm: "SSECustomerAlgorithm",
|
|
342
|
+
# sse_customer_key: "SSECustomerKey",
|
|
343
|
+
# sse_customer_key_md5: "SSECustomerKeyMD5",
|
|
344
|
+
# ssekms_key_id: "SSEKMSKeyId",
|
|
345
|
+
# ssekms_encryption_context: "SSEKMSEncryptionContext",
|
|
346
|
+
# request_payer: "requester", # accepts requester
|
|
347
|
+
# tagging: "TaggingHeader",
|
|
348
|
+
# object_lock_mode: "GOVERNANCE", # accepts GOVERNANCE, COMPLIANCE
|
|
349
|
+
# object_lock_retain_until_date: Time.now,
|
|
350
|
+
# object_lock_legal_hold_status: "ON", # accepts ON, OFF
|
|
351
|
+
# })
|
|
352
|
+
# @param [Hash] options ({})
|
|
353
|
+
# @option options [String] :acl
|
|
354
|
+
# The canned ACL to apply to the object. For more information, see
|
|
355
|
+
# [Canned ACL][1].
|
|
356
|
+
#
|
|
357
|
+
#
|
|
358
|
+
#
|
|
359
|
+
# [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL
|
|
360
|
+
# @option options [String, IO] :body
|
|
361
|
+
# Object data.
|
|
362
|
+
# @option options [String] :cache_control
|
|
363
|
+
# Can be used to specify caching behavior along the request/reply chain.
|
|
364
|
+
# For more information, see
|
|
365
|
+
# [http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9][1].
|
|
366
|
+
#
|
|
367
|
+
#
|
|
368
|
+
#
|
|
369
|
+
# [1]: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9
|
|
370
|
+
# @option options [String] :content_disposition
|
|
371
|
+
# Specifies presentational information for the object. For more
|
|
372
|
+
# information, see
|
|
373
|
+
# [http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1][1].
|
|
374
|
+
#
|
|
375
|
+
#
|
|
376
|
+
#
|
|
377
|
+
# [1]: http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1
|
|
378
|
+
# @option options [String] :content_encoding
|
|
379
|
+
# Specifies what content encodings have been applied to the object and
|
|
380
|
+
# thus what decoding mechanisms must be applied to obtain the media-type
|
|
381
|
+
# referenced by the Content-Type header field. For more information, see
|
|
382
|
+
# [http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11][1].
|
|
383
|
+
#
|
|
384
|
+
#
|
|
385
|
+
#
|
|
386
|
+
# [1]: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11
|
|
387
|
+
# @option options [String] :content_language
|
|
388
|
+
# The language the content is in.
|
|
389
|
+
# @option options [Integer] :content_length
|
|
390
|
+
# Size of the body in bytes. This parameter is useful when the size of
|
|
391
|
+
# the body cannot be determined automatically. For more information, see
|
|
392
|
+
# [http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13][1].
|
|
393
|
+
#
|
|
394
|
+
#
|
|
395
|
+
#
|
|
396
|
+
# [1]: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13
|
|
397
|
+
# @option options [String] :content_md5
|
|
398
|
+
# The base64-encoded 128-bit MD5 digest of the message (without the
|
|
399
|
+
# headers) according to RFC 1864. This header can be used as a message
|
|
400
|
+
# integrity check to verify that the data is the same data that was
|
|
401
|
+
# originally sent. Although it is optional, we recommend using the
|
|
402
|
+
# Content-MD5 mechanism as an end-to-end integrity check. For more
|
|
403
|
+
# information about REST request authentication, see [REST
|
|
404
|
+
# Authentication][1].
|
|
405
|
+
#
|
|
406
|
+
#
|
|
407
|
+
#
|
|
408
|
+
# [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html
|
|
409
|
+
# @option options [String] :content_type
|
|
410
|
+
# A standard MIME type describing the format of the contents. For more
|
|
411
|
+
# information, see
|
|
412
|
+
# [http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17][1].
|
|
413
|
+
#
|
|
414
|
+
#
|
|
415
|
+
#
|
|
416
|
+
# [1]: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17
|
|
417
|
+
# @option options [Time,DateTime,Date,Integer,String] :expires
|
|
418
|
+
# The date and time at which the object is no longer cacheable. For more
|
|
419
|
+
# information, see
|
|
420
|
+
# [http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21][1].
|
|
421
|
+
#
|
|
422
|
+
#
|
|
423
|
+
#
|
|
424
|
+
# [1]: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21
|
|
425
|
+
# @option options [String] :grant_full_control
|
|
426
|
+
# Gives the grantee READ, READ\_ACP, and WRITE\_ACP permissions on the
|
|
427
|
+
# object.
|
|
428
|
+
# @option options [String] :grant_read
|
|
429
|
+
# Allows grantee to read the object data and its metadata.
|
|
430
|
+
# @option options [String] :grant_read_acp
|
|
431
|
+
# Allows grantee to read the object ACL.
|
|
432
|
+
# @option options [String] :grant_write_acp
|
|
433
|
+
# Allows grantee to write the ACL for the applicable object.
|
|
434
|
+
# @option options [required, String] :key
|
|
435
|
+
# Object key for which the PUT operation was initiated.
|
|
436
|
+
# @option options [Hash<String,String>] :metadata
|
|
437
|
+
# A map of metadata to store with the object in S3.
|
|
438
|
+
# @option options [String] :server_side_encryption
|
|
439
|
+
# The server-side encryption algorithm used when storing this object in
|
|
440
|
+
# Amazon S3 (for example, AES256, aws:kms).
|
|
441
|
+
# @option options [String] :storage_class
|
|
442
|
+
# If you don't specify, S3 Standard is the default storage class.
|
|
443
|
+
# Amazon S3 supports other storage classes.
|
|
444
|
+
# @option options [String] :website_redirect_location
|
|
445
|
+
# If the bucket is configured as a website, redirects requests for this
|
|
446
|
+
# object to another object in the same bucket or to an external URL.
|
|
447
|
+
# Amazon S3 stores the value of this header in the object metadata. For
|
|
448
|
+
# information about object metadata, see [Object Key and Metadata][1].
|
|
449
|
+
#
|
|
450
|
+
# In the following example, the request header sets the redirect to an
|
|
451
|
+
# object (anotherPage.html) in the same bucket:
|
|
452
|
+
#
|
|
453
|
+
# `x-amz-website-redirect-location: /anotherPage.html`
|
|
454
|
+
#
|
|
455
|
+
# In the following example, the request header sets the object redirect
|
|
456
|
+
# to another website:
|
|
457
|
+
#
|
|
458
|
+
# `x-amz-website-redirect-location: http://www.example.com/`
|
|
459
|
+
#
|
|
460
|
+
# For more information about website hosting in Amazon S3, see [Hosting
|
|
461
|
+
# Websites on Amazon S3][2] and [How to Configure Website Page
|
|
462
|
+
# Redirects][3].
|
|
463
|
+
#
|
|
464
|
+
#
|
|
465
|
+
#
|
|
466
|
+
# [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html
|
|
467
|
+
# [2]: https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html
|
|
468
|
+
# [3]: https://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html
|
|
469
|
+
# @option options [String] :sse_customer_algorithm
|
|
470
|
+
# Specifies the algorithm to use to when encrypting the object (for
|
|
471
|
+
# example, AES256).
|
|
472
|
+
# @option options [String] :sse_customer_key
|
|
473
|
+
# Specifies the customer-provided encryption key for Amazon S3 to use in
|
|
474
|
+
# encrypting data. This value is used to store the object and then it is
|
|
475
|
+
# discarded; Amazon S3 does not store the encryption key. The key must
|
|
476
|
+
# be appropriate for use with the algorithm specified in the
|
|
477
|
+
# `x-amz-server-side-encryption-customer-algorithm` header.
|
|
478
|
+
# @option options [String] :sse_customer_key_md5
|
|
479
|
+
# Specifies the 128-bit MD5 digest of the encryption key according to
|
|
480
|
+
# RFC 1321. Amazon S3 uses this header for a message integrity check to
|
|
481
|
+
# ensure that the encryption key was transmitted without error.
|
|
482
|
+
# @option options [String] :ssekms_key_id
|
|
483
|
+
# If `x-amz-server-side-encryption` is present and has the value of
|
|
484
|
+
# `aws:kms`, this header specifies the ID of the AWS Key Management
|
|
485
|
+
# Service (AWS KMS) symmetrical customer managed customer master key
|
|
486
|
+
# (CMK) that was used for the object.
|
|
487
|
+
#
|
|
488
|
+
# If the value of `x-amz-server-side-encryption` is `aws:kms`, this
|
|
489
|
+
# header specifies the ID of the symmetric customer managed AWS KMS CMK
|
|
490
|
+
# that will be used for the object. If you specify
|
|
491
|
+
# `x-amz-server-side-encryption:aws:kms`, but do not provide`
|
|
492
|
+
# x-amz-server-side-encryption-aws-kms-key-id`, Amazon S3 uses the AWS
|
|
493
|
+
# managed CMK in AWS to protect the data.
|
|
494
|
+
# @option options [String] :ssekms_encryption_context
|
|
495
|
+
# Specifies the AWS KMS Encryption Context to use for object encryption.
|
|
496
|
+
# The value of this header is a base64-encoded UTF-8 string holding JSON
|
|
497
|
+
# with the encryption context key-value pairs.
|
|
498
|
+
# @option options [String] :request_payer
|
|
499
|
+
# Confirms that the requester knows that they will be charged for the
|
|
500
|
+
# request. Bucket owners need not specify this parameter in their
|
|
501
|
+
# requests. For information about downloading objects from requester
|
|
502
|
+
# pays buckets, see [Downloading Objects in Requestor Pays Buckets][1]
|
|
503
|
+
# in the *Amazon S3 Developer Guide*.
|
|
504
|
+
#
|
|
505
|
+
#
|
|
506
|
+
#
|
|
507
|
+
# [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
|
|
508
|
+
# @option options [String] :tagging
|
|
509
|
+
# The tag-set for the object. The tag-set must be encoded as URL Query
|
|
510
|
+
# parameters. (For example, "Key1=Value1")
|
|
511
|
+
# @option options [String] :object_lock_mode
|
|
512
|
+
# The Object Lock mode that you want to apply to this object.
|
|
513
|
+
# @option options [Time,DateTime,Date,Integer,String] :object_lock_retain_until_date
|
|
514
|
+
# The date and time when you want this object's Object Lock to expire.
|
|
515
|
+
# @option options [String] :object_lock_legal_hold_status
|
|
516
|
+
# Specifies whether a legal hold will be applied to this object. For
|
|
517
|
+
# more information about S3 Object Lock, see [Object Lock][1].
|
|
518
|
+
#
|
|
519
|
+
#
|
|
520
|
+
#
|
|
521
|
+
# [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html
|
|
522
|
+
# @return [Object]
|
|
523
|
+
def put_object(options = {})
|
|
524
|
+
options = options.merge(bucket: @name)
|
|
525
|
+
@client.put_object(options)
|
|
526
|
+
Object.new(
|
|
527
|
+
bucket_name: @name,
|
|
528
|
+
key: options[:key],
|
|
529
|
+
client: @client
|
|
530
|
+
)
|
|
531
|
+
end
|
|
532
|
+
|
|
533
|
+
# @!group Associations
|
|
534
|
+
|
|
535
|
+
# @return [BucketAcl]
|
|
536
|
+
def acl
|
|
537
|
+
BucketAcl.new(
|
|
538
|
+
bucket_name: @name,
|
|
539
|
+
client: @client
|
|
540
|
+
)
|
|
541
|
+
end
|
|
542
|
+
|
|
543
|
+
# @return [BucketCors]
|
|
544
|
+
def cors
|
|
545
|
+
BucketCors.new(
|
|
546
|
+
bucket_name: @name,
|
|
547
|
+
client: @client
|
|
548
|
+
)
|
|
549
|
+
end
|
|
550
|
+
|
|
551
|
+
# @return [BucketLifecycle]
|
|
552
|
+
def lifecycle
|
|
553
|
+
BucketLifecycle.new(
|
|
554
|
+
bucket_name: @name,
|
|
555
|
+
client: @client
|
|
556
|
+
)
|
|
557
|
+
end
|
|
558
|
+
|
|
559
|
+
# @return [BucketLifecycleConfiguration]
|
|
560
|
+
def lifecycle_configuration
|
|
561
|
+
BucketLifecycleConfiguration.new(
|
|
562
|
+
bucket_name: @name,
|
|
563
|
+
client: @client
|
|
564
|
+
)
|
|
565
|
+
end
|
|
566
|
+
|
|
567
|
+
# @return [BucketLogging]
|
|
568
|
+
def logging
|
|
569
|
+
BucketLogging.new(
|
|
570
|
+
bucket_name: @name,
|
|
571
|
+
client: @client
|
|
572
|
+
)
|
|
573
|
+
end
|
|
574
|
+
|
|
575
|
+
# @example Request syntax with placeholder values
|
|
576
|
+
#
|
|
577
|
+
# multipart_uploads = bucket.multipart_uploads({
|
|
578
|
+
# delimiter: "Delimiter",
|
|
579
|
+
# encoding_type: "url", # accepts url
|
|
580
|
+
# key_marker: "KeyMarker",
|
|
581
|
+
# prefix: "Prefix",
|
|
582
|
+
# upload_id_marker: "UploadIdMarker",
|
|
583
|
+
# })
|
|
584
|
+
# @param [Hash] options ({})
|
|
585
|
+
# @option options [String] :delimiter
|
|
586
|
+
# Character you use to group keys.
|
|
587
|
+
#
|
|
588
|
+
# All keys that contain the same string between the prefix, if
|
|
589
|
+
# specified, and the first occurrence of the delimiter after the prefix
|
|
590
|
+
# are grouped under a single result element, `CommonPrefixes`. If you
|
|
591
|
+
# don't specify the prefix parameter, then the substring starts at the
|
|
592
|
+
# beginning of the key. The keys that are grouped under `CommonPrefixes`
|
|
593
|
+
# result element are not returned elsewhere in the response.
|
|
594
|
+
# @option options [String] :encoding_type
|
|
595
|
+
# Requests Amazon S3 to encode the object keys in the response and
|
|
596
|
+
# specifies the encoding method to use. An object key may contain any
|
|
597
|
+
# Unicode character; however, XML 1.0 parser cannot parse some
|
|
598
|
+
# characters, such as characters with an ASCII value from 0 to 10. For
|
|
599
|
+
# characters that are not supported in XML 1.0, you can add this
|
|
600
|
+
# parameter to request that Amazon S3 encode the keys in the response.
|
|
601
|
+
# @option options [String] :key_marker
|
|
602
|
+
# Together with upload-id-marker, this parameter specifies the multipart
|
|
603
|
+
# upload after which listing should begin.
|
|
604
|
+
#
|
|
605
|
+
# If `upload-id-marker` is not specified, only the keys
|
|
606
|
+
# lexicographically greater than the specified `key-marker` will be
|
|
607
|
+
# included in the list.
|
|
608
|
+
#
|
|
609
|
+
# If `upload-id-marker` is specified, any multipart uploads for a key
|
|
610
|
+
# equal to the `key-marker` might also be included, provided those
|
|
611
|
+
# multipart uploads have upload IDs lexicographically greater than the
|
|
612
|
+
# specified `upload-id-marker`.
|
|
613
|
+
# @option options [String] :prefix
|
|
614
|
+
# Lists in-progress uploads only for those keys that begin with the
|
|
615
|
+
# specified prefix. You can use prefixes to separate a bucket into
|
|
616
|
+
# different grouping of keys. (You can think of using prefix to make
|
|
617
|
+
# groups in the same way you'd use a folder in a file system.)
|
|
618
|
+
# @option options [String] :upload_id_marker
|
|
619
|
+
# Together with key-marker, specifies the multipart upload after which
|
|
620
|
+
# listing should begin. If key-marker is not specified, the
|
|
621
|
+
# upload-id-marker parameter is ignored. Otherwise, any multipart
|
|
622
|
+
# uploads for a key equal to the key-marker might be included in the
|
|
623
|
+
# list only if they have an upload ID lexicographically greater than the
|
|
624
|
+
# specified `upload-id-marker`.
|
|
625
|
+
# @return [MultipartUpload::Collection]
|
|
626
|
+
def multipart_uploads(options = {})
|
|
627
|
+
batches = Enumerator.new do |y|
|
|
628
|
+
options = options.merge(bucket: @name)
|
|
629
|
+
resp = @client.list_multipart_uploads(options)
|
|
630
|
+
resp.each_page do |page|
|
|
631
|
+
batch = []
|
|
632
|
+
page.data.uploads.each do |u|
|
|
633
|
+
batch << MultipartUpload.new(
|
|
634
|
+
bucket_name: @name,
|
|
635
|
+
object_key: u.key,
|
|
636
|
+
id: u.upload_id,
|
|
637
|
+
data: u,
|
|
638
|
+
client: @client
|
|
639
|
+
)
|
|
640
|
+
end
|
|
641
|
+
y.yield(batch)
|
|
642
|
+
end
|
|
643
|
+
end
|
|
644
|
+
MultipartUpload::Collection.new(batches)
|
|
645
|
+
end
|
|
646
|
+
|
|
647
|
+
# @return [BucketNotification]
|
|
648
|
+
def notification
|
|
649
|
+
BucketNotification.new(
|
|
650
|
+
bucket_name: @name,
|
|
651
|
+
client: @client
|
|
652
|
+
)
|
|
653
|
+
end
|
|
654
|
+
|
|
655
|
+
# @param [String] key
|
|
656
|
+
# @return [Object]
|
|
657
|
+
def object(key)
|
|
658
|
+
Object.new(
|
|
659
|
+
bucket_name: @name,
|
|
660
|
+
key: key,
|
|
661
|
+
client: @client
|
|
662
|
+
)
|
|
663
|
+
end
|
|
664
|
+
|
|
665
|
+
# @example Request syntax with placeholder values
|
|
666
|
+
#
|
|
667
|
+
# object_versions = bucket.object_versions({
|
|
668
|
+
# delimiter: "Delimiter",
|
|
669
|
+
# encoding_type: "url", # accepts url
|
|
670
|
+
# key_marker: "KeyMarker",
|
|
671
|
+
# prefix: "Prefix",
|
|
672
|
+
# version_id_marker: "VersionIdMarker",
|
|
673
|
+
# })
|
|
674
|
+
# @param [Hash] options ({})
|
|
675
|
+
# @option options [String] :delimiter
|
|
676
|
+
# A delimiter is a character that you specify to group keys. All keys
|
|
677
|
+
# that contain the same string between the `prefix` and the first
|
|
678
|
+
# occurrence of the delimiter are grouped under a single result element
|
|
679
|
+
# in CommonPrefixes. These groups are counted as one result against the
|
|
680
|
+
# max-keys limitation. These keys are not returned elsewhere in the
|
|
681
|
+
# response.
|
|
682
|
+
# @option options [String] :encoding_type
|
|
683
|
+
# Requests Amazon S3 to encode the object keys in the response and
|
|
684
|
+
# specifies the encoding method to use. An object key may contain any
|
|
685
|
+
# Unicode character; however, XML 1.0 parser cannot parse some
|
|
686
|
+
# characters, such as characters with an ASCII value from 0 to 10. For
|
|
687
|
+
# characters that are not supported in XML 1.0, you can add this
|
|
688
|
+
# parameter to request that Amazon S3 encode the keys in the response.
|
|
689
|
+
# @option options [String] :key_marker
|
|
690
|
+
# Specifies the key to start with when listing objects in a bucket.
|
|
691
|
+
# @option options [String] :prefix
|
|
692
|
+
# Use this parameter to select only those keys that begin with the
|
|
693
|
+
# specified prefix. You can use prefixes to separate a bucket into
|
|
694
|
+
# different groupings of keys. (You can think of using prefix to make
|
|
695
|
+
# groups in the same way you'd use a folder in a file system.) You can
|
|
696
|
+
# use prefix with delimiter to roll up numerous objects into a single
|
|
697
|
+
# result under CommonPrefixes.
|
|
698
|
+
# @option options [String] :version_id_marker
|
|
699
|
+
# Specifies the object version you want to start listing from.
|
|
700
|
+
# @return [ObjectVersion::Collection]
|
|
701
|
+
def object_versions(options = {})
|
|
702
|
+
batches = Enumerator.new do |y|
|
|
703
|
+
options = options.merge(bucket: @name)
|
|
704
|
+
resp = @client.list_object_versions(options)
|
|
705
|
+
resp.each_page do |page|
|
|
706
|
+
batch = []
|
|
707
|
+
page.data.versions_delete_markers.each do |v|
|
|
708
|
+
batch << ObjectVersion.new(
|
|
709
|
+
bucket_name: @name,
|
|
710
|
+
object_key: v.key,
|
|
711
|
+
id: v.version_id,
|
|
712
|
+
data: v,
|
|
713
|
+
client: @client
|
|
714
|
+
)
|
|
715
|
+
end
|
|
716
|
+
y.yield(batch)
|
|
717
|
+
end
|
|
718
|
+
end
|
|
719
|
+
ObjectVersion::Collection.new(batches)
|
|
720
|
+
end
|
|
721
|
+
|
|
722
|
+
# @example Request syntax with placeholder values
|
|
723
|
+
#
|
|
724
|
+
# objects = bucket.objects({
|
|
725
|
+
# delimiter: "Delimiter",
|
|
726
|
+
# encoding_type: "url", # accepts url
|
|
727
|
+
# prefix: "Prefix",
|
|
728
|
+
# fetch_owner: false,
|
|
729
|
+
# start_after: "StartAfter",
|
|
730
|
+
# request_payer: "requester", # accepts requester
|
|
731
|
+
# })
|
|
732
|
+
# @param [Hash] options ({})
|
|
733
|
+
# @option options [String] :delimiter
|
|
734
|
+
# A delimiter is a character you use to group keys.
|
|
735
|
+
# @option options [String] :encoding_type
|
|
736
|
+
# Encoding type used by Amazon S3 to encode object keys in the response.
|
|
737
|
+
# @option options [String] :prefix
|
|
738
|
+
# Limits the response to keys that begin with the specified prefix.
|
|
739
|
+
# @option options [Boolean] :fetch_owner
|
|
740
|
+
# The owner field is not present in listV2 by default, if you want to
|
|
741
|
+
# return owner field with each key in the result then set the fetch
|
|
742
|
+
# owner field to true.
|
|
743
|
+
# @option options [String] :start_after
|
|
744
|
+
# StartAfter is where you want Amazon S3 to start listing from. Amazon
|
|
745
|
+
# S3 starts listing after this specified key. StartAfter can be any key
|
|
746
|
+
# in the bucket.
|
|
747
|
+
# @option options [String] :request_payer
|
|
748
|
+
# Confirms that the requester knows that she or he will be charged for
|
|
749
|
+
# the list objects request in V2 style. Bucket owners need not specify
|
|
750
|
+
# this parameter in their requests.
|
|
751
|
+
# @return [ObjectSummary::Collection]
|
|
752
|
+
def objects(options = {})
|
|
753
|
+
batches = Enumerator.new do |y|
|
|
754
|
+
options = options.merge(bucket: @name)
|
|
755
|
+
resp = @client.list_objects_v2(options)
|
|
756
|
+
resp.each_page do |page|
|
|
757
|
+
batch = []
|
|
758
|
+
page.data.contents.each do |c|
|
|
759
|
+
batch << ObjectSummary.new(
|
|
760
|
+
bucket_name: @name,
|
|
761
|
+
key: c.key,
|
|
762
|
+
data: c,
|
|
763
|
+
client: @client
|
|
764
|
+
)
|
|
765
|
+
end
|
|
766
|
+
y.yield(batch)
|
|
767
|
+
end
|
|
768
|
+
end
|
|
769
|
+
ObjectSummary::Collection.new(batches)
|
|
770
|
+
end
|
|
771
|
+
|
|
772
|
+
# @return [BucketPolicy]
|
|
773
|
+
def policy
|
|
774
|
+
BucketPolicy.new(
|
|
775
|
+
bucket_name: @name,
|
|
776
|
+
client: @client
|
|
777
|
+
)
|
|
778
|
+
end
|
|
779
|
+
|
|
780
|
+
# @return [BucketRequestPayment]
|
|
781
|
+
def request_payment
|
|
782
|
+
BucketRequestPayment.new(
|
|
783
|
+
bucket_name: @name,
|
|
784
|
+
client: @client
|
|
785
|
+
)
|
|
786
|
+
end
|
|
787
|
+
|
|
788
|
+
# @return [BucketTagging]
|
|
789
|
+
def tagging
|
|
790
|
+
BucketTagging.new(
|
|
791
|
+
bucket_name: @name,
|
|
792
|
+
client: @client
|
|
793
|
+
)
|
|
794
|
+
end
|
|
795
|
+
|
|
796
|
+
# @return [BucketVersioning]
|
|
797
|
+
def versioning
|
|
798
|
+
BucketVersioning.new(
|
|
799
|
+
bucket_name: @name,
|
|
800
|
+
client: @client
|
|
801
|
+
)
|
|
802
|
+
end
|
|
803
|
+
|
|
804
|
+
# @return [BucketWebsite]
|
|
805
|
+
def website
|
|
806
|
+
BucketWebsite.new(
|
|
807
|
+
bucket_name: @name,
|
|
808
|
+
client: @client
|
|
809
|
+
)
|
|
810
|
+
end
|
|
811
|
+
|
|
812
|
+
# @deprecated
|
|
813
|
+
# @api private
|
|
814
|
+
def identifiers
|
|
815
|
+
{ name: @name }
|
|
816
|
+
end
|
|
817
|
+
deprecated(:identifiers)
|
|
818
|
+
|
|
819
|
+
private
|
|
820
|
+
|
|
821
|
+
def extract_name(args, options)
|
|
822
|
+
value = args[0] || options.delete(:name)
|
|
823
|
+
case value
|
|
824
|
+
when String then value
|
|
825
|
+
when nil then raise ArgumentError, "missing required option :name"
|
|
826
|
+
else
|
|
827
|
+
msg = "expected :name to be a String, got #{value.class}"
|
|
828
|
+
raise ArgumentError, msg
|
|
829
|
+
end
|
|
830
|
+
end
|
|
831
|
+
|
|
832
|
+
def yield_waiter_and_warn(waiter, &block)
|
|
833
|
+
if !@waiter_block_warned
|
|
834
|
+
msg = "pass options to configure the waiter; "\
|
|
835
|
+
"yielding the waiter is deprecated"
|
|
836
|
+
warn(msg)
|
|
837
|
+
@waiter_block_warned = true
|
|
838
|
+
end
|
|
839
|
+
yield(waiter.waiter)
|
|
840
|
+
end
|
|
841
|
+
|
|
842
|
+
def separate_params_and_options(options)
|
|
843
|
+
opts = Set.new(
|
|
844
|
+
[:client, :max_attempts, :delay, :before_attempt, :before_wait]
|
|
845
|
+
)
|
|
846
|
+
waiter_opts = {}
|
|
847
|
+
waiter_params = {}
|
|
848
|
+
options.each_pair do |key, value|
|
|
849
|
+
if opts.include?(key)
|
|
850
|
+
waiter_opts[key] = value
|
|
851
|
+
else
|
|
852
|
+
waiter_params[key] = value
|
|
853
|
+
end
|
|
854
|
+
end
|
|
855
|
+
waiter_opts[:client] ||= @client
|
|
856
|
+
[waiter_opts, waiter_params]
|
|
857
|
+
end
|
|
858
|
+
|
|
859
|
+
class Collection < Aws::Resources::Collection; end
|
|
860
|
+
end
|
|
861
|
+
end
|