aws-sdk-s3 1.164.0 → 1.182.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.
Files changed (64) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +102 -0
  3. data/VERSION +1 -1
  4. data/lib/aws-sdk-s3/bucket.rb +112 -43
  5. data/lib/aws-sdk-s3/bucket_acl.rb +6 -5
  6. data/lib/aws-sdk-s3/bucket_cors.rb +6 -5
  7. data/lib/aws-sdk-s3/bucket_lifecycle.rb +7 -2
  8. data/lib/aws-sdk-s3/bucket_lifecycle_configuration.rb +60 -3
  9. data/lib/aws-sdk-s3/bucket_logging.rb +2 -2
  10. data/lib/aws-sdk-s3/bucket_policy.rb +10 -9
  11. data/lib/aws-sdk-s3/bucket_request_payment.rb +3 -3
  12. data/lib/aws-sdk-s3/bucket_tagging.rb +3 -3
  13. data/lib/aws-sdk-s3/bucket_versioning.rb +9 -9
  14. data/lib/aws-sdk-s3/bucket_website.rb +3 -3
  15. data/lib/aws-sdk-s3/client.rb +2144 -1325
  16. data/lib/aws-sdk-s3/client_api.rb +175 -3
  17. data/lib/aws-sdk-s3/customizations/object.rb +6 -0
  18. data/lib/aws-sdk-s3/customizations/object_summary.rb +5 -0
  19. data/lib/aws-sdk-s3/customizations/object_version.rb +13 -0
  20. data/lib/aws-sdk-s3/customizations.rb +24 -38
  21. data/lib/aws-sdk-s3/endpoint_parameters.rb +13 -18
  22. data/lib/aws-sdk-s3/endpoint_provider.rb +272 -253
  23. data/lib/aws-sdk-s3/endpoints.rb +445 -1403
  24. data/lib/aws-sdk-s3/errors.rb +47 -0
  25. data/lib/aws-sdk-s3/file_downloader.rb +4 -21
  26. data/lib/aws-sdk-s3/multipart_file_uploader.rb +31 -13
  27. data/lib/aws-sdk-s3/multipart_upload.rb +84 -6
  28. data/lib/aws-sdk-s3/multipart_upload_part.rb +52 -36
  29. data/lib/aws-sdk-s3/object.rb +254 -113
  30. data/lib/aws-sdk-s3/object_acl.rb +4 -4
  31. data/lib/aws-sdk-s3/object_summary.rb +199 -82
  32. data/lib/aws-sdk-s3/object_version.rb +67 -17
  33. data/lib/aws-sdk-s3/plugins/checksum_algorithm.rb +31 -0
  34. data/lib/aws-sdk-s3/plugins/endpoints.rb +1 -204
  35. data/lib/aws-sdk-s3/plugins/express_session_auth.rb +11 -20
  36. data/lib/aws-sdk-s3/plugins/http_200_errors.rb +3 -3
  37. data/lib/aws-sdk-s3/plugins/md5s.rb +10 -71
  38. data/lib/aws-sdk-s3/presigner.rb +5 -5
  39. data/lib/aws-sdk-s3/resource.rb +35 -10
  40. data/lib/aws-sdk-s3/types.rb +1921 -856
  41. data/lib/aws-sdk-s3.rb +35 -31
  42. data/sig/bucket.rbs +15 -6
  43. data/sig/bucket_acl.rbs +1 -1
  44. data/sig/bucket_cors.rbs +1 -1
  45. data/sig/bucket_lifecycle.rbs +1 -1
  46. data/sig/bucket_lifecycle_configuration.rbs +8 -4
  47. data/sig/bucket_logging.rbs +1 -1
  48. data/sig/bucket_policy.rbs +1 -1
  49. data/sig/bucket_request_payment.rbs +1 -1
  50. data/sig/bucket_tagging.rbs +1 -1
  51. data/sig/bucket_versioning.rbs +3 -3
  52. data/sig/bucket_website.rbs +1 -1
  53. data/sig/client.rbs +115 -40
  54. data/sig/errors.rbs +8 -0
  55. data/sig/multipart_upload.rbs +11 -2
  56. data/sig/multipart_upload_part.rbs +5 -1
  57. data/sig/object.rbs +22 -6
  58. data/sig/object_acl.rbs +1 -1
  59. data/sig/object_summary.rbs +17 -7
  60. data/sig/object_version.rbs +9 -3
  61. data/sig/resource.rbs +7 -3
  62. data/sig/types.rbs +163 -36
  63. metadata +6 -5
  64. data/lib/aws-sdk-s3/plugins/skip_whole_multipart_get_checksums.rb +0 -31
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Aws
4
+ module S3
5
+ module Plugins
6
+ # @api private
7
+ class ChecksumAlgorithm < Seahorse::Client::Plugin
8
+
9
+ # S3 GetObject results for whole Multipart Objects contain a checksum
10
+ # that cannot be validated. These should be skipped by the
11
+ # ChecksumAlgorithm plugin.
12
+ class SkipWholeMultipartGetChecksumsHandler < Seahorse::Client::Handler
13
+ def call(context)
14
+ context[:http_checksum] ||= {}
15
+ context[:http_checksum][:skip_on_suffix] = true
16
+
17
+ @handler.call(context)
18
+ end
19
+ end
20
+
21
+ def add_handlers(handlers, _config)
22
+ handlers.add(
23
+ SkipWholeMultipartGetChecksumsHandler,
24
+ step: :initialize,
25
+ operations: [:get_object]
26
+ )
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -36,7 +36,7 @@ Parameter to indicate whether S3Express session auth should be disabled
36
36
  class Handler < Seahorse::Client::Handler
