aws-sdk-s3 1.79.0 → 1.82.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 (34) hide show
  1. checksums.yaml +4 -4
  2. data/lib/aws-sdk-s3.rb +2 -1
  3. data/lib/aws-sdk-s3/arn/access_point_arn.rb +62 -0
  4. data/lib/aws-sdk-s3/arn/outpost_access_point_arn.rb +71 -0
  5. data/lib/aws-sdk-s3/bucket.rb +34 -3
  6. data/lib/aws-sdk-s3/bucket_acl.rb +5 -0
  7. data/lib/aws-sdk-s3/bucket_cors.rb +12 -1
  8. data/lib/aws-sdk-s3/bucket_lifecycle.rb +12 -1
  9. data/lib/aws-sdk-s3/bucket_lifecycle_configuration.rb +12 -1
  10. data/lib/aws-sdk-s3/bucket_logging.rb +5 -0
  11. data/lib/aws-sdk-s3/bucket_notification.rb +5 -0
  12. data/lib/aws-sdk-s3/bucket_policy.rb +12 -1
  13. data/lib/aws-sdk-s3/bucket_request_payment.rb +5 -0
  14. data/lib/aws-sdk-s3/bucket_tagging.rb +12 -1
  15. data/lib/aws-sdk-s3/bucket_versioning.rb +15 -0
  16. data/lib/aws-sdk-s3/bucket_website.rb +12 -1
  17. data/lib/aws-sdk-s3/client.rb +1753 -555
  18. data/lib/aws-sdk-s3/client_api.rb +87 -0
  19. data/lib/aws-sdk-s3/customizations/bucket.rb +7 -4
  20. data/lib/aws-sdk-s3/multipart_upload.rb +15 -0
  21. data/lib/aws-sdk-s3/multipart_upload_part.rb +63 -6
  22. data/lib/aws-sdk-s3/object.rb +97 -14
  23. data/lib/aws-sdk-s3/object_acl.rb +5 -0
  24. data/lib/aws-sdk-s3/object_summary.rb +92 -10
  25. data/lib/aws-sdk-s3/object_version.rb +22 -2
  26. data/lib/aws-sdk-s3/plugins/arn.rb +187 -0
  27. data/lib/aws-sdk-s3/plugins/bucket_dns.rb +0 -2
  28. data/lib/aws-sdk-s3/plugins/bucket_name_restrictions.rb +1 -1
  29. data/lib/aws-sdk-s3/plugins/s3_signer.rb +29 -7
  30. data/lib/aws-sdk-s3/presigned_post.rb +1 -0
  31. data/lib/aws-sdk-s3/presigner.rb +1 -0
  32. data/lib/aws-sdk-s3/types.rb +1296 -147
  33. metadata +7 -5
  34. data/lib/aws-sdk-s3/plugins/bucket_arn.rb +0 -212
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0232fc4ef28ae41e69f589f2b398846918304fd784f15720f1470ba539706b73
4
- data.tar.gz: 5addd423494cc626b5be39d9329823a0bb27c6e62aeaf2bc3d19ec4064b7c40e
3
+ metadata.gz: e842f232d7e50f3e6f5a12aeecd8c1efc1cee2171e92944b773f8b66de1379f5
4
+ data.tar.gz: f30436b18bccb7cb2d20f8c024c55ea6192638d34089fd43bfef7092e1b1096e
5
5
  SHA512:
6
- metadata.gz: 20555cada51bdc0763fc5fe4bfb14b0d23632a17d473ee0eb953abdd974c5e972b227bf19dbff3ee37dd34fb94fc8e6b526b6bea1b40a94409cafcc78916d603
7
- data.tar.gz: babae742c98d7c24784341bf204b38439dfd01b1cd14260783f18bc361065e7c7c994d59bb00120dc4fb5bdaf034936af9a8caa2b9efca6c2b1202a0d0cebaf3
6
+ metadata.gz: 5a0e7f3d81929759b8b9e17c83f9212c40145da665b9b146061a2e6ff6b8ac6b97028d10529fedfbc561be344561098d61c8c0428b60df525dd8265f28879728
7
+ data.tar.gz: 39403a36b6fadea6ae1c9a4b029650761dc3fbee30db41fd450694dfc1f5a2297fb8012f85f82e418fff52c63e4b36ba6ecc7facb0e5629cd09725b737c659cc
@@ -7,6 +7,7 @@
7
7
  #
