aws-sdk-s3 1.109.0 → 1.156.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 (100) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +352 -0
  3. data/VERSION +1 -1
  4. data/lib/aws-sdk-s3/access_grants_credentials.rb +57 -0
  5. data/lib/aws-sdk-s3/access_grants_credentials_provider.rb +241 -0
  6. data/lib/aws-sdk-s3/bucket.rb +585 -110
  7. data/lib/aws-sdk-s3/bucket_acl.rb +28 -6
  8. data/lib/aws-sdk-s3/bucket_cors.rb +34 -10
  9. data/lib/aws-sdk-s3/bucket_lifecycle.rb +34 -10
  10. data/lib/aws-sdk-s3/bucket_lifecycle_configuration.rb +34 -10
  11. data/lib/aws-sdk-s3/bucket_logging.rb +35 -6
  12. data/lib/aws-sdk-s3/bucket_notification.rb +12 -6
  13. data/lib/aws-sdk-s3/bucket_policy.rb +78 -10
  14. data/lib/aws-sdk-s3/bucket_region_cache.rb +9 -5
  15. data/lib/aws-sdk-s3/bucket_request_payment.rb +28 -6
  16. data/lib/aws-sdk-s3/bucket_tagging.rb +34 -10
  17. data/lib/aws-sdk-s3/bucket_versioning.rb +72 -14
  18. data/lib/aws-sdk-s3/bucket_website.rb +34 -10
  19. data/lib/aws-sdk-s3/client.rb +7900 -3252
  20. data/lib/aws-sdk-s3/client_api.rb +706 -228
  21. data/lib/aws-sdk-s3/customizations/bucket.rb +23 -47
  22. data/lib/aws-sdk-s3/customizations/errors.rb +40 -0
  23. data/lib/aws-sdk-s3/customizations/object.rb +97 -21
  24. data/lib/aws-sdk-s3/customizations/types/permanent_redirect.rb +26 -0
  25. data/lib/aws-sdk-s3/customizations.rb +10 -0
  26. data/lib/aws-sdk-s3/encryption/client.rb +6 -2
  27. data/lib/aws-sdk-s3/encryption/kms_cipher_provider.rb +13 -9
  28. data/lib/aws-sdk-s3/encryptionV2/client.rb +6 -2
  29. data/lib/aws-sdk-s3/encryptionV2/decrypt_handler.rb +1 -0
  30. data/lib/aws-sdk-s3/encryptionV2/kms_cipher_provider.rb +10 -6
  31. data/lib/aws-sdk-s3/endpoint_parameters.rb +186 -0
  32. data/lib/aws-sdk-s3/endpoint_provider.rb +592 -0
  33. data/lib/aws-sdk-s3/endpoints.rb +2689 -0
  34. data/lib/aws-sdk-s3/express_credentials.rb +55 -0
  35. data/lib/aws-sdk-s3/express_credentials_provider.rb +59 -0
  36. data/lib/aws-sdk-s3/file_downloader.rb +170 -45
  37. data/lib/aws-sdk-s3/file_uploader.rb +11 -4
  38. data/lib/aws-sdk-s3/multipart_file_uploader.rb +30 -11
  39. data/lib/aws-sdk-s3/multipart_stream_uploader.rb +46 -17
  40. data/lib/aws-sdk-s3/multipart_upload.rb +194 -19
  41. data/lib/aws-sdk-s3/multipart_upload_part.rb +280 -30
  42. data/lib/aws-sdk-s3/object.rb +1753 -266
  43. data/lib/aws-sdk-s3/object_acl.rb +49 -13
  44. data/lib/aws-sdk-s3/object_copier.rb +7 -5
  45. data/lib/aws-sdk-s3/object_multipart_copier.rb +46 -22
  46. data/lib/aws-sdk-s3/object_summary.rb +1497 -221
  47. data/lib/aws-sdk-s3/object_version.rb +383 -58
  48. data/lib/aws-sdk-s3/plugins/accelerate.rb +3 -50
  49. data/lib/aws-sdk-s3/plugins/access_grants.rb +114 -0
  50. data/lib/aws-sdk-s3/plugins/arn.rb +0 -184
  51. data/lib/aws-sdk-s3/plugins/bucket_dns.rb +3 -39
  52. data/lib/aws-sdk-s3/plugins/bucket_name_restrictions.rb +1 -6
  53. data/lib/aws-sdk-s3/plugins/dualstack.rb +1 -49
  54. data/lib/aws-sdk-s3/plugins/endpoints.rb +274 -0
  55. data/lib/aws-sdk-s3/plugins/expect_100_continue.rb +2 -1
  56. data/lib/aws-sdk-s3/plugins/express_session_auth.rb +97 -0
  57. data/lib/aws-sdk-s3/plugins/http_200_errors.rb +53 -16
  58. data/lib/aws-sdk-s3/plugins/iad_regional_endpoint.rb +6 -29
  59. data/lib/aws-sdk-s3/plugins/location_constraint.rb +3 -1
  60. data/lib/aws-sdk-s3/plugins/md5s.rb +6 -3
  61. data/lib/aws-sdk-s3/plugins/s3_signer.rb +42 -126
  62. data/lib/aws-sdk-s3/plugins/skip_whole_multipart_get_checksums.rb +31 -0
  63. data/lib/aws-sdk-s3/plugins/streaming_retry.rb +23 -2
  64. data/lib/aws-sdk-s3/presigned_post.rb +99 -78
  65. data/lib/aws-sdk-s3/presigner.rb +28 -37
  66. data/lib/aws-sdk-s3/resource.rb +89 -13
  67. data/lib/aws-sdk-s3/types.rb +6544 -4909
  68. data/lib/aws-sdk-s3.rb +5 -1
  69. data/sig/bucket.rbs +212 -0
  70. data/sig/bucket_acl.rbs +78 -0
  71. data/sig/bucket_cors.rbs +69 -0
  72. data/sig/bucket_lifecycle.rbs +88 -0
  73. data/sig/bucket_lifecycle_configuration.rbs +111 -0
  74. data/sig/bucket_logging.rbs +76 -0
  75. data/sig/bucket_notification.rbs +114 -0
  76. data/sig/bucket_policy.rbs +59 -0
  77. data/sig/bucket_request_payment.rbs +54 -0
  78. data/sig/bucket_tagging.rbs +65 -0
  79. data/sig/bucket_versioning.rbs +77 -0
  80. data/sig/bucket_website.rbs +93 -0
  81. data/sig/client.rbs +2381 -0
  82. data/sig/customizations/bucket.rbs +19 -0
  83. data/sig/customizations/object.rbs +38 -0
  84. data/sig/customizations/object_summary.rbs +35 -0
  85. data/sig/errors.rbs +34 -0
  86. data/sig/multipart_upload.rbs +110 -0
  87. data/sig/multipart_upload_part.rbs +105 -0
  88. data/sig/object.rbs +442 -0
  89. data/sig/object_acl.rbs +86 -0
  90. data/sig/object_summary.rbs +334 -0
  91. data/sig/object_version.rbs +137 -0
  92. data/sig/resource.rbs +127 -0
  93. data/sig/types.rbs +2568 -0
  94. data/sig/waiters.rbs +95 -0
  95. metadata +50 -16
  96. data/lib/aws-sdk-s3/arn/access_point_arn.rb +0 -69
  97. data/lib/aws-sdk-s3/arn/multi_region_access_point_arn.rb +0 -68
  98. data/lib/aws-sdk-s3/arn/object_lambda_arn.rb +0 -69
  99. data/lib/aws-sdk-s3/arn/outpost_access_point_arn.rb +0 -74
  100. data/lib/aws-sdk-s3/plugins/object_lambda_endpoint.rb +0 -25
@@ -66,12 +66,24 @@ module Aws::S3
66
66
  #
67
67
  # * If an object is created by either the Multipart Upload or Part Copy
68
68
  # operation, the ETag is not an MD5 digest, regardless of the method
69
- # of encryption.
69
+ # of encryption. If an object is larger than 16 MB, the Amazon Web
70
+ # Services Management Console will upload or copy that object as a
71
+ # Multipart Upload, and therefore the ETag will not be an MD5 digest.
72
+ #
73
+ # <note markdown="1"> **Directory buckets** - MD5 is not supported by directory buckets.
74
+ #
75
+ # </note>
70
76
  # @return [String]
71
77
  def etag
72
78
  data[:etag]
73
79
  end
74
80
 
81
+ # The algorithm that was used to create a checksum of the object.
82
+ # @return [Array<String>]
83
+ def checksum_algorithm
84
+ data[:checksum_algorithm]
85
+ end
86
+
75
87
  # Size in bytes of the object
76
88
  # @return [Integer]
77
89
  def size
@@ -79,17 +91,47 @@ module Aws::S3
79
91
  end
80
92
 
81
93
  # The class of storage used to store the object.
94
+ #
95
+ # <note markdown="1"> **Directory buckets** - Only the S3 Express One Zone storage class is
96
+ # supported by directory buckets to store objects.
97
+ #
98
+ # </note>
82
99
  # @return [String]
83
100
  def storage_class
84
101
  data[:storage_class]
85
102
  end
86
103
 
87
104
  # The owner of the object
105
+ #
106
+ # <note markdown="1"> **Directory buckets** - The bucket owner is returned as the object
107
+ # owner.
108
+ #
109
+ # </note>
88
110
  # @return [Types::Owner]
89
111
  def owner
90
112
  data[:owner]
91
113
  end
92
114
 
115
+ # Specifies the restoration status of an object. Objects in certain
116
+ # storage classes must be restored before they can be retrieved. For
117
+ # more information about these storage classes and how to work with
118
+ # archived objects, see [ Working with archived objects][1] in the
119
+ # *Amazon S3 User Guide*.
120
+ #
121
+ # <note markdown="1"> This functionality is not supported for directory buckets. Only the S3
122
+ # Express One Zone storage class is supported by directory buckets to
123
+ # store objects.
124
+ #
125
+ # </note>
126
+ #
127
+ #
128
+ #
129
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/archived-objects.html
130
+ # @return [Types::RestoreStatus]
131
+ def restore_status
132
+ data[:restore_status]
133
+ end
134
+
93
135
  # @!endgroup
94
136
 
95
137
  # @return [Client]
@@ -144,8 +186,10 @@ module Aws::S3
144
186
  options, params = separate_params_and_options(options)
145
187
  waiter = Waiters::ObjectExists.new(options)
146
188
  yield_waiter_and_warn(waiter, &block) if block_given?