37
37
  def call(context)
38
38
  unless context[:discovered_endpoint]
39
- params = parameters_for_operation(context)
39
+ params = Aws::S3::Endpoints.parameters_for_operation(context)
40
40
  endpoint = context.config.endpoint_provider.resolve_endpoint(params)
41
41
 
42
42
  context.http_request.endpoint = endpoint.url
@@ -76,209 +76,6 @@ Parameter to indicate whether S3Express session auth should be disabled
76
76
  context.http_request.headers[key] = value
77
77
  end
78
78
  end
79
-
80
- def parameters_for_operation(context)
81
- case context.operation_name
82
- when :abort_multipart_upload
83
- Aws::S3::Endpoints::AbortMultipartUpload.build(context)
84
- when :complete_multipart_upload
85
- Aws::S3::Endpoints::CompleteMultipartUpload.build(context)
86
- when :copy_object
87
- Aws::S3::Endpoints::CopyObject.build(context)
88
- when :create_bucket
89
- Aws::S3::Endpoints::CreateBucket.build(context)
90
- when :create_multipart_upload
91
- Aws::S3::Endpoints::CreateMultipartUpload.build(context)
92
- when :create_session
93
- Aws::S3::Endpoints::CreateSession.build(context)
94
- when :delete_bucket
95
- Aws::S3::Endpoints::DeleteBucket.build(context)
96
- when :delete_bucket_analytics_configuration
97
- Aws::S3::Endpoints::DeleteBucketAnalyticsConfiguration.build(context)
98
- when :delete_bucket_cors
99
- Aws::S3::Endpoints::DeleteBucketCors.build(context)
100
- when :delete_bucket_encryption
101
- Aws::S3::Endpoints::DeleteBucketEncryption.build(context)
102
- when :delete_bucket_intelligent_tiering_configuration
103
- Aws::S3::Endpoints::DeleteBucketIntelligentTieringConfiguration.build(context)
104
- when :delete_bucket_inventory_configuration
105
- Aws::S3::Endpoints::DeleteBucketInventoryConfiguration.build(context)
106
- when :delete_bucket_lifecycle
107
- Aws::S3::Endpoints::DeleteBucketLifecycle.build(context)
108
- when :delete_bucket_metrics_configuration
109
- Aws::S3::Endpoints::DeleteBucketMetricsConfiguration.build(context)
110
- when :delete_bucket_ownership_controls
111
- Aws::S3::Endpoints::DeleteBucketOwnershipControls.build(context)
112
- when :delete_bucket_policy
113
- Aws::S3::Endpoints::DeleteBucketPolicy.build(context)
114
- when :delete_bucket_replication
115
- Aws::S3::Endpoints::DeleteBucketReplication.build(context)
116
- when :delete_bucket_tagging
117
- Aws::S3::Endpoints::DeleteBucketTagging.build(context)
118
- when :delete_bucket_website
119
- Aws::S3::Endpoints::DeleteBucketWebsite.build(context)
120
- when :delete_object
121
- Aws::S3::Endpoints::DeleteObject.build(context)
122
- when :delete_object_tagging
123
- Aws::S3::Endpoints::DeleteObjectTagging.build(context)
124
- when :delete_objects
125
- Aws::S3::Endpoints::DeleteObjects.build(context)
126
- when :delete_public_access_block
127
- Aws::S3::Endpoints::DeletePublicAccessBlock.build(context)
128
- when :get_bucket_accelerate_configuration
129
- Aws::S3::Endpoints::GetBucketAccelerateConfiguration.build(context)
130
- when :get_bucket_acl
131
- Aws::S3::Endpoints::GetBucketAcl.build(context)
132
- when :get_bucket_analytics_configuration
133
- Aws::S3::Endpoints::GetBucketAnalyticsConfiguration.build(context)
134
- when :get_bucket_cors
135
- Aws::S3::Endpoints::GetBucketCors.build(context)
136
- when :get_bucket_encryption
137
- Aws::S3::Endpoints::GetBucketEncryption.build(context)
138
- when :get_bucket_intelligent_tiering_configuration
139
- Aws::S3::Endpoints::GetBucketIntelligentTieringConfiguration.build(context)
140
- when :get_bucket_inventory_configuration
141
- Aws::S3::Endpoints::GetBucketInventoryConfiguration.build(context)
142
- when :get_bucket_lifecycle
143
- Aws::S3::Endpoints::GetBucketLifecycle.build(context)
144
- when :get_bucket_lifecycle_configuration
145
- Aws::S3::Endpoints::GetBucketLifecycleConfiguration.build(context)
146
- when :get_bucket_location
147
- Aws::S3::Endpoints::GetBucketLocation.build(context)
148
- when :get_bucket_logging
149
- Aws::S3::Endpoints::GetBucketLogging.build(context)
150
- when :get_bucket_metrics_configuration
151
- Aws::S3::Endpoints::GetBucketMetricsConfiguration.build(context)
152
- when :get_bucket_notification
153
- Aws::S3::Endpoints::GetBucketNotification.build(context)
154
- when :get_bucket_notification_configuration
155
- Aws::S3::Endpoints::GetBucketNotificationConfiguration.build(context)
156
- when :get_bucket_ownership_controls
157
- Aws::S3::Endpoints::GetBucketOwnershipControls.build(context)
158
- when :get_bucket_policy
159
- Aws::S3::Endpoints::GetBucketPolicy.build(context)
160
- when :get_bucket_policy_status
161
- Aws::S3::Endpoints::GetBucketPolicyStatus.build(context)
162
- when :get_bucket_replication
163
- Aws::S3::Endpoints::GetBucketReplication.build(context)
164
- when :get_bucket_request_payment
165
- Aws::S3::Endpoints::GetBucketRequestPayment.build(context)
166
- when :get_bucket_tagging
167
- Aws::S3::Endpoints::GetBucketTagging.build(context)
168
- when :get_bucket_versioning
169
- Aws::S3::Endpoints::GetBucketVersioning.build(context)
170
- when :get_bucket_website
171
- Aws::S3::Endpoints::GetBucketWebsite.build(context)
172
- when :get_object
173
- Aws::S3::Endpoints::GetObject.build(context)
174
- when :get_object_acl
175
- Aws::S3::Endpoints::GetObjectAcl.build(context)
176
- when :get_object_attributes
177
- Aws::S3::Endpoints::GetObjectAttributes.build(context)
178
- when :get_object_legal_hold
179
- Aws::S3::Endpoints::GetObjectLegalHold.build(context)
180
- when :get_object_lock_configuration
181
- Aws::S3::Endpoints::GetObjectLockConfiguration.build(context)
182
- when :get_object_retention
183
- Aws::S3::Endpoints::GetObjectRetention.build(context)
184
- when :get_object_tagging
185
- Aws::S3::Endpoints::GetObjectTagging.build(context)
186
- when :get_object_torrent
187
- Aws::S3::Endpoints::GetObjectTorrent.build(context)
188
- when :get_public_access_block
189
- Aws::S3::Endpoints::GetPublicAccessBlock.build(context)
190
- when :head_bucket
191
- Aws::S3::Endpoints::HeadBucket.build(context)
192
- when :head_object
193
- Aws::S3::Endpoints::HeadObject.build(context)
194
- when :list_bucket_analytics_configurations
195
- Aws::S3::Endpoints::ListBucketAnalyticsConfigurations.build(context)
196
- when :list_bucket_intelligent_tiering_configurations
197
- Aws::S3::Endpoints::ListBucketIntelligentTieringConfigurations.build(context)
198
- when :list_bucket_inventory_configurations
199
- Aws::S3::Endpoints::ListBucketInventoryConfigurations.build(context)
200
- when :list_bucket_metrics_configurations
201
- Aws::S3::Endpoints::ListBucketMetricsConfigurations.build(context)
202
- when :list_buckets
203
- Aws::S3::Endpoints::ListBuckets.build(context)
204
- when :list_directory_buckets
205
- Aws::S3::Endpoints::ListDirectoryBuckets.build(context)
206
- when :list_multipart_uploads
207
- Aws::S3::Endpoints::ListMultipartUploads.build(context)
208
- when :list_object_versions
209
- Aws::S3::Endpoints::ListObjectVersions.build(context)
210
- when :list_objects
211
- Aws::S3::Endpoints::ListObjects.build(context)
212
- when :list_objects_v2
213
- Aws::S3::Endpoints::ListObjectsV2.build(context)
214
- when :list_parts
215
- Aws::S3::Endpoints::ListParts.build(context)
216
- when :put_bucket_accelerate_configuration
217
- Aws::S3::Endpoints::PutBucketAccelerateConfiguration.build(context)
218
- when :put_bucket_acl
219
- Aws::S3::Endpoints::PutBucketAcl.build(context)
220
- when :put_bucket_analytics_configuration
221
- Aws::S3::Endpoints::PutBucketAnalyticsConfiguration.build(context)
222
- when :put_bucket_cors
223
- Aws::S3::Endpoints::PutBucketCors.build(context)
224
- when :put_bucket_encryption
225
- Aws::S3::Endpoints::PutBucketEncryption.build(context)
226
- when :put_bucket_intelligent_tiering_configuration
227
- Aws::S3::Endpoints::PutBucketIntelligentTieringConfiguration.build(context)
228
- when :put_bucket_inventory_configuration
229
- Aws::S3::Endpoints::PutBucketInventoryConfiguration.build(context)
230
- when :put_bucket_lifecycle
231
- Aws::S3::Endpoints::PutBucketLifecycle.build(context)
232
- when :put_bucket_lifecycle_configuration
233
- Aws::S3::Endpoints::PutBucketLifecycleConfiguration.build(context)
234
- when :put_bucket_logging
235
- Aws::S3::Endpoints::PutBucketLogging.build(context)
236
- when :put_bucket_metrics_configuration
237
- Aws::S3::Endpoints::PutBucketMetricsConfiguration.build(context)
238
- when :put_bucket_notification
239
- Aws::S3::Endpoints::PutBucketNotification.build(context)
240
- when :put_bucket_notification_configuration
241
- Aws::S3::Endpoints::PutBucketNotificationConfiguration.build(context)
242
- when :put_bucket_ownership_controls
243
- Aws::S3::Endpoints::PutBucketOwnershipControls.build(context)
244
- when :put_bucket_policy
245
- Aws::S3::Endpoints::PutBucketPolicy.build(context)
246
- when :put_bucket_replication
247
- Aws::S3::Endpoints::PutBucketReplication.build(context)
248
- when :put_bucket_request_payment
249
- Aws::S3::Endpoints::PutBucketRequestPayment.build(context)
250
- when :put_bucket_tagging
251
- Aws::S3::Endpoints::PutBucketTagging.build(context)
252
- when :put_bucket_versioning
253
- Aws::S3::Endpoints::PutBucketVersioning.build(context)
254
- when :put_bucket_website
255
- Aws::S3::Endpoints::PutBucketWebsite.build(context)
256
- when :put_object
257
- Aws::S3::Endpoints::PutObject.build(context)
258
- when :put_object_acl
259
- Aws::S3::Endpoints::PutObjectAcl.build(context)
260
- when :put_object_legal_hold
261
- Aws::S3::Endpoints::PutObjectLegalHold.build(context)
262
- when :put_object_lock_configuration
263
- Aws::S3::Endpoints::PutObjectLockConfiguration.build(context)
264
- when :put_object_retention
265
- Aws::S3::Endpoints::PutObjectRetention.build(context)
266
- when :put_object_tagging
267
- Aws::S3::Endpoints::PutObjectTagging.build(context)
268
- when :put_public_access_block
269
- Aws::S3::Endpoints::PutPublicAccessBlock.build(context)
270
- when :restore_object
271
- Aws::S3::Endpoints::RestoreObject.build(context)
272
- when :select_object_content
273
- Aws::S3::Endpoints::SelectObjectContent.build(context)
274
- when :upload_part
275
- Aws::S3::Endpoints::UploadPart.build(context)
276
- when :upload_part_copy
277
- Aws::S3::Endpoints::UploadPartCopy.build(context)
278
- when :write_get_object_response
279
- Aws::S3::Endpoints::WriteGetObjectResponse.build(context)
280
- end
281
- end
282
79
  end