8
8
  # WARNING ABOUT GENERATED CODE
9
9
 
10
+
10
11
  require 'aws-sdk-kms'
11
12
  require 'aws-sigv4'
12
13
  require 'aws-sdk-core'
@@ -68,6 +69,6 @@ require_relative 'aws-sdk-s3/event_streams'
68
69
  # @!group service
69
70
  module Aws::S3
70
71
 
71
- GEM_VERSION = '1.79.0'
72
+ GEM_VERSION = '1.82.0'
72
73
 
73
74
  end
@@ -0,0 +1,62 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Aws
4
+ module S3
5
+ # @api private
6
+ class AccessPointARN < Aws::ARN
7
+ def initialize(options)
8
+ super(options)
9
+ @type, @access_point_name, @extra = @resource.split(/[:,\/]/)
10
+ end
11
+
12
+ attr_reader :access_point_name
13
+
14
+ def support_dualstack?
15
+ true
16
+ end
17
+
18
+ def support_fips?
19
+ true
20
+ end
21
+
22
+ def validate_arn!
23
+ unless @service == 's3'
24
+ raise ArgumentError, 'Must provide a valid S3 accesspoint ARN.'
25
+ end
26
+
27
+ if @region.empty? || @account_id.empty?
28
+ raise ArgumentError,
29
+ 'S3 accesspoint ARNs must contain both a region '\
30
+ 'and an account id.'
31
+ end
32
+
33
+ if @type != 'accesspoint'
34
+ raise ArgumentError, 'Invalid ARN, resource format is not correct'
35
+ end
36
+
37
+ if @access_point_name.nil? || @access_point_name.empty?
38
+ raise ArgumentError, 'Missing ARN accesspoint name.'
39
+ end
40
+
41
+ if @extra
42
+ raise ArgumentError,
43
+ 'ARN accesspoint resource must be a single value.'
44
+ end
45
+
46
+ unless Seahorse::Util.host_label?(
47
+ "#{@access_point_name}-#{@account_id}"
48
+ )
49
+ raise ArgumentError,
50
+ "#{@access_point_name}-#{@account_id} is not a valid "\
51
+ 'host label.'
52
+ end
53
+ end
54
+
55
+ def host_url(region, dualstack = false)
56
+ sfx = Aws::Partitions::EndpointProvider.dns_suffix_for(region)
57
+ "#{@access_point_name}-#{@account_id}"\
58
+ ".s3-accesspoint#{'.dualstack' if dualstack}.#{region}.#{sfx}"
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,71 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Aws
4
+ module S3
5
+ # @api private
6
+ class OutpostAccessPointARN < Aws::ARN
7
+ def initialize(options)
8
+ super(options)
9
+ @type, @outpost_id, @subtype, @access_point_name, @extra =
10
+ @resource.split(/[:,\/]/)
11
+ end
12
+
13
+ attr_reader :outpost_id, :access_point_name
14
+
15
+ def support_dualstack?
16
+ false
17
+ end
18
+
19
+ def support_fips?
20
+ false
21
+ end
22
+
23
+ def validate_arn!
24
+ unless @service == 's3-outposts'
25
+ raise ArgumentError, 'Must provide a valid S3 outposts ARN.'
26
+ end
27
+
28
+ if @region.empty? || @account_id.empty?
29
+ raise ArgumentError,
30
+ 'S3 accesspoint ARNs must contain both a region '\
31
+ 'and an account id.'
32
+ end
33
+
34
+ if @type != 'outpost' && @subtype != 'accesspoint'
35
+ raise ArgumentError, 'Invalid ARN, resource format is not correct'
36
+ end
37
+
38
+ if @outpost_id.nil? || @outpost_id.empty?
39
+ raise ArgumentError, 'Missing ARN outpost id.'
40
+ end
41
+
42
+ if @access_point_name.nil? || @access_point_name.empty?
43
+ raise ArgumentError, 'Missing ARN accesspoint name.'
44
+ end
45
+
46
+ if @extra
47
+ raise ArgumentError,
48
+ 'ARN accesspoint resource must be a single value.'
49
+ end
50
+
51
+ unless Seahorse::Util.host_label?(
52
+ "#{@access_point_name}-#{@account_id}"
53
+ )
54
+ raise ArgumentError,
55
+ "#{@access_point_name}-#{@account_id} is not a valid "\
56
+ 'host label.'
57
+ end
58
+
59
+ unless Seahorse::Util.host_label?(@outpost_id)
60
+ raise ArgumentError, "#{@outpost_id} is not a valid host label."
61
+ end
62
+ end
63
+
64
+ # Outpost ARNs currently do not support dualstack
65
+ def host_url(region, _dualstack = false)
66
+ "#{@access_point_name}-#{@account_id}.#{@outpost_id}"\
67
+ ".s3-outposts.#{region}.amazonaws.com"
68
+ end
69
+ end
70
+ end
71
+ end
@@ -260,8 +260,14 @@ module Aws::S3
260
260
 