147
- waiter.wait(params.merge(bucket: @bucket_name,
189
+ Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
190
+ waiter.wait(params.merge(bucket: @bucket_name,
148
191
  key: @key))
192
+ end
149
193
  ObjectSummary.new({
150
194
  bucket_name: @bucket_name,
151
195
  key: @key,
@@ -163,8 +207,10 @@ module Aws::S3
163
207
  options, params = separate_params_and_options(options)
164
208
  waiter = Waiters::ObjectNotExists.new(options)
165
209
  yield_waiter_and_warn(waiter, &block) if block_given?
166
- waiter.wait(params.merge(bucket: @bucket_name,
210
+ Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
211
+ waiter.wait(params.merge(bucket: @bucket_name,
167
212
  key: @key))
213
+ end
168
214
  ObjectSummary.new({
169
215
  bucket_name: @bucket_name,
170
216
  key: @key,
@@ -266,7 +312,9 @@ module Aws::S3
266
312
  :retry
267
313
  end
268
314
  end
269
- Aws::Waiters::Waiter.new(options).wait({})
315
+ Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
316
+ Aws::Waiters::Waiter.new(options).wait({})
317
+ end
270
318
  end
271
319
 
272
320
  # @!group Actions
@@ -276,6 +324,7 @@ module Aws::S3
276
324
  # object_summary.copy_from({
277
325
  # acl: "private", # accepts private, public-read, public-read-write, authenticated-read, aws-exec-read, bucket-owner-read, bucket-owner-full-control
278
326
  # cache_control: "CacheControl",
327
+ # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256
279
328
  # content_disposition: "ContentDisposition",
280
329
  # content_encoding: "ContentEncoding",
281
330
  # content_language: "ContentLanguage",
@@ -295,8 +344,8 @@ module Aws::S3
295
344
  # },
296
345
  # metadata_directive: "COPY", # accepts COPY, REPLACE
297
346
  # tagging_directive: "COPY", # accepts COPY, REPLACE
298
- # server_side_encryption: "AES256", # accepts AES256, aws:kms
299
- # storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE, OUTPOSTS, GLACIER_IR
347
+ # server_side_encryption: "AES256", # accepts AES256, aws:kms, aws:kms:dsse
348
+ # storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE, OUTPOSTS, GLACIER_IR, SNOW, EXPRESS_ONEZONE
300
349
  # website_redirect_location: "WebsiteRedirectLocation",
301
350
  # sse_customer_algorithm: "SSECustomerAlgorithm",
302
351
  # sse_customer_key: "SSECustomerKey",
@@ -317,32 +366,98 @@ module Aws::S3
317
366
  # })
318
367
  # @param [Hash] options ({})
319
368
  # @option options [String] :acl
320
- # The canned ACL to apply to the object.
369
+ # The canned access control list (ACL) to apply to the object.
370
+ #
371
+ # When you copy an object, the ACL metadata is not preserved and is set
372
+ # to `private` by default. Only the owner has full access control. To
373
+ # override the default ACL setting, specify a new ACL when you generate
374
+ # a copy request. For more information, see [Using ACLs][1].
375
+ #
376
+ # If the destination bucket that you're copying objects to uses the
377
+ # bucket owner enforced setting for S3 Object Ownership, ACLs are
378
+ # disabled and no longer affect permissions. Buckets that use this
379
+ # setting only accept `PUT` requests that don't specify an ACL or `PUT`
380
+ # requests that specify bucket owner full control ACLs, such as the
381
+ # `bucket-owner-full-control` canned ACL or an equivalent form of this
382
+ # ACL expressed in the XML format. For more information, see
383
+ # [Controlling ownership of objects and disabling ACLs][2] in the
384
+ # *Amazon S3 User Guide*.
385
+ #
386
+ # <note markdown="1"> * If your destination bucket uses the bucket owner enforced setting
387
+ # for Object Ownership, all objects written to the bucket by any
388
+ # account will be owned by the bucket owner.
389
+ #
390
+ # * This functionality is not supported for directory buckets.
391
+ #
392
+ # * This functionality is not supported for Amazon S3 on Outposts.
321
393
  #
322
- # This action is not supported by Amazon S3 on Outposts.
394
+ # </note>
395
+ #
396
+ #
397
+ #
398
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html
399
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html
323
400
  # @option options [String] :cache_control
324
- # Specifies caching behavior along the request/reply chain.
401
+ # Specifies the caching behavior along the request/reply chain.
402
+ # @option options [String] :checksum_algorithm
403
+ # Indicates the algorithm that you want Amazon S3 to use to create the
404
+ # checksum for the object. For more information, see [Checking object
405
+ # integrity][1] in the *Amazon S3 User Guide*.
406
+ #
407
+ # When you copy an object, if the source object has a checksum, that
408
+ # checksum value will be copied to the new object by default. If the
409
+ # `CopyObject` request does not include this `x-amz-checksum-algorithm`
410
+ # header, the checksum algorithm will be copied from the source object
411
+ # to the destination object (if it's present on the source object). You
412
+ # can optionally specify a different checksum algorithm to use with the
413
+ # `x-amz-checksum-algorithm` header. Unrecognized or unsupported values
414
+ # will respond with the HTTP status code `400 Bad Request`.
415
+ #
416
+ # <note markdown="1"> For directory buckets, when you use Amazon Web Services SDKs, `CRC32`
417
+ # is the default checksum algorithm that's used for performance.
418
+ #
419
+ # </note>
420
+ #
421
+ #
422
+ #
423
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
325
424
  # @option options [String] :content_disposition
326
- # Specifies presentational information for the object.
425
+ # Specifies presentational information for the object. Indicates whether
426
+ # an object should be displayed in a web browser or downloaded as a
427
+ # file. It allows specifying the desired filename for the downloaded
428
+ # file.
327
429
  # @option options [String] :content_encoding
328
430
  # Specifies what content encodings have been applied to the object and
329
431
  # thus what decoding mechanisms must be applied to obtain the media-type
330
432
  # referenced by the Content-Type header field.
433
+ #
434
+ # <note markdown="1"> For directory buckets, only the `aws-chunked` value is supported in
435
+ # this header field.
436
+ #
437
+ # </note>
331
438
  # @option options [String] :content_language
332
439
  # The language the content is in.
333
440
  # @option options [String] :content_type
334
- # A standard MIME type describing the format of the object data.
441
+ # A standard MIME type that describes the format of the object data.
335
442
  # @option options [required, String] :copy_source
336
- # Specifies the source object for the copy operation. You specify the
337
- # value in one of two formats, depending on whether you want to access
338
- # the source object through an [access point][1]\:
443
+ # Specifies the source object for the copy operation. The source object
444
+ # can be up to 5 GB. If the source object is an object that was uploaded
445
+ # by using a multipart upload, the object copy will be a single part
446
+ # object after the source object is copied to the destination bucket.
447
+ #
448
+ # You specify the value of the copy source in one of two formats,
449
+ # depending on whether you want to access the source object through an
450
+ # [access point][1]:
339
451
  #
340
452
  # * For objects not accessed through an access point, specify the name
341
453
  # of the source bucket and the key of the source object, separated by
342
454
  # a slash (/). For example, to copy the object `reports/january.pdf`
343
- # from the bucket `awsexamplebucket`, use
344
- # `awsexamplebucket/reports/january.pdf`. The value must be URL
345
- # encoded.
455
+ # from the general purpose bucket `awsexamplebucket`, use
456
+ # `awsexamplebucket/reports/january.pdf`. The value must be
457
+ # URL-encoded. To copy the object `reports/january.pdf` from the
458
+ # directory bucket `awsexamplebucket--use1-az5--x-s3`, use
459
+ # `awsexamplebucket--use1-az5--x-s3/reports/january.pdf`. The value
460
+ # must be URL-encoded.
346
461
  #
347
462
  # * For objects accessed through access points, specify the Amazon
348
463
  # Resource Name (ARN) of the object as accessed through the access
@@ -354,9 +469,11 @@ module Aws::S3
354
469
  # `arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point/object/reports/january.pdf`.
355
470
  # The value must be URL encoded.
356
471
  #
357
- # <note markdown="1"> Amazon S3 supports copy operations using access points only when the
358
- # source and destination buckets are in the same Amazon Web Services
359
- # Region.
472
+ # <note markdown="1"> * Amazon S3 supports copy operations using Access points only when
473
+ # the source and destination buckets are in the same Amazon Web
474
+ # Services Region.
475
+ #
476
+ # * Access points are not supported by directory buckets.
360
477
  #
361
478
  # </note>
362
479
  #
@@ -367,93 +484,329 @@ module Aws::S3
367
484
  # outpost `my-outpost` owned by account `123456789012` in Region
368
485
  # `us-west-2`, use the URL encoding of
369
486
  # `arn:aws:s3-outposts:us-west-2:123456789012:outpost/my-outpost/object/reports/january.pdf`.
370
- # The value must be URL encoded.
371
- #
372
- # To copy a specific version of an object, append
373
- # `?versionId=<version-id>` to the value (for example,
487
+ # The value must be URL-encoded.
488
+ #
489
+ # If your source bucket versioning is enabled, the `x-amz-copy-source`
490
+ # header by default identifies the current version of an object to copy.
491
+ # If the current version is a delete marker, Amazon S3 behaves as if the
492
+ # object was deleted. To copy a different version, use the `versionId`
493
+ # query parameter. Specifically, append `?versionId=<version-id>` to the
494
+ # value (for example,
374
495
  # `awsexamplebucket/reports/january.pdf?versionId=QUpfdndhfd8438MNFDN93jdnJFkdmqnh893`).
375
496
  # If you don't specify a version ID, Amazon S3 copies the latest
376
497
  # version of the source object.
377
498
  #
499
+ # If you enable versioning on the destination bucket, Amazon S3
500
+ # generates a unique version ID for the copied object. This version ID
501
+ # is different from the version ID of the source object. Amazon S3
502
+ # returns the version ID of the copied object in the `x-amz-version-id`
503
+ # response header in the response.
504
+ #
505
+ # If you do not enable versioning or suspend it on the destination
506
+ # bucket, the version ID that Amazon S3 generates in the
507
+ # `x-amz-version-id` response header is always null.
508
+ #
509
+ # <note markdown="1"> **Directory buckets** - S3 Versioning isn't enabled and supported for
510
+ # directory buckets.
511
+ #
512
+ # </note>
513
+ #
378
514
  #
379
515
  #
380
516
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points.html
381
517
  # @option options [String] :copy_source_if_match
382
518
  # Copies the object if its entity tag (ETag) matches the specified tag.
519
+ #
520
+ # If both the `x-amz-copy-source-if-match` and
521
+ # `x-amz-copy-source-if-unmodified-since` headers are present in the
522
+ # request and evaluate as follows, Amazon S3 returns `200 OK` and copies
523
+ # the data:
524
+ #
525
+ # * `x-amz-copy-source-if-match` condition evaluates to true
526
+ #
527
+ # * `x-amz-copy-source-if-unmodified-since` condition evaluates to false
383
528
  # @option options [Time,DateTime,Date,Integer,String] :copy_source_if_modified_since
384
529
  # Copies the object if it has been modified since the specified time.
530
+ #
531
+ # If both the `x-amz-copy-source-if-none-match` and
532
+ # `x-amz-copy-source-if-modified-since` headers are present in the
533
+ # request and evaluate as follows, Amazon S3 returns the `412
534
+ # Precondition Failed` response code:
535
+ #
536
+ # * `x-amz-copy-source-if-none-match` condition evaluates to false
537
+ #
538
+ # * `x-amz-copy-source-if-modified-since` condition evaluates to true
385
539
  # @option options [String] :copy_source_if_none_match
386
540
  # Copies the object if its entity tag (ETag) is different than the
387
541
  # specified ETag.
542
+ #
543
+ # If both the `x-amz-copy-source-if-none-match` and
544
+ # `x-amz-copy-source-if-modified-since` headers are present in the
545
+ # request and evaluate as follows, Amazon S3 returns the `412
546
+ # Precondition Failed` response code:
547
+ #
548
+ # * `x-amz-copy-source-if-none-match` condition evaluates to false
549
+ #
550
+ # * `x-amz-copy-source-if-modified-since` condition evaluates to true
388
551
  # @option options [Time,DateTime,Date,Integer,String] :copy_source_if_unmodified_since
389
552
  # Copies the object if it hasn't been modified since the specified
390
553
  # time.
554
+ #
555
+ # If both the `x-amz-copy-source-if-match` and
556
+ # `x-amz-copy-source-if-unmodified-since` headers are present in the
557
+ # request and evaluate as follows, Amazon S3 returns `200 OK` and copies
558
+ # the data:
559
+ #
560
+ # * `x-amz-copy-source-if-match` condition evaluates to true
561
+ #
562
+ # * `x-amz-copy-source-if-unmodified-since` condition evaluates to false
391
563
  # @option options [Time,DateTime,Date,Integer,String] :expires
392
564
  # The date and time at which the object is no longer cacheable.
393
565
  # @option options [String] :grant_full_control
394
566
  # Gives the grantee READ, READ\_ACP, and WRITE\_ACP permissions on the
395
567
  # object.
396
568
  #
397
- # This action is not supported by Amazon S3 on Outposts.
569
+ # <note markdown="1"> * This functionality is not supported for directory buckets.
570
+ #
571
+ # * This functionality is not supported for Amazon S3 on Outposts.
572
+ #
573
+ # </note>
398
574
  # @option options [String] :grant_read
399
575
  # Allows grantee to read the object data and its metadata.
400
576
  #
401
- # This action is not supported by Amazon S3 on Outposts.
577
+ # <note markdown="1"> * This functionality is not supported for directory buckets.
578
+ #
579
+ # * This functionality is not supported for Amazon S3 on Outposts.
580
+ #
581
+ # </note>
402
582
  # @option options [String] :grant_read_acp
403
583
  # Allows grantee to read the object ACL.
404
584
  #
405
- # This action is not supported by Amazon S3 on Outposts.
585
+ # <note markdown="1"> * This functionality is not supported for directory buckets.
586
+ #
587
+ # * This functionality is not supported for Amazon S3 on Outposts.
588
+ #
589
+ # </note>
406
590
  # @option options [String] :grant_write_acp
407
591
  # Allows grantee to write the ACL for the applicable object.
408
592
  #
409
- # This action is not supported by Amazon S3 on Outposts.
593
+ # <note markdown="1"> * This functionality is not supported for directory buckets.
594
+ #
595
+ # * This functionality is not supported for Amazon S3 on Outposts.
596
+ #
597
+ # </note>
410
598
  # @option options [Hash<String,String>] :metadata
411
599
  # A map of metadata to store with the object in S3.
412
600
  # @option options [String] :metadata_directive
413
601
  # Specifies whether the metadata is copied from the source object or
414
- # replaced with metadata provided in the request.
602
+ # replaced with metadata that's provided in the request. When copying
603
+ # an object, you can preserve all metadata (the default) or specify new
604
+ # metadata. If this header isn’t specified, `COPY` is the default
605
+ # behavior.
606
+ #
607
+ # **General purpose bucket** - For general purpose buckets, when you
608
+ # grant permissions, you can use the `s3:x-amz-metadata-directive`
609
+ # condition key to enforce certain metadata behavior when objects are
610
+ # uploaded. For more information, see [Amazon S3 condition key
611
+ # examples][1] in the *Amazon S3 User Guide*.
612
+ #
613
+ # <note markdown="1"> `x-amz-website-redirect-location` is unique to each object and is not
614
+ # copied when using the `x-amz-metadata-directive` header. To copy the
615
+ # value, you must specify `x-amz-website-redirect-location` in the
616
+ # request header.
617
+ #
618
+ # </note>
619
+ #
620
+ #
621
+ #
622
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/amazon-s3-policy-keys.html
415
623
  # @option options [String] :tagging_directive
416
- # Specifies whether the object tag-set are copied from the source object
417
- # or replaced with tag-set provided in the request.
624
+ # Specifies whether the object tag-set is copied from the source object
625
+ # or replaced with the tag-set that's provided in the request.
626
+ #
627
+ # The default value is `COPY`.
628
+ #
629
+ # <note markdown="1"> **Directory buckets** - For directory buckets in a `CopyObject`
630
+ # operation, only the empty tag-set is supported. Any requests that
631
+ # attempt to write non-empty tags into directory buckets will receive a
632
+ # `501 Not Implemented` status code. When the destination bucket is a
633
+ # directory bucket, you will receive a `501 Not Implemented` response in
634
+ # any of the following situations:
635
+ #
636
+ # * When you attempt to `COPY` the tag-set from an S3 source object that
637
+ # has non-empty tags.
638
+ #
639
+ # * When you attempt to `REPLACE` the tag-set of a source object and set
640
+ # a non-empty value to `x-amz-tagging`.
641
+ #
642
+ # * When you don't set the `x-amz-tagging-directive` header and the
643
+ # source object has non-empty tags. This is because the default value
644
+ # of `x-amz-tagging-directive` is `COPY`.
645
+ #
646
+ # Because only the empty tag-set is supported for directory buckets in a
647
+ # `CopyObject` operation, the following situations are allowed:
648
+ #
649
+ # * When you attempt to `COPY` the tag-set from a directory bucket
650
+ # source object that has no tags to a general purpose bucket. It
651
+ # copies an empty tag-set to the destination object.
652
+ #
653
+ # * When you attempt to `REPLACE` the tag-set of a directory bucket
654
+ # source object and set the `x-amz-tagging` value of the directory
655
+ # bucket destination object to empty.
656
+ #
657
+ # * When you attempt to `REPLACE` the tag-set of a general purpose
658
+ # bucket source object that has non-empty tags and set the
659
+ # `x-amz-tagging` value of the directory bucket destination object to
660
+ # empty.
661
+ #
662
+ # * When you attempt to `REPLACE` the tag-set of a directory bucket
663
+ # source object and don't set the `x-amz-tagging` value of the
664
+ # directory bucket destination object. This is because the default
665
+ # value of `x-amz-tagging` is the empty value.
666
+ #
667
+ # </note>
418
668
  # @option options [String] :server_side_encryption
419
669
  # The server-side encryption algorithm used when storing this object in
420
- # Amazon S3 (for example, AES256, aws:kms).
670
+ # Amazon S3 (for example, `AES256`, `aws:kms`, `aws:kms:dsse`).
671
+ # Unrecognized or unsupported values won’t write a destination object
672
+ # and will receive a `400 Bad Request` response.
673
+ #
674
+ # Amazon S3 automatically encrypts all new objects that are copied to an
675
+ # S3 bucket. When copying an object, if you don't specify encryption
676
+ # information in your copy request, the encryption setting of the target
677
+ # object is set to the default encryption configuration of the
678
+ # destination bucket. By default, all buckets have a base level of
679
+ # encryption configuration that uses server-side encryption with Amazon
680
+ # S3 managed keys (SSE-S3). If the destination bucket has a default
681
+ # encryption configuration that uses server-side encryption with Key
682
+ # Management Service (KMS) keys (SSE-KMS), dual-layer server-side
683
+ # encryption with Amazon Web Services KMS keys (DSSE-KMS), or
684
+ # server-side encryption with customer-provided encryption keys (SSE-C),
685
+ # Amazon S3 uses the corresponding KMS key, or a customer-provided key
686
+ # to encrypt the target object copy.
687
+ #
688
+ # When you perform a `CopyObject` operation, if you want to use a
689
+ # different type of encryption setting for the target object, you can
690
+ # specify appropriate encryption-related headers to encrypt the target
691
+ # object with an Amazon S3 managed key, a KMS key, or a
692
+ # customer-provided key. If the encryption setting in your request is
693
+ # different from the default encryption configuration of the destination
694
+ # bucket, the encryption setting in your request takes precedence.
695
+ #
696
+ # With server-side encryption, Amazon S3 encrypts your data as it writes
697
+ # your data to disks in its data centers and decrypts the data when you
698
+ # access it. For more information about server-side encryption, see
699
+ # [Using Server-Side Encryption][1] in the *Amazon S3 User Guide*.
700
+ #
701
+ # <note markdown="1"> For directory buckets, only server-side encryption with Amazon S3
702
+ # managed keys (SSE-S3) (`AES256`) is supported.
703
+ #
704
+ # </note>
705
+ #
706
+ #
707
+ #
708
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html
421
709
  # @option options [String] :storage_class
422
- # By default, Amazon S3 uses the STANDARD Storage Class to store newly
423
- # created objects. The STANDARD storage class provides high durability
424
- # and high availability. Depending on performance needs, you can specify
425
- # a different Storage Class. Amazon S3 on Outposts only uses the
426
- # OUTPOSTS Storage Class. For more information, see [Storage Classes][1]
710
+ # If the `x-amz-storage-class` header is not used, the copied object
711
+ # will be stored in the `STANDARD` Storage Class by default. The
712
+ # `STANDARD` storage class provides high durability and high
713
+ # availability. Depending on performance needs, you can specify a
714
+ # different Storage Class.
715
+ #
716
+ # <note markdown="1"> * <b>Directory buckets </b> - For directory buckets, only the S3
717
+ # Express One Zone storage class is supported to store newly created
718
+ # objects. Unsupported storage class values won't write a destination
719
+ # object and will respond with the HTTP status code `400 Bad Request`.
720
+ #
721
+ # * <b>Amazon S3 on Outposts </b> - S3 on Outposts only uses the
722
+ # `OUTPOSTS` Storage Class.
723
+ #
724
+ # </note>
725
+ #
726
+ # You can use the `CopyObject` action to change the storage class of an
727
+ # object that is already stored in Amazon S3 by using the
728
+ # `x-amz-storage-class` header. For more information, see [Storage
729
+ # Classes][1] in the *Amazon S3 User Guide*.
730
+ #
731
+ # Before using an object as a source object for the copy operation, you
732
+ # must restore a copy of it if it meets any of the following conditions:
733
+ #
734
+ # * The storage class of the source object is `GLACIER` or
735
+ # `DEEP_ARCHIVE`.
736
+ #
737
+ # * The storage class of the source object is `INTELLIGENT_TIERING` and
738
+ # it's [S3 Intelligent-Tiering access tier][2] is `Archive Access` or
739
+ # `Deep Archive Access`.
740
+ #
741
+ # For more information, see [RestoreObject][3] and [Copying Objects][4]
427
742
  # in the *Amazon S3 User Guide*.
428
743
  #
429
744
  #
430
745
  #
431
746
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html
747
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/intelligent-tiering-overview.html#intel-tiering-tier-definition
748
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html
749
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/dev/CopyingObjectsExamples.html
432
750
  # @option options [String] :website_redirect_location
433
- # If the bucket is configured as a website, redirects requests for this
434
- # object to another object in the same bucket or to an external URL.
435
- # Amazon S3 stores the value of this header in the object metadata.
751
+ # If the destination bucket is configured as a website, redirects
752
+ # requests for this object copy to another object in the same bucket or
753
+ # to an external URL. Amazon S3 stores the value of this header in the
754
+ # object metadata. This value is unique to each object and is not copied
755
+ # when using the `x-amz-metadata-directive` header. Instead, you may opt
756
+ # to provide this header in combination with the
757
+ # `x-amz-metadata-directive` header.
758
+ #
759
+ # <note markdown="1"> This functionality is not supported for directory buckets.
760
+ #
761
+ # </note>
436
762
  # @option options [String] :sse_customer_algorithm
437
- # Specifies the algorithm to use to when encrypting the object (for
438
- # example, AES256).
763
+ # Specifies the algorithm to use when encrypting the object (for
764
+ # example, `AES256`).
765
+ #
766
+ # When you perform a `CopyObject` operation, if you want to use a
767
+ # different type of encryption setting for the target object, you can
768
+ # specify appropriate encryption-related headers to encrypt the target
769
+ # object with an Amazon S3 managed key, a KMS key, or a
770
+ # customer-provided key. If the encryption setting in your request is
771
+ # different from the default encryption configuration of the destination
772
+ # bucket, the encryption setting in your request takes precedence.
773
+ #
774
+ # <note markdown="1"> This functionality is not supported when the destination bucket is a
775
+ # directory bucket.
776
+ #
777
+ # </note>
439
778
  # @option options [String] :sse_customer_key
440
779
  # Specifies the customer-provided encryption key for Amazon S3 to use in
441
780
  # encrypting data. This value is used to store the object and then it is
442
- # discarded; Amazon S3 does not store the encryption key. The key must
781
+ # discarded. Amazon S3 does not store the encryption key. The key must
443
782
  # be appropriate for use with the algorithm specified in the
444
783
  # `x-amz-server-side-encryption-customer-algorithm` header.
784
+ #
785
+ # <note markdown="1"> This functionality is not supported when the destination bucket is a
786
+ # directory bucket.
787
+ #
788
+ # </note>
445
789
  # @option options [String] :sse_customer_key_md5
446
790
  # Specifies the 128-bit MD5 digest of the encryption key according to
447
791
  # RFC 1321. Amazon S3 uses this header for a message integrity check to
448
792
  # ensure that the encryption key was transmitted without error.
793
+ #
794
+ # <note markdown="1"> This functionality is not supported when the destination bucket is a
795
+ # directory bucket.
796
+ #
797
+ # </note>
449
798
  # @option options [String] :ssekms_key_id
450
- # Specifies the Amazon Web Services KMS key ID to use for object
451
- # encryption. All GET and PUT requests for an object protected by Amazon
452
- # Web Services KMS will fail if not made via SSL or using SigV4. For
453
- # information about configuring using any of the officially supported
454
- # Amazon Web Services SDKs and Amazon Web Services CLI, see [Specifying
455
- # the Signature Version in Request Authentication][1] in the *Amazon S3
456
- # User Guide*.
799
+ # Specifies the KMS ID (Key ID, Key ARN, or Key Alias) to use for object
800
+ # encryption. All GET and PUT requests for an object protected by KMS
801
+ # will fail if they're not made via SSL or using SigV4. For information
802
+ # about configuring any of the officially supported Amazon Web Services
803
+ # SDKs and Amazon Web Services CLI, see [Specifying the Signature
804
+ # Version in Request Authentication][1] in the *Amazon S3 User Guide*.
805
+ #
806
+ # <note markdown="1"> This functionality is not supported when the destination bucket is a
807
+ # directory bucket.
808
+ #
809
+ # </note>
457
810
  #
458
811
  #
459
812
  #
@@ -461,62 +814,177 @@ module Aws::S3
461
814
  # @option options [String] :ssekms_encryption_context
462
815
  # Specifies the Amazon Web Services KMS Encryption Context to use for
463
816
  # object encryption. The value of this header is a base64-encoded UTF-8
464
- # string holding JSON with the encryption context key-value pairs.
817
+ # string holding JSON with the encryption context key-value pairs. This
818
+ # value must be explicitly added to specify encryption context for
819
+ # `CopyObject` requests.
820
+ #
821
+ # <note markdown="1"> This functionality is not supported when the destination bucket is a
822
+ # directory bucket.
823
+ #
824
+ # </note>
465
825
  # @option options [Boolean] :bucket_key_enabled
466
826
  # Specifies whether Amazon S3 should use an S3 Bucket Key for object
467
- # encryption with server-side encryption using AWS KMS (SSE-KMS).
827
+ # encryption with server-side encryption using Key Management Service
828
+ # (KMS) keys (SSE-KMS). If a target object uses SSE-KMS, you can enable
829
+ # an S3 Bucket Key for the object.
830
+ #
468
831
  # Setting this header to `true` causes Amazon S3 to use an S3 Bucket Key
469
- # for object encryption with SSE-KMS.
832
+ # for object encryption with SSE-KMS. Specifying this header with a COPY
833
+ # action doesn’t affect bucket-level settings for S3 Bucket Key.
470
834
  #
471
- # Specifying this header with a COPY action doesn’t affect bucket-level
472
- # settings for S3 Bucket Key.
835
+ # For more information, see [Amazon S3 Bucket Keys][1] in the *Amazon S3
836
+ # User Guide*.
837
+ #
838
+ # <note markdown="1"> This functionality is not supported when the destination bucket is a
839
+ # directory bucket.
840
+ #
841
+ # </note>
842
+ #
843
+ #
844
+ #
845
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html
473
846
  # @option options [String] :copy_source_sse_customer_algorithm
474
847
  # Specifies the algorithm to use when decrypting the source object (for
475
- # example, AES256).
848
+ # example, `AES256`).
849
+ #
850
+ # If the source object for the copy is stored in Amazon S3 using SSE-C,
851
+ # you must provide the necessary encryption information in your request
852
+ # so that Amazon S3 can decrypt the object for copying.
853
+ #
854
+ # <note markdown="1"> This functionality is not supported when the source object is in a
855
+ # directory bucket.
856
+ #
857
+ # </note>
476
858
  # @option options [String] :copy_source_sse_customer_key
477
859
  # Specifies the customer-provided encryption key for Amazon S3 to use to
478
860
  # decrypt the source object. The encryption key provided in this header
479
- # must be one that was used when the source object was created.
861
+ # must be the same one that was used when the source object was created.
862
+ #
863
+ # If the source object for the copy is stored in Amazon S3 using SSE-C,
864
+ # you must provide the necessary encryption information in your request
865
+ # so that Amazon S3 can decrypt the object for copying.
866
+ #
867
+ # <note markdown="1"> This functionality is not supported when the source object is in a
868
+ # directory bucket.
869
+ #
870
+ # </note>
480
871
  # @option options [String] :copy_source_sse_customer_key_md5
481
872
  # Specifies the 128-bit MD5 digest of the encryption key according to
482
873
  # RFC 1321. Amazon S3 uses this header for a message integrity check to
483
874
  # ensure that the encryption key was transmitted without error.
875
+ #
876
+ # If the source object for the copy is stored in Amazon S3 using SSE-C,
877
+ # you must provide the necessary encryption information in your request
878
+ # so that Amazon S3 can decrypt the object for copying.
879
+ #
880
+ # <note markdown="1"> This functionality is not supported when the source object is in a
881
+ # directory bucket.
882
+ #
883
+ # </note>
484
884
  # @option options [String] :request_payer
485
885
  # Confirms that the requester knows that they will be charged for the
486
886
  # request. Bucket owners need not specify this parameter in their
487
- # requests. For information about downloading objects from requester
488
- # pays buckets, see [Downloading Objects in Requestor Pays Buckets][1]
887
+ # requests. If either the source or destination S3 bucket has Requester
888
+ # Pays enabled, the requester will pay for corresponding charges to copy
889
+ # the object. For information about downloading objects from Requester
890
+ # Pays buckets, see [Downloading Objects in Requester Pays Buckets][1]
489
891
  # in the *Amazon S3 User Guide*.
490
892
  #
893
+ # <note markdown="1"> This functionality is not supported for directory buckets.
894
+ #
895
+ # </note>
896
+ #
491
897
  #
492
898
  #
493
899
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
494
900
  # @option options [String] :tagging
495
- # The tag-set for the object destination object this value must be used
496
- # in conjunction with the `TaggingDirective`. The tag-set must be
497
- # encoded as URL Query parameters.
901
+ # The tag-set for the object copy in the destination bucket. This value
902
+ # must be used in conjunction with the `x-amz-tagging-directive` if you
903
+ # choose `REPLACE` for the `x-amz-tagging-directive`. If you choose
904
+ # `COPY` for the `x-amz-tagging-directive`, you don't need to set the
905
+ # `x-amz-tagging` header, because the tag-set will be copied from the
906
+ # source object directly. The tag-set must be encoded as URL Query
907
+ # parameters.
908
+ #
909
+ # The default value is the empty value.
910
+ #
911
+ # <note markdown="1"> **Directory buckets** - For directory buckets in a `CopyObject`
912
+ # operation, only the empty tag-set is supported. Any requests that
913
+ # attempt to write non-empty tags into directory buckets will receive a
914
+ # `501 Not Implemented` status code. When the destination bucket is a
915
+ # directory bucket, you will receive a `501 Not Implemented` response in
916
+ # any of the following situations:
917
+ #
918
+ # * When you attempt to `COPY` the tag-set from an S3 source object that
919
+ # has non-empty tags.
920
+ #
921
+ # * When you attempt to `REPLACE` the tag-set of a source object and set
922
+ # a non-empty value to `x-amz-tagging`.
923
+ #
924
+ # * When you don't set the `x-amz-tagging-directive` header and the
925
+ # source object has non-empty tags. This is because the default value
926
+ # of `x-amz-tagging-directive` is `COPY`.
927
+ #
928
+ # Because only the empty tag-set is supported for directory buckets in a
929
+ # `CopyObject` operation, the following situations are allowed:
930
+ #
931
+ # * When you attempt to `COPY` the tag-set from a directory bucket
932
+ # source object that has no tags to a general purpose bucket. It
933
+ # copies an empty tag-set to the destination object.
934
+ #
935
+ # * When you attempt to `REPLACE` the tag-set of a directory bucket
936
+ # source object and set the `x-amz-tagging` value of the directory
937
+ # bucket destination object to empty.
938
+ #
939
+ # * When you attempt to `REPLACE` the tag-set of a general purpose
940
+ # bucket source object that has non-empty tags and set the
941
+ # `x-amz-tagging` value of the directory bucket destination object to
942
+ # empty.
943
+ #
944
+ # * When you attempt to `REPLACE` the tag-set of a directory bucket
945
+ # source object and don't set the `x-amz-tagging` value of the
946
+ # directory bucket destination object. This is because the default
947
+ # value of `x-amz-tagging` is the empty value.
948
+ #
949
+ # </note>
498
950
  # @option options [String] :object_lock_mode
499
- # The Object Lock mode that you want to apply to the copied object.
951
+ # The Object Lock mode that you want to apply to the object copy.
952
+ #
953
+ # <note markdown="1"> This functionality is not supported for directory buckets.
954
+ #
955
+ # </note>
500
956
  # @option options [Time,DateTime,Date,Integer,String] :object_lock_retain_until_date
501
- # The date and time when you want the copied object's Object Lock to
957
+ # The date and time when you want the Object Lock of the object copy to
502
958
  # expire.
959
+ #
960
+ # <note markdown="1"> This functionality is not supported for directory buckets.
961
+ #
962
+ # </note>
503
963
  # @option options [String] :object_lock_legal_hold_status
504
- # Specifies whether you want to apply a Legal Hold to the copied object.
964
+ # Specifies whether you want to apply a legal hold to the object copy.
965
+ #
966
+ # <note markdown="1"> This functionality is not supported for directory buckets.
967
+ #
968
+ # </note>
505
969
  # @option options [String] :expected_bucket_owner
506
970
  # The account ID of the expected destination bucket owner. If the
507
- # destination bucket is owned by a different account, the request will
508
- # fail with an HTTP `403 (Access Denied)` error.
971
+ # account ID that you provide does not match the actual owner of the
972
+ # destination bucket, the request fails with the HTTP status code `403
973
+ # Forbidden` (access denied).
509
974
  # @option options [String] :expected_source_bucket_owner
510
- # The account ID of the expected source bucket owner. If the source
511
- # bucket is owned by a different account, the request will fail with an
512
- # HTTP `403 (Access Denied)` error.
975
+ # The account ID of the expected source bucket owner. If the account ID
976
+ # that you provide does not match the actual owner of the source bucket,
977
+ # the request fails with the HTTP status code `403 Forbidden` (access
978
+ # denied).
513
979
  # @return [Types::CopyObjectOutput]
514
980
  def copy_from(options = {})
515
981
  options = options.merge(
516
982
  bucket: @bucket_name,
517
983
  key: @key
518
984
  )
519
- resp = @client.copy_object(options)
985
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
986
+ @client.copy_object(options)
987
+ end
520
988
  resp.data
521
989
  end
522
990
 
@@ -535,33 +1003,54 @@ module Aws::S3
535
1003
  # space, and the value that is displayed on your authentication device.
536
1004
  # Required to permanently delete a versioned object if versioning is
537
1005
  # configured with MFA delete enabled.
1006
+ #
1007
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1008
+ #
1009
+ # </note>
538
1010
  # @option options [String] :version_id
539
- # VersionId used to reference a specific version of the object.
1011
+ # Version ID used to reference a specific version of the object.
1012
+ #
1013
+ # <note markdown="1"> For directory buckets in this API operation, only the `null` value of
1014
+ # the version ID is supported.
1015
+ #
1016
+ # </note>
540
1017
  # @option options [String] :request_payer
541
1018
  # Confirms that the requester knows that they will be charged for the
542
1019
  # request. Bucket owners need not specify this parameter in their
543
- # requests. For information about downloading objects from requester
544
- # pays buckets, see [Downloading Objects in Requestor Pays Buckets][1]
1020
+ # requests. If either the source or destination S3 bucket has Requester
1021
+ # Pays enabled, the requester will pay for corresponding charges to copy
1022
+ # the object. For information about downloading objects from Requester
1023
+ # Pays buckets, see [Downloading Objects in Requester Pays Buckets][1]
545
1024
  # in the *Amazon S3 User Guide*.
546
1025
  #
1026
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1027
+ #
1028
+ # </note>
1029
+ #
547
1030
  #
548
1031
  #
549
1032
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
550
1033
  # @option options [Boolean] :bypass_governance_retention
551
1034
  # Indicates whether S3 Object Lock should bypass Governance-mode
552
1035
  # restrictions to process this operation. To use this header, you must
553
- # have the `s3:PutBucketPublicAccessBlock` permission.
1036
+ # have the `s3:BypassGovernanceRetention` permission.
1037
+ #
1038
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1039
+ #
1040
+ # </note>
554
1041
  # @option options [String] :expected_bucket_owner
555
- # The account ID of the expected bucket owner. If the bucket is owned by
556
- # a different account, the request will fail with an HTTP `403 (Access
557
- # Denied)` error.
1042
+ # The account ID of the expected bucket owner. If the account ID that
1043
+ # you provide does not match the actual owner of the bucket, the request
1044
+ # fails with the HTTP status code `403 Forbidden` (access denied).
558
1045
  # @return [Types::DeleteObjectOutput]
559
1046
  def delete(options = {})
560
1047
  options = options.merge(
561
1048
  bucket: @bucket_name,
562
1049
  key: @key
563
1050
  )
564
- resp = @client.delete_object(options)
1051
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
1052
+ @client.delete_object(options)
1053
+ end
565
1054
  resp.data
566
1055
  end
567
1056
 
@@ -586,24 +1075,71 @@ module Aws::S3
586
1075
  # request_payer: "requester", # accepts requester
587
1076
  # part_number: 1,
588
1077
  # expected_bucket_owner: "AccountId",
1078
+ # checksum_mode: "ENABLED", # accepts ENABLED
589
1079
  # })
590
1080
  # @param [Hash] options ({})
591
1081
  # @option options [String] :if_match
592
1082
  # Return the object only if its entity tag (ETag) is the same as the one
593
- # specified, otherwise return a 412 (precondition failed).
1083
+ # specified in this header; otherwise, return a `412 Precondition
1084
+ # Failed` error.
1085
+ #
1086
+ # If both of the `If-Match` and `If-Unmodified-Since` headers are
1087
+ # present in the request as follows: `If-Match` condition evaluates to
1088
+ # `true`, and; `If-Unmodified-Since` condition evaluates to `false`;
1089
+ # then, S3 returns `200 OK` and the data requested.
1090
+ #
1091
+ # For more information about conditional requests, see [RFC 7232][1].
1092
+ #
1093
+ #
1094
+ #
1095
+ # [1]: https://tools.ietf.org/html/rfc7232
594
1096
  # @option options [Time,DateTime,Date,Integer,String] :if_modified_since
595
1097
  # Return the object only if it has been modified since the specified
596
- # time, otherwise return a 304 (not modified).
1098
+ # time; otherwise, return a `304 Not Modified` error.
1099
+ #
1100
+ # If both of the `If-None-Match` and `If-Modified-Since` headers are
1101
+ # present in the request as follows:` If-None-Match` condition evaluates
1102
+ # to `false`, and; `If-Modified-Since` condition evaluates to `true`;
1103
+ # then, S3 returns `304 Not Modified` status code.
1104
+ #
1105
+ # For more information about conditional requests, see [RFC 7232][1].
1106
+ #
1107
+ #
1108
+ #
1109
+ # [1]: https://tools.ietf.org/html/rfc7232
597
1110
  # @option options [String] :if_none_match
598
1111
  # Return the object only if its entity tag (ETag) is different from the
599
- # one specified, otherwise return a 304 (not modified).
1112
+ # one specified in this header; otherwise, return a `304 Not Modified`
1113
+ # error.
1114
+ #
1115
+ # If both of the `If-None-Match` and `If-Modified-Since` headers are
1116
+ # present in the request as follows:` If-None-Match` condition evaluates
1117
+ # to `false`, and; `If-Modified-Since` condition evaluates to `true`;
1118
+ # then, S3 returns `304 Not Modified` HTTP status code.
1119
+ #
1120
+ # For more information about conditional requests, see [RFC 7232][1].
1121
+ #
1122
+ #
1123
+ #
1124
+ # [1]: https://tools.ietf.org/html/rfc7232
600
1125
  # @option options [Time,DateTime,Date,Integer,String] :if_unmodified_since
601
1126
  # Return the object only if it has not been modified since the specified
602
- # time, otherwise return a 412 (precondition failed).
1127
+ # time; otherwise, return a `412 Precondition Failed` error.
1128
+ #
1129
+ # If both of the `If-Match` and `If-Unmodified-Since` headers are
1130
+ # present in the request as follows: `If-Match` condition evaluates to
1131
+ # `true`, and; `If-Unmodified-Since` condition evaluates to `false`;
1132
+ # then, S3 returns `200 OK` and the data requested.
1133
+ #
1134
+ # For more information about conditional requests, see [RFC 7232][1].
1135
+ #
1136
+ #
1137
+ #
1138
+ # [1]: https://tools.ietf.org/html/rfc7232
603
1139
  # @option options [String] :range
604
- # Downloads the specified range bytes of an object. For more information
1140
+ # Downloads the specified byte range of an object. For more information
605
1141
  # about the HTTP Range header, see
606
- # [https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35][1].
1142
+ # [https://www.rfc-editor.org/rfc/rfc9110.html#name-range][1].
607
1143
  #
608
1144
  # <note markdown="1"> Amazon S3 doesn't support retrieving multiple ranges of data per
609
1145
  # `GET` request.
@@ -612,11 +1148,11 @@ module Aws::S3
612
1148
  #
613
1149
  #
614
1150
  #
615
- # [1]: https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35
1151
+ # [1]: https://www.rfc-editor.org/rfc/rfc9110.html#name-range
616
1152
  # @option options [String] :response_cache_control
617
1153
  # Sets the `Cache-Control` header of the response.
618
1154
  # @option options [String] :response_content_disposition
619
- # Sets the `Content-Disposition` header of the response
1155
+ # Sets the `Content-Disposition` header of the response.
620
1156
  # @option options [String] :response_content_encoding
621
1157
  # Sets the `Content-Encoding` header of the response.
622
1158
  # @option options [String] :response_content_language
@@ -626,27 +1162,128 @@ module Aws::S3
626
1162
  # @option options [Time,DateTime,Date,Integer,String] :response_expires
627
1163
  # Sets the `Expires` header of the response.
628
1164
  # @option options [String] :version_id
629
- # VersionId used to reference a specific version of the object.
1165
+ # Version ID used to reference a specific version of the object.
1166
+ #
1167
+ # By default, the `GetObject` operation returns the current version of
1168
+ # an object. To return a different version, use the `versionId`
1169
+ # subresource.
1170
+ #
1171
+ # <note markdown="1"> * If you include a `versionId` in your request header, you must have
1172
+ # the `s3:GetObjectVersion` permission to access a specific version of
1173
+ # an object. The `s3:GetObject` permission is not required in this
1174
+ # scenario.
1175
+ #
1176
+ # * If you request the current version of an object without a specific
1177
+ # `versionId` in the request header, only the `s3:GetObject`
1178
+ # permission is required. The `s3:GetObjectVersion` permission is not
1179
+ # required in this scenario.
1180
+ #
1181
+ # * **Directory buckets** - S3 Versioning isn't enabled and supported
1182
+ # for directory buckets. For this API operation, only the `null` value
1183
+ # of the version ID is supported by directory buckets. You can only
1184
+ # specify `null` to the `versionId` query parameter in the request.
1185
+ #
1186
+ # </note>
1187
+ #
1188
+ # For more information about versioning, see [PutBucketVersioning][1].
1189
+ #
1190
+ #
1191
+ #
1192
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketVersioning.html
630
1193
  # @option options [String] :sse_customer_algorithm
631
- # Specifies the algorithm to use to when decrypting the object (for
632
- # example, AES256).
1194
+ # Specifies the algorithm to use when decrypting the object (for
1195
+ # example, `AES256`).
1196
+ #
1197
+ # If you encrypt an object by using server-side encryption with
1198
+ # customer-provided encryption keys (SSE-C) when you store the object in
1199
+ # Amazon S3, then when you GET the object, you must use the following
1200
+ # headers:
1201
+ #
1202
+ # * `x-amz-server-side-encryption-customer-algorithm`
1203
+ #
1204
+ # * `x-amz-server-side-encryption-customer-key`
1205
+ #
1206
+ # * `x-amz-server-side-encryption-customer-key-MD5`
1207
+ #
1208
+ # For more information about SSE-C, see [Server-Side Encryption (Using
1209
+ # Customer-Provided Encryption Keys)][1] in the *Amazon S3 User Guide*.
1210
+ #
1211
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1212
+ #
1213
+ # </note>
1214
+ #
1215
+ #
1216
+ #
1217
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html
633
1218
  # @option options [String] :sse_customer_key
634
- # Specifies the customer-provided encryption key for Amazon S3 used to
635
- # encrypt the data. This value is used to decrypt the object when
636
- # recovering it and must match the one used when storing the data. The
637
- # key must be appropriate for use with the algorithm specified in the
1219
+ # Specifies the customer-provided encryption key that you originally
1220
+ # provided for Amazon S3 to encrypt the data before storing it. This
1221
+ # value is used to decrypt the object when recovering it and must match
1222
+ # the one used when storing the data. The key must be appropriate for
1223
+ # use with the algorithm specified in the
638
1224
  # `x-amz-server-side-encryption-customer-algorithm` header.
1225
+ #
1226
+ # If you encrypt an object by using server-side encryption with
1227
+ # customer-provided encryption keys (SSE-C) when you store the object in
1228
+ # Amazon S3, then when you GET the object, you must use the following
1229
+ # headers:
1230
+ #
1231
+ # * `x-amz-server-side-encryption-customer-algorithm`
1232
+ #
1233
+ # * `x-amz-server-side-encryption-customer-key`
1234
+ #
1235
+ # * `x-amz-server-side-encryption-customer-key-MD5`
1236
+ #
1237
+ # For more information about SSE-C, see [Server-Side Encryption (Using
1238
+ # Customer-Provided Encryption Keys)][1] in the *Amazon S3 User Guide*.
1239
+ #
1240
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1241
+ #
1242
+ # </note>
1243
+ #
1244
+ #
1245
+ #
1246
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html
639
1247
  # @option options [String] :sse_customer_key_md5
640
- # Specifies the 128-bit MD5 digest of the encryption key according to
641
- # RFC 1321. Amazon S3 uses this header for a message integrity check to
642
- # ensure that the encryption key was transmitted without error.
1248
+ # Specifies the 128-bit MD5 digest of the customer-provided encryption
1249
+ # key according to RFC 1321. Amazon S3 uses this header for a message
1250
+ # integrity check to ensure that the encryption key was transmitted
1251
+ # without error.
1252
+ #
1253
+ # If you encrypt an object by using server-side encryption with
1254
+ # customer-provided encryption keys (SSE-C) when you store the object in
1255
+ # Amazon S3, then when you GET the object, you must use the following
1256
+ # headers:
1257
+ #
1258
+ # * `x-amz-server-side-encryption-customer-algorithm`
1259
+ #
1260
+ # * `x-amz-server-side-encryption-customer-key`
1261
+ #
1262
+ # * `x-amz-server-side-encryption-customer-key-MD5`
1263
+ #
1264
+ # For more information about SSE-C, see [Server-Side Encryption (Using
1265
+ # Customer-Provided Encryption Keys)][1] in the *Amazon S3 User Guide*.
1266
+ #
1267
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1268
+ #
1269
+ # </note>
1270
+ #
1271
+ #
1272
+ #
1273
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html
643
1274
  # @option options [String] :request_payer
644
1275
  # Confirms that the requester knows that they will be charged for the
645
1276
  # request. Bucket owners need not specify this parameter in their
646
- # requests. For information about downloading objects from requester
647
- # pays buckets, see [Downloading Objects in Requestor Pays Buckets][1]
1277
+ # requests. If either the source or destination S3 bucket has Requester
1278
+ # Pays enabled, the requester will pay for corresponding charges to copy
1279
+ # the object. For information about downloading objects from Requester
1280
+ # Pays buckets, see [Downloading Objects in Requester Pays Buckets][1]
648
1281
  # in the *Amazon S3 User Guide*.
649
1282
  #
1283
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1284
+ #
1285
+ # </note>
1286
+ #
650
1287
  #
651
1288
  #
652
1289
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
@@ -656,16 +1293,20 @@ module Aws::S3
656
1293
  # for the part specified. Useful for downloading just a part of an
657
1294
  # object.
658
1295
  # @option options [String] :expected_bucket_owner
659
- # The account ID of the expected bucket owner. If the bucket is owned by
660
- # a different account, the request will fail with an HTTP `403 (Access
661
- # Denied)` error.
1296
+ # The account ID of the expected bucket owner. If the account ID that
1297
+ # you provide does not match the actual owner of the bucket, the request
1298
+ # fails with the HTTP status code `403 Forbidden` (access denied).
1299
+ # @option options [String] :checksum_mode
1300
+ # To retrieve the checksum, this mode must be enabled.
662
1301
  # @return [Types::GetObjectOutput]
663
1302
  def get(options = {}, &block)
664
1303
  options = options.merge(
665
1304
  bucket: @bucket_name,
666
1305
  key: @key
667
1306
  )
668
- resp = @client.get_object(options, &block)
1307
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
1308
+ @client.get_object(options, &block)
1309
+ end
669
1310
  resp.data
670
1311
  end
671
1312
 
@@ -686,8 +1327,8 @@ module Aws::S3
686
1327
  # metadata: {
687
1328
  # "MetadataKey" => "MetadataValue",
688
1329
  # },
689
- # server_side_encryption: "AES256", # accepts AES256, aws:kms
690
- # storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE, OUTPOSTS, GLACIER_IR
1330
+ # server_side_encryption: "AES256", # accepts AES256, aws:kms, aws:kms:dsse
1331
+ # storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE, OUTPOSTS, GLACIER_IR, SNOW, EXPRESS_ONEZONE
691
1332
  # website_redirect_location: "WebsiteRedirectLocation",
692
1333
  # sse_customer_algorithm: "SSECustomerAlgorithm",
693
1334
  # sse_customer_key: "SSECustomerKey",
@@ -701,55 +1342,327 @@ module Aws::S3
701
1342
  # object_lock_retain_until_date: Time.now,
702
1343
  # object_lock_legal_hold_status: "ON", # accepts ON, OFF
703
1344
  # expected_bucket_owner: "AccountId",
1345
+ # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256
704
1346
  # })
705
1347
  # @param [Hash] options ({})
706
1348
  # @option options [String] :acl
707
- # The canned ACL to apply to the object.
1349
+ # The canned ACL to apply to the object. Amazon S3 supports a set of
1350
+ # predefined ACLs, known as *canned ACLs*. Each canned ACL has a
1351
+ # predefined set of grantees and permissions. For more information, see
1352
+ # [Canned ACL][1] in the *Amazon S3 User Guide*.
1353
+ #
1354
+ # By default, all objects are private. Only the owner has full access
1355
+ # control. When uploading an object, you can grant access permissions to
1356
+ # individual Amazon Web Services accounts or to predefined groups
1357
+ # defined by Amazon S3. These permissions are then added to the access
1358
+ # control list (ACL) on the new object. For more information, see [Using
1359
+ # ACLs][2]. One way to grant the permissions using the request headers
1360
+ # is to specify a canned ACL with the `x-amz-acl` request header.
1361
+ #
1362
+ # <note markdown="1"> * This functionality is not supported for directory buckets.
1363
+ #
1364
+ # * This functionality is not supported for Amazon S3 on Outposts.
1365
+ #
1366
+ # </note>
1367
+ #
1368
+ #
1369
+ #
1370
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL
1371
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html
1372
+ # @option options [String] :cache_control
1373
+ # Specifies caching behavior along the request/reply chain.
1374
+ # @option options [String] :content_disposition
1375
+ # Specifies presentational information for the object.
1376
+ # @option options [String] :content_encoding
1377
+ # Specifies what content encodings have been applied to the object and
1378
+ # thus what decoding mechanisms must be applied to obtain the media-type
1379
+ # referenced by the Content-Type header field.
1380
+ #
1381
+ # <note markdown="1"> For directory buckets, only the `aws-chunked` value is supported in
1382
+ # this header field.
1383
+ #
1384
+ # </note>
1385
+ # @option options [String] :content_language
1386
+ # The language that the content is in.
1387
+ # @option options [String] :content_type
1388
+ # A standard MIME type describing the format of the object data.
1389
+ # @option options [Time,DateTime,Date,Integer,String] :expires
1390
+ # The date and time at which the object is no longer cacheable.
1391
+ # @option options [String] :grant_full_control
1392
+ # Specify access permissions explicitly to give the grantee READ,
1393
+ # READ\_ACP, and WRITE\_ACP permissions on the object.
1394
+ #
1395
+ # By default, all objects are private. Only the owner has full access
1396
+ # control. When uploading an object, you can use this header to
1397
+ # explicitly grant access permissions to specific Amazon Web Services
1398
+ # accounts or groups. This header maps to specific permissions that
1399
+ # Amazon S3 supports in an ACL. For more information, see [Access
1400
+ # Control List (ACL) Overview][1] in the *Amazon S3 User Guide*.
1401
+ #
1402
+ # You specify each grantee as a type=value pair, where the type is one
1403
+ # of the following:
1404
+ #
1405
+ # * `id` – if the value specified is the canonical user ID of an Amazon
1406
+ # Web Services account
1407
+ #
1408
+ # * `uri` – if you are granting permissions to a predefined group
1409
+ #
1410
+ # * `emailAddress` – if the value specified is the email address of an
1411
+ # Amazon Web Services account
1412
+ #
1413
+ # <note markdown="1"> Using email addresses to specify a grantee is only supported in the
1414
+ # following Amazon Web Services Regions:
1415
+ #
1416
+ # * US East (N. Virginia)
1417
+ #
1418
+ # * US West (N. California)
1419
+ #
1420
+ # * US West (Oregon)
1421
+ #
1422
+ # * Asia Pacific (Singapore)
1423
+ #
1424
+ # * Asia Pacific (Sydney)
1425
+ #
1426
+ # * Asia Pacific (Tokyo)
1427
+ #
1428
+ # * Europe (Ireland)
1429
+ #
1430
+ # * South America (São Paulo)
1431
+ #
1432
+ # For a list of all the Amazon S3 supported Regions and endpoints, see
1433
+ # [Regions and Endpoints][2] in the Amazon Web Services General
1434
+ # Reference.
1435
+ #
1436
+ # </note>
1437
+ #
1438
+ # For example, the following `x-amz-grant-read` header grants the Amazon
1439
+ # Web Services accounts identified by account IDs permissions to read
1440
+ # object data and its metadata:
1441
+ #
1442
+ # `x-amz-grant-read: id="11112222333", id="444455556666" `
1443
+ #
1444
+ # <note markdown="1"> * This functionality is not supported for directory buckets.
1445
+ #
1446
+ # * This functionality is not supported for Amazon S3 on Outposts.
1447
+ #
1448
+ # </note>
1449
+ #
1450
+ #
1451
+ #
1452
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html
1453
+ # [2]: https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region
1454
+ # @option options [String] :grant_read
1455
+ # Specify access permissions explicitly to allow grantee to read the
1456
+ # object data and its metadata.
1457
+ #
1458
+ # By default, all objects are private. Only the owner has full access
1459
+ # control. When uploading an object, you can use this header to
1460
+ # explicitly grant access permissions to specific Amazon Web Services
1461
+ # accounts or groups. This header maps to specific permissions that
1462
+ # Amazon S3 supports in an ACL. For more information, see [Access
1463
+ # Control List (ACL) Overview][1] in the *Amazon S3 User Guide*.
1464
+ #
1465
+ # You specify each grantee as a type=value pair, where the type is one
1466
+ # of the following:
1467
+ #
1468
+ # * `id` – if the value specified is the canonical user ID of an Amazon
1469
+ # Web Services account
1470
+ #
1471
+ # * `uri` – if you are granting permissions to a predefined group
1472
+ #
1473
+ # * `emailAddress` – if the value specified is the email address of an
1474
+ # Amazon Web Services account
1475
+ #
1476
+ # <note markdown="1"> Using email addresses to specify a grantee is only supported in the
1477
+ # following Amazon Web Services Regions:
1478
+ #
1479
+ # * US East (N. Virginia)
1480
+ #
1481
+ # * US West (N. California)
1482
+ #
1483
+ # * US West (Oregon)
1484
+ #
1485
+ # * Asia Pacific (Singapore)
1486
+ #
1487
+ # * Asia Pacific (Sydney)
1488
+ #
1489
+ # * Asia Pacific (Tokyo)
1490
+ #
1491
+ # * Europe (Ireland)
1492
+ #
1493
+ # * South America (São Paulo)
1494
+ #
1495
+ # For a list of all the Amazon S3 supported Regions and endpoints, see
1496
+ # [Regions and Endpoints][2] in the Amazon Web Services General
1497
+ # Reference.
1498
+ #
1499
+ # </note>
1500
+ #
1501
+ # For example, the following `x-amz-grant-read` header grants the Amazon
1502
+ # Web Services accounts identified by account IDs permissions to read
1503
+ # object data and its metadata:
1504
+ #
1505
+ # `x-amz-grant-read: id="11112222333", id="444455556666" `
1506
+ #
1507
+ # <note markdown="1"> * This functionality is not supported for directory buckets.
1508
+ #
1509
+ # * This functionality is not supported for Amazon S3 on Outposts.
1510
+ #
1511
+ # </note>
708
1512
  #
709
- # This action is not supported by Amazon S3 on Outposts.
710
- # @option options [String] :cache_control
711
- # Specifies caching behavior along the request/reply chain.
712
- # @option options [String] :content_disposition
713
- # Specifies presentational information for the object.
714
- # @option options [String] :content_encoding
715
- # Specifies what content encodings have been applied to the object and
716
- # thus what decoding mechanisms must be applied to obtain the media-type
717
- # referenced by the Content-Type header field.
718
- # @option options [String] :content_language
719
- # The language the content is in.
720
- # @option options [String] :content_type
721
- # A standard MIME type describing the format of the object data.
722
- # @option options [Time,DateTime,Date,Integer,String] :expires
723
- # The date and time at which the object is no longer cacheable.
724
- # @option options [String] :grant_full_control
725
- # Gives the grantee READ, READ\_ACP, and WRITE\_ACP permissions on the
726
- # object.
727
1513
  #
728
- # This action is not supported by Amazon S3 on Outposts.
729
- # @option options [String] :grant_read
730
- # Allows grantee to read the object data and its metadata.
731
1514
  #
732
- # This action is not supported by Amazon S3 on Outposts.
1515
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html
1516
+ # [2]: https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region
733
1517
  # @option options [String] :grant_read_acp
734
- # Allows grantee to read the object ACL.
1518
+ # Specify access permissions explicitly to allows grantee to read the
1519
+ # object ACL.
1520
+ #
1521
+ # By default, all objects are private. Only the owner has full access
1522
+ # control. When uploading an object, you can use this header to
1523
+ # explicitly grant access permissions to specific Amazon Web Services
1524
+ # accounts or groups. This header maps to specific permissions that
1525
+ # Amazon S3 supports in an ACL. For more information, see [Access
1526
+ # Control List (ACL) Overview][1] in the *Amazon S3 User Guide*.
1527
+ #
1528
+ # You specify each grantee as a type=value pair, where the type is one
1529
+ # of the following:
1530
+ #
1531
+ # * `id` – if the value specified is the canonical user ID of an Amazon
1532
+ # Web Services account
1533
+ #
1534
+ # * `uri` – if you are granting permissions to a predefined group
1535
+ #
1536
+ # * `emailAddress` – if the value specified is the email address of an
1537
+ # Amazon Web Services account
1538
+ #
1539
+ # <note markdown="1"> Using email addresses to specify a grantee is only supported in the
1540
+ # following Amazon Web Services Regions:
1541
+ #
1542
+ # * US East (N. Virginia)
1543
+ #
1544
+ # * US West (N. California)
1545
+ #
1546
+ # * US West (Oregon)
1547
+ #
1548
+ # * Asia Pacific (Singapore)
1549
+ #
1550
+ # * Asia Pacific (Sydney)
1551
+ #
1552
+ # * Asia Pacific (Tokyo)
735
1553
  #
736
- # This action is not supported by Amazon S3 on Outposts.
1554
+ # * Europe (Ireland)
1555
+ #
1556
+ # * South America (São Paulo)
1557
+ #
1558
+ # For a list of all the Amazon S3 supported Regions and endpoints, see
1559
+ # [Regions and Endpoints][2] in the Amazon Web Services General
1560
+ # Reference.
1561
+ #
1562
+ # </note>
1563
+ #
1564
+ # For example, the following `x-amz-grant-read` header grants the Amazon
1565
+ # Web Services accounts identified by account IDs permissions to read
1566
+ # object data and its metadata:
1567
+ #
1568
+ # `x-amz-grant-read: id="11112222333", id="444455556666" `
1569
+ #
1570
+ # <note markdown="1"> * This functionality is not supported for directory buckets.
1571
+ #
1572
+ # * This functionality is not supported for Amazon S3 on Outposts.
1573
+ #
1574
+ # </note>
1575
+ #
1576
+ #
1577
+ #
1578
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html
1579
+ # [2]: https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region
737
1580
  # @option options [String] :grant_write_acp
738
- # Allows grantee to write the ACL for the applicable object.
1581
+ # Specify access permissions explicitly to allows grantee to allow
1582
+ # grantee to write the ACL for the applicable object.
1583
+ #
1584
+ # By default, all objects are private. Only the owner has full access
1585
+ # control. When uploading an object, you can use this header to
1586
+ # explicitly grant access permissions to specific Amazon Web Services
1587
+ # accounts or groups. This header maps to specific permissions that
1588
+ # Amazon S3 supports in an ACL. For more information, see [Access
1589
+ # Control List (ACL) Overview][1] in the *Amazon S3 User Guide*.
1590
+ #
1591
+ # You specify each grantee as a type=value pair, where the type is one
1592
+ # of the following:
1593
+ #
1594
+ # * `id` – if the value specified is the canonical user ID of an Amazon
1595
+ # Web Services account
1596
+ #
1597
+ # * `uri` – if you are granting permissions to a predefined group
1598
+ #
1599
+ # * `emailAddress` – if the value specified is the email address of an
1600
+ # Amazon Web Services account
1601
+ #
1602
+ # <note markdown="1"> Using email addresses to specify a grantee is only supported in the
1603
+ # following Amazon Web Services Regions:
1604
+ #
1605
+ # * US East (N. Virginia)
1606
+ #
1607
+ # * US West (N. California)
1608
+ #
1609
+ # * US West (Oregon)
1610
+ #
1611
+ # * Asia Pacific (Singapore)
1612
+ #
1613
+ # * Asia Pacific (Sydney)
1614
+ #
1615
+ # * Asia Pacific (Tokyo)
1616
+ #
1617
+ # * Europe (Ireland)
1618
+ #
1619
+ # * South America (São Paulo)
1620
+ #
1621
+ # For a list of all the Amazon S3 supported Regions and endpoints, see
1622
+ # [Regions and Endpoints][2] in the Amazon Web Services General
1623
+ # Reference.
1624
+ #
1625
+ # </note>
1626
+ #
1627
+ # For example, the following `x-amz-grant-read` header grants the Amazon
1628
+ # Web Services accounts identified by account IDs permissions to read
1629
+ # object data and its metadata:
739
1630
  #
740
- # This action is not supported by Amazon S3 on Outposts.
1631
+ # `x-amz-grant-read: id="11112222333", id="444455556666" `
1632
+ #
1633
+ # <note markdown="1"> * This functionality is not supported for directory buckets.
1634
+ #
1635
+ # * This functionality is not supported for Amazon S3 on Outposts.
1636
+ #
1637
+ # </note>
1638
+ #
1639
+ #
1640
+ #
1641
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html
1642
+ # [2]: https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region
741
1643
  # @option options [Hash<String,String>] :metadata
742
1644
  # A map of metadata to store with the object in S3.
743
1645
  # @option options [String] :server_side_encryption
744
- # The server-side encryption algorithm used when storing this object in
745
- # Amazon S3 (for example, AES256, aws:kms).
1646
+ # The server-side encryption algorithm used when you store this object
1647
+ # in Amazon S3 (for example, `AES256`, `aws:kms`).
1648
+ #
1649
+ # <note markdown="1"> For directory buckets, only server-side encryption with Amazon S3
1650
+ # managed keys (SSE-S3) (`AES256`) is supported.
1651
+ #
1652
+ # </note>
746
1653
  # @option options [String] :storage_class
747
1654
  # By default, Amazon S3 uses the STANDARD Storage Class to store newly
748
1655
  # created objects. The STANDARD storage class provides high durability
749
1656
  # and high availability. Depending on performance needs, you can specify
750
- # a different Storage Class. Amazon S3 on Outposts only uses the
751
- # OUTPOSTS Storage Class. For more information, see [Storage Classes][1]
752
- # in the *Amazon S3 User Guide*.
1657
+ # a different Storage Class. For more information, see [Storage
1658
+ # Classes][1] in the *Amazon S3 User Guide*.
1659
+ #
1660
+ # <note markdown="1"> * For directory buckets, only the S3 Express One Zone storage class is
1661
+ # supported to store newly created objects.
1662
+ #
1663
+ # * Amazon S3 on Outposts only uses the OUTPOSTS Storage Class.
1664
+ #
1665
+ # </note>
753
1666
  #
754
1667
  #
755
1668
  #
@@ -758,75 +1671,127 @@ module Aws::S3
758
1671
  # If the bucket is configured as a website, redirects requests for this
759
1672
  # object to another object in the same bucket or to an external URL.
760
1673
  # Amazon S3 stores the value of this header in the object metadata.
1674
+ #
1675
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1676
+ #
1677
+ # </note>
761
1678
  # @option options [String] :sse_customer_algorithm
762
- # Specifies the algorithm to use to when encrypting the object (for
1679
+ # Specifies the algorithm to use when encrypting the object (for
763
1680
  # example, AES256).
1681
+ #
1682
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1683
+ #
1684
+ # </note>
764
1685
  # @option options [String] :sse_customer_key
765
1686
  # Specifies the customer-provided encryption key for Amazon S3 to use in
766
1687
  # encrypting data. This value is used to store the object and then it is
767
1688
  # discarded; Amazon S3 does not store the encryption key. The key must
768
1689
  # be appropriate for use with the algorithm specified in the
769
1690
  # `x-amz-server-side-encryption-customer-algorithm` header.
1691
+ #
1692
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1693
+ #
1694
+ # </note>
770
1695
  # @option options [String] :sse_customer_key_md5
771
- # Specifies the 128-bit MD5 digest of the encryption key according to
772
- # RFC 1321. Amazon S3 uses this header for a message integrity check to
773
- # ensure that the encryption key was transmitted without error.
774
- # @option options [String] :ssekms_key_id
775
- # Specifies the ID of the symmetric customer managed key to use for
776
- # object encryption. All GET and PUT requests for an object protected by
777
- # Amazon Web Services KMS will fail if not made via SSL or using SigV4.
778
- # For information about configuring using any of the officially
779
- # supported Amazon Web Services SDKs and Amazon Web Services CLI, see
780
- # [Specifying the Signature Version in Request Authentication][1] in the
781
- # *Amazon S3 User Guide*.
1696
+ # Specifies the 128-bit MD5 digest of the customer-provided encryption
1697
+ # key according to RFC 1321. Amazon S3 uses this header for a message
1698
+ # integrity check to ensure that the encryption key was transmitted
1699
+ # without error.
782
1700
  #
1701
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1702
+ #
1703
+ # </note>
1704
+ # @option options [String] :ssekms_key_id
1705
+ # Specifies the ID (Key ID, Key ARN, or Key Alias) of the symmetric
1706
+ # encryption customer managed key to use for object encryption.
783
1707
  #
1708
+ # <note markdown="1"> This functionality is not supported for directory buckets.
784
1709
  #
785
- # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version
1710
+ # </note>
786
1711
  # @option options [String] :ssekms_encryption_context
787
1712
  # Specifies the Amazon Web Services KMS Encryption Context to use for
788
1713
  # object encryption. The value of this header is a base64-encoded UTF-8
789
1714
  # string holding JSON with the encryption context key-value pairs.
1715
+ #
1716
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1717
+ #
1718
+ # </note>
790
1719
  # @option options [Boolean] :bucket_key_enabled
791
1720
  # Specifies whether Amazon S3 should use an S3 Bucket Key for object
792
- # encryption with server-side encryption using AWS KMS (SSE-KMS).
793
- # Setting this header to `true` causes Amazon S3 to use an S3 Bucket Key
794
- # for object encryption with SSE-KMS.
1721
+ # encryption with server-side encryption using Key Management Service
1722
+ # (KMS) keys (SSE-KMS). Setting this header to `true` causes Amazon S3
1723
+ # to use an S3 Bucket Key for object encryption with SSE-KMS.
795
1724
  #
796
1725
  # Specifying this header with an object action doesn’t affect
797
1726
  # bucket-level settings for S3 Bucket Key.
1727
+ #
1728
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1729
+ #
1730
+ # </note>
798
1731
  # @option options [String] :request_payer
799
1732
  # Confirms that the requester knows that they will be charged for the
800
1733
  # request. Bucket owners need not specify this parameter in their
801
- # requests. For information about downloading objects from requester
802
- # pays buckets, see [Downloading Objects in Requestor Pays Buckets][1]
1734
+ # requests. If either the source or destination S3 bucket has Requester
1735
+ # Pays enabled, the requester will pay for corresponding charges to copy
1736
+ # the object. For information about downloading objects from Requester
1737
+ # Pays buckets, see [Downloading Objects in Requester Pays Buckets][1]
803
1738
  # in the *Amazon S3 User Guide*.
804
1739
  #
1740
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1741
+ #
1742
+ # </note>
1743
+ #
805
1744
  #
806
1745
  #
807
1746
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
808
1747
  # @option options [String] :tagging
809
1748
  # The tag-set for the object. The tag-set must be encoded as URL Query
810
1749
  # parameters.
1750
+ #
1751
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1752
+ #
1753
+ # </note>
811
1754
  # @option options [String] :object_lock_mode
812
1755
  # Specifies the Object Lock mode that you want to apply to the uploaded
813
1756
  # object.
1757
+ #
1758
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1759
+ #
1760
+ # </note>
814
1761
  # @option options [Time,DateTime,Date,Integer,String] :object_lock_retain_until_date
815
1762
  # Specifies the date and time when you want the Object Lock to expire.
1763
+ #
1764
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1765
+ #
1766
+ # </note>
816
1767
  # @option options [String] :object_lock_legal_hold_status
817
- # Specifies whether you want to apply a Legal Hold to the uploaded
1768
+ # Specifies whether you want to apply a legal hold to the uploaded
818
1769
  # object.
1770
+ #
1771
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1772
+ #
1773
+ # </note>
819
1774
  # @option options [String] :expected_bucket_owner
820
- # The account ID of the expected bucket owner. If the bucket is owned by
821
- # a different account, the request will fail with an HTTP `403 (Access
822
- # Denied)` error.
1775
+ # The account ID of the expected bucket owner. If the account ID that
1776
+ # you provide does not match the actual owner of the bucket, the request
1777
+ # fails with the HTTP status code `403 Forbidden` (access denied).
1778
+ # @option options [String] :checksum_algorithm
1779
+ # Indicates the algorithm that you want Amazon S3 to use to create the
1780
+ # checksum for the object. For more information, see [Checking object
1781
+ # integrity][1] in the *Amazon S3 User Guide*.
1782
+ #
1783
+ #
1784
+ #
1785
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
823
1786
  # @return [MultipartUpload]
824
1787
  def initiate_multipart_upload(options = {})
825
1788
  options = options.merge(
826
1789
  bucket: @bucket_name,
827
1790
  key: @key
828
1791
  )
829
- resp = @client.create_multipart_upload(options)
1792
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
1793
+ @client.create_multipart_upload(options)
1794
+ end
830
1795
  MultipartUpload.new(
831
1796
  bucket_name: @bucket_name,
832
1797
  object_key: @key,
@@ -847,6 +1812,11 @@ module Aws::S3
847
1812
  # content_length: 1,
848
1813
  # content_md5: "ContentMD5",
849
1814
  # content_type: "ContentType",
1815
+ # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256
1816
+ # checksum_crc32: "ChecksumCRC32",
1817
+ # checksum_crc32c: "ChecksumCRC32C",
1818
+ # checksum_sha1: "ChecksumSHA1",
1819
+ # checksum_sha256: "ChecksumSHA256",
850
1820
  # expires: Time.now,
851
1821
  # grant_full_control: "GrantFullControl",
852
1822
  # grant_read: "GrantRead",
@@ -855,8 +1825,8 @@ module Aws::S3
855
1825
  # metadata: {
856
1826
  # "MetadataKey" => "MetadataValue",
857
1827
  # },
858
- # server_side_encryption: "AES256", # accepts AES256, aws:kms
859
- # storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE, OUTPOSTS, GLACIER_IR
1828
+ # server_side_encryption: "AES256", # accepts AES256, aws:kms, aws:kms:dsse
1829
+ # storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE, OUTPOSTS, GLACIER_IR, SNOW, EXPRESS_ONEZONE
860
1830
  # website_redirect_location: "WebsiteRedirectLocation",
861
1831
  # sse_customer_algorithm: "SSECustomerAlgorithm",
862
1832
  # sse_customer_key: "SSECustomerKey",
@@ -874,13 +1844,41 @@ module Aws::S3
874
1844
  # @param [Hash] options ({})
875
1845
  # @option options [String] :acl
876
1846
  # The canned ACL to apply to the object. For more information, see
877
- # [Canned ACL][1].
1847
+ # [Canned ACL][1] in the *Amazon S3 User Guide*.
1848
+ #
1849
+ # When adding a new object, you can use headers to grant ACL-based
1850
+ # permissions to individual Amazon Web Services accounts or to
1851
+ # predefined groups defined by Amazon S3. These permissions are then
1852
+ # added to the ACL on the object. By default, all objects are private.
1853
+ # Only the owner has full access control. For more information, see
1854
+ # [Access Control List (ACL) Overview][2] and [Managing ACLs Using the
1855
+ # REST API][3] in the *Amazon S3 User Guide*.
1856
+ #
1857
+ # If the bucket that you're uploading objects to uses the bucket owner
1858
+ # enforced setting for S3 Object Ownership, ACLs are disabled and no
1859
+ # longer affect permissions. Buckets that use this setting only accept
1860
+ # PUT requests that don't specify an ACL or PUT requests that specify
1861
+ # bucket owner full control ACLs, such as the
1862
+ # `bucket-owner-full-control` canned ACL or an equivalent form of this
1863
+ # ACL expressed in the XML format. PUT requests that contain other ACLs
1864
+ # (for example, custom grants to certain Amazon Web Services accounts)
1865
+ # fail and return a `400` error with the error code
1866
+ # `AccessControlListNotSupported`. For more information, see [
1867
+ # Controlling ownership of objects and disabling ACLs][4] in the *Amazon
1868
+ # S3 User Guide*.
1869
+ #
1870
+ # <note markdown="1"> * This functionality is not supported for directory buckets.
1871
+ #
1872
+ # * This functionality is not supported for Amazon S3 on Outposts.
878
1873
  #
879
- # This action is not supported by Amazon S3 on Outposts.
1874
+ # </note>
880
1875
  #
881
1876
  #
882
1877
  #
883
1878
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL
1879
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html
1880
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-using-rest-api.html
1881
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html
884
1882
  # @option options [String, StringIO, File] :body
885
1883
  # Object data.
886
1884
  # @option options [String] :cache_control
@@ -894,30 +1892,30 @@ module Aws::S3
894
1892
  # @option options [String] :content_disposition
895
1893
  # Specifies presentational information for the object. For more
896
1894
  # information, see
897
- # [http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1][1].
1895
+ # [https://www.rfc-editor.org/rfc/rfc6266#section-4][1].
898
1896
  #
899
1897
  #
900
1898
  #
901
- # [1]: http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1
1899
+ # [1]: https://www.rfc-editor.org/rfc/rfc6266#section-4
902
1900
  # @option options [String] :content_encoding
903
1901
  # Specifies what content encodings have been applied to the object and
904
1902
  # thus what decoding mechanisms must be applied to obtain the media-type
905
1903
  # referenced by the Content-Type header field. For more information, see
906
- # [http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11][1].
1904
+ # [https://www.rfc-editor.org/rfc/rfc9110.html#field.content-encoding][1].
907
1905
  #
908
1906
  #
909
1907
  #
910
- # [1]: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11
1908
+ # [1]: https://www.rfc-editor.org/rfc/rfc9110.html#field.content-encoding
911
1909
  # @option options [String] :content_language
912
1910
  # The language the content is in.
913
1911
  # @option options [Integer] :content_length
914
1912
  # Size of the body in bytes. This parameter is useful when the size of
915
1913
  # the body cannot be determined automatically. For more information, see
916
- # [http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13][1].
1914
+ # [https://www.rfc-editor.org/rfc/rfc9110.html#name-content-length][1].
917
1915
  #
918
1916
  #
919
1917
  #
920
- # [1]: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13
1918
+ # [1]: https://www.rfc-editor.org/rfc/rfc9110.html#name-content-length
921
1919
  # @option options [String] :content_md5
922
1920
  # The base64-encoded 128-bit MD5 digest of the message (without the
923
1921
  # headers) according to RFC 1864. This header can be used as a message
@@ -927,54 +1925,185 @@ module Aws::S3
927
1925
  # information about REST request authentication, see [REST
928
1926
  # Authentication][1].
929
1927
  #
1928
+ # <note markdown="1"> The `Content-MD5` header is required for any request to upload an
1929
+ # object with a retention period configured using Amazon S3 Object Lock.
1930
+ # For more information about Amazon S3 Object Lock, see [Amazon S3
1931
+ # Object Lock Overview][2] in the *Amazon S3 User Guide*.
1932
+ #
1933
+ # </note>
1934
+ #
1935
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1936
+ #
1937
+ # </note>
1938
+ #
930
1939
  #
931
1940
  #
932
1941
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html
1942
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html
933
1943
  # @option options [String] :content_type
934
1944
  # A standard MIME type describing the format of the contents. For more
935
1945
  # information, see
936
- # [http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17][1].
1946
+ # [https://www.rfc-editor.org/rfc/rfc9110.html#name-content-type][1].
1947
+ #
1948
+ #
1949
+ #
1950
+ # [1]: https://www.rfc-editor.org/rfc/rfc9110.html#name-content-type
1951
+ # @option options [String] :checksum_algorithm
1952
+ # Indicates the algorithm used to create the checksum for the object
1953
+ # when you use the SDK. This header will not provide any additional
1954
+ # functionality if you don't use the SDK. When you send this header,
1955
+ # there must be a corresponding `x-amz-checksum-algorithm ` or
1956
+ # `x-amz-trailer` header sent. Otherwise, Amazon S3 fails the request
1957
+ # with the HTTP status code `400 Bad Request`.
1958
+ #
1959
+ # For the `x-amz-checksum-algorithm ` header, replace ` algorithm ` with
1960
+ # the supported algorithm from the following list:
1961
+ #
1962
+ # * CRC32
1963
+ #
1964
+ # * CRC32C
1965
+ #
1966
+ # * SHA1
1967
+ #
1968
+ # * SHA256
1969
+ #
1970
+ # For more information, see [Checking object integrity][1] in the
1971
+ # *Amazon S3 User Guide*.
1972
+ #
1973
+ # If the individual checksum value you provide through
1974
+ # `x-amz-checksum-algorithm ` doesn't match the checksum algorithm you
1975
+ # set through `x-amz-sdk-checksum-algorithm`, Amazon S3 ignores any
1976
+ # provided `ChecksumAlgorithm` parameter and uses the checksum algorithm
1977
+ # that matches the provided value in `x-amz-checksum-algorithm `.
1978
+ #
1979
+ # <note markdown="1"> For directory buckets, when you use Amazon Web Services SDKs, `CRC32`
1980
+ # is the default checksum algorithm that's used for performance.
1981
+ #
1982
+ # </note>
1983
+ #
1984
+ #
1985
+ #
1986
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
1987
+ # @option options [String] :checksum_crc32
1988
+ # This header can be used as a data integrity check to verify that the
1989
+ # data received is the same data that was originally sent. This header
1990
+ # specifies the base64-encoded, 32-bit CRC32 checksum of the object. For
1991
+ # more information, see [Checking object integrity][1] in the *Amazon S3
1992
+ # User Guide*.
1993
+ #
1994
+ #
1995
+ #
1996
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
1997
+ # @option options [String] :checksum_crc32c
1998
+ # This header can be used as a data integrity check to verify that the
1999
+ # data received is the same data that was originally sent. This header
2000
+ # specifies the base64-encoded, 32-bit CRC32C checksum of the object.
2001
+ # For more information, see [Checking object integrity][1] in the
2002
+ # *Amazon S3 User Guide*.
2003
+ #
2004
+ #
2005
+ #
2006
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
2007
+ # @option options [String] :checksum_sha1
2008
+ # This header can be used as a data integrity check to verify that the
2009
+ # data received is the same data that was originally sent. This header
2010
+ # specifies the base64-encoded, 160-bit SHA-1 digest of the object. For
2011
+ # more information, see [Checking object integrity][1] in the *Amazon S3
2012
+ # User Guide*.
2013
+ #
2014
+ #
2015
+ #
2016
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
2017
+ # @option options [String] :checksum_sha256
2018
+ # This header can be used as a data integrity check to verify that the
2019
+ # data received is the same data that was originally sent. This header
2020
+ # specifies the base64-encoded, 256-bit SHA-256 digest of the object.
2021
+ # For more information, see [Checking object integrity][1] in the
2022
+ # *Amazon S3 User Guide*.
937
2023
  #
938
2024
  #
939
2025
  #
940
- # [1]: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17
2026
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
941
2027
  # @option options [Time,DateTime,Date,Integer,String] :expires
942
2028
  # The date and time at which the object is no longer cacheable. For more
943
2029
  # information, see
944
- # [http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21][1].
2030
+ # [https://www.rfc-editor.org/rfc/rfc7234#section-5.3][1].
945
2031
  #
946
2032
  #
947
2033
  #
948
- # [1]: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21
2034
+ # [1]: https://www.rfc-editor.org/rfc/rfc7234#section-5.3
949
2035
  # @option options [String] :grant_full_control
950
2036
  # Gives the grantee READ, READ\_ACP, and WRITE\_ACP permissions on the
951
2037
  # object.
952
2038
  #
953
- # This action is not supported by Amazon S3 on Outposts.
2039
+ # <note markdown="1"> * This functionality is not supported for directory buckets.
2040
+ #
2041
+ # * This functionality is not supported for Amazon S3 on Outposts.
2042
+ #
2043
+ # </note>
954
2044
  # @option options [String] :grant_read
955
2045
  # Allows grantee to read the object data and its metadata.
956
2046
  #
957
- # This action is not supported by Amazon S3 on Outposts.
2047
+ # <note markdown="1"> * This functionality is not supported for directory buckets.
2048
+ #
2049
+ # * This functionality is not supported for Amazon S3 on Outposts.
2050
+ #
2051
+ # </note>
958
2052
  # @option options [String] :grant_read_acp
959
2053
  # Allows grantee to read the object ACL.
960
2054
  #
961
- # This action is not supported by Amazon S3 on Outposts.
2055
+ # <note markdown="1"> * This functionality is not supported for directory buckets.
2056
+ #
2057
+ # * This functionality is not supported for Amazon S3 on Outposts.
2058
+ #
2059
+ # </note>
962
2060
  # @option options [String] :grant_write_acp
963
2061
  # Allows grantee to write the ACL for the applicable object.
964
2062
  #
965
- # This action is not supported by Amazon S3 on Outposts.
2063
+ # <note markdown="1"> * This functionality is not supported for directory buckets.
2064
+ #
2065
+ # * This functionality is not supported for Amazon S3 on Outposts.
2066
+ #
2067
+ # </note>
966
2068
  # @option options [Hash<String,String>] :metadata
967
2069
  # A map of metadata to store with the object in S3.
968
2070
  # @option options [String] :server_side_encryption
969
- # The server-side encryption algorithm used when storing this object in
970
- # Amazon S3 (for example, AES256, aws:kms).
2071
+ # The server-side encryption algorithm that was used when you store this
2072
+ # object in Amazon S3 (for example, `AES256`, `aws:kms`,
2073
+ # `aws:kms:dsse`).
2074
+ #
2075
+ # <b>General purpose buckets </b> - You have four mutually exclusive
2076
+ # options to protect data using server-side encryption in Amazon S3,
2077
+ # depending on how you choose to manage the encryption keys.
2078
+ # Specifically, the encryption key options are Amazon S3 managed keys
2079
+ # (SSE-S3), Amazon Web Services KMS keys (SSE-KMS or DSSE-KMS), and
2080
+ # customer-provided keys (SSE-C). Amazon S3 encrypts data with
2081
+ # server-side encryption by using Amazon S3 managed keys (SSE-S3) by
2082
+ # default. You can optionally tell Amazon S3 to encrypt data at rest by
2083
+ # using server-side encryption with other key options. For more
2084
+ # information, see [Using Server-Side Encryption][1] in the *Amazon S3
2085
+ # User Guide*.
2086
+ #
2087
+ # <b>Directory buckets </b> - For directory buckets, only the
2088
+ # server-side encryption with Amazon S3 managed keys (SSE-S3) (`AES256`)
2089
+ # value is supported.
2090
+ #
2091
+ #
2092
+ #
2093
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html
971
2094
  # @option options [String] :storage_class
972
2095
  # By default, Amazon S3 uses the STANDARD Storage Class to store newly
973
2096
  # created objects. The STANDARD storage class provides high durability
974
2097
  # and high availability. Depending on performance needs, you can specify
975
- # a different Storage Class. Amazon S3 on Outposts only uses the
976
- # OUTPOSTS Storage Class. For more information, see [Storage Classes][1]
977
- # in the *Amazon S3 User Guide*.
2098
+ # a different Storage Class. For more information, see [Storage
2099
+ # Classes][1] in the *Amazon S3 User Guide*.
2100
+ #
2101
+ # <note markdown="1"> * For directory buckets, only the S3 Express One Zone storage class is
2102
+ # supported to store newly created objects.
2103
+ #
2104
+ # * Amazon S3 on Outposts only uses the OUTPOSTS Storage Class.
2105
+ #
2106
+ # </note>
978
2107
  #
979
2108
  #
980
2109
  #
@@ -983,7 +2112,8 @@ module Aws::S3
983
2112
  # If the bucket is configured as a website, redirects requests for this
984
2113
  # object to another object in the same bucket or to an external URL.
985
2114
  # Amazon S3 stores the value of this header in the object metadata. For
986
- # information about object metadata, see [Object Key and Metadata][1].
2115
+ # information about object metadata, see [Object Key and Metadata][1] in
2116
+ # the *Amazon S3 User Guide*.
987
2117
  #
988
2118
  # In the following example, the request header sets the redirect to an
989
2119
  # object (anotherPage.html) in the same bucket:
@@ -997,7 +2127,11 @@ module Aws::S3
997
2127
  #
998
2128
  # For more information about website hosting in Amazon S3, see [Hosting
999
2129
  # Websites on Amazon S3][2] and [How to Configure Website Page
1000
- # Redirects][3].
2130
+ # Redirects][3] in the *Amazon S3 User Guide*.
2131
+ #
2132
+ # <note markdown="1"> This functionality is not supported for directory buckets.
2133
+ #
2134
+ # </note>
1001
2135
  #
1002
2136
  #
1003
2137
  #
@@ -1005,76 +2139,130 @@ module Aws::S3
1005
2139
  # [2]: https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html
1006
2140
  # [3]: https://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html
1007
2141
  # @option options [String] :sse_customer_algorithm
1008
- # Specifies the algorithm to use to when encrypting the object (for
1009
- # example, AES256).
2142
+ # Specifies the algorithm to use when encrypting the object (for
2143
+ # example, `AES256`).
2144
+ #
2145
+ # <note markdown="1"> This functionality is not supported for directory buckets.
2146
+ #
2147
+ # </note>
1010
2148
  # @option options [String] :sse_customer_key
1011
2149
  # Specifies the customer-provided encryption key for Amazon S3 to use in
1012
2150
  # encrypting data. This value is used to store the object and then it is
1013
2151
  # discarded; Amazon S3 does not store the encryption key. The key must
1014
2152
  # be appropriate for use with the algorithm specified in the
1015
2153
  # `x-amz-server-side-encryption-customer-algorithm` header.
2154
+ #
2155
+ # <note markdown="1"> This functionality is not supported for directory buckets.
2156
+ #
2157
+ # </note>
1016
2158
  # @option options [String] :sse_customer_key_md5
1017
2159
  # Specifies the 128-bit MD5 digest of the encryption key according to
1018
2160
  # RFC 1321. Amazon S3 uses this header for a message integrity check to
1019
2161
  # ensure that the encryption key was transmitted without error.
2162
+ #
2163
+ # <note markdown="1"> This functionality is not supported for directory buckets.
2164
+ #
2165
+ # </note>
1020
2166
  # @option options [String] :ssekms_key_id
1021
- # If `x-amz-server-side-encryption` is present and has the value of
1022
- # `aws:kms`, this header specifies the ID of the Amazon Web Services Key
1023
- # Management Service (Amazon Web Services KMS) symmetrical customer
1024
- # managed key that was used for the object. If you specify
1025
- # `x-amz-server-side-encryption:aws:kms`, but do not provide`
2167
+ # If `x-amz-server-side-encryption` has a valid value of `aws:kms` or
2168
+ # `aws:kms:dsse`, this header specifies the ID (Key ID, Key ARN, or Key
2169
+ # Alias) of the Key Management Service (KMS) symmetric encryption
2170
+ # customer managed key that was used for the object. If you specify
2171
+ # `x-amz-server-side-encryption:aws:kms` or
2172
+ # `x-amz-server-side-encryption:aws:kms:dsse`, but do not provide`
1026
2173
  # x-amz-server-side-encryption-aws-kms-key-id`, Amazon S3 uses the
1027
- # Amazon Web Services managed key to protect the data. If the KMS key
1028
- # does not exist in the same account issuing the command, you must use
1029
- # the full ARN and not just the ID.
2174
+ # Amazon Web Services managed key (`aws/s3`) to protect the data. If the
2175
+ # KMS key does not exist in the same account that's issuing the
2176
+ # command, you must use the full ARN and not just the ID.
2177
+ #
2178
+ # <note markdown="1"> This functionality is not supported for directory buckets.
2179
+ #
2180
+ # </note>
1030
2181
  # @option options [String] :ssekms_encryption_context
1031
2182
  # Specifies the Amazon Web Services KMS Encryption Context to use for
1032
2183
  # object encryption. The value of this header is a base64-encoded UTF-8
1033
- # string holding JSON with the encryption context key-value pairs.
2184
+ # string holding JSON with the encryption context key-value pairs. This
2185
+ # value is stored as object metadata and automatically gets passed on to
2186
+ # Amazon Web Services KMS for future `GetObject` or `CopyObject`
2187
+ # operations on this object. This value must be explicitly added during
2188
+ # `CopyObject` operations.
2189
+ #
2190
+ # <note markdown="1"> This functionality is not supported for directory buckets.
2191
+ #
2192
+ # </note>
1034
2193
  # @option options [Boolean] :bucket_key_enabled
1035
2194
  # Specifies whether Amazon S3 should use an S3 Bucket Key for object
1036
- # encryption with server-side encryption using AWS KMS (SSE-KMS).
1037
- # Setting this header to `true` causes Amazon S3 to use an S3 Bucket Key
1038
- # for object encryption with SSE-KMS.
2195
+ # encryption with server-side encryption using Key Management Service
2196
+ # (KMS) keys (SSE-KMS). Setting this header to `true` causes Amazon S3
2197
+ # to use an S3 Bucket Key for object encryption with SSE-KMS.
1039
2198
  #
1040
2199
  # Specifying this header with a PUT action doesn’t affect bucket-level
1041
2200
  # settings for S3 Bucket Key.
2201
+ #
2202
+ # <note markdown="1"> This functionality is not supported for directory buckets.
2203
+ #
2204
+ # </note>
1042
2205
  # @option options [String] :request_payer
1043
2206
  # Confirms that the requester knows that they will be charged for the
1044
2207
  # request. Bucket owners need not specify this parameter in their
1045
- # requests. For information about downloading objects from requester
1046
- # pays buckets, see [Downloading Objects in Requestor Pays Buckets][1]
2208
+ # requests. If either the source or destination S3 bucket has Requester
2209
+ # Pays enabled, the requester will pay for corresponding charges to copy
2210
+ # the object. For information about downloading objects from Requester
2211
+ # Pays buckets, see [Downloading Objects in Requester Pays Buckets][1]
1047
2212
  # in the *Amazon S3 User Guide*.
1048
2213
  #
2214
+ # <note markdown="1"> This functionality is not supported for directory buckets.
2215
+ #
2216
+ # </note>
2217
+ #
1049
2218
  #
1050
2219
  #
1051
2220
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
1052
2221
  # @option options [String] :tagging
1053
2222
  # The tag-set for the object. The tag-set must be encoded as URL Query
1054
2223
  # parameters. (For example, "Key1=Value1")
2224
+ #
2225
+ # <note markdown="1"> This functionality is not supported for directory buckets.
2226
+ #
2227
+ # </note>
1055
2228
  # @option options [String] :object_lock_mode
1056
2229
  # The Object Lock mode that you want to apply to this object.
2230
+ #
2231
+ # <note markdown="1"> This functionality is not supported for directory buckets.
2232
+ #
2233
+ # </note>
1057
2234
  # @option options [Time,DateTime,Date,Integer,String] :object_lock_retain_until_date
1058
2235
  # The date and time when you want this object's Object Lock to expire.
1059
2236
  # Must be formatted as a timestamp parameter.
2237
+ #
2238
+ # <note markdown="1"> This functionality is not supported for directory buckets.
2239
+ #
2240
+ # </note>
1060
2241
  # @option options [String] :object_lock_legal_hold_status
1061
2242
  # Specifies whether a legal hold will be applied to this object. For
1062
- # more information about S3 Object Lock, see [Object Lock][1].
2243
+ # more information about S3 Object Lock, see [Object Lock][1] in the
2244
+ # *Amazon S3 User Guide*.
2245
+ #
2246
+ # <note markdown="1"> This functionality is not supported for directory buckets.
2247
+ #
2248
+ # </note>
1063
2249
  #
1064
2250
  #
1065
2251
  #
1066
2252
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html
1067
2253
  # @option options [String] :expected_bucket_owner
1068
- # The account ID of the expected bucket owner. If the bucket is owned by
1069
- # a different account, the request will fail with an HTTP `403 (Access
1070
- # Denied)` error.
2254
+ # The account ID of the expected bucket owner. If the account ID that
2255
+ # you provide does not match the actual owner of the bucket, the request
2256
+ # fails with the HTTP status code `403 Forbidden` (access denied).
1071
2257
  # @return [Types::PutObjectOutput]
1072
2258
  def put(options = {})
1073
2259
  options = options.merge(
1074
2260
  bucket: @bucket_name,
1075
2261
  key: @key
1076
2262
  )
1077
- resp = @client.put_object(options)
2263
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
2264
+ @client.put_object(options)
2265
+ end
1078
2266
  resp.data
1079
2267
  end
1080
2268
 
@@ -1128,7 +2316,7 @@ module Aws::S3
1128
2316
  # bucket_name: "BucketName", # required
1129
2317
  # prefix: "LocationPrefix", # required
1130
2318
  # encryption: {
1131
- # encryption_type: "AES256", # required, accepts AES256, aws:kms
2319
+ # encryption_type: "AES256", # required, accepts AES256, aws:kms, aws:kms:dsse
1132
2320
  # kms_key_id: "SSEKMSKeyId",
1133
2321
  # kms_context: "KMSContext",
1134
2322
  # },
@@ -1159,11 +2347,12 @@ module Aws::S3
1159
2347
  # value: "MetadataValue",
1160
2348
  # },
1161
2349
  # ],
1162
- # storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE, OUTPOSTS, GLACIER_IR
2350
+ # storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE, OUTPOSTS, GLACIER_IR, SNOW, EXPRESS_ONEZONE
1163
2351
  # },
1164
2352
  # },
1165
2353
  # },
1166
2354
  # request_payer: "requester", # accepts requester
2355
+ # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256
1167
2356
  # expected_bucket_owner: "AccountId",
1168
2357
  # })
1169
2358
  # @param [Hash] options ({})
@@ -1174,24 +2363,47 @@ module Aws::S3
1174
2363
  # @option options [String] :request_payer
1175
2364
  # Confirms that the requester knows that they will be charged for the
1176
2365
  # request. Bucket owners need not specify this parameter in their
1177
- # requests. For information about downloading objects from requester
1178
- # pays buckets, see [Downloading Objects in Requestor Pays Buckets][1]
2366
+ # requests. If either the source or destination S3 bucket has Requester
2367
+ # Pays enabled, the requester will pay for corresponding charges to copy
2368
+ # the object. For information about downloading objects from Requester
2369
+ # Pays buckets, see [Downloading Objects in Requester Pays Buckets][1]
1179
2370
  # in the *Amazon S3 User Guide*.
1180
2371
  #
2372
+ # <note markdown="1"> This functionality is not supported for directory buckets.
2373
+ #
2374
+ # </note>
2375
+ #
1181
2376
  #
1182
2377
  #
1183
2378
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
2379
+ # @option options [String] :checksum_algorithm
2380
+ # Indicates the algorithm used to create the checksum for the object
2381
+ # when you use the SDK. This header will not provide any additional
2382
+ # functionality if you don't use the SDK. When you send this header,
2383
+ # there must be a corresponding `x-amz-checksum` or `x-amz-trailer`
2384
+ # header sent. Otherwise, Amazon S3 fails the request with the HTTP
2385
+ # status code `400 Bad Request`. For more information, see [Checking
2386
+ # object integrity][1] in the *Amazon S3 User Guide*.
2387
+ #
2388
+ # If you provide an individual checksum, Amazon S3 ignores any provided
2389
+ # `ChecksumAlgorithm` parameter.
2390
+ #
2391
+ #
2392
+ #
2393
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
1184
2394
  # @option options [String] :expected_bucket_owner
1185
- # The account ID of the expected bucket owner. If the bucket is owned by
1186
- # a different account, the request will fail with an HTTP `403 (Access
1187
- # Denied)` error.
2395
+ # The account ID of the expected bucket owner. If the account ID that
2396
+ # you provide does not match the actual owner of the bucket, the request
2397
+ # fails with the HTTP status code `403 Forbidden` (access denied).
1188
2398
  # @return [Types::RestoreObjectOutput]
1189
2399
  def restore_object(options = {})
1190
2400
  options = options.merge(
1191
2401
  bucket: @bucket_name,
1192
2402
  key: @key
1193
2403
  )
1194
- resp = @client.restore_object(options)
2404
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
2405
+ @client.restore_object(options)
2406
+ end
1195
2407
  resp.data
1196
2408
  end
1197
2409
 
@@ -1317,6 +2529,7 @@ module Aws::S3
1317
2529
  # request_payer: "requester", # accepts requester
1318
2530
  # bypass_governance_retention: false,
1319
2531
  # expected_bucket_owner: "AccountId",
2532
+ # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256
1320
2533
  # })
1321
2534
  # @param options ({})
1322
2535
  # @option options [String] :mfa
@@ -1324,24 +2537,85 @@ module Aws::S3
1324
2537
  # space, and the value that is displayed on your authentication device.
1325
2538
  # Required to permanently delete a versioned object if versioning is
1326
2539
  # configured with MFA delete enabled.
2540
+ #
2541
+ # When performing the `DeleteObjects` operation on an MFA delete enabled
2542
+ # bucket, which attempts to delete the specified versioned objects, you
2543
+ # must include an MFA token. If you don't provide an MFA token, the
2544
+ # entire request will fail, even if there are non-versioned objects that
2545
+ # you are trying to delete. If you provide an invalid token, whether
2546
+ # there are versioned object keys in the request or not, the entire
2547
+ # Multi-Object Delete request will fail. For information about MFA
2548
+ # Delete, see [ MFA Delete][1] in the *Amazon S3 User Guide*.
2549
+ #
2550
+ # <note markdown="1"> This functionality is not supported for directory buckets.
2551
+ #
2552
+ # </note>
2553
+ #
2554
+ #
2555
+ #
2556
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html#MultiFactorAuthenticationDelete
1327
2557
  # @option options [String] :request_payer
1328
2558
  # Confirms that the requester knows that they will be charged for the
1329
2559
  # request. Bucket owners need not specify this parameter in their
1330
- # requests. For information about downloading objects from requester
1331
- # pays buckets, see [Downloading Objects in Requestor Pays Buckets][1]
2560
+ # requests. If either the source or destination S3 bucket has Requester
2561
+ # Pays enabled, the requester will pay for corresponding charges to copy
2562
+ # the object. For information about downloading objects from Requester
2563
+ # Pays buckets, see [Downloading Objects in Requester Pays Buckets][1]
1332
2564
  # in the *Amazon S3 User Guide*.
1333
2565
  #
2566
+ # <note markdown="1"> This functionality is not supported for directory buckets.
2567
+ #
2568
+ # </note>
2569
+ #
1334
2570
  #
1335
2571
  #
1336
2572
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
1337
2573
  # @option options [Boolean] :bypass_governance_retention
1338
2574
  # Specifies whether you want to delete this object even if it has a
1339
2575
  # Governance-type Object Lock in place. To use this header, you must
1340
- # have the `s3:PutBucketPublicAccessBlock` permission.
2576
+ # have the `s3:BypassGovernanceRetention` permission.
2577
+ #
2578
+ # <note markdown="1"> This functionality is not supported for directory buckets.
2579
+ #
2580
+ # </note>
1341
2581
  # @option options [String] :expected_bucket_owner
1342
- # The account ID of the expected bucket owner. If the bucket is owned by
1343
- # a different account, the request will fail with an HTTP `403 (Access
1344
- # Denied)` error.
2582
+ # The account ID of the expected bucket owner. If the account ID that
2583
+ # you provide does not match the actual owner of the bucket, the request
2584
+ # fails with the HTTP status code `403 Forbidden` (access denied).
2585
+ # @option options [String] :checksum_algorithm
2586
+ # Indicates the algorithm used to create the checksum for the object
2587
+ # when you use the SDK. This header will not provide any additional
2588
+ # functionality if you don't use the SDK. When you send this header,
2589
+ # there must be a corresponding `x-amz-checksum-algorithm ` or
2590
+ # `x-amz-trailer` header sent. Otherwise, Amazon S3 fails the request
2591
+ # with the HTTP status code `400 Bad Request`.
2592
+ #
2593
+ # For the `x-amz-checksum-algorithm ` header, replace ` algorithm ` with
2594
+ # the supported algorithm from the following list:
2595
+ #
2596
+ # * CRC32
2597
+ #
2598
+ # * CRC32C
2599
+ #
2600
+ # * SHA1
2601
+ #
2602
+ # * SHA256
2603
+ #
2604
+ # For more information, see [Checking object integrity][1] in the
2605
+ # *Amazon S3 User Guide*.
2606
+ #
2607
+ # If the individual checksum value you provide through
2608
+ # `x-amz-checksum-algorithm ` doesn't match the checksum algorithm you
2609
+ # set through `x-amz-sdk-checksum-algorithm`, Amazon S3 ignores any
2610
+ # provided `ChecksumAlgorithm` parameter and uses the checksum algorithm
2611
+ # that matches the provided value in `x-amz-checksum-algorithm `.
2612
+ #
2613
+ # If you provide an individual checksum, Amazon S3 ignores any provided
2614
+ # `ChecksumAlgorithm` parameter.
2615
+ #
2616
+ #
2617
+ #
2618
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
1345
2619
  # @return [void]
1346
2620
  def batch_delete!(options = {})
1347
2621
  batch_enum.each do |batch|
@@ -1354,7 +2628,9 @@ module Aws::S3
1354
2628
  key: item.key
1355
2629
  }
1356
2630
  end
1357
- batch[0].client.delete_objects(params)
2631
+ Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
2632
+ batch[0].client.delete_objects(params)
2633
+ end
1358
2634
  end
1359
2635
  nil
1360
2636
  end