283
80
 
284
81
  def add_handlers(handlers, _config)
@@ -29,24 +29,17 @@ for different buckets.
29
29
  # @api private
30
30
  class Handler < Seahorse::Client::Handler
31
31
  def call(context)
32
- if (props = context[:endpoint_properties])
33
- # S3 Express endpoint - turn off md5 and enable crc32 default
34
- if props['backend'] == 'S3Express'
35
- if context.operation_name == :put_object || checksum_required?(context)
36
- context[:default_request_checksum_algorithm] = 'CRC32'
37
- end
38
- context[:s3_express_endpoint] = true
39
- end
32
+ context[:s3_express_endpoint] = true if s3_express_endpoint?(context)
40
33
 
41
- # if s3 express auth, use new credentials and sign additional header
42
- if context[:auth_scheme]['name'] == 'sigv4-s3express' &&
43
- !context.config.disable_s3_express_session_auth
44
- bucket = context.params[:bucket]
45
- credentials_provider = context.config.express_credentials_provider
46
- credentials = credentials_provider.express_credentials_for(bucket)
47
- context[:sigv4_credentials] = credentials # Sign will use this
48
- end
34
+ # if s3 express auth, use new credentials and sign additional header
35
+ if context[:auth_scheme]['name'] == 'sigv4-s3express' &&
36
+ !context.config.disable_s3_express_session_auth
37
+ bucket = context.params[:bucket]
38
+ credentials_provider = context.config.express_credentials_provider
39
+ credentials = credentials_provider.express_credentials_for(bucket)
40
+ context[:sigv4_credentials] = credentials # Sign will use this
49
41
  end