261
261
  # @example Request syntax with placeholder values
262
262
  #
263
- # bucket.delete()
263
+ # bucket.delete({
264
+ # expected_bucket_owner: "AccountId",
265
+ # })
264
266
  # @param [Hash] options ({})
267
+ # @option options [String] :expected_bucket_owner
268
+ # The account id of the expected bucket owner. If the bucket is owned by
269
+ # a different account, the request will fail with an HTTP `403 (Access
270
+ # Denied)` error.
265
271
  # @return [EmptyStructure]
266
272
  def delete(options = {})
267
273
  options = options.merge(bucket: @name)
@@ -284,6 +290,7 @@ module Aws::S3
284
290
  # mfa: "MFA",
285
291
  # request_payer: "requester", # accepts requester
286
292
  # bypass_governance_retention: false,
293
+ # expected_bucket_owner: "AccountId",
287
294
  # })
288
295
  # @param [Hash] options ({})
289
296
  # @option options [required, Types::Delete] :delete
@@ -307,6 +314,10 @@ module Aws::S3
307
314
  # Specifies whether you want to delete this object even if it has a
308
315
  # Governance-type Object Lock in place. You must have sufficient
309
316
  # permissions to perform this operation.
317
+ # @option options [String] :expected_bucket_owner
318
+ # The account id of the expected bucket owner. If the bucket is owned by
319
+ # a different account, the request will fail with an HTTP `403 (Access
320
+ # Denied)` error.
310
321
  # @return [Types::DeleteObjectsOutput]
311
322
  def delete_objects(options = {})
312
323
  options = options.merge(bucket: @name)
@@ -336,7 +347,7 @@ module Aws::S3
336
347
  # "MetadataKey" => "MetadataValue",
337
348
  # },
338
349
  # 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
350
+ # storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE, OUTPOSTS
340
351
  # website_redirect_location: "WebsiteRedirectLocation",
341
352
  # sse_customer_algorithm: "SSECustomerAlgorithm",
342
353
  # sse_customer_key: "SSECustomerKey",
@@ -348,6 +359,7 @@ module Aws::S3
348
359
  # object_lock_mode: "GOVERNANCE", # accepts GOVERNANCE, COMPLIANCE
349
360
  # object_lock_retain_until_date: Time.now,
350
361
  # object_lock_legal_hold_status: "ON", # accepts ON, OFF
362
+ # expected_bucket_owner: "AccountId",
351
363
  # })
352
364
  # @param [Hash] options ({})
353
365
  # @option options [String] :acl
@@ -474,7 +486,7 @@ module Aws::S3
474
486
  # encrypting data. This value is used to store the object and then it is
475
487
  # discarded; Amazon S3 does not store the encryption key. The key must
476
488
  # be appropriate for use with the algorithm specified in the
477
- # `x-amz-server-side​-encryption​-customer-algorithm` header.
489
+ # `x-amz-server-side-encryption-customer-algorithm` header.
478
490
  # @option options [String] :sse_customer_key_md5
479
491
  # Specifies the 128-bit MD5 digest of the encryption key according to