42
+
50
43
  with_metric(credentials) { @handler.call(context) }
51
44
  end
52
45
 
@@ -58,10 +51,8 @@ for different buckets.
58
51
  Aws::Plugins::UserAgent.metric('S3_EXPRESS_BUCKET', &block)
59
52
  end
60
53
 
61
- def checksum_required?(context)
62
- context.operation.http_checksum_required ||
63
- (context.operation.http_checksum &&
64
- context.operation.http_checksum['requestChecksumRequired'])
54
+ def s3_express_endpoint?(context)
55
+ context[:endpoint_properties]['backend'] == 'S3Express'
65
56
  end
66
57
  end
67
58
 
@@ -71,9 +71,9 @@ module Aws
71
71
 
72
72
  def check_for_error(context)
73
73
  xml = context.http_response.body_contents
74
- if xml.match(/\?>\s*<Error>/)
75
- error_code = xml.match(/<Code>(.+?)<\/Code>/)[1]
76
- error_message = xml.match(/<Message>(.+?)<\/Message>/)[1]
74
+ if xml.match(/<\?xml\s[^>]*\?>\s*<Error>/)
75
+ error_code = xml.match(%r{<Code>(.+?)</Code>})[1]
76
+ error_message = xml.match(%r{<Message>(.+?)</Message>})[1]
77
77
  S3::Errors.error_class(error_code).new(context, error_message)
78
78
  elsif incomplete_xml_body?(xml, context.operation.output)
79
79
  Seahorse::Client::NetworkingError.new(
@@ -6,81 +6,20 @@ module Aws
6
6
  module S3
7
7
  module Plugins
8
8
  # @api private
9
- # This plugin is effectively deprecated in favor of modeled
9
+ # This plugin is deprecated in favor of modeled
10
10
  # httpChecksumRequired traits.
11
11
  class Md5s < Seahorse::Client::Plugin
12
- # These operations allow Content MD5 but are not required by
13
- # httpChecksumRequired. This list should not grow.
14
- OPTIONAL_OPERATIONS = [
15
- :put_object,
16
- :upload_part
17
- ]
18
-
19
- # @api private
20
- class Handler < Seahorse::Client::Handler
21
-
22
- CHUNK_SIZE = 1 * 1024 * 1024 # one MB
23
-
24
- def call(context)
25
- if !context[:checksum_algorithms] && # skip in favor of flexible checksum
26
- !context[:s3_express_endpoint] # s3 express endpoints do not support md5
27
- body = context.http_request.body
28
- if body.respond_to?(:size) && body.size > 0
29
- context.http_request.headers['Content-Md5'] ||= md5(body)
30
- end
31
- end
32
- @handler.call(context)
33
- end
34
-
35
- private
36
-
37
- # @param [File, Tempfile, IO#read, String] value
38
- # @return [String<MD5>]
39
- def md5(value)
40
- if (File === value || Tempfile === value) && !value.path.nil? && File.exist?(value.path)
41
- OpenSSL::Digest::MD5.file(value).base64digest
42
- elsif value.respond_to?(:read)
43
- md5 = OpenSSL::Digest::MD5.new
44
- update_in_chunks(md5, value)
45
- md5.base64digest
46
- else
47
- OpenSSL::Digest::MD5.digest(value).base64digest
48
- end
49
- end
50
-
51
- def update_in_chunks(digest, io)
52
- loop do
53
- chunk = io.read(CHUNK_SIZE)
54
- break unless chunk
55
- digest.update(chunk)
56
- end
57
- io.rewind
58
- end
59
-
60
- end
61
-
62
12
  option(:compute_checksums,
63
- default: true,
64
- doc_type: 'Boolean',
65
- docstring: <<-DOCS)
66
- When `true` a MD5 checksum will be computed and sent in the Content Md5
67
- header for :put_object and :upload_part. When `false`, MD5 checksums
68
- will not be computed for these operations. Checksums are still computed
69
- for operations requiring them. Checksum errors returned by Amazon S3 are
70
- automatically retried up to `:retry_limit` times.
71
- DOCS
72
-
73
- def add_handlers(handlers, config)
74
- if config.compute_checksums
75
- # priority set low to ensure md5 is computed AFTER the request is
76
- # built but before it is signed
77
- handlers.add(
78
- Handler,
79
- priority: 10, step: :build, operations: OPTIONAL_OPERATIONS
80
- )
81
- end
13
+ default: true,
14
+ doc_type: 'Boolean',
15
+ docstring: <<~DOCS)
16
+ This option is deprecated. Please use `:request_checksum_calculation` instead.
17
+ When `false`, `request_checksum_calculation` is overridden to `when_required`.
18
+ DOCS
19
+
20
+ def after_initialize(client)
21
+ client.config.request_checksum_calculation = 'when_required' unless client.config.compute_checksums
82
22
  end