480
492
  # RFC 1321. Amazon S3 uses this header for a message integrity check to
@@ -519,6 +531,10 @@ module Aws::S3
519
531
  #
520
532
  #
521
533
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html
534
+ # @option options [String] :expected_bucket_owner
535
+ # The account id of the expected bucket owner. If the bucket is owned by
536
+ # a different account, the request will fail with an HTTP `403 (Access
537
+ # Denied)` error.
522
538
  # @return [Object]
523
539
  def put_object(options = {})
524
540
  options = options.merge(bucket: @name)
@@ -580,6 +596,7 @@ module Aws::S3
580
596
  # key_marker: "KeyMarker",
581
597
  # prefix: "Prefix",
582
598
  # upload_id_marker: "UploadIdMarker",
599
+ # expected_bucket_owner: "AccountId",
583
600
  # })
584
601
  # @param [Hash] options ({})
585
602
  # @option options [String] :delimiter
@@ -622,6 +639,10 @@ module Aws::S3
622
639
  # uploads for a key equal to the key-marker might be included in the
623
640
  # list only if they have an upload ID lexicographically greater than the
624
641
  # specified `upload-id-marker`.
642
+ # @option options [String] :expected_bucket_owner
643
+ # The account id of the expected bucket owner. If the bucket is owned by
644
+ # a different account, the request will fail with an HTTP `403 (Access
645
+ # Denied)` error.
625
646
  # @return [MultipartUpload::Collection]
626
647
  def multipart_uploads(options = {})
627
648
  batches = Enumerator.new do |y|
@@ -670,6 +691,7 @@ module Aws::S3
670
691
  # key_marker: "KeyMarker",
671
692
  # prefix: "Prefix",
672
693
  # version_id_marker: "VersionIdMarker",
694
+ # expected_bucket_owner: "AccountId",
673
695
  # })
674
696
  # @param [Hash] options ({})
675
697
  # @option options [String] :delimiter
@@ -697,6 +719,10 @@ module Aws::S3
697
719
  # result under CommonPrefixes.
698
720
  # @option options [String] :version_id_marker
699
721
  # Specifies the object version you want to start listing from.
722
+ # @option options [String] :expected_bucket_owner
723
+ # The account id of the expected bucket owner. If the bucket is owned by
724
+ # a different account, the request will fail with an HTTP `403 (Access
725
+ # Denied)` error.
700
726
  # @return [ObjectVersion::Collection]
701
727
  def object_versions(options = {})
702
728
  batches = Enumerator.new do |y|
@@ -728,6 +754,7 @@ module Aws::S3
728
754
  # fetch_owner: false,
729
755
  # start_after: "StartAfter",
730
756
  # request_payer: "requester", # accepts requester
757
+ # expected_bucket_owner: "AccountId",
731
758
  # })
732
759
  # @param [Hash] options ({})
733
760
  # @option options [String] :delimiter
@@ -748,6 +775,10 @@ module Aws::S3
748
775
  # Confirms that the requester knows that she or he will be charged for
749
776
  # the list objects request in V2 style. Bucket owners need not specify
750
777
  # this parameter in their requests.
778
+ # @option options [String] :expected_bucket_owner
779
+ # The account id of the expected bucket owner. If the bucket is owned by
780
+ # a different account, the request will fail with an HTTP `403 (Access
781
+ # Denied)` error.
751
782
  # @return [ObjectSummary::Collection]
752
783
  def objects(options = {})
753
784
  batches = Enumerator.new do |y|
@@ -208,6 +208,7 @@ module Aws::S3
208
208
  # grant_read_acp: "GrantReadACP",
209
209
  # grant_write: "GrantWrite",
210
210
  # grant_write_acp: "GrantWriteACP",
211
+ # expected_bucket_owner: "AccountId",
211
212
  # })
212
213
  # @param [Hash] options ({})
213
214
  # @option options [String] :acl
@@ -235,6 +236,10 @@ module Aws::S3
235
236
  # bucket.
236
237
  # @option options [String] :grant_write_acp
237
238
  # Allows grantee to write the ACL for the applicable bucket.