83
-
84
23
  end
85
24
  end
86
25
  end
@@ -193,15 +193,14 @@ module Aws
193
193
  req, expires_in, secure, time, unsigned_headers, hoist = true
194
194
  )
195
195
  x_amz_headers = {}
196
-
197
196
  http_req = req.context.http_request
198
-
199
- req.handlers.remove(Aws::S3::Plugins::S3Signer::LegacyHandler)
200
- req.handlers.remove(Aws::Plugins::Sign::Handler)
201
197
  req.handlers.remove(Seahorse::Client::Plugins::ContentLength::Handler)
202
198
  req.handlers.remove(Aws::Rest::ContentTypeHandler)
199
+ req.handlers.remove(Aws::Plugins::ChecksumAlgorithm::OptionHandler)
200
+ req.handlers.remove(Aws::Plugins::ChecksumAlgorithm::ChecksumHandler)
203
201
  req.handlers.remove(Aws::Plugins::InvocationId::Handler)
204
-
202
+ req.handlers.remove(Aws::Plugins::Sign::Handler)
203
+ req.handlers.remove(Aws::S3::Plugins::S3Signer::LegacyHandler)
205
204
  req.handle(step: :send) do |context|
206
205
  # if an endpoint was not provided, force secure or insecure
207
206
  if context.config.regional_endpoint
@@ -238,6 +237,7 @@ module Aws
238
237
  credentials_provider: context[:sigv4_credentials] || context.config.credentials,
239
238
  signing_algorithm: scheme_name.to_sym,
240
239
  uri_escape_path: !!!auth_scheme['disableDoubleEncoding'],
240
+ normalize_path: !!!auth_scheme['disableNormalizePath'],
241
241
  unsigned_headers: unsigned_headers,
242
242
  apply_checksum_header: false
243
243
  )
@@ -41,13 +41,13 @@ module Aws::S3
41
41
  # acl: "private", # accepts private, public-read, public-read-write, authenticated-read
42
42
  # bucket: "BucketName", # required
43
43
  # create_bucket_configuration: {
44
- # location_constraint: "af-south-1", # accepts af-south-1, ap-east-1, ap-northeast-1, ap-northeast-2, ap-northeast-3, ap-south-1, ap-south-2, ap-southeast-1, ap-southeast-2, ap-southeast-3, ca-central-1, cn-north-1, cn-northwest-1, EU, eu-central-1, eu-north-1, eu-south-1, eu-south-2, eu-west-1, eu-west-2, eu-west-3, me-south-1, sa-east-1, us-east-2, us-gov-east-1, us-gov-west-1, us-west-1, us-west-2
44
+ # location_constraint: "af-south-1", # accepts af-south-1, ap-east-1, ap-northeast-1, ap-northeast-2, ap-northeast-3, ap-south-1, ap-south-2, ap-southeast-1, ap-southeast-2, ap-southeast-3, ap-southeast-4, ap-southeast-5, ca-central-1, cn-north-1, cn-northwest-1, EU, eu-central-1, eu-central-2, eu-north-1, eu-south-1, eu-south-2, eu-west-1, eu-west-2, eu-west-3, il-central-1, me-central-1, me-south-1, sa-east-1, us-east-2, us-gov-east-1, us-gov-west-1, us-west-1, us-west-2
45
45
  # location: {