239
+ # @option options [String] :expected_bucket_owner
240
+ # The account id of the expected bucket owner. If the bucket is owned by
241
+ # a different account, the request will fail with an HTTP `403 (Access
242
+ # Denied)` error.
238
243
  # @return [EmptyStructure]
239
244
  def put(options = {})
240
245
  options = options.merge(bucket: @bucket_name)
@@ -177,8 +177,14 @@ module Aws::S3
177
177
 
178
178
  # @example Request syntax with placeholder values
179
179
  #
180
- # bucket_cors.delete()
180
+ # bucket_cors.delete({
181
+ # expected_bucket_owner: "AccountId",
182
+ # })
181
183
  # @param [Hash] options ({})
184
+ # @option options [String] :expected_bucket_owner
185
+ # The account id of the expected bucket owner. If the bucket is owned by
186
+ # a different account, the request will fail with an HTTP `403 (Access
187
+ # Denied)` error.
182
188
  # @return [EmptyStructure]
183
189
  def delete(options = {})
184
190
  options = options.merge(bucket: @bucket_name)
@@ -201,6 +207,7 @@ module Aws::S3
201
207
  # ],
202
208
  # },
203
209
  # content_md5: "ContentMD5",
210
+ # expected_bucket_owner: "AccountId",
204
211
  # })
205
212
  # @param [Hash] options ({})
206
213
  # @option options [required, Types::CORSConfiguration] :cors_configuration
@@ -220,6 +227,10 @@ module Aws::S3
220
227
  #
221
228
  #
222
229
  # [1]: http://www.ietf.org/rfc/rfc1864.txt
230
+ # @option options [String] :expected_bucket_owner
231
+ # The account id of the expected bucket owner. If the bucket is owned by
232
+ # a different account, the request will fail with an HTTP `403 (Access
233
+ # Denied)` error.
223
234
  # @return [EmptyStructure]
224
235
  def put(options = {})
225
236
  options = options.merge(bucket: @bucket_name)
@@ -176,8 +176,14 @@ module Aws::S3
176
176
 
177
177
  # @example Request syntax with placeholder values
178
178
  #
179
- # bucket_lifecycle.delete()
179
+ # bucket_lifecycle.delete({
180
+ # expected_bucket_owner: "AccountId",
181
+ # })
180
182
  # @param [Hash] options ({})
183
+ # @option options [String] :expected_bucket_owner
184
+ # The account id of the expected bucket owner. If the bucket is owned by
185
+ # a different account, the request will fail with an HTTP `403 (Access
186
+ # Denied)` error.
181
187
  # @return [EmptyStructure]
182
188
  def delete(options = {})
183
189
  options = options.merge(bucket: @bucket_name)
@@ -218,10 +224,15 @@ module Aws::S3
218
224
  # },
219
225
  # ],
220
226
  # },
227
+ # expected_bucket_owner: "AccountId",
221
228
  # })
222
229
  # @param [Hash] options ({})
223
230
  # @option options [String] :content_md5
224
231
  # @option options [Types::LifecycleConfiguration] :lifecycle_configuration
232
+ # @option options [String] :expected_bucket_owner
233
+ # The account id of the expected bucket owner. If the bucket is owned by
234
+ # a different account, the request will fail with an HTTP `403 (Access
235
+ # Denied)` error.
225
236
  # @return [EmptyStructure]
226
237
  def put(options = {})
227
238
  options = options.merge(bucket: @bucket_name)
@@ -176,8 +176,14 @@ module Aws::S3
176
176
 
177
177
  # @example Request syntax with placeholder values
178
178
  #
179
- # bucket_lifecycle_configuration.delete()
179
+ # bucket_lifecycle_configuration.delete({
180
+ # expected_bucket_owner: "AccountId",
181
+ # })
180
182
  # @param [Hash] options ({})
183
+ # @option options [String] :expected_bucket_owner
184
+ # The account id of the expected bucket owner. If the bucket is owned by
185
+ # a different account, the request will fail with an HTTP `403 (Access
186
+ # Denied)` error.
181
187
  # @return [EmptyStructure]
182
188
  def delete(options = {})
183
189
  options = options.merge(bucket: @bucket_name)