46
- # type: "AvailabilityZone", # accepts AvailabilityZone
46
+ # type: "AvailabilityZone", # accepts AvailabilityZone, LocalZone
47
47
  # name: "LocationNameAsString",
48
48
  # },
49
49
  # bucket: {
50
- # data_redundancy: "SingleAvailabilityZone", # accepts SingleAvailabilityZone
50
+ # data_redundancy: "SingleAvailabilityZone", # accepts SingleAvailabilityZone, SingleLocalZone
51
51
  # type: "Directory", # accepts Directory
52
52
  # },
53
53
  # },
@@ -75,13 +75,14 @@ module Aws::S3
75
75
  #
76
76
  # <b>Directory buckets </b> - When you use this operation with a
77
77
  # directory bucket, you must use path-style requests in the format
78
- # `https://s3express-control.region_code.amazonaws.com/bucket-name `.
78
+ # `https://s3express-control.region-code.amazonaws.com/bucket-name `.
79
79
  # Virtual-hosted-style requests aren't supported. Directory bucket
80
- # names must be unique in the chosen Availability Zone. Bucket names
81
- # must also follow the format ` bucket_base_name--az_id--x-s3` (for
82
- # example, ` DOC-EXAMPLE-BUCKET--usw2-az1--x-s3`). For information about
83
- # bucket naming restrictions, see [Directory bucket naming rules][2] in
84
- # the *Amazon S3 User Guide*
80
+ # names must be unique in the chosen Zone (Availability Zone or Local
81
+ # Zone). Bucket names must also follow the format `
82
+ # bucket-base-name--zone-id--x-s3` (for example, `
83
+ # DOC-EXAMPLE-BUCKET--usw2-az1--x-s3`). For information about bucket
84
+ # naming restrictions, see [Directory bucket naming rules][2] in the
85
+ # *Amazon S3 User Guide*
85
86
  #
86
87
  #
87
88
  #
@@ -188,8 +189,32 @@ module Aws::S3
188
189
 
189
190
  # @example Request syntax with placeholder values
190
191
  #
191
- # s3.buckets()
192
+ # buckets = s3.buckets({
193
+ # prefix: "Prefix",
194
+ # bucket_region: "BucketRegion",
195
+ # })
192
196
  # @param [Hash] options ({})
197
+ # @option options [String] :prefix
198
+ # Limits the response to bucket names that begin with the specified
199
+ # bucket name prefix.
200
+ # @option options [String] :bucket_region
201
+ # Limits the response to buckets that are located in the specified
202
+ # Amazon Web Services Region. The Amazon Web Services Region must be
203
+ # expressed according to the Amazon Web Services Region code, such as
204
+ # `us-west-2` for the US West (Oregon) Region. For a list of the valid
205
+ # values for all of the Amazon Web Services Regions, see [Regions and
206
+ # Endpoints][1].
207
+ #
208
+ # <note markdown="1"> Requests made to a Regional endpoint that is different from the
209
+ # `bucket-region` parameter are not supported. For example, if you want
210
+ # to limit the response to your buckets in Region `us-west-2`, the
211
+ # request must be made to an endpoint in Region `us-west-2`.
212
+ #
213
+ # </note>
214
+ #
215
+ #
216
+ #
217
+ # [1]: https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region
193
218
  # @return [Bucket::Collection]
194
219
  def buckets(options = {})
195
220
  batches = Enumerator.new do |y|