@@ -237,10 +243,15 @@ module Aws::S3
237
243
  # },
238
244
  # ],
239
245
  # },
246
+ # expected_bucket_owner: "AccountId",
240
247
  # })
241
248
  # @param [Hash] options ({})
242
249
  # @option options [Types::BucketLifecycleConfiguration] :lifecycle_configuration
243
250
  # Container for lifecycle rules. You can add as many as 1,000 rules.
251
+ # @option options [String] :expected_bucket_owner
252
+ # The account id of the expected bucket owner. If the bucket is owned by
253
+ # a different account, the request will fail with an HTTP `403 (Access
254
+ # Denied)` error.
244
255
  # @return [EmptyStructure]
245
256
  def put(options = {})
246
257
  options = options.merge(bucket: @bucket_name)
@@ -203,12 +203,17 @@ module Aws::S3
203
203
  # },
204
204
  # },
205
205
  # content_md5: "ContentMD5",
206
+ # expected_bucket_owner: "AccountId",
206
207
  # })
207
208
  # @param [Hash] options ({})
208
209
  # @option options [required, Types::BucketLoggingStatus] :bucket_logging_status
209
210
  # Container for logging status information.
210
211
  # @option options [String] :content_md5
211
212
  # The MD5 hash of the `PutBucketLogging` request body.
213
+ # @option options [String] :expected_bucket_owner
214
+ # The account id of the expected bucket owner. If the bucket is owned by
215
+ # a different account, the request will fail with an HTTP `403 (Access
216
+ # Denied)` error.
212
217
  # @return [EmptyStructure]
213
218
  def put(options = {})
214
219
  options = options.merge(bucket: @bucket_name)
@@ -245,12 +245,17 @@ module Aws::S3
245
245
  # },
246
246
  # ],
247
247
  # },
248
+ # expected_bucket_owner: "AccountId",
248
249
  # })
249
250
  # @param [Hash] options ({})
250
251
  # @option options [required, Types::NotificationConfiguration] :notification_configuration
251
252
  # A container for specifying the notification configuration of the
252
253
  # bucket. If this element is empty, notifications are turned off for the
253
254
  # bucket.
255
+ # @option options [String] :expected_bucket_owner
256
+ # The account id of the expected bucket owner. If the bucket is owned by
257
+ # a different account, the request will fail with an HTTP `403 (Access
258
+ # Denied)` error.
254
259
  # @return [EmptyStructure]
255
260
  def put(options = {})
256
261
  options = options.merge(bucket: @bucket_name)
@@ -176,8 +176,14 @@ module Aws::S3
176
176
 
177
177
  # @example Request syntax with placeholder values
178
178
  #
179
- # bucket_policy.delete()
179
+ # bucket_policy.delete({
180
+ # expected_bucket_owner: "AccountId",
181
+ # })
180
182
  # @param [Hash] options ({})
183
+ # @option options [String] :expected_bucket_owner
184
+ # The account id of the expected bucket owner. If the bucket is owned by
185
+ # a different account, the request will fail with an HTTP `403 (Access
186
+ # Denied)` error.
181
187
  # @return [EmptyStructure]
182
188
  def delete(options = {})
183
189
  options = options.merge(bucket: @bucket_name)
@@ -191,6 +197,7 @@ module Aws::S3
191
197
  # content_md5: "ContentMD5",
192
198
  # confirm_remove_self_bucket_access: false,
193
199
  # policy: "Policy", # required
200
+ # expected_bucket_owner: "AccountId",
194
201
  # })
195
202
  # @param [Hash] options ({})
196
203
  # @option options [String] :content_md5
@@ -200,6 +207,10 @@ module Aws::S3
200
207
  # permissions to change this bucket policy in the future.
201
208
  # @option options [required, String] :policy
202
209
  # The bucket policy as a JSON document.
210
+ # @option options [String] :expected_bucket_owner
211
+ # The account id of the expected bucket owner. If the bucket is owned by
212
+ # a different account, the request will fail with an HTTP `403 (Access
213
+ # Denied)` error.
203
214
  # @return [EmptyStructure]
204
215
  def put(options = {})
205
216
  options = options.merge(bucket: @bucket_name)