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
@@ -45,6 +45,10 @@ module Aws::S3
45
45
  # Specifies whether the object retrieved was (true) or was not (false) a
46
46
  # Delete Marker. If false, this response header does not appear in the
47
47
  # response.
48
+ #
49
+ # <note markdown="1"> This functionality is not supported for directory buckets.
50
+ #
51
+ # </note>
48
52
  # @return [Boolean]
49
53
  def delete_marker
50
54
  data[:delete_marker]
@@ -56,10 +60,19 @@ module Aws::S3
56
60
  data[:accept_ranges]
57
61
  end
58
62
 
59
- # If the object expiration is configured (see PUT Bucket lifecycle), the
60
- # response includes this header. It includes the expiry-date and rule-id
61
- # key-value pairs providing object expiration information. The value of
62
- # the rule-id is URL encoded.
63
+ # If the object expiration is configured (see [
64
+ # `PutBucketLifecycleConfiguration` ][1]), the response includes this
65
+ # header. It includes the `expiry-date` and `rule-id` key-value pairs
66
+ # providing object expiration information. The value of the `rule-id` is
67
+ # URL-encoded.
68
+ #
69
+ # <note markdown="1"> This functionality is not supported for directory buckets.
70
+ #
71
+ # </note>
72
+ #
73
+ #
74
+ #
75
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html
63
76
  # @return [String]
64
77
  def expiration
65
78
  data[:expiration]
@@ -82,6 +95,12 @@ module Aws::S3
82
95
  # For more information about archiving objects, see [Transitioning
83
96
  # Objects: General Considerations][2].
84
97
  #
98
+ # <note markdown="1"> This functionality is not supported for directory buckets. Only the S3
99
+ # Express One Zone storage class is supported by directory buckets to
100
+ # store objects.
101
+ #
102
+ # </note>
103
+ #
85
104
  #
86
105
  #
87
106
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html
@@ -92,12 +111,16 @@ module Aws::S3
92
111
  end
93
112
 
94
113
  # The archive state of the head object.
114
+ #
115
+ # <note markdown="1"> This functionality is not supported for directory buckets.
116
+ #
117
+ # </note>
95
118
  # @return [String]
96
119
  def archive_status
97
120
  data[:archive_status]
98
121
  end
99
122
 
100
- # Creation date of the object.
123
+ # Date and time when the object was last modified.
101
124
  # @return [Time]
102
125
  def last_modified
103
126
  data[:last_modified]
@@ -109,8 +132,76 @@ module Aws::S3
109
132
  data[:content_length]
110
133
  end
111
134
 
112
- # An ETag is an opaque identifier assigned by a web server to a specific
113
- # version of a resource found at a URL.
135
+ # The base64-encoded, 32-bit CRC32 checksum of the object. This will
136
+ # only be present if it was uploaded with the object. When you use an
137
+ # API operation on an object that was uploaded using multipart uploads,
138
+ # this value may not be a direct checksum value of the full object.
139
+ # Instead, it's a calculation based on the checksum values of each
140
+ # individual part. For more information about how checksums are
141
+ # calculated with multipart uploads, see [ Checking object integrity][1]
142
+ # in the *Amazon S3 User Guide*.
143
+ #
144
+ #
145
+ #
146
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html#large-object-checksums
147
+ # @return [String]
148
+ def checksum_crc32
149
+ data[:checksum_crc32]
150
+ end
151
+
152
+ # The base64-encoded, 32-bit CRC32C checksum of the object. This will
153
+ # only be present if it was uploaded with the object. When you use an
154
+ # API operation on an object that was uploaded using multipart uploads,
155
+ # this value may not be a direct checksum value of the full object.
156
+ # Instead, it's a calculation based on the checksum values of each
157
+ # individual part. For more information about how checksums are
158
+ # calculated with multipart uploads, see [ Checking object integrity][1]
159
+ # in the *Amazon S3 User Guide*.
160
+ #
161
+ #
162
+ #
163
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html#large-object-checksums
164
+ # @return [String]
165
+ def checksum_crc32c
166
+ data[:checksum_crc32c]
167
+ end
168
+
169
+ # The base64-encoded, 160-bit SHA-1 digest of the object. This will only
170
+ # be present if it was uploaded with the object. When you use the API
171
+ # operation on an object that was uploaded using multipart uploads, this
172
+ # value may not be a direct checksum value of the full object. Instead,
173
+ # it's a calculation based on the checksum values of each individual
174
+ # part. For more information about how checksums are calculated with
175
+ # multipart uploads, see [ Checking object integrity][1] in the *Amazon
176
+ # S3 User Guide*.
177
+ #
178
+ #
179
+ #
180
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html#large-object-checksums
181
+ # @return [String]
182
+ def checksum_sha1
183
+ data[:checksum_sha1]
184
+ end
185
+
186
+ # The base64-encoded, 256-bit SHA-256 digest of the object. This will
187
+ # only be present if it was uploaded with the object. When you use an
188
+ # API operation on an object that was uploaded using multipart uploads,
189
+ # this value may not be a direct checksum value of the full object.
190
+ # Instead, it's a calculation based on the checksum values of each
191
+ # individual part. For more information about how checksums are
192
+ # calculated with multipart uploads, see [ Checking object integrity][1]
193
+ # in the *Amazon S3 User Guide*.
194
+ #
195
+ #
196
+ #
197
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html#large-object-checksums
198
+ # @return [String]
199
+ def checksum_sha256
200
+ data[:checksum_sha256]
201
+ end
202
+
203
+ # An entity tag (ETag) is an opaque identifier assigned by a web server
204
+ # to a specific version of a resource found at a URL.
114
205
  # @return [String]
115
206
  def etag
116
207
  data[:etag]
@@ -121,12 +212,20 @@ module Aws::S3
121
212
  # API like SOAP that supports more flexible metadata than the REST API.
122
213
  # For example, using SOAP, you can create metadata whose values are not
123
214
  # legal HTTP headers.
215
+ #
216
+ # <note markdown="1"> This functionality is not supported for directory buckets.
217
+ #
218
+ # </note>
124
219
  # @return [Integer]
125
220
  def missing_meta
126
221
  data[:missing_meta]
127
222
  end
128
223
 
129
- # Version of the object.
224
+ # Version ID of the object.
225
+ #
226
+ # <note markdown="1"> This functionality is not supported for directory buckets.
227
+ #
228
+ # </note>
130
229
  # @return [String]
131
230
  def version_id
132
231
  data[:version_id]
@@ -144,7 +243,7 @@ module Aws::S3
144
243
  data[:content_disposition]
145
244
  end
146
245
 
147
- # Specifies what content encodings have been applied to the object and
246
+ # Indicates what content encodings have been applied to the object and
148
247
  # thus what decoding mechanisms must be applied to obtain the media-type
149
248
  # referenced by the Content-Type header field.
150
249
  # @return [String]
@@ -178,16 +277,22 @@ module Aws::S3
178
277
  # If the bucket is configured as a website, redirects requests for this
179
278
  # object to another object in the same bucket or to an external URL.
180
279
  # Amazon S3 stores the value of this header in the object metadata.
280
+ #
281
+ # <note markdown="1"> This functionality is not supported for directory buckets.
282
+ #
283
+ # </note>
181
284
  # @return [String]
182
285
  def website_redirect_location
183
286
  data[:website_redirect_location]
184
287
  end
185
288
 
186
- # If the object is stored using server-side encryption either with an
187
- # Amazon Web Services KMS key or an Amazon S3-managed encryption key,
188
- # the response includes this header with the value of the server-side
189
- # encryption algorithm used when storing this object in Amazon S3 (for
190
- # example, AES256, aws:kms).
289
+ # The server-side encryption algorithm used when you store this object
290
+ # in Amazon S3 (for example, `AES256`, `aws:kms`, `aws:kms:dsse`).
291
+ #
292
+ # <note markdown="1"> For directory buckets, only server-side encryption with Amazon S3
293
+ # managed keys (SSE-S3) (`AES256`) is supported.
294
+ #
295
+ # </note>
191
296
  # @return [String]
192
297
  def server_side_encryption
193
298
  data[:server_side_encryption]
@@ -200,32 +305,48 @@ module Aws::S3
200
305
  end
201
306
 
202
307
  # If server-side encryption with a customer-provided encryption key was
203
- # requested, the response will include this header confirming the
204
- # encryption algorithm used.
308
+ # requested, the response will include this header to confirm the
309
+ # encryption algorithm that's used.
310
+ #
311
+ # <note markdown="1"> This functionality is not supported for directory buckets.
312
+ #
313
+ # </note>
205
314
  # @return [String]
206
315
  def sse_customer_algorithm
207
316
  data[:sse_customer_algorithm]
208
317
  end
209
318
 
210
319
  # If server-side encryption with a customer-provided encryption key was
211
- # requested, the response will include this header to provide round-trip
212
- # message integrity verification of the customer-provided encryption
213
- # key.
320
+ # requested, the response will include this header to provide the
321
+ # round-trip message integrity verification of the customer-provided
322
+ # encryption key.
323
+ #
324
+ # <note markdown="1"> This functionality is not supported for directory buckets.
325
+ #
326
+ # </note>
214
327
  # @return [String]
215
328
  def sse_customer_key_md5
216
329
  data[:sse_customer_key_md5]
217
330
  end
218
331
 
219
- # If present, specifies the ID of the Amazon Web Services Key Management
220
- # Service (Amazon Web Services KMS) symmetric customer managed key that
221
- # was used for the object.
332
+ # If present, indicates the ID of the Key Management Service (KMS)
333
+ # symmetric encryption customer managed key that was used for the
334
+ # object.
335
+ #
336
+ # <note markdown="1"> This functionality is not supported for directory buckets.
337
+ #
338
+ # </note>
222
339
  # @return [String]
223
340
  def ssekms_key_id
224
341
  data[:ssekms_key_id]
225
342
  end
226
343
 
227
344
  # Indicates whether the object uses an S3 Bucket Key for server-side
228
- # encryption with Amazon Web Services KMS (SSE-KMS).
345
+ # encryption with Key Management Service (KMS) keys (SSE-KMS).
346
+ #
347
+ # <note markdown="1"> This functionality is not supported for directory buckets.
348
+ #
349
+ # </note>
229
350
  # @return [Boolean]
230
351
  def bucket_key_enabled
231
352
  data[:bucket_key_enabled]
@@ -237,6 +358,11 @@ module Aws::S3
237
358
  #
238
359
  # For more information, see [Storage Classes][1].
239
360
  #
361
+ # <note markdown="1"> <b>Directory buckets </b> - Only the S3 Express One Zone storage class
362
+ # is supported by directory buckets to store objects.
363
+ #
364
+ # </note>
365
+ #
240
366
  #
241
367
  #
242
368
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html
@@ -247,6 +373,10 @@ module Aws::S3
247
373
 
248
374
  # If present, indicates that the requester was successfully charged for
249
375
  # the request.
376
+ #
377
+ # <note markdown="1"> This functionality is not supported for directory buckets.
378
+ #
379
+ # </note>
250
380
  # @return [String]
251
381
  def request_charged
252
382
  data[:request_charged]
@@ -261,7 +391,7 @@ module Aws::S3
261
391
  # metadata (`HeadObject`) from these buckets, Amazon S3 will return the
262
392
  # `x-amz-replication-status` header in the response as follows:
263
393
  #
264
- # * If requesting an object from the source bucket Amazon S3 will
394
+ # * **If requesting an object from the source bucket**, Amazon S3 will
265
395
  # return the `x-amz-replication-status` header if the object in your
266
396
  # request is eligible for replication.
267
397
  #
@@ -274,12 +404,12 @@ module Aws::S3
274
404
  # value PENDING, COMPLETED or FAILED indicating object replication
275
405
  # status.
276
406
  #
277
- # * If requesting an object from a destination bucket Amazon S3 will
278
- # return the `x-amz-replication-status` header with value REPLICA if
279
- # the object in your request is a replica that Amazon S3 created and
280
- # there is no replica modification replication in progress.
407
+ # * **If requesting an object from a destination bucket**, Amazon S3
408
+ # will return the `x-amz-replication-status` header with value REPLICA
409
+ # if the object in your request is a replica that Amazon S3 created
410
+ # and there is no replica modification replication in progress.
281
411
  #
282
- # * When replicating objects to multiple destination buckets the
412
+ # * **When replicating objects to multiple destination buckets**, the
283
413
  # `x-amz-replication-status` header acts differently. The header of
284
414
  # the source object will only return a value of COMPLETED when
285
415
  # replication is successful to all destinations. The header will
@@ -289,6 +419,10 @@ module Aws::S3
289
419
  #
290
420
  # For more information, see [Replication][1].
291
421
  #
422
+ # <note markdown="1"> This functionality is not supported for directory buckets.
423
+ #
424
+ # </note>
425
+ #
292
426
  #
293
427
  #
294
428
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html
@@ -297,7 +431,9 @@ module Aws::S3
297
431
  data[:replication_status]
298
432
  end
299
433
 
300
- # The count of parts this object has.
434
+ # The count of parts this object has. This value is only returned if you
435
+ # specify `partNumber` in your request and the object was uploaded as a
436
+ # multipart upload.
301
437
  # @return [Integer]
302
438
  def parts_count
303
439
  data[:parts_count]
@@ -308,6 +444,10 @@ module Aws::S3
308
444
  # `s3:GetObjectRetention` permission. For more information about S3
309
445
  # Object Lock, see [Object Lock][1].
310
446
  #
447
+ # <note markdown="1"> This functionality is not supported for directory buckets.
448
+ #
449
+ # </note>
450
+ #
311
451
  #
312
452
  #
313
453
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html
@@ -319,6 +459,10 @@ module Aws::S3
319
459
  # The date and time when the Object Lock retention period expires. This
320
460
  # header is only returned if the requester has the
321
461
  # `s3:GetObjectRetention` permission.
462
+ #
463
+ # <note markdown="1"> This functionality is not supported for directory buckets.
464
+ #
465
+ # </note>
322
466
  # @return [Time]
323
467
  def object_lock_retain_until_date
324
468
  data[:object_lock_retain_until_date]
@@ -330,6 +474,10 @@ module Aws::S3
330
474
  # specified version of this object has never had a legal hold applied.
331
475
  # For more information about S3 Object Lock, see [Object Lock][1].
332
476
  #
477
+ # <note markdown="1"> This functionality is not supported for directory buckets.
478
+ #
479
+ # </note>
480
+ #
333
481
  #
334
482
  #
335
483
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html
@@ -352,10 +500,12 @@ module Aws::S3
352
500
  #
353
501
  # @return [self]
354
502
  def load
355
- resp = @client.head_object(
503
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
504
+ @client.head_object(
356
505
  bucket: @bucket_name,
357
506
  key: @key
358
507
  )
508
+ end
359
509
  @data = resp.data
360
510
  self
361
511
  end
@@ -400,8 +550,10 @@ module Aws::S3
400
550
  options, params = separate_params_and_options(options)
401
551
  waiter = Waiters::ObjectExists.new(options)
402
552
  yield_waiter_and_warn(waiter, &block) if block_given?
403
- waiter.wait(params.merge(bucket: @bucket_name,
553
+ Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
554
+ waiter.wait(params.merge(bucket: @bucket_name,
404
555
  key: @key))
556
+ end
405
557
  Object.new({
406
558
  bucket_name: @bucket_name,
407
559
  key: @key,
@@ -419,8 +571,10 @@ module Aws::S3
419
571
  options, params = separate_params_and_options(options)
420
572
  waiter = Waiters::ObjectNotExists.new(options)
421
573
  yield_waiter_and_warn(waiter, &block) if block_given?
422
- waiter.wait(params.merge(bucket: @bucket_name,
574
+ Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
575
+ waiter.wait(params.merge(bucket: @bucket_name,
423
576
  key: @key))
577
+ end
424
578
  Object.new({
425
579
  bucket_name: @bucket_name,
426
580
  key: @key,
@@ -522,7 +676,9 @@ module Aws::S3
522
676
  :retry
523
677
  end
524
678
  end
525
- Aws::Waiters::Waiter.new(options).wait({})
679
+ Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
680
+ Aws::Waiters::Waiter.new(options).wait({})
681
+ end
526
682
  end
527
683
 
528
684
  # @!group Actions
@@ -532,6 +688,7 @@ module Aws::S3
532
688
  # object.copy_from({
533
689
  # acl: "private", # accepts private, public-read, public-read-write, authenticated-read, aws-exec-read, bucket-owner-read, bucket-owner-full-control
534
690
  # cache_control: "CacheControl",
691
+ # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256
535
692
  # content_disposition: "ContentDisposition",
536
693
  # content_encoding: "ContentEncoding",
537
694
  # content_language: "ContentLanguage",
@@ -551,8 +708,8 @@ module Aws::S3
551
708
  # },
552
709
  # metadata_directive: "COPY", # accepts COPY, REPLACE
553
710
  # tagging_directive: "COPY", # accepts COPY, REPLACE
554
- # server_side_encryption: "AES256", # accepts AES256, aws:kms
555
- # storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE, OUTPOSTS, GLACIER_IR
711
+ # server_side_encryption: "AES256", # accepts AES256, aws:kms, aws:kms:dsse
712
+ # storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE, OUTPOSTS, GLACIER_IR, SNOW, EXPRESS_ONEZONE
556
713
  # website_redirect_location: "WebsiteRedirectLocation",
557
714
  # sse_customer_algorithm: "SSECustomerAlgorithm",
558
715
  # sse_customer_key: "SSECustomerKey",
@@ -573,32 +730,98 @@ module Aws::S3
573
730
  # })
574
731
  # @param [Hash] options ({})
575
732
  # @option options [String] :acl
576
- # The canned ACL to apply to the object.
733
+ # The canned access control list (ACL) to apply to the object.
734
+ #
735
+ # When you copy an object, the ACL metadata is not preserved and is set
736
+ # to `private` by default. Only the owner has full access control. To
737
+ # override the default ACL setting, specify a new ACL when you generate
738
+ # a copy request. For more information, see [Using ACLs][1].
739
+ #
740
+ # If the destination bucket that you're copying objects to uses the
741
+ # bucket owner enforced setting for S3 Object Ownership, ACLs are
742
+ # disabled and no longer affect permissions. Buckets that use this
743
+ # setting only accept `PUT` requests that don't specify an ACL or `PUT`
744
+ # requests that specify bucket owner full control ACLs, such as the
745
+ # `bucket-owner-full-control` canned ACL or an equivalent form of this
746
+ # ACL expressed in the XML format. For more information, see
747
+ # [Controlling ownership of objects and disabling ACLs][2] in the
748
+ # *Amazon S3 User Guide*.
749
+ #
750
+ # <note markdown="1"> * If your destination bucket uses the bucket owner enforced setting
751
+ # for Object Ownership, all objects written to the bucket by any
752
+ # account will be owned by the bucket owner.
753
+ #
754
+ # * This functionality is not supported for directory buckets.
755
+ #
756
+ # * This functionality is not supported for Amazon S3 on Outposts.
757
+ #
758
+ # </note>
759
+ #
577
760
  #
578
- # This action is not supported by Amazon S3 on Outposts.
761
+ #
762
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html
763
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html
579
764
  # @option options [String] :cache_control
580
- # Specifies caching behavior along the request/reply chain.
765
+ # Specifies the caching behavior along the request/reply chain.
766
+ # @option options [String] :checksum_algorithm
767
+ # Indicates the algorithm that you want Amazon S3 to use to create the
768
+ # checksum for the object. For more information, see [Checking object
769
+ # integrity][1] in the *Amazon S3 User Guide*.
770
+ #
771
+ # When you copy an object, if the source object has a checksum, that
772
+ # checksum value will be copied to the new object by default. If the
773
+ # `CopyObject` request does not include this `x-amz-checksum-algorithm`
774
+ # header, the checksum algorithm will be copied from the source object
775
+ # to the destination object (if it's present on the source object). You
776
+ # can optionally specify a different checksum algorithm to use with the
777
+ # `x-amz-checksum-algorithm` header. Unrecognized or unsupported values
778
+ # will respond with the HTTP status code `400 Bad Request`.
779
+ #
780
+ # <note markdown="1"> For directory buckets, when you use Amazon Web Services SDKs, `CRC32`
781
+ # is the default checksum algorithm that's used for performance.
782
+ #
783
+ # </note>
784
+ #
785
+ #
786
+ #
787
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
581
788
  # @option options [String] :content_disposition
582
- # Specifies presentational information for the object.
789
+ # Specifies presentational information for the object. Indicates whether
790
+ # an object should be displayed in a web browser or downloaded as a
791
+ # file. It allows specifying the desired filename for the downloaded
792
+ # file.
583
793
  # @option options [String] :content_encoding
584
794
  # Specifies what content encodings have been applied to the object and
585
795
  # thus what decoding mechanisms must be applied to obtain the media-type
586
796
  # referenced by the Content-Type header field.
797
+ #
798
+ # <note markdown="1"> For directory buckets, only the `aws-chunked` value is supported in
799
+ # this header field.
800
+ #
801
+ # </note>
587
802
  # @option options [String] :content_language
588
803
  # The language the content is in.
589
804
  # @option options [String] :content_type
590
- # A standard MIME type describing the format of the object data.
805
+ # A standard MIME type that describes the format of the object data.
591
806
  # @option options [required, String] :copy_source
592
- # Specifies the source object for the copy operation. You specify the
593
- # value in one of two formats, depending on whether you want to access
594
- # the source object through an [access point][1]\:
807
+ # Specifies the source object for the copy operation. The source object
808
+ # can be up to 5 GB. If the source object is an object that was uploaded
809
+ # by using a multipart upload, the object copy will be a single part
810
+ # object after the source object is copied to the destination bucket.
811
+ #
812
+ # You specify the value of the copy source in one of two formats,
813
+ # depending on whether you want to access the source object through an
814
+ # [access point][1]:
595
815
  #
596
816
  # * For objects not accessed through an access point, specify the name
597
817
  # of the source bucket and the key of the source object, separated by
598
818
  # a slash (/). For example, to copy the object `reports/january.pdf`
599
- # from the bucket `awsexamplebucket`, use
600
- # `awsexamplebucket/reports/january.pdf`. The value must be URL
601
- # encoded.
819
+ # from the general purpose bucket `awsexamplebucket`, use
820
+ # `awsexamplebucket/reports/january.pdf`. The value must be
821
+ # URL-encoded. To copy the object `reports/january.pdf` from the
822
+ # directory bucket `awsexamplebucket--use1-az5--x-s3`, use
823
+ # `awsexamplebucket--use1-az5--x-s3/reports/january.pdf`. The value
824
+ # must be URL-encoded.
602
825
  #
603
826
  # * For objects accessed through access points, specify the Amazon
604
827
  # Resource Name (ARN) of the object as accessed through the access
@@ -610,9 +833,11 @@ module Aws::S3
610
833
  # `arn:aws:s3:us-west-2:123456789012:accesspoint/my-access-point/object/reports/january.pdf`.
611
834
  # The value must be URL encoded.
612
835
  #
613
- # <note markdown="1"> Amazon S3 supports copy operations using access points only when the
614
- # source and destination buckets are in the same Amazon Web Services
615
- # Region.
836
+ # <note markdown="1"> * Amazon S3 supports copy operations using Access points only when
837
+ # the source and destination buckets are in the same Amazon Web
838
+ # Services Region.
839
+ #
840
+ # * Access points are not supported by directory buckets.
616
841
  #
617
842
  # </note>
618
843
  #
@@ -623,93 +848,329 @@ module Aws::S3
623
848
  # outpost `my-outpost` owned by account `123456789012` in Region
624
849
  # `us-west-2`, use the URL encoding of
625
850
  # `arn:aws:s3-outposts:us-west-2:123456789012:outpost/my-outpost/object/reports/january.pdf`.
626
- # The value must be URL encoded.
627
- #
628
- # To copy a specific version of an object, append
629
- # `?versionId=<version-id>` to the value (for example,
851
+ # The value must be URL-encoded.
852
+ #
853
+ # If your source bucket versioning is enabled, the `x-amz-copy-source`
854
+ # header by default identifies the current version of an object to copy.
855
+ # If the current version is a delete marker, Amazon S3 behaves as if the
856
+ # object was deleted. To copy a different version, use the `versionId`
857
+ # query parameter. Specifically, append `?versionId=<version-id>` to the
858
+ # value (for example,
630
859
  # `awsexamplebucket/reports/january.pdf?versionId=QUpfdndhfd8438MNFDN93jdnJFkdmqnh893`).
631
860
  # If you don't specify a version ID, Amazon S3 copies the latest
632
861
  # version of the source object.
633
862
  #
863
+ # If you enable versioning on the destination bucket, Amazon S3
864
+ # generates a unique version ID for the copied object. This version ID
865
+ # is different from the version ID of the source object. Amazon S3
866
+ # returns the version ID of the copied object in the `x-amz-version-id`
867
+ # response header in the response.
868
+ #
869
+ # If you do not enable versioning or suspend it on the destination
870
+ # bucket, the version ID that Amazon S3 generates in the
871
+ # `x-amz-version-id` response header is always null.
872
+ #
873
+ # <note markdown="1"> **Directory buckets** - S3 Versioning isn't enabled and supported for
874
+ # directory buckets.
875
+ #
876
+ # </note>
877
+ #
634
878
  #
635
879
  #
636
880
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-points.html
637
881
  # @option options [String] :copy_source_if_match
638
882
  # Copies the object if its entity tag (ETag) matches the specified tag.
883
+ #
884
+ # If both the `x-amz-copy-source-if-match` and
885
+ # `x-amz-copy-source-if-unmodified-since` headers are present in the
886
+ # request and evaluate as follows, Amazon S3 returns `200 OK` and copies
887
+ # the data:
888
+ #
889
+ # * `x-amz-copy-source-if-match` condition evaluates to true
890
+ #
891
+ # * `x-amz-copy-source-if-unmodified-since` condition evaluates to false
639
892
  # @option options [Time,DateTime,Date,Integer,String] :copy_source_if_modified_since
640
893
  # Copies the object if it has been modified since the specified time.
894
+ #
895
+ # If both the `x-amz-copy-source-if-none-match` and
896
+ # `x-amz-copy-source-if-modified-since` headers are present in the
897
+ # request and evaluate as follows, Amazon S3 returns the `412
898
+ # Precondition Failed` response code:
899
+ #
900
+ # * `x-amz-copy-source-if-none-match` condition evaluates to false
901
+ #
902
+ # * `x-amz-copy-source-if-modified-since` condition evaluates to true
641
903
  # @option options [String] :copy_source_if_none_match
642
904
  # Copies the object if its entity tag (ETag) is different than the
643
905
  # specified ETag.
906
+ #
907
+ # If both the `x-amz-copy-source-if-none-match` and
908
+ # `x-amz-copy-source-if-modified-since` headers are present in the
909
+ # request and evaluate as follows, Amazon S3 returns the `412
910
+ # Precondition Failed` response code:
911
+ #
912
+ # * `x-amz-copy-source-if-none-match` condition evaluates to false
913
+ #
914
+ # * `x-amz-copy-source-if-modified-since` condition evaluates to true
644
915
  # @option options [Time,DateTime,Date,Integer,String] :copy_source_if_unmodified_since
645
916
  # Copies the object if it hasn't been modified since the specified
646
917
  # time.
918
+ #
919
+ # If both the `x-amz-copy-source-if-match` and
920
+ # `x-amz-copy-source-if-unmodified-since` headers are present in the
921
+ # request and evaluate as follows, Amazon S3 returns `200 OK` and copies
922
+ # the data:
923
+ #
924
+ # * `x-amz-copy-source-if-match` condition evaluates to true
925
+ #
926
+ # * `x-amz-copy-source-if-unmodified-since` condition evaluates to false
647
927
  # @option options [Time,DateTime,Date,Integer,String] :expires
648
928
  # The date and time at which the object is no longer cacheable.
649
929
  # @option options [String] :grant_full_control
650
930
  # Gives the grantee READ, READ\_ACP, and WRITE\_ACP permissions on the
651
931
  # object.
652
932
  #
653
- # This action is not supported by Amazon S3 on Outposts.
933
+ # <note markdown="1"> * This functionality is not supported for directory buckets.
934
+ #
935
+ # * This functionality is not supported for Amazon S3 on Outposts.
936
+ #
937
+ # </note>
654
938
  # @option options [String] :grant_read
655
939
  # Allows grantee to read the object data and its metadata.
656
940
  #
657
- # This action is not supported by Amazon S3 on Outposts.
941
+ # <note markdown="1"> * This functionality is not supported for directory buckets.
942
+ #
943
+ # * This functionality is not supported for Amazon S3 on Outposts.
944
+ #
945
+ # </note>
658
946
  # @option options [String] :grant_read_acp
659
947
  # Allows grantee to read the object ACL.
660
948
  #
661
- # This action is not supported by Amazon S3 on Outposts.
949
+ # <note markdown="1"> * This functionality is not supported for directory buckets.
950
+ #
951
+ # * This functionality is not supported for Amazon S3 on Outposts.
952
+ #
953
+ # </note>
662
954
  # @option options [String] :grant_write_acp
663
955
  # Allows grantee to write the ACL for the applicable object.
664
956
  #
665
- # This action is not supported by Amazon S3 on Outposts.
957
+ # <note markdown="1"> * This functionality is not supported for directory buckets.
958
+ #
959
+ # * This functionality is not supported for Amazon S3 on Outposts.
960
+ #
961
+ # </note>
666
962
  # @option options [Hash<String,String>] :metadata
667
963
  # A map of metadata to store with the object in S3.
668
964
  # @option options [String] :metadata_directive
669
965
  # Specifies whether the metadata is copied from the source object or
670
- # replaced with metadata provided in the request.
966
+ # replaced with metadata that's provided in the request. When copying
967
+ # an object, you can preserve all metadata (the default) or specify new
968
+ # metadata. If this header isn’t specified, `COPY` is the default
969
+ # behavior.
970
+ #
971
+ # **General purpose bucket** - For general purpose buckets, when you
972
+ # grant permissions, you can use the `s3:x-amz-metadata-directive`
973
+ # condition key to enforce certain metadata behavior when objects are
974
+ # uploaded. For more information, see [Amazon S3 condition key
975
+ # examples][1] in the *Amazon S3 User Guide*.
976
+ #
977
+ # <note markdown="1"> `x-amz-website-redirect-location` is unique to each object and is not
978
+ # copied when using the `x-amz-metadata-directive` header. To copy the
979
+ # value, you must specify `x-amz-website-redirect-location` in the
980
+ # request header.
981
+ #
982
+ # </note>
983
+ #
984
+ #
985
+ #
986
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/amazon-s3-policy-keys.html
671
987
  # @option options [String] :tagging_directive
672
- # Specifies whether the object tag-set are copied from the source object
673
- # or replaced with tag-set provided in the request.
988
+ # Specifies whether the object tag-set is copied from the source object
989
+ # or replaced with the tag-set that's provided in the request.
990
+ #
991
+ # The default value is `COPY`.
992
+ #
993
+ # <note markdown="1"> **Directory buckets** - For directory buckets in a `CopyObject`
994
+ # operation, only the empty tag-set is supported. Any requests that
995
+ # attempt to write non-empty tags into directory buckets will receive a
996
+ # `501 Not Implemented` status code. When the destination bucket is a
997
+ # directory bucket, you will receive a `501 Not Implemented` response in
998
+ # any of the following situations:
999
+ #
1000
+ # * When you attempt to `COPY` the tag-set from an S3 source object that
1001
+ # has non-empty tags.
1002
+ #
1003
+ # * When you attempt to `REPLACE` the tag-set of a source object and set
1004
+ # a non-empty value to `x-amz-tagging`.
1005
+ #
1006
+ # * When you don't set the `x-amz-tagging-directive` header and the
1007
+ # source object has non-empty tags. This is because the default value
1008
+ # of `x-amz-tagging-directive` is `COPY`.
1009
+ #
1010
+ # Because only the empty tag-set is supported for directory buckets in a
1011
+ # `CopyObject` operation, the following situations are allowed:
1012
+ #
1013
+ # * When you attempt to `COPY` the tag-set from a directory bucket
1014
+ # source object that has no tags to a general purpose bucket. It
1015
+ # copies an empty tag-set to the destination object.
1016
+ #
1017
+ # * When you attempt to `REPLACE` the tag-set of a directory bucket
1018
+ # source object and set the `x-amz-tagging` value of the directory
1019
+ # bucket destination object to empty.
1020
+ #
1021
+ # * When you attempt to `REPLACE` the tag-set of a general purpose
1022
+ # bucket source object that has non-empty tags and set the
1023
+ # `x-amz-tagging` value of the directory bucket destination object to
1024
+ # empty.
1025
+ #
1026
+ # * When you attempt to `REPLACE` the tag-set of a directory bucket
1027
+ # source object and don't set the `x-amz-tagging` value of the
1028
+ # directory bucket destination object. This is because the default
1029
+ # value of `x-amz-tagging` is the empty value.
1030
+ #
1031
+ # </note>
674
1032
  # @option options [String] :server_side_encryption
675
1033
  # The server-side encryption algorithm used when storing this object in
676
- # Amazon S3 (for example, AES256, aws:kms).
1034
+ # Amazon S3 (for example, `AES256`, `aws:kms`, `aws:kms:dsse`).
1035
+ # Unrecognized or unsupported values won’t write a destination object
1036
+ # and will receive a `400 Bad Request` response.
1037
+ #
1038
+ # Amazon S3 automatically encrypts all new objects that are copied to an
1039
+ # S3 bucket. When copying an object, if you don't specify encryption
1040
+ # information in your copy request, the encryption setting of the target
1041
+ # object is set to the default encryption configuration of the
1042
+ # destination bucket. By default, all buckets have a base level of
1043
+ # encryption configuration that uses server-side encryption with Amazon
1044
+ # S3 managed keys (SSE-S3). If the destination bucket has a default
1045
+ # encryption configuration that uses server-side encryption with Key
1046
+ # Management Service (KMS) keys (SSE-KMS), dual-layer server-side
1047
+ # encryption with Amazon Web Services KMS keys (DSSE-KMS), or
1048
+ # server-side encryption with customer-provided encryption keys (SSE-C),
1049
+ # Amazon S3 uses the corresponding KMS key, or a customer-provided key
1050
+ # to encrypt the target object copy.
1051
+ #
1052
+ # When you perform a `CopyObject` operation, if you want to use a
1053
+ # different type of encryption setting for the target object, you can
1054
+ # specify appropriate encryption-related headers to encrypt the target
1055
+ # object with an Amazon S3 managed key, a KMS key, or a
1056
+ # customer-provided key. If the encryption setting in your request is
1057
+ # different from the default encryption configuration of the destination
1058
+ # bucket, the encryption setting in your request takes precedence.
1059
+ #
1060
+ # With server-side encryption, Amazon S3 encrypts your data as it writes
1061
+ # your data to disks in its data centers and decrypts the data when you
1062
+ # access it. For more information about server-side encryption, see
1063
+ # [Using Server-Side Encryption][1] in the *Amazon S3 User Guide*.
1064
+ #
1065
+ # <note markdown="1"> For directory buckets, only server-side encryption with Amazon S3
1066
+ # managed keys (SSE-S3) (`AES256`) is supported.
1067
+ #
1068
+ # </note>
1069
+ #
1070
+ #
1071
+ #
1072
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html
677
1073
  # @option options [String] :storage_class
678
- # By default, Amazon S3 uses the STANDARD Storage Class to store newly
679
- # created objects. The STANDARD storage class provides high durability
680
- # and high availability. Depending on performance needs, you can specify
681
- # a different Storage Class. Amazon S3 on Outposts only uses the
682
- # OUTPOSTS Storage Class. For more information, see [Storage Classes][1]
1074
+ # If the `x-amz-storage-class` header is not used, the copied object
1075
+ # will be stored in the `STANDARD` Storage Class by default. The
1076
+ # `STANDARD` storage class provides high durability and high
1077
+ # availability. Depending on performance needs, you can specify a
1078
+ # different Storage Class.
1079
+ #
1080
+ # <note markdown="1"> * <b>Directory buckets </b> - For directory buckets, only the S3
1081
+ # Express One Zone storage class is supported to store newly created
1082
+ # objects. Unsupported storage class values won't write a destination
1083
+ # object and will respond with the HTTP status code `400 Bad Request`.
1084
+ #
1085
+ # * <b>Amazon S3 on Outposts </b> - S3 on Outposts only uses the
1086
+ # `OUTPOSTS` Storage Class.
1087
+ #
1088
+ # </note>
1089
+ #
1090
+ # You can use the `CopyObject` action to change the storage class of an
1091
+ # object that is already stored in Amazon S3 by using the
1092
+ # `x-amz-storage-class` header. For more information, see [Storage
1093
+ # Classes][1] in the *Amazon S3 User Guide*.
1094
+ #
1095
+ # Before using an object as a source object for the copy operation, you
1096
+ # must restore a copy of it if it meets any of the following conditions:
1097
+ #
1098
+ # * The storage class of the source object is `GLACIER` or
1099
+ # `DEEP_ARCHIVE`.
1100
+ #
1101
+ # * The storage class of the source object is `INTELLIGENT_TIERING` and
1102
+ # it's [S3 Intelligent-Tiering access tier][2] is `Archive Access` or
1103
+ # `Deep Archive Access`.
1104
+ #
1105
+ # For more information, see [RestoreObject][3] and [Copying Objects][4]
683
1106
  # in the *Amazon S3 User Guide*.
684
1107
  #
685
1108
  #
686
1109
  #
687
1110
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class-intro.html
1111
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/intelligent-tiering-overview.html#intel-tiering-tier-definition
1112
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html
1113
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/dev/CopyingObjectsExamples.html
688
1114
  # @option options [String] :website_redirect_location
689
- # If the bucket is configured as a website, redirects requests for this
690
- # object to another object in the same bucket or to an external URL.
691
- # Amazon S3 stores the value of this header in the object metadata.
1115
+ # If the destination bucket is configured as a website, redirects
1116
+ # requests for this object copy to another object in the same bucket or
1117
+ # to an external URL. Amazon S3 stores the value of this header in the
1118
+ # object metadata. This value is unique to each object and is not copied
1119
+ # when using the `x-amz-metadata-directive` header. Instead, you may opt
1120
+ # to provide this header in combination with the
1121
+ # `x-amz-metadata-directive` header.
1122
+ #
1123
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1124
+ #
1125
+ # </note>
692
1126
  # @option options [String] :sse_customer_algorithm
693
- # Specifies the algorithm to use to when encrypting the object (for
694
- # example, AES256).
1127
+ # Specifies the algorithm to use when encrypting the object (for
1128
+ # example, `AES256`).
1129
+ #
1130
+ # When you perform a `CopyObject` operation, if you want to use a
1131
+ # different type of encryption setting for the target object, you can
1132
+ # specify appropriate encryption-related headers to encrypt the target
1133
+ # object with an Amazon S3 managed key, a KMS key, or a
1134
+ # customer-provided key. If the encryption setting in your request is
1135
+ # different from the default encryption configuration of the destination
1136
+ # bucket, the encryption setting in your request takes precedence.
1137
+ #
1138
+ # <note markdown="1"> This functionality is not supported when the destination bucket is a
1139
+ # directory bucket.
1140
+ #
1141
+ # </note>
695
1142
  # @option options [String] :sse_customer_key
696
1143
  # Specifies the customer-provided encryption key for Amazon S3 to use in
697
1144
  # encrypting data. This value is used to store the object and then it is
698
- # discarded; Amazon S3 does not store the encryption key. The key must
1145
+ # discarded. Amazon S3 does not store the encryption key. The key must
699
1146
  # be appropriate for use with the algorithm specified in the
700
1147
  # `x-amz-server-side-encryption-customer-algorithm` header.
1148
+ #
1149
+ # <note markdown="1"> This functionality is not supported when the destination bucket is a
1150
+ # directory bucket.
1151
+ #
1152
+ # </note>
701
1153
  # @option options [String] :sse_customer_key_md5
702
1154
  # Specifies the 128-bit MD5 digest of the encryption key according to
703
1155
  # RFC 1321. Amazon S3 uses this header for a message integrity check to
704
1156
  # ensure that the encryption key was transmitted without error.
1157
+ #
1158
+ # <note markdown="1"> This functionality is not supported when the destination bucket is a
1159
+ # directory bucket.
1160
+ #
1161
+ # </note>
705
1162
  # @option options [String] :ssekms_key_id
706
- # Specifies the Amazon Web Services KMS key ID to use for object
707
- # encryption. All GET and PUT requests for an object protected by Amazon
708
- # Web Services KMS will fail if not made via SSL or using SigV4. For
709
- # information about configuring using any of the officially supported
710
- # Amazon Web Services SDKs and Amazon Web Services CLI, see [Specifying
711
- # the Signature Version in Request Authentication][1] in the *Amazon S3
712
- # User Guide*.
1163
+ # Specifies the KMS ID (Key ID, Key ARN, or Key Alias) to use for object
1164
+ # encryption. All GET and PUT requests for an object protected by KMS
1165
+ # will fail if they're not made via SSL or using SigV4. For information
1166
+ # about configuring any of the officially supported Amazon Web Services
1167
+ # SDKs and Amazon Web Services CLI, see [Specifying the Signature
1168
+ # Version in Request Authentication][1] in the *Amazon S3 User Guide*.
1169
+ #
1170
+ # <note markdown="1"> This functionality is not supported when the destination bucket is a
1171
+ # directory bucket.
1172
+ #
1173
+ # </note>
713
1174
  #
714
1175
  #
715
1176
  #
@@ -717,62 +1178,177 @@ module Aws::S3
717
1178
  # @option options [String] :ssekms_encryption_context
718
1179
  # Specifies the Amazon Web Services KMS Encryption Context to use for
719
1180
  # object encryption. The value of this header is a base64-encoded UTF-8
720
- # string holding JSON with the encryption context key-value pairs.
1181
+ # string holding JSON with the encryption context key-value pairs. This
1182
+ # value must be explicitly added to specify encryption context for
1183
+ # `CopyObject` requests.
1184
+ #
1185
+ # <note markdown="1"> This functionality is not supported when the destination bucket is a
1186
+ # directory bucket.
1187
+ #
1188
+ # </note>
721
1189
  # @option options [Boolean] :bucket_key_enabled
722
1190
  # Specifies whether Amazon S3 should use an S3 Bucket Key for object
723
- # encryption with server-side encryption using AWS KMS (SSE-KMS).
1191
+ # encryption with server-side encryption using Key Management Service
1192
+ # (KMS) keys (SSE-KMS). If a target object uses SSE-KMS, you can enable
1193
+ # an S3 Bucket Key for the object.
1194
+ #
724
1195
  # Setting this header to `true` causes Amazon S3 to use an S3 Bucket Key
725
- # for object encryption with SSE-KMS.
1196
+ # for object encryption with SSE-KMS. Specifying this header with a COPY
1197
+ # action doesn’t affect bucket-level settings for S3 Bucket Key.
726
1198
  #
727
- # Specifying this header with a COPY action doesn’t affect bucket-level
728
- # settings for S3 Bucket Key.
1199
+ # For more information, see [Amazon S3 Bucket Keys][1] in the *Amazon S3
1200
+ # User Guide*.
1201
+ #
1202
+ # <note markdown="1"> This functionality is not supported when the destination bucket is a
1203
+ # directory bucket.
1204
+ #
1205
+ # </note>
1206
+ #
1207
+ #
1208
+ #
1209
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html
729
1210
  # @option options [String] :copy_source_sse_customer_algorithm
730
1211
  # Specifies the algorithm to use when decrypting the source object (for
731
- # example, AES256).
1212
+ # example, `AES256`).
1213
+ #
1214
+ # If the source object for the copy is stored in Amazon S3 using SSE-C,
1215
+ # you must provide the necessary encryption information in your request
1216
+ # so that Amazon S3 can decrypt the object for copying.
1217
+ #
1218
+ # <note markdown="1"> This functionality is not supported when the source object is in a
1219
+ # directory bucket.
1220
+ #
1221
+ # </note>
732
1222
  # @option options [String] :copy_source_sse_customer_key
733
1223
  # Specifies the customer-provided encryption key for Amazon S3 to use to
734
1224
  # decrypt the source object. The encryption key provided in this header
735
- # must be one that was used when the source object was created.
1225
+ # must be the same one that was used when the source object was created.
1226
+ #
1227
+ # If the source object for the copy is stored in Amazon S3 using SSE-C,
1228
+ # you must provide the necessary encryption information in your request
1229
+ # so that Amazon S3 can decrypt the object for copying.
1230
+ #
1231
+ # <note markdown="1"> This functionality is not supported when the source object is in a
1232
+ # directory bucket.
1233
+ #
1234
+ # </note>
736
1235
  # @option options [String] :copy_source_sse_customer_key_md5
737
1236
  # Specifies the 128-bit MD5 digest of the encryption key according to
738
1237
  # RFC 1321. Amazon S3 uses this header for a message integrity check to
739
1238
  # ensure that the encryption key was transmitted without error.
1239
+ #
1240
+ # If the source object for the copy is stored in Amazon S3 using SSE-C,
1241
+ # you must provide the necessary encryption information in your request
1242
+ # so that Amazon S3 can decrypt the object for copying.
1243
+ #
1244
+ # <note markdown="1"> This functionality is not supported when the source object is in a
1245
+ # directory bucket.
1246
+ #
1247
+ # </note>
740
1248
  # @option options [String] :request_payer
741
1249
  # Confirms that the requester knows that they will be charged for the
742
1250
  # request. Bucket owners need not specify this parameter in their
743
- # requests. For information about downloading objects from requester
744
- # pays buckets, see [Downloading Objects in Requestor Pays Buckets][1]
1251
+ # requests. If either the source or destination S3 bucket has Requester
1252
+ # Pays enabled, the requester will pay for corresponding charges to copy
1253
+ # the object. For information about downloading objects from Requester
1254
+ # Pays buckets, see [Downloading Objects in Requester Pays Buckets][1]
745
1255
  # in the *Amazon S3 User Guide*.
746
1256
  #
1257
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1258
+ #
1259
+ # </note>
1260
+ #
747
1261
  #
748
1262
  #
749
1263
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
750
1264
  # @option options [String] :tagging
751
- # The tag-set for the object destination object this value must be used
752
- # in conjunction with the `TaggingDirective`. The tag-set must be
753
- # encoded as URL Query parameters.
1265
+ # The tag-set for the object copy in the destination bucket. This value
1266
+ # must be used in conjunction with the `x-amz-tagging-directive` if you
1267
+ # choose `REPLACE` for the `x-amz-tagging-directive`. If you choose
1268
+ # `COPY` for the `x-amz-tagging-directive`, you don't need to set the
1269
+ # `x-amz-tagging` header, because the tag-set will be copied from the
1270
+ # source object directly. The tag-set must be encoded as URL Query
1271
+ # parameters.
1272
+ #
1273
+ # The default value is the empty value.
1274
+ #
1275
+ # <note markdown="1"> **Directory buckets** - For directory buckets in a `CopyObject`
1276
+ # operation, only the empty tag-set is supported. Any requests that
1277
+ # attempt to write non-empty tags into directory buckets will receive a
1278
+ # `501 Not Implemented` status code. When the destination bucket is a
1279
+ # directory bucket, you will receive a `501 Not Implemented` response in
1280
+ # any of the following situations:
1281
+ #
1282
+ # * When you attempt to `COPY` the tag-set from an S3 source object that
1283
+ # has non-empty tags.
1284
+ #
1285
+ # * When you attempt to `REPLACE` the tag-set of a source object and set
1286
+ # a non-empty value to `x-amz-tagging`.
1287
+ #
1288
+ # * When you don't set the `x-amz-tagging-directive` header and the
1289
+ # source object has non-empty tags. This is because the default value
1290
+ # of `x-amz-tagging-directive` is `COPY`.
1291
+ #
1292
+ # Because only the empty tag-set is supported for directory buckets in a
1293
+ # `CopyObject` operation, the following situations are allowed:
1294
+ #
1295
+ # * When you attempt to `COPY` the tag-set from a directory bucket
1296
+ # source object that has no tags to a general purpose bucket. It
1297
+ # copies an empty tag-set to the destination object.
1298
+ #
1299
+ # * When you attempt to `REPLACE` the tag-set of a directory bucket
1300
+ # source object and set the `x-amz-tagging` value of the directory
1301
+ # bucket destination object to empty.
1302
+ #
1303
+ # * When you attempt to `REPLACE` the tag-set of a general purpose
1304
+ # bucket source object that has non-empty tags and set the
1305
+ # `x-amz-tagging` value of the directory bucket destination object to
1306
+ # empty.
1307
+ #
1308
+ # * When you attempt to `REPLACE` the tag-set of a directory bucket
1309
+ # source object and don't set the `x-amz-tagging` value of the
1310
+ # directory bucket destination object. This is because the default
1311
+ # value of `x-amz-tagging` is the empty value.
1312
+ #
1313
+ # </note>
754
1314
  # @option options [String] :object_lock_mode
755
- # The Object Lock mode that you want to apply to the copied object.
1315
+ # The Object Lock mode that you want to apply to the object copy.
1316
+ #
1317
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1318
+ #
1319
+ # </note>
756
1320
  # @option options [Time,DateTime,Date,Integer,String] :object_lock_retain_until_date
757
- # The date and time when you want the copied object's Object Lock to
1321
+ # The date and time when you want the Object Lock of the object copy to
758
1322
  # expire.
1323
+ #
1324
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1325
+ #
1326
+ # </note>
759
1327
  # @option options [String] :object_lock_legal_hold_status
760
- # Specifies whether you want to apply a Legal Hold to the copied object.
1328
+ # Specifies whether you want to apply a legal hold to the object copy.
1329
+ #
1330
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1331
+ #
1332
+ # </note>
761
1333
  # @option options [String] :expected_bucket_owner
762
1334
  # The account ID of the expected destination bucket owner. If the
763
- # destination bucket is owned by a different account, the request will
764
- # fail with an HTTP `403 (Access Denied)` error.
1335
+ # account ID that you provide does not match the actual owner of the
1336
+ # destination bucket, the request fails with the HTTP status code `403
1337
+ # Forbidden` (access denied).
765
1338
  # @option options [String] :expected_source_bucket_owner
766
- # The account ID of the expected source bucket owner. If the source
767
- # bucket is owned by a different account, the request will fail with an
768
- # HTTP `403 (Access Denied)` error.
1339
+ # The account ID of the expected source bucket owner. If the account ID
1340
+ # that you provide does not match the actual owner of the source bucket,
1341
+ # the request fails with the HTTP status code `403 Forbidden` (access
1342
+ # denied).
769
1343
  # @return [Types::CopyObjectOutput]
770
1344
  def copy_from(options = {})
771
1345
  options = options.merge(
772
1346
  bucket: @bucket_name,
773
1347
  key: @key
774
1348
  )
775
- resp = @client.copy_object(options)
1349
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
1350
+ @client.copy_object(options)
1351
+ end
776
1352
  resp.data
777
1353
  end
778
1354
 
@@ -791,33 +1367,54 @@ module Aws::S3
791
1367
  # space, and the value that is displayed on your authentication device.
792
1368
  # Required to permanently delete a versioned object if versioning is
793
1369
  # configured with MFA delete enabled.
1370
+ #
1371
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1372
+ #
1373
+ # </note>
794
1374
  # @option options [String] :version_id
795
- # VersionId used to reference a specific version of the object.
1375
+ # Version ID used to reference a specific version of the object.
1376
+ #
1377
+ # <note markdown="1"> For directory buckets in this API operation, only the `null` value of
1378
+ # the version ID is supported.
1379
+ #
1380
+ # </note>
796
1381
  # @option options [String] :request_payer
797
1382
  # Confirms that the requester knows that they will be charged for the
798
1383
  # request. Bucket owners need not specify this parameter in their
799
- # requests. For information about downloading objects from requester
800
- # pays buckets, see [Downloading Objects in Requestor Pays Buckets][1]
1384
+ # requests. If either the source or destination S3 bucket has Requester
1385
+ # Pays enabled, the requester will pay for corresponding charges to copy
1386
+ # the object. For information about downloading objects from Requester
1387
+ # Pays buckets, see [Downloading Objects in Requester Pays Buckets][1]
801
1388
  # in the *Amazon S3 User Guide*.
802
1389
  #
1390
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1391
+ #
1392
+ # </note>
1393
+ #
803
1394
  #
804
1395
  #
805
1396
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
806
1397
  # @option options [Boolean] :bypass_governance_retention
807
1398
  # Indicates whether S3 Object Lock should bypass Governance-mode
808
1399
  # restrictions to process this operation. To use this header, you must
809
- # have the `s3:PutBucketPublicAccessBlock` permission.
1400
+ # have the `s3:BypassGovernanceRetention` permission.
1401
+ #
1402
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1403
+ #
1404
+ # </note>
810
1405
  # @option options [String] :expected_bucket_owner
811
- # The account ID of the expected bucket owner. If the bucket is owned by
812
- # a different account, the request will fail with an HTTP `403 (Access
813
- # Denied)` error.
1406
+ # The account ID of the expected bucket owner. If the account ID that
1407
+ # you provide does not match the actual owner of the bucket, the request
1408
+ # fails with the HTTP status code `403 Forbidden` (access denied).
814
1409
  # @return [Types::DeleteObjectOutput]
815
1410
  def delete(options = {})
816
1411
  options = options.merge(
817
1412
  bucket: @bucket_name,
818
1413
  key: @key
819
1414
  )
820
- resp = @client.delete_object(options)
1415
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
1416
+ @client.delete_object(options)
1417
+ end
821
1418
  resp.data
822
1419
  end
823
1420
 
@@ -842,37 +1439,84 @@ module Aws::S3
842
1439
  # request_payer: "requester", # accepts requester
843
1440
  # part_number: 1,
844
1441
  # expected_bucket_owner: "AccountId",
1442
+ # checksum_mode: "ENABLED", # accepts ENABLED
845
1443
  # })
846
1444
  # @param [Hash] options ({})
847
1445
  # @option options [String] :if_match
848
1446
  # Return the object only if its entity tag (ETag) is the same as the one
849
- # specified, otherwise return a 412 (precondition failed).
1447
+ # specified in this header; otherwise, return a `412 Precondition
1448
+ # Failed` error.
1449
+ #
1450
+ # If both of the `If-Match` and `If-Unmodified-Since` headers are
1451
+ # present in the request as follows: `If-Match` condition evaluates to
1452
+ # `true`, and; `If-Unmodified-Since` condition evaluates to `false`;
1453
+ # then, S3 returns `200 OK` and the data requested.
1454
+ #
1455
+ # For more information about conditional requests, see [RFC 7232][1].
1456
+ #
1457
+ #
1458
+ #
1459
+ # [1]: https://tools.ietf.org/html/rfc7232
850
1460
  # @option options [Time,DateTime,Date,Integer,String] :if_modified_since
851
1461
  # Return the object only if it has been modified since the specified
852
- # time, otherwise return a 304 (not modified).
853
- # @option options [String] :if_none_match
854
- # Return the object only if its entity tag (ETag) is different from the
855
- # one specified, otherwise return a 304 (not modified).
856
- # @option options [Time,DateTime,Date,Integer,String] :if_unmodified_since
857
- # Return the object only if it has not been modified since the specified
858
- # time, otherwise return a 412 (precondition failed).
859
- # @option options [String] :range
860
- # Downloads the specified range bytes of an object. For more information
861
- # about the HTTP Range header, see
862
- # [https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35][1].
1462
+ # time; otherwise, return a `304 Not Modified` error.
863
1463
  #
864
- # <note markdown="1"> Amazon S3 doesn't support retrieving multiple ranges of data per
865
- # `GET` request.
1464
+ # If both of the `If-None-Match` and `If-Modified-Since` headers are
1465
+ # present in the request as follows:` If-None-Match` condition evaluates
1466
+ # to `false`, and; `If-Modified-Since` condition evaluates to `true`;
1467
+ # then, S3 returns `304 Not Modified` status code.
866
1468
  #
867
- # </note>
1469
+ # For more information about conditional requests, see [RFC 7232][1].
868
1470
  #
869
1471
  #
870
1472
  #
871
- # [1]: https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35
872
- # @option options [String] :response_cache_control
1473
+ # [1]: https://tools.ietf.org/html/rfc7232
1474
+ # @option options [String] :if_none_match
1475
+ # Return the object only if its entity tag (ETag) is different from the
1476
+ # one specified in this header; otherwise, return a `304 Not Modified`
1477
+ # error.
1478
+ #
1479
+ # If both of the `If-None-Match` and `If-Modified-Since` headers are
1480
+ # present in the request as follows:` If-None-Match` condition evaluates
1481
+ # to `false`, and; `If-Modified-Since` condition evaluates to `true`;
1482
+ # then, S3 returns `304 Not Modified` HTTP status code.
1483
+ #
1484
+ # For more information about conditional requests, see [RFC 7232][1].
1485
+ #
1486
+ #
1487
+ #
1488
+ # [1]: https://tools.ietf.org/html/rfc7232
1489
+ # @option options [Time,DateTime,Date,Integer,String] :if_unmodified_since
1490
+ # Return the object only if it has not been modified since the specified
1491
+ # time; otherwise, return a `412 Precondition Failed` error.
1492
+ #
1493
+ # If both of the `If-Match` and `If-Unmodified-Since` headers are
1494
+ # present in the request as follows: `If-Match` condition evaluates to
1495
+ # `true`, and; `If-Unmodified-Since` condition evaluates to `false`;
1496
+ # then, S3 returns `200 OK` and the data requested.
1497
+ #
1498
+ # For more information about conditional requests, see [RFC 7232][1].
1499
+ #
1500
+ #
1501
+ #
1502
+ # [1]: https://tools.ietf.org/html/rfc7232
1503
+ # @option options [String] :range
1504
+ # Downloads the specified byte range of an object. For more information
1505
+ # about the HTTP Range header, see
1506
+ # [https://www.rfc-editor.org/rfc/rfc9110.html#name-range][1].
1507
+ #
1508
+ # <note markdown="1"> Amazon S3 doesn't support retrieving multiple ranges of data per
1509
+ # `GET` request.
1510
+ #
1511
+ # </note>
1512
+ #
1513
+ #
1514
+ #
1515
+ # [1]: https://www.rfc-editor.org/rfc/rfc9110.html#name-range
1516
+ # @option options [String] :response_cache_control
873
1517
  # Sets the `Cache-Control` header of the response.
874
1518
  # @option options [String] :response_content_disposition
875
- # Sets the `Content-Disposition` header of the response
1519
+ # Sets the `Content-Disposition` header of the response.
876
1520
  # @option options [String] :response_content_encoding
877
1521
  # Sets the `Content-Encoding` header of the response.
878
1522
  # @option options [String] :response_content_language
@@ -882,27 +1526,128 @@ module Aws::S3
882
1526
  # @option options [Time,DateTime,Date,Integer,String] :response_expires
883
1527
  # Sets the `Expires` header of the response.
884
1528
  # @option options [String] :version_id
885
- # VersionId used to reference a specific version of the object.
1529
+ # Version ID used to reference a specific version of the object.
1530
+ #
1531
+ # By default, the `GetObject` operation returns the current version of
1532
+ # an object. To return a different version, use the `versionId`
1533
+ # subresource.
1534
+ #
1535
+ # <note markdown="1"> * If you include a `versionId` in your request header, you must have
1536
+ # the `s3:GetObjectVersion` permission to access a specific version of
1537
+ # an object. The `s3:GetObject` permission is not required in this
1538
+ # scenario.
1539
+ #
1540
+ # * If you request the current version of an object without a specific
1541
+ # `versionId` in the request header, only the `s3:GetObject`
1542
+ # permission is required. The `s3:GetObjectVersion` permission is not
1543
+ # required in this scenario.
1544
+ #
1545
+ # * **Directory buckets** - S3 Versioning isn't enabled and supported
1546
+ # for directory buckets. For this API operation, only the `null` value
1547
+ # of the version ID is supported by directory buckets. You can only
1548
+ # specify `null` to the `versionId` query parameter in the request.
1549
+ #
1550
+ # </note>
1551
+ #
1552
+ # For more information about versioning, see [PutBucketVersioning][1].
1553
+ #
1554
+ #
1555
+ #
1556
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketVersioning.html
886
1557
  # @option options [String] :sse_customer_algorithm
887
- # Specifies the algorithm to use to when decrypting the object (for
888
- # example, AES256).
1558
+ # Specifies the algorithm to use when decrypting the object (for
1559
+ # example, `AES256`).
1560
+ #
1561
+ # If you encrypt an object by using server-side encryption with
1562
+ # customer-provided encryption keys (SSE-C) when you store the object in
1563
+ # Amazon S3, then when you GET the object, you must use the following
1564
+ # headers:
1565
+ #
1566
+ # * `x-amz-server-side-encryption-customer-algorithm`
1567
+ #
1568
+ # * `x-amz-server-side-encryption-customer-key`
1569
+ #
1570
+ # * `x-amz-server-side-encryption-customer-key-MD5`
1571
+ #
1572
+ # For more information about SSE-C, see [Server-Side Encryption (Using
1573
+ # Customer-Provided Encryption Keys)][1] in the *Amazon S3 User Guide*.
1574
+ #
1575
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1576
+ #
1577
+ # </note>
1578
+ #
1579
+ #
1580
+ #
1581
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html
889
1582
  # @option options [String] :sse_customer_key
890
- # Specifies the customer-provided encryption key for Amazon S3 used to
891
- # encrypt the data. This value is used to decrypt the object when
892
- # recovering it and must match the one used when storing the data. The
893
- # key must be appropriate for use with the algorithm specified in the
1583
+ # Specifies the customer-provided encryption key that you originally
1584
+ # provided for Amazon S3 to encrypt the data before storing it. This
1585
+ # value is used to decrypt the object when recovering it and must match
1586
+ # the one used when storing the data. The key must be appropriate for
1587
+ # use with the algorithm specified in the
894
1588
  # `x-amz-server-side-encryption-customer-algorithm` header.
1589
+ #
1590
+ # If you encrypt an object by using server-side encryption with
1591
+ # customer-provided encryption keys (SSE-C) when you store the object in
1592
+ # Amazon S3, then when you GET the object, you must use the following
1593
+ # headers:
1594
+ #
1595
+ # * `x-amz-server-side-encryption-customer-algorithm`
1596
+ #
1597
+ # * `x-amz-server-side-encryption-customer-key`
1598
+ #
1599
+ # * `x-amz-server-side-encryption-customer-key-MD5`
1600
+ #
1601
+ # For more information about SSE-C, see [Server-Side Encryption (Using
1602
+ # Customer-Provided Encryption Keys)][1] in the *Amazon S3 User Guide*.
1603
+ #
1604
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1605
+ #
1606
+ # </note>
1607
+ #
1608
+ #
1609
+ #
1610
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html
895
1611
  # @option options [String] :sse_customer_key_md5
896
- # Specifies the 128-bit MD5 digest of the encryption key according to
897
- # RFC 1321. Amazon S3 uses this header for a message integrity check to
898
- # ensure that the encryption key was transmitted without error.
1612
+ # Specifies the 128-bit MD5 digest of the customer-provided encryption
1613
+ # key according to RFC 1321. Amazon S3 uses this header for a message
1614
+ # integrity check to ensure that the encryption key was transmitted
1615
+ # without error.
1616
+ #
1617
+ # If you encrypt an object by using server-side encryption with
1618
+ # customer-provided encryption keys (SSE-C) when you store the object in
1619
+ # Amazon S3, then when you GET the object, you must use the following
1620
+ # headers:
1621
+ #
1622
+ # * `x-amz-server-side-encryption-customer-algorithm`
1623
+ #
1624
+ # * `x-amz-server-side-encryption-customer-key`
1625
+ #
1626
+ # * `x-amz-server-side-encryption-customer-key-MD5`
1627
+ #
1628
+ # For more information about SSE-C, see [Server-Side Encryption (Using
1629
+ # Customer-Provided Encryption Keys)][1] in the *Amazon S3 User Guide*.
1630
+ #
1631
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1632
+ #
1633
+ # </note>
1634
+ #
1635
+ #
1636
+ #
1637
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html
899
1638
  # @option options [String] :request_payer
900
1639
  # Confirms that the requester knows that they will be charged for the
901
1640
  # request. Bucket owners need not specify this parameter in their
902
- # requests. For information about downloading objects from requester
903
- # pays buckets, see [Downloading Objects in Requestor Pays Buckets][1]
1641
+ # requests. If either the source or destination S3 bucket has Requester
1642
+ # Pays enabled, the requester will pay for corresponding charges to copy
1643
+ # the object. For information about downloading objects from Requester
1644
+ # Pays buckets, see [Downloading Objects in Requester Pays Buckets][1]
904
1645
  # in the *Amazon S3 User Guide*.
905
1646
  #
1647
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1648
+ #
1649
+ # </note>
1650
+ #
906
1651
  #
907
1652
  #
908
1653
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
@@ -912,16 +1657,20 @@ module Aws::S3
912
1657
  # for the part specified. Useful for downloading just a part of an
913
1658
  # object.
914
1659
  # @option options [String] :expected_bucket_owner
915
- # The account ID of the expected bucket owner. If the bucket is owned by
916
- # a different account, the request will fail with an HTTP `403 (Access
917
- # Denied)` error.
1660
+ # The account ID of the expected bucket owner. If the account ID that
1661
+ # you provide does not match the actual owner of the bucket, the request
1662
+ # fails with the HTTP status code `403 Forbidden` (access denied).
1663
+ # @option options [String] :checksum_mode
1664
+ # To retrieve the checksum, this mode must be enabled.
918
1665
  # @return [Types::GetObjectOutput]
919
1666
  def get(options = {}, &block)
920
1667
  options = options.merge(
921
1668
  bucket: @bucket_name,
922
1669
  key: @key
923
1670
  )
924
- resp = @client.get_object(options, &block)
1671
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
1672
+ @client.get_object(options, &block)
1673
+ end
925
1674
  resp.data
926
1675
  end
927
1676
 
@@ -942,8 +1691,8 @@ module Aws::S3
942
1691
  # metadata: {
943
1692
  # "MetadataKey" => "MetadataValue",
944
1693
  # },
945
- # server_side_encryption: "AES256", # accepts AES256, aws:kms
946
- # storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE, OUTPOSTS, GLACIER_IR
1694
+ # server_side_encryption: "AES256", # accepts AES256, aws:kms, aws:kms:dsse
1695
+ # storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE, OUTPOSTS, GLACIER_IR, SNOW, EXPRESS_ONEZONE
947
1696
  # website_redirect_location: "WebsiteRedirectLocation",
948
1697
  # sse_customer_algorithm: "SSECustomerAlgorithm",
949
1698
  # sse_customer_key: "SSECustomerKey",
@@ -957,12 +1706,33 @@ module Aws::S3
957
1706
  # object_lock_retain_until_date: Time.now,
958
1707
  # object_lock_legal_hold_status: "ON", # accepts ON, OFF
959
1708
  # expected_bucket_owner: "AccountId",
1709
+ # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256
960
1710
  # })
961
1711
  # @param [Hash] options ({})
962
1712
  # @option options [String] :acl
963
- # The canned ACL to apply to the object.
1713
+ # The canned ACL to apply to the object. Amazon S3 supports a set of
1714
+ # predefined ACLs, known as *canned ACLs*. Each canned ACL has a
1715
+ # predefined set of grantees and permissions. For more information, see
1716
+ # [Canned ACL][1] in the *Amazon S3 User Guide*.
1717
+ #
1718
+ # By default, all objects are private. Only the owner has full access
1719
+ # control. When uploading an object, you can grant access permissions to
1720
+ # individual Amazon Web Services accounts or to predefined groups
1721
+ # defined by Amazon S3. These permissions are then added to the access
1722
+ # control list (ACL) on the new object. For more information, see [Using
1723
+ # ACLs][2]. One way to grant the permissions using the request headers
1724
+ # is to specify a canned ACL with the `x-amz-acl` request header.
1725
+ #
1726
+ # <note markdown="1"> * This functionality is not supported for directory buckets.
1727
+ #
1728
+ # * This functionality is not supported for Amazon S3 on Outposts.
1729
+ #
1730
+ # </note>
1731
+ #
1732
+ #
964
1733
  #
965
- # This action is not supported by Amazon S3 on Outposts.
1734
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL
1735
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html
966
1736
  # @option options [String] :cache_control
967
1737
  # Specifies caching behavior along the request/reply chain.
968
1738
  # @option options [String] :content_disposition
@@ -971,41 +1741,292 @@ module Aws::S3
971
1741
  # Specifies what content encodings have been applied to the object and
972
1742
  # thus what decoding mechanisms must be applied to obtain the media-type
973
1743
  # referenced by the Content-Type header field.
1744
+ #
1745
+ # <note markdown="1"> For directory buckets, only the `aws-chunked` value is supported in
1746
+ # this header field.
1747
+ #
1748
+ # </note>
974
1749
  # @option options [String] :content_language
975
- # The language the content is in.
1750
+ # The language that the content is in.
976
1751
  # @option options [String] :content_type
977
1752
  # A standard MIME type describing the format of the object data.
978
1753
  # @option options [Time,DateTime,Date,Integer,String] :expires
979
1754
  # The date and time at which the object is no longer cacheable.
980
1755
  # @option options [String] :grant_full_control
981
- # Gives the grantee READ, READ\_ACP, and WRITE\_ACP permissions on the
982
- # object.
1756
+ # Specify access permissions explicitly to give the grantee READ,
1757
+ # READ\_ACP, and WRITE\_ACP permissions on the object.
1758
+ #
1759
+ # By default, all objects are private. Only the owner has full access
1760
+ # control. When uploading an object, you can use this header to
1761
+ # explicitly grant access permissions to specific Amazon Web Services
1762
+ # accounts or groups. This header maps to specific permissions that
1763
+ # Amazon S3 supports in an ACL. For more information, see [Access
1764
+ # Control List (ACL) Overview][1] in the *Amazon S3 User Guide*.
1765
+ #
1766
+ # You specify each grantee as a type=value pair, where the type is one
1767
+ # of the following:
1768
+ #
1769
+ # * `id` – if the value specified is the canonical user ID of an Amazon
1770
+ # Web Services account
1771
+ #
1772
+ # * `uri` – if you are granting permissions to a predefined group
1773
+ #
1774
+ # * `emailAddress` – if the value specified is the email address of an
1775
+ # Amazon Web Services account
1776
+ #
1777
+ # <note markdown="1"> Using email addresses to specify a grantee is only supported in the
1778
+ # following Amazon Web Services Regions:
1779
+ #
1780
+ # * US East (N. Virginia)
1781
+ #
1782
+ # * US West (N. California)
1783
+ #
1784
+ # * US West (Oregon)
1785
+ #
1786
+ # * Asia Pacific (Singapore)
1787
+ #
1788
+ # * Asia Pacific (Sydney)
1789
+ #
1790
+ # * Asia Pacific (Tokyo)
1791
+ #
1792
+ # * Europe (Ireland)
1793
+ #
1794
+ # * South America (São Paulo)
1795
+ #
1796
+ # For a list of all the Amazon S3 supported Regions and endpoints, see
1797
+ # [Regions and Endpoints][2] in the Amazon Web Services General
1798
+ # Reference.
1799
+ #
1800
+ # </note>
1801
+ #
1802
+ # For example, the following `x-amz-grant-read` header grants the Amazon
1803
+ # Web Services accounts identified by account IDs permissions to read
1804
+ # object data and its metadata:
1805
+ #
1806
+ # `x-amz-grant-read: id="11112222333", id="444455556666" `
1807
+ #
1808
+ # <note markdown="1"> * This functionality is not supported for directory buckets.
1809
+ #
1810
+ # * This functionality is not supported for Amazon S3 on Outposts.
983
1811
  #
984
- # This action is not supported by Amazon S3 on Outposts.
1812
+ # </note>
1813
+ #
1814
+ #
1815
+ #
1816
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html
1817
+ # [2]: https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region
985
1818
  # @option options [String] :grant_read
986
- # Allows grantee to read the object data and its metadata.
1819
+ # Specify access permissions explicitly to allow grantee to read the
1820
+ # object data and its metadata.
1821
+ #
1822
+ # By default, all objects are private. Only the owner has full access
1823
+ # control. When uploading an object, you can use this header to
1824
+ # explicitly grant access permissions to specific Amazon Web Services
1825
+ # accounts or groups. This header maps to specific permissions that
1826
+ # Amazon S3 supports in an ACL. For more information, see [Access
1827
+ # Control List (ACL) Overview][1] in the *Amazon S3 User Guide*.
1828
+ #
1829
+ # You specify each grantee as a type=value pair, where the type is one
1830
+ # of the following:
1831
+ #
1832
+ # * `id` – if the value specified is the canonical user ID of an Amazon
1833
+ # Web Services account
1834
+ #
1835
+ # * `uri` – if you are granting permissions to a predefined group
1836
+ #
1837
+ # * `emailAddress` – if the value specified is the email address of an
1838
+ # Amazon Web Services account
1839
+ #
1840
+ # <note markdown="1"> Using email addresses to specify a grantee is only supported in the
1841
+ # following Amazon Web Services Regions:
1842
+ #
1843
+ # * US East (N. Virginia)
1844
+ #
1845
+ # * US West (N. California)
1846
+ #
1847
+ # * US West (Oregon)
1848
+ #
1849
+ # * Asia Pacific (Singapore)
1850
+ #
1851
+ # * Asia Pacific (Sydney)
1852
+ #
1853
+ # * Asia Pacific (Tokyo)
1854
+ #
1855
+ # * Europe (Ireland)
1856
+ #
1857
+ # * South America (São Paulo)
1858
+ #
1859
+ # For a list of all the Amazon S3 supported Regions and endpoints, see
1860
+ # [Regions and Endpoints][2] in the Amazon Web Services General
1861
+ # Reference.
1862
+ #
1863
+ # </note>
1864
+ #
1865
+ # For example, the following `x-amz-grant-read` header grants the Amazon
1866
+ # Web Services accounts identified by account IDs permissions to read
1867
+ # object data and its metadata:
1868
+ #
1869
+ # `x-amz-grant-read: id="11112222333", id="444455556666" `
1870
+ #
1871
+ # <note markdown="1"> * This functionality is not supported for directory buckets.
1872
+ #
1873
+ # * This functionality is not supported for Amazon S3 on Outposts.
1874
+ #
1875
+ # </note>
987
1876
  #
988
- # This action is not supported by Amazon S3 on Outposts.
1877
+ #
1878
+ #
1879
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html
1880
+ # [2]: https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region
989
1881
  # @option options [String] :grant_read_acp
990
- # Allows grantee to read the object ACL.
1882
+ # Specify access permissions explicitly to allows grantee to read the
1883
+ # object ACL.
1884
+ #
1885
+ # By default, all objects are private. Only the owner has full access
1886
+ # control. When uploading an object, you can use this header to
1887
+ # explicitly grant access permissions to specific Amazon Web Services
1888
+ # accounts or groups. This header maps to specific permissions that
1889
+ # Amazon S3 supports in an ACL. For more information, see [Access
1890
+ # Control List (ACL) Overview][1] in the *Amazon S3 User Guide*.
1891
+ #
1892
+ # You specify each grantee as a type=value pair, where the type is one
1893
+ # of the following:
1894
+ #
1895
+ # * `id` – if the value specified is the canonical user ID of an Amazon
1896
+ # Web Services account
1897
+ #
1898
+ # * `uri` – if you are granting permissions to a predefined group
1899
+ #
1900
+ # * `emailAddress` – if the value specified is the email address of an
1901
+ # Amazon Web Services account
1902
+ #
1903
+ # <note markdown="1"> Using email addresses to specify a grantee is only supported in the
1904
+ # following Amazon Web Services Regions:
1905
+ #
1906
+ # * US East (N. Virginia)
1907
+ #
1908
+ # * US West (N. California)
1909
+ #
1910
+ # * US West (Oregon)
1911
+ #
1912
+ # * Asia Pacific (Singapore)
1913
+ #
1914
+ # * Asia Pacific (Sydney)
1915
+ #
1916
+ # * Asia Pacific (Tokyo)
1917
+ #
1918
+ # * Europe (Ireland)
1919
+ #
1920
+ # * South America (São Paulo)
1921
+ #
1922
+ # For a list of all the Amazon S3 supported Regions and endpoints, see
1923
+ # [Regions and Endpoints][2] in the Amazon Web Services General
1924
+ # Reference.
1925
+ #
1926
+ # </note>
1927
+ #
1928
+ # For example, the following `x-amz-grant-read` header grants the Amazon
1929
+ # Web Services accounts identified by account IDs permissions to read
1930
+ # object data and its metadata:
1931
+ #
1932
+ # `x-amz-grant-read: id="11112222333", id="444455556666" `
1933
+ #
1934
+ # <note markdown="1"> * This functionality is not supported for directory buckets.
1935
+ #
1936
+ # * This functionality is not supported for Amazon S3 on Outposts.
1937
+ #
1938
+ # </note>
1939
+ #
1940
+ #
991
1941
  #
992
- # This action is not supported by Amazon S3 on Outposts.
1942
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html
1943
+ # [2]: https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region
993
1944
  # @option options [String] :grant_write_acp
994
- # Allows grantee to write the ACL for the applicable object.
1945
+ # Specify access permissions explicitly to allows grantee to allow
1946
+ # grantee to write the ACL for the applicable object.
1947
+ #
1948
+ # By default, all objects are private. Only the owner has full access
1949
+ # control. When uploading an object, you can use this header to
1950
+ # explicitly grant access permissions to specific Amazon Web Services
1951
+ # accounts or groups. This header maps to specific permissions that
1952
+ # Amazon S3 supports in an ACL. For more information, see [Access
1953
+ # Control List (ACL) Overview][1] in the *Amazon S3 User Guide*.
1954
+ #
1955
+ # You specify each grantee as a type=value pair, where the type is one
1956
+ # of the following:
1957
+ #
1958
+ # * `id` – if the value specified is the canonical user ID of an Amazon
1959
+ # Web Services account
1960
+ #
1961
+ # * `uri` – if you are granting permissions to a predefined group
1962
+ #
1963
+ # * `emailAddress` – if the value specified is the email address of an
1964
+ # Amazon Web Services account
1965
+ #
1966
+ # <note markdown="1"> Using email addresses to specify a grantee is only supported in the
1967
+ # following Amazon Web Services Regions:
1968
+ #
1969
+ # * US East (N. Virginia)
1970
+ #
1971
+ # * US West (N. California)
1972
+ #
1973
+ # * US West (Oregon)
1974
+ #
1975
+ # * Asia Pacific (Singapore)
1976
+ #
1977
+ # * Asia Pacific (Sydney)
1978
+ #
1979
+ # * Asia Pacific (Tokyo)
1980
+ #
1981
+ # * Europe (Ireland)
995
1982
  #
996
- # This action is not supported by Amazon S3 on Outposts.
1983
+ # * South America (São Paulo)
1984
+ #
1985
+ # For a list of all the Amazon S3 supported Regions and endpoints, see
1986
+ # [Regions and Endpoints][2] in the Amazon Web Services General
1987
+ # Reference.
1988
+ #
1989
+ # </note>
1990
+ #
1991
+ # For example, the following `x-amz-grant-read` header grants the Amazon
1992
+ # Web Services accounts identified by account IDs permissions to read
1993
+ # object data and its metadata:
1994
+ #
1995
+ # `x-amz-grant-read: id="11112222333", id="444455556666" `
1996
+ #
1997
+ # <note markdown="1"> * This functionality is not supported for directory buckets.
1998
+ #
1999
+ # * This functionality is not supported for Amazon S3 on Outposts.
2000
+ #
2001
+ # </note>
2002
+ #
2003
+ #
2004
+ #
2005
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html
2006
+ # [2]: https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region
997
2007
  # @option options [Hash<String,String>] :metadata
998
2008
  # A map of metadata to store with the object in S3.
999
2009
  # @option options [String] :server_side_encryption
1000
- # The server-side encryption algorithm used when storing this object in
1001
- # Amazon S3 (for example, AES256, aws:kms).
2010
+ # The server-side encryption algorithm used when you store this object
2011
+ # in Amazon S3 (for example, `AES256`, `aws:kms`).
2012
+ #
2013
+ # <note markdown="1"> For directory buckets, only server-side encryption with Amazon S3
2014
+ # managed keys (SSE-S3) (`AES256`) is supported.
2015
+ #
2016
+ # </note>
1002
2017
  # @option options [String] :storage_class
1003
2018
  # By default, Amazon S3 uses the STANDARD Storage Class to store newly
1004
2019
  # created objects. The STANDARD storage class provides high durability
1005
2020
  # and high availability. Depending on performance needs, you can specify
1006
- # a different Storage Class. Amazon S3 on Outposts only uses the
1007
- # OUTPOSTS Storage Class. For more information, see [Storage Classes][1]
1008
- # in the *Amazon S3 User Guide*.
2021
+ # a different Storage Class. For more information, see [Storage
2022
+ # Classes][1] in the *Amazon S3 User Guide*.
2023
+ #
2024
+ # <note markdown="1"> * For directory buckets, only the S3 Express One Zone storage class is
2025
+ # supported to store newly created objects.
2026
+ #
2027
+ # * Amazon S3 on Outposts only uses the OUTPOSTS Storage Class.
2028
+ #
2029
+ # </note>
1009
2030
  #
1010
2031
  #
1011
2032
  #
@@ -1014,75 +2035,127 @@ module Aws::S3
1014
2035
  # If the bucket is configured as a website, redirects requests for this
1015
2036
  # object to another object in the same bucket or to an external URL.
1016
2037
  # Amazon S3 stores the value of this header in the object metadata.
2038
+ #
2039
+ # <note markdown="1"> This functionality is not supported for directory buckets.
2040
+ #
2041
+ # </note>
1017
2042
  # @option options [String] :sse_customer_algorithm
1018
- # Specifies the algorithm to use to when encrypting the object (for
2043
+ # Specifies the algorithm to use when encrypting the object (for
1019
2044
  # example, AES256).
2045
+ #
2046
+ # <note markdown="1"> This functionality is not supported for directory buckets.
2047
+ #
2048
+ # </note>
1020
2049
  # @option options [String] :sse_customer_key
1021
2050
  # Specifies the customer-provided encryption key for Amazon S3 to use in
1022
2051
  # encrypting data. This value is used to store the object and then it is
1023
2052
  # discarded; Amazon S3 does not store the encryption key. The key must
1024
2053
  # be appropriate for use with the algorithm specified in the
1025
2054
  # `x-amz-server-side-encryption-customer-algorithm` header.
2055
+ #
2056
+ # <note markdown="1"> This functionality is not supported for directory buckets.
2057
+ #
2058
+ # </note>
1026
2059
  # @option options [String] :sse_customer_key_md5
1027
- # Specifies the 128-bit MD5 digest of the encryption key according to
1028
- # RFC 1321. Amazon S3 uses this header for a message integrity check to
1029
- # ensure that the encryption key was transmitted without error.
1030
- # @option options [String] :ssekms_key_id
1031
- # Specifies the ID of the symmetric customer managed key to use for
1032
- # object encryption. All GET and PUT requests for an object protected by
1033
- # Amazon Web Services KMS will fail if not made via SSL or using SigV4.
1034
- # For information about configuring using any of the officially
1035
- # supported Amazon Web Services SDKs and Amazon Web Services CLI, see
1036
- # [Specifying the Signature Version in Request Authentication][1] in the
1037
- # *Amazon S3 User Guide*.
2060
+ # Specifies the 128-bit MD5 digest of the customer-provided encryption
2061
+ # key according to RFC 1321. Amazon S3 uses this header for a message
2062
+ # integrity check to ensure that the encryption key was transmitted
2063
+ # without error.
1038
2064
  #
2065
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1039
2066
  #
2067
+ # </note>
2068
+ # @option options [String] :ssekms_key_id
2069
+ # Specifies the ID (Key ID, Key ARN, or Key Alias) of the symmetric
2070
+ # encryption customer managed key to use for object encryption.
1040
2071
  #
1041
- # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version
2072
+ # <note markdown="1"> This functionality is not supported for directory buckets.
2073
+ #
2074
+ # </note>
1042
2075
  # @option options [String] :ssekms_encryption_context
1043
2076
  # Specifies the Amazon Web Services KMS Encryption Context to use for
1044
2077
  # object encryption. The value of this header is a base64-encoded UTF-8
1045
2078
  # string holding JSON with the encryption context key-value pairs.
2079
+ #
2080
+ # <note markdown="1"> This functionality is not supported for directory buckets.
2081
+ #
2082
+ # </note>
1046
2083
  # @option options [Boolean] :bucket_key_enabled
1047
2084
  # Specifies whether Amazon S3 should use an S3 Bucket Key for object
1048
- # encryption with server-side encryption using AWS KMS (SSE-KMS).
1049
- # Setting this header to `true` causes Amazon S3 to use an S3 Bucket Key
1050
- # for object encryption with SSE-KMS.
2085
+ # encryption with server-side encryption using Key Management Service
2086
+ # (KMS) keys (SSE-KMS). Setting this header to `true` causes Amazon S3
2087
+ # to use an S3 Bucket Key for object encryption with SSE-KMS.
1051
2088
  #
1052
2089
  # Specifying this header with an object action doesn’t affect
1053
2090
  # bucket-level settings for S3 Bucket Key.
2091
+ #
2092
+ # <note markdown="1"> This functionality is not supported for directory buckets.
2093
+ #
2094
+ # </note>
1054
2095
  # @option options [String] :request_payer
1055
2096
  # Confirms that the requester knows that they will be charged for the
1056
2097
  # request. Bucket owners need not specify this parameter in their
1057
- # requests. For information about downloading objects from requester
1058
- # pays buckets, see [Downloading Objects in Requestor Pays Buckets][1]
2098
+ # requests. If either the source or destination S3 bucket has Requester
2099
+ # Pays enabled, the requester will pay for corresponding charges to copy
2100
+ # the object. For information about downloading objects from Requester
2101
+ # Pays buckets, see [Downloading Objects in Requester Pays Buckets][1]
1059
2102
  # in the *Amazon S3 User Guide*.
1060
2103
  #
2104
+ # <note markdown="1"> This functionality is not supported for directory buckets.
2105
+ #
2106
+ # </note>
2107
+ #
1061
2108
  #
1062
2109
  #
1063
2110
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
1064
2111
  # @option options [String] :tagging
1065
2112
  # The tag-set for the object. The tag-set must be encoded as URL Query
1066
2113
  # parameters.
2114
+ #
2115
+ # <note markdown="1"> This functionality is not supported for directory buckets.
2116
+ #
2117
+ # </note>
1067
2118
  # @option options [String] :object_lock_mode
1068
2119
  # Specifies the Object Lock mode that you want to apply to the uploaded
1069
2120
  # object.
2121
+ #
2122
+ # <note markdown="1"> This functionality is not supported for directory buckets.
2123
+ #
2124
+ # </note>
1070
2125
  # @option options [Time,DateTime,Date,Integer,String] :object_lock_retain_until_date
1071
2126
  # Specifies the date and time when you want the Object Lock to expire.
2127
+ #
2128
+ # <note markdown="1"> This functionality is not supported for directory buckets.
2129
+ #
2130
+ # </note>
1072
2131
  # @option options [String] :object_lock_legal_hold_status
1073
- # Specifies whether you want to apply a Legal Hold to the uploaded
2132
+ # Specifies whether you want to apply a legal hold to the uploaded
1074
2133
  # object.
2134
+ #
2135
+ # <note markdown="1"> This functionality is not supported for directory buckets.
2136
+ #
2137
+ # </note>
1075
2138
  # @option options [String] :expected_bucket_owner
1076
- # The account ID of the expected bucket owner. If the bucket is owned by
1077
- # a different account, the request will fail with an HTTP `403 (Access
1078
- # Denied)` error.
2139
+ # The account ID of the expected bucket owner. If the account ID that
2140
+ # you provide does not match the actual owner of the bucket, the request
2141
+ # fails with the HTTP status code `403 Forbidden` (access denied).
2142
+ # @option options [String] :checksum_algorithm
2143
+ # Indicates the algorithm that you want Amazon S3 to use to create the
2144
+ # checksum for the object. For more information, see [Checking object
2145
+ # integrity][1] in the *Amazon S3 User Guide*.
2146
+ #
2147
+ #
2148
+ #
2149
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
1079
2150
  # @return [MultipartUpload]
1080
2151
  def initiate_multipart_upload(options = {})
1081
2152
  options = options.merge(
1082
2153
  bucket: @bucket_name,
1083
2154
  key: @key
1084
2155
  )
1085
- resp = @client.create_multipart_upload(options)
2156
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
2157
+ @client.create_multipart_upload(options)
2158
+ end
1086
2159
  MultipartUpload.new(
1087
2160
  bucket_name: @bucket_name,
1088
2161
  object_key: @key,
@@ -1103,6 +2176,11 @@ module Aws::S3
1103
2176
  # content_length: 1,
1104
2177
  # content_md5: "ContentMD5",
1105
2178
  # content_type: "ContentType",
2179
+ # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256
2180
+ # checksum_crc32: "ChecksumCRC32",
2181
+ # checksum_crc32c: "ChecksumCRC32C",
2182
+ # checksum_sha1: "ChecksumSHA1",
2183
+ # checksum_sha256: "ChecksumSHA256",
1106
2184
  # expires: Time.now,
1107
2185
  # grant_full_control: "GrantFullControl",
1108
2186
  # grant_read: "GrantRead",
@@ -1111,8 +2189,8 @@ module Aws::S3
1111
2189
  # metadata: {
1112
2190
  # "MetadataKey" => "MetadataValue",
1113
2191
  # },
1114
- # server_side_encryption: "AES256", # accepts AES256, aws:kms
1115
- # storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE, OUTPOSTS, GLACIER_IR
2192
+ # server_side_encryption: "AES256", # accepts AES256, aws:kms, aws:kms:dsse
2193
+ # storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE, OUTPOSTS, GLACIER_IR, SNOW, EXPRESS_ONEZONE
1116
2194
  # website_redirect_location: "WebsiteRedirectLocation",
1117
2195
  # sse_customer_algorithm: "SSECustomerAlgorithm",
1118
2196
  # sse_customer_key: "SSECustomerKey",
@@ -1130,13 +2208,41 @@ module Aws::S3
1130
2208
  # @param [Hash] options ({})
1131
2209
  # @option options [String] :acl
1132
2210
  # The canned ACL to apply to the object. For more information, see
1133
- # [Canned ACL][1].
2211
+ # [Canned ACL][1] in the *Amazon S3 User Guide*.
2212
+ #
2213
+ # When adding a new object, you can use headers to grant ACL-based
2214
+ # permissions to individual Amazon Web Services accounts or to
2215
+ # predefined groups defined by Amazon S3. These permissions are then
2216
+ # added to the ACL on the object. By default, all objects are private.
2217
+ # Only the owner has full access control. For more information, see
2218
+ # [Access Control List (ACL) Overview][2] and [Managing ACLs Using the
2219
+ # REST API][3] in the *Amazon S3 User Guide*.
2220
+ #
2221
+ # If the bucket that you're uploading objects to uses the bucket owner
2222
+ # enforced setting for S3 Object Ownership, ACLs are disabled and no
2223
+ # longer affect permissions. Buckets that use this setting only accept
2224
+ # PUT requests that don't specify an ACL or PUT requests that specify
2225
+ # bucket owner full control ACLs, such as the
2226
+ # `bucket-owner-full-control` canned ACL or an equivalent form of this
2227
+ # ACL expressed in the XML format. PUT requests that contain other ACLs
2228
+ # (for example, custom grants to certain Amazon Web Services accounts)
2229
+ # fail and return a `400` error with the error code
2230
+ # `AccessControlListNotSupported`. For more information, see [
2231
+ # Controlling ownership of objects and disabling ACLs][4] in the *Amazon
2232
+ # S3 User Guide*.
2233
+ #
2234
+ # <note markdown="1"> * This functionality is not supported for directory buckets.
2235
+ #
2236
+ # * This functionality is not supported for Amazon S3 on Outposts.
1134
2237
  #
1135
- # This action is not supported by Amazon S3 on Outposts.
2238
+ # </note>
1136
2239
  #
1137
2240
  #
1138
2241
  #
1139
2242
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL
2243
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html
2244
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-using-rest-api.html
2245
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html
1140
2246
  # @option options [String, StringIO, File] :body
1141
2247
  # Object data.
1142
2248
  # @option options [String] :cache_control
@@ -1150,30 +2256,30 @@ module Aws::S3
1150
2256
  # @option options [String] :content_disposition
1151
2257
  # Specifies presentational information for the object. For more
1152
2258
  # information, see
1153
- # [http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1][1].
2259
+ # [https://www.rfc-editor.org/rfc/rfc6266#section-4][1].
1154
2260
  #
1155
2261
  #
1156
2262
  #
1157
- # [1]: http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1
2263
+ # [1]: https://www.rfc-editor.org/rfc/rfc6266#section-4
1158
2264
  # @option options [String] :content_encoding
1159
2265
  # Specifies what content encodings have been applied to the object and
1160
2266
  # thus what decoding mechanisms must be applied to obtain the media-type
1161
2267
  # referenced by the Content-Type header field. For more information, see
1162
- # [http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11][1].
2268
+ # [https://www.rfc-editor.org/rfc/rfc9110.html#field.content-encoding][1].
1163
2269
  #
1164
2270
  #
1165
2271
  #
1166
- # [1]: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11
2272
+ # [1]: https://www.rfc-editor.org/rfc/rfc9110.html#field.content-encoding
1167
2273
  # @option options [String] :content_language
1168
2274
  # The language the content is in.
1169
2275
  # @option options [Integer] :content_length
1170
2276
  # Size of the body in bytes. This parameter is useful when the size of
1171
2277
  # the body cannot be determined automatically. For more information, see
1172
- # [http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13][1].
2278
+ # [https://www.rfc-editor.org/rfc/rfc9110.html#name-content-length][1].
1173
2279
  #
1174
2280
  #
1175
2281
  #
1176
- # [1]: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13
2282
+ # [1]: https://www.rfc-editor.org/rfc/rfc9110.html#name-content-length
1177
2283
  # @option options [String] :content_md5
1178
2284
  # The base64-encoded 128-bit MD5 digest of the message (without the
1179
2285
  # headers) according to RFC 1864. This header can be used as a message
@@ -1183,54 +2289,185 @@ module Aws::S3
1183
2289
  # information about REST request authentication, see [REST
1184
2290
  # Authentication][1].
1185
2291
  #
2292
+ # <note markdown="1"> The `Content-MD5` header is required for any request to upload an
2293
+ # object with a retention period configured using Amazon S3 Object Lock.
2294
+ # For more information about Amazon S3 Object Lock, see [Amazon S3
2295
+ # Object Lock Overview][2] in the *Amazon S3 User Guide*.
2296
+ #
2297
+ # </note>
2298
+ #
2299
+ # <note markdown="1"> This functionality is not supported for directory buckets.
2300
+ #
2301
+ # </note>
2302
+ #
1186
2303
  #
1187
2304
  #
1188
2305
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html
2306
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html
1189
2307
  # @option options [String] :content_type
1190
2308
  # A standard MIME type describing the format of the contents. For more
1191
2309
  # information, see
1192
- # [http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17][1].
2310
+ # [https://www.rfc-editor.org/rfc/rfc9110.html#name-content-type][1].
2311
+ #
2312
+ #
2313
+ #
2314
+ # [1]: https://www.rfc-editor.org/rfc/rfc9110.html#name-content-type
2315
+ # @option options [String] :checksum_algorithm
2316
+ # Indicates the algorithm used to create the checksum for the object
2317
+ # when you use the SDK. This header will not provide any additional
2318
+ # functionality if you don't use the SDK. When you send this header,
2319
+ # there must be a corresponding `x-amz-checksum-algorithm ` or
2320
+ # `x-amz-trailer` header sent. Otherwise, Amazon S3 fails the request
2321
+ # with the HTTP status code `400 Bad Request`.
2322
+ #
2323
+ # For the `x-amz-checksum-algorithm ` header, replace ` algorithm ` with
2324
+ # the supported algorithm from the following list:
2325
+ #
2326
+ # * CRC32
2327
+ #
2328
+ # * CRC32C
2329
+ #
2330
+ # * SHA1
2331
+ #
2332
+ # * SHA256
2333
+ #
2334
+ # For more information, see [Checking object integrity][1] in the
2335
+ # *Amazon S3 User Guide*.
2336
+ #
2337
+ # If the individual checksum value you provide through
2338
+ # `x-amz-checksum-algorithm ` doesn't match the checksum algorithm you
2339
+ # set through `x-amz-sdk-checksum-algorithm`, Amazon S3 ignores any
2340
+ # provided `ChecksumAlgorithm` parameter and uses the checksum algorithm
2341
+ # that matches the provided value in `x-amz-checksum-algorithm `.
2342
+ #
2343
+ # <note markdown="1"> For directory buckets, when you use Amazon Web Services SDKs, `CRC32`
2344
+ # is the default checksum algorithm that's used for performance.
2345
+ #
2346
+ # </note>
2347
+ #
2348
+ #
2349
+ #
2350
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
2351
+ # @option options [String] :checksum_crc32
2352
+ # This header can be used as a data integrity check to verify that the
2353
+ # data received is the same data that was originally sent. This header
2354
+ # specifies the base64-encoded, 32-bit CRC32 checksum of the object. For
2355
+ # more information, see [Checking object integrity][1] in the *Amazon S3
2356
+ # User Guide*.
2357
+ #
2358
+ #
2359
+ #
2360
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
2361
+ # @option options [String] :checksum_crc32c
2362
+ # This header can be used as a data integrity check to verify that the
2363
+ # data received is the same data that was originally sent. This header
2364
+ # specifies the base64-encoded, 32-bit CRC32C checksum of the object.
2365
+ # For more information, see [Checking object integrity][1] in the
2366
+ # *Amazon S3 User Guide*.
2367
+ #
2368
+ #
2369
+ #
2370
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
2371
+ # @option options [String] :checksum_sha1
2372
+ # This header can be used as a data integrity check to verify that the
2373
+ # data received is the same data that was originally sent. This header
2374
+ # specifies the base64-encoded, 160-bit SHA-1 digest of the object. For
2375
+ # more information, see [Checking object integrity][1] in the *Amazon S3
2376
+ # User Guide*.
1193
2377
  #
1194
2378
  #
1195
2379
  #
1196
- # [1]: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17
2380
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
2381
+ # @option options [String] :checksum_sha256
2382
+ # This header can be used as a data integrity check to verify that the
2383
+ # data received is the same data that was originally sent. This header
2384
+ # specifies the base64-encoded, 256-bit SHA-256 digest of the object.
2385
+ # For more information, see [Checking object integrity][1] in the
2386
+ # *Amazon S3 User Guide*.
2387
+ #
2388
+ #
2389
+ #
2390
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
1197
2391
  # @option options [Time,DateTime,Date,Integer,String] :expires
1198
2392
  # The date and time at which the object is no longer cacheable. For more
1199
2393
  # information, see
1200
- # [http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21][1].
2394
+ # [https://www.rfc-editor.org/rfc/rfc7234#section-5.3][1].
1201
2395
  #
1202
2396
  #
1203
2397
  #
1204
- # [1]: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21
2398
+ # [1]: https://www.rfc-editor.org/rfc/rfc7234#section-5.3
1205
2399
  # @option options [String] :grant_full_control
1206
2400
  # Gives the grantee READ, READ\_ACP, and WRITE\_ACP permissions on the
1207
2401
  # object.
1208
2402
  #
1209
- # This action is not supported by Amazon S3 on Outposts.
2403
+ # <note markdown="1"> * This functionality is not supported for directory buckets.
2404
+ #
2405
+ # * This functionality is not supported for Amazon S3 on Outposts.
2406
+ #
2407
+ # </note>
1210
2408
  # @option options [String] :grant_read
1211
2409
  # Allows grantee to read the object data and its metadata.
1212
2410
  #
1213
- # This action is not supported by Amazon S3 on Outposts.
2411
+ # <note markdown="1"> * This functionality is not supported for directory buckets.
2412
+ #
2413
+ # * This functionality is not supported for Amazon S3 on Outposts.
2414
+ #
2415
+ # </note>
1214
2416
  # @option options [String] :grant_read_acp
1215
2417
  # Allows grantee to read the object ACL.
1216
2418
  #
1217
- # This action is not supported by Amazon S3 on Outposts.
2419
+ # <note markdown="1"> * This functionality is not supported for directory buckets.
2420
+ #
2421
+ # * This functionality is not supported for Amazon S3 on Outposts.
2422
+ #
2423
+ # </note>
1218
2424
  # @option options [String] :grant_write_acp
1219
2425
  # Allows grantee to write the ACL for the applicable object.
1220
2426
  #
1221
- # This action is not supported by Amazon S3 on Outposts.
2427
+ # <note markdown="1"> * This functionality is not supported for directory buckets.
2428
+ #
2429
+ # * This functionality is not supported for Amazon S3 on Outposts.
2430
+ #
2431
+ # </note>
1222
2432
  # @option options [Hash<String,String>] :metadata
1223
2433
  # A map of metadata to store with the object in S3.
1224
2434
  # @option options [String] :server_side_encryption
1225
- # The server-side encryption algorithm used when storing this object in
1226
- # Amazon S3 (for example, AES256, aws:kms).
2435
+ # The server-side encryption algorithm that was used when you store this
2436
+ # object in Amazon S3 (for example, `AES256`, `aws:kms`,
2437
+ # `aws:kms:dsse`).
2438
+ #
2439
+ # <b>General purpose buckets </b> - You have four mutually exclusive
2440
+ # options to protect data using server-side encryption in Amazon S3,
2441
+ # depending on how you choose to manage the encryption keys.
2442
+ # Specifically, the encryption key options are Amazon S3 managed keys
2443
+ # (SSE-S3), Amazon Web Services KMS keys (SSE-KMS or DSSE-KMS), and
2444
+ # customer-provided keys (SSE-C). Amazon S3 encrypts data with
2445
+ # server-side encryption by using Amazon S3 managed keys (SSE-S3) by
2446
+ # default. You can optionally tell Amazon S3 to encrypt data at rest by
2447
+ # using server-side encryption with other key options. For more
2448
+ # information, see [Using Server-Side Encryption][1] in the *Amazon S3
2449
+ # User Guide*.
2450
+ #
2451
+ # <b>Directory buckets </b> - For directory buckets, only the
2452
+ # server-side encryption with Amazon S3 managed keys (SSE-S3) (`AES256`)
2453
+ # value is supported.
2454
+ #
2455
+ #
2456
+ #
2457
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html
1227
2458
  # @option options [String] :storage_class
1228
2459
  # By default, Amazon S3 uses the STANDARD Storage Class to store newly
1229
2460
  # created objects. The STANDARD storage class provides high durability
1230
2461
  # and high availability. Depending on performance needs, you can specify
1231
- # a different Storage Class. Amazon S3 on Outposts only uses the
1232
- # OUTPOSTS Storage Class. For more information, see [Storage Classes][1]
1233
- # in the *Amazon S3 User Guide*.
2462
+ # a different Storage Class. For more information, see [Storage
2463
+ # Classes][1] in the *Amazon S3 User Guide*.
2464
+ #
2465
+ # <note markdown="1"> * For directory buckets, only the S3 Express One Zone storage class is
2466
+ # supported to store newly created objects.
2467
+ #
2468
+ # * Amazon S3 on Outposts only uses the OUTPOSTS Storage Class.
2469
+ #
2470
+ # </note>
1234
2471
  #
1235
2472
  #
1236
2473
  #
@@ -1239,7 +2476,8 @@ module Aws::S3
1239
2476
  # If the bucket is configured as a website, redirects requests for this
1240
2477
  # object to another object in the same bucket or to an external URL.
1241
2478
  # Amazon S3 stores the value of this header in the object metadata. For
1242
- # information about object metadata, see [Object Key and Metadata][1].
2479
+ # information about object metadata, see [Object Key and Metadata][1] in
2480
+ # the *Amazon S3 User Guide*.
1243
2481
  #
1244
2482
  # In the following example, the request header sets the redirect to an
1245
2483
  # object (anotherPage.html) in the same bucket:
@@ -1253,7 +2491,11 @@ module Aws::S3
1253
2491
  #
1254
2492
  # For more information about website hosting in Amazon S3, see [Hosting
1255
2493
  # Websites on Amazon S3][2] and [How to Configure Website Page
1256
- # Redirects][3].
2494
+ # Redirects][3] in the *Amazon S3 User Guide*.
2495
+ #
2496
+ # <note markdown="1"> This functionality is not supported for directory buckets.
2497
+ #
2498
+ # </note>
1257
2499
  #
1258
2500
  #
1259
2501
  #
@@ -1261,76 +2503,130 @@ module Aws::S3
1261
2503
  # [2]: https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html
1262
2504
  # [3]: https://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html
1263
2505
  # @option options [String] :sse_customer_algorithm
1264
- # Specifies the algorithm to use to when encrypting the object (for
1265
- # example, AES256).
2506
+ # Specifies the algorithm to use when encrypting the object (for
2507
+ # example, `AES256`).
2508
+ #
2509
+ # <note markdown="1"> This functionality is not supported for directory buckets.
2510
+ #
2511
+ # </note>
1266
2512
  # @option options [String] :sse_customer_key
1267
2513
  # Specifies the customer-provided encryption key for Amazon S3 to use in
1268
2514
  # encrypting data. This value is used to store the object and then it is
1269
2515
  # discarded; Amazon S3 does not store the encryption key. The key must
1270
2516
  # be appropriate for use with the algorithm specified in the
1271
2517
  # `x-amz-server-side-encryption-customer-algorithm` header.
2518
+ #
2519
+ # <note markdown="1"> This functionality is not supported for directory buckets.
2520
+ #
2521
+ # </note>
1272
2522
  # @option options [String] :sse_customer_key_md5
1273
2523
  # Specifies the 128-bit MD5 digest of the encryption key according to
1274
2524
  # RFC 1321. Amazon S3 uses this header for a message integrity check to
1275
2525
  # ensure that the encryption key was transmitted without error.
2526
+ #
2527
+ # <note markdown="1"> This functionality is not supported for directory buckets.
2528
+ #
2529
+ # </note>
1276
2530
  # @option options [String] :ssekms_key_id
1277
- # If `x-amz-server-side-encryption` is present and has the value of
1278
- # `aws:kms`, this header specifies the ID of the Amazon Web Services Key
1279
- # Management Service (Amazon Web Services KMS) symmetrical customer
1280
- # managed key that was used for the object. If you specify
1281
- # `x-amz-server-side-encryption:aws:kms`, but do not provide`
2531
+ # If `x-amz-server-side-encryption` has a valid value of `aws:kms` or
2532
+ # `aws:kms:dsse`, this header specifies the ID (Key ID, Key ARN, or Key
2533
+ # Alias) of the Key Management Service (KMS) symmetric encryption
2534
+ # customer managed key that was used for the object. If you specify
2535
+ # `x-amz-server-side-encryption:aws:kms` or
2536
+ # `x-amz-server-side-encryption:aws:kms:dsse`, but do not provide`
1282
2537
  # x-amz-server-side-encryption-aws-kms-key-id`, Amazon S3 uses the
1283
- # Amazon Web Services managed key to protect the data. If the KMS key
1284
- # does not exist in the same account issuing the command, you must use
1285
- # the full ARN and not just the ID.
2538
+ # Amazon Web Services managed key (`aws/s3`) to protect the data. If the
2539
+ # KMS key does not exist in the same account that's issuing the
2540
+ # command, you must use the full ARN and not just the ID.
2541
+ #
2542
+ # <note markdown="1"> This functionality is not supported for directory buckets.
2543
+ #
2544
+ # </note>
1286
2545
  # @option options [String] :ssekms_encryption_context
1287
2546
  # Specifies the Amazon Web Services KMS Encryption Context to use for
1288
2547
  # object encryption. The value of this header is a base64-encoded UTF-8
1289
- # string holding JSON with the encryption context key-value pairs.
2548
+ # string holding JSON with the encryption context key-value pairs. This
2549
+ # value is stored as object metadata and automatically gets passed on to
2550
+ # Amazon Web Services KMS for future `GetObject` or `CopyObject`
2551
+ # operations on this object. This value must be explicitly added during
2552
+ # `CopyObject` operations.
2553
+ #
2554
+ # <note markdown="1"> This functionality is not supported for directory buckets.
2555
+ #
2556
+ # </note>
1290
2557
  # @option options [Boolean] :bucket_key_enabled
1291
2558
  # Specifies whether Amazon S3 should use an S3 Bucket Key for object
1292
- # encryption with server-side encryption using AWS KMS (SSE-KMS).
1293
- # Setting this header to `true` causes Amazon S3 to use an S3 Bucket Key
1294
- # for object encryption with SSE-KMS.
2559
+ # encryption with server-side encryption using Key Management Service
2560
+ # (KMS) keys (SSE-KMS). Setting this header to `true` causes Amazon S3
2561
+ # to use an S3 Bucket Key for object encryption with SSE-KMS.
1295
2562
  #
1296
2563
  # Specifying this header with a PUT action doesn’t affect bucket-level
1297
2564
  # settings for S3 Bucket Key.
2565
+ #
2566
+ # <note markdown="1"> This functionality is not supported for directory buckets.
2567
+ #
2568
+ # </note>
1298
2569
  # @option options [String] :request_payer
1299
2570
  # Confirms that the requester knows that they will be charged for the
1300
2571
  # request. Bucket owners need not specify this parameter in their
1301
- # requests. For information about downloading objects from requester
1302
- # pays buckets, see [Downloading Objects in Requestor Pays Buckets][1]
2572
+ # requests. If either the source or destination S3 bucket has Requester
2573
+ # Pays enabled, the requester will pay for corresponding charges to copy
2574
+ # the object. For information about downloading objects from Requester
2575
+ # Pays buckets, see [Downloading Objects in Requester Pays Buckets][1]
1303
2576
  # in the *Amazon S3 User Guide*.
1304
2577
  #
2578
+ # <note markdown="1"> This functionality is not supported for directory buckets.
2579
+ #
2580
+ # </note>
2581
+ #
1305
2582
  #
1306
2583
  #
1307
2584
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
1308
2585
  # @option options [String] :tagging
1309
2586
  # The tag-set for the object. The tag-set must be encoded as URL Query
1310
2587
  # parameters. (For example, "Key1=Value1")
2588
+ #
2589
+ # <note markdown="1"> This functionality is not supported for directory buckets.
2590
+ #
2591
+ # </note>
1311
2592
  # @option options [String] :object_lock_mode
1312
2593
  # The Object Lock mode that you want to apply to this object.
2594
+ #
2595
+ # <note markdown="1"> This functionality is not supported for directory buckets.
2596
+ #
2597
+ # </note>
1313
2598
  # @option options [Time,DateTime,Date,Integer,String] :object_lock_retain_until_date
1314
2599
  # The date and time when you want this object's Object Lock to expire.
1315
2600
  # Must be formatted as a timestamp parameter.
2601
+ #
2602
+ # <note markdown="1"> This functionality is not supported for directory buckets.
2603
+ #
2604
+ # </note>
1316
2605
  # @option options [String] :object_lock_legal_hold_status
1317
2606
  # Specifies whether a legal hold will be applied to this object. For
1318
- # more information about S3 Object Lock, see [Object Lock][1].
2607
+ # more information about S3 Object Lock, see [Object Lock][1] in the
2608
+ # *Amazon S3 User Guide*.
2609
+ #
2610
+ # <note markdown="1"> This functionality is not supported for directory buckets.
2611
+ #
2612
+ # </note>
1319
2613
  #
1320
2614
  #
1321
2615
  #
1322
2616
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html
1323
2617
  # @option options [String] :expected_bucket_owner
1324
- # The account ID of the expected bucket owner. If the bucket is owned by
1325
- # a different account, the request will fail with an HTTP `403 (Access
1326
- # Denied)` error.
2618
+ # The account ID of the expected bucket owner. If the account ID that
2619
+ # you provide does not match the actual owner of the bucket, the request
2620
+ # fails with the HTTP status code `403 Forbidden` (access denied).
1327
2621
  # @return [Types::PutObjectOutput]
1328
2622
  def put(options = {})
1329
2623
  options = options.merge(
1330
2624
  bucket: @bucket_name,
1331
2625
  key: @key
1332
2626
  )
1333
- resp = @client.put_object(options)
2627
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
2628
+ @client.put_object(options)
2629
+ end
1334
2630
  resp.data
1335
2631
  end
1336
2632
 
@@ -1384,7 +2680,7 @@ module Aws::S3
1384
2680
  # bucket_name: "BucketName", # required
1385
2681
  # prefix: "LocationPrefix", # required
1386
2682
  # encryption: {
1387
- # encryption_type: "AES256", # required, accepts AES256, aws:kms
2683
+ # encryption_type: "AES256", # required, accepts AES256, aws:kms, aws:kms:dsse
1388
2684
  # kms_key_id: "SSEKMSKeyId",
1389
2685
  # kms_context: "KMSContext",
1390
2686
  # },
@@ -1415,11 +2711,12 @@ module Aws::S3
1415
2711
  # value: "MetadataValue",
1416
2712
  # },
1417
2713
  # ],
1418
- # storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE, OUTPOSTS, GLACIER_IR
2714
+ # storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE, OUTPOSTS, GLACIER_IR, SNOW, EXPRESS_ONEZONE
1419
2715
  # },
1420
2716
  # },
1421
2717
  # },
1422
2718
  # request_payer: "requester", # accepts requester
2719
+ # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256
1423
2720
  # expected_bucket_owner: "AccountId",
1424
2721
  # })
1425
2722
  # @param [Hash] options ({})
@@ -1430,24 +2727,47 @@ module Aws::S3
1430
2727
  # @option options [String] :request_payer
1431
2728
  # Confirms that the requester knows that they will be charged for the
1432
2729
  # request. Bucket owners need not specify this parameter in their
1433
- # requests. For information about downloading objects from requester
1434
- # pays buckets, see [Downloading Objects in Requestor Pays Buckets][1]
2730
+ # requests. If either the source or destination S3 bucket has Requester
2731
+ # Pays enabled, the requester will pay for corresponding charges to copy
2732
+ # the object. For information about downloading objects from Requester
2733
+ # Pays buckets, see [Downloading Objects in Requester Pays Buckets][1]
1435
2734
  # in the *Amazon S3 User Guide*.
1436
2735
  #
2736
+ # <note markdown="1"> This functionality is not supported for directory buckets.
2737
+ #
2738
+ # </note>
2739
+ #
1437
2740
  #
1438
2741
  #
1439
2742
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
2743
+ # @option options [String] :checksum_algorithm
2744
+ # Indicates the algorithm used to create the checksum for the object
2745
+ # when you use the SDK. This header will not provide any additional
2746
+ # functionality if you don't use the SDK. When you send this header,
2747
+ # there must be a corresponding `x-amz-checksum` or `x-amz-trailer`
2748
+ # header sent. Otherwise, Amazon S3 fails the request with the HTTP
2749
+ # status code `400 Bad Request`. For more information, see [Checking
2750
+ # object integrity][1] in the *Amazon S3 User Guide*.
2751
+ #
2752
+ # If you provide an individual checksum, Amazon S3 ignores any provided
2753
+ # `ChecksumAlgorithm` parameter.
2754
+ #
2755
+ #
2756
+ #
2757
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
1440
2758
  # @option options [String] :expected_bucket_owner
1441
- # The account ID of the expected bucket owner. If the bucket is owned by
1442
- # a different account, the request will fail with an HTTP `403 (Access
1443
- # Denied)` error.
2759
+ # The account ID of the expected bucket owner. If the account ID that
2760
+ # you provide does not match the actual owner of the bucket, the request
2761
+ # fails with the HTTP status code `403 Forbidden` (access denied).
1444
2762
  # @return [Types::RestoreObjectOutput]
1445
2763
  def restore_object(options = {})
1446
2764
  options = options.merge(
1447
2765
  bucket: @bucket_name,
1448
2766
  key: @key
1449
2767
  )
1450
- resp = @client.restore_object(options)
2768
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
2769
+ @client.restore_object(options)
2770
+ end
1451
2771
  resp.data
1452
2772
  end
1453
2773
 
@@ -1459,6 +2779,12 @@ module Aws::S3
1459
2779
  # if_none_match: "IfNoneMatch",
1460
2780
  # if_unmodified_since: Time.now,
1461
2781
  # range: "Range",
2782
+ # response_cache_control: "ResponseCacheControl",
2783
+ # response_content_disposition: "ResponseContentDisposition",
2784
+ # response_content_encoding: "ResponseContentEncoding",
2785
+ # response_content_language: "ResponseContentLanguage",
2786
+ # response_content_type: "ResponseContentType",
2787
+ # response_expires: Time.now,
1462
2788
  # version_id: "ObjectVersionId",
1463
2789
  # sse_customer_algorithm: "SSECustomerAlgorithm",
1464
2790
  # sse_customer_key: "SSECustomerKey",
@@ -1466,55 +2792,143 @@ module Aws::S3
1466
2792
  # request_payer: "requester", # accepts requester
1467
2793
  # part_number: 1,
1468
2794
  # expected_bucket_owner: "AccountId",
2795
+ # checksum_mode: "ENABLED", # accepts ENABLED
1469
2796
  # })
1470
2797
  # @param [Hash] options ({})
1471
2798
  # @option options [String] :if_match
1472
2799
  # Return the object only if its entity tag (ETag) is the same as the one
1473
- # specified, otherwise return a 412 (precondition failed).
2800
+ # specified; otherwise, return a 412 (precondition failed) error.
2801
+ #
2802
+ # If both of the `If-Match` and `If-Unmodified-Since` headers are
2803
+ # present in the request as follows:
2804
+ #
2805
+ # * `If-Match` condition evaluates to `true`, and;
2806
+ #
2807
+ # * `If-Unmodified-Since` condition evaluates to `false`;
2808
+ #
2809
+ # Then Amazon S3 returns `200 OK` and the data requested.
2810
+ #
2811
+ # For more information about conditional requests, see [RFC 7232][1].
2812
+ #
2813
+ #
2814
+ #
2815
+ # [1]: https://tools.ietf.org/html/rfc7232
1474
2816
  # @option options [Time,DateTime,Date,Integer,String] :if_modified_since
1475
2817
  # Return the object only if it has been modified since the specified
1476
- # time, otherwise return a 304 (not modified).
2818
+ # time; otherwise, return a 304 (not modified) error.
2819
+ #
2820
+ # If both of the `If-None-Match` and `If-Modified-Since` headers are
2821
+ # present in the request as follows:
2822
+ #
2823
+ # * `If-None-Match` condition evaluates to `false`, and;
2824
+ #
2825
+ # * `If-Modified-Since` condition evaluates to `true`;
2826
+ #
2827
+ # Then Amazon S3 returns the `304 Not Modified` response code.
2828
+ #
2829
+ # For more information about conditional requests, see [RFC 7232][1].
2830
+ #
2831
+ #
2832
+ #
2833
+ # [1]: https://tools.ietf.org/html/rfc7232
1477
2834
  # @option options [String] :if_none_match
1478
2835
  # Return the object only if its entity tag (ETag) is different from the
1479
- # one specified, otherwise return a 304 (not modified).
2836
+ # one specified; otherwise, return a 304 (not modified) error.
2837
+ #
2838
+ # If both of the `If-None-Match` and `If-Modified-Since` headers are
2839
+ # present in the request as follows:
2840
+ #
2841
+ # * `If-None-Match` condition evaluates to `false`, and;
2842
+ #
2843
+ # * `If-Modified-Since` condition evaluates to `true`;
2844
+ #
2845
+ # Then Amazon S3 returns the `304 Not Modified` response code.
2846
+ #
2847
+ # For more information about conditional requests, see [RFC 7232][1].
2848
+ #
2849
+ #
2850
+ #
2851
+ # [1]: https://tools.ietf.org/html/rfc7232
1480
2852
  # @option options [Time,DateTime,Date,Integer,String] :if_unmodified_since
1481
2853
  # Return the object only if it has not been modified since the specified
1482
- # time, otherwise return a 412 (precondition failed).
1483
- # @option options [String] :range
1484
- # Downloads the specified range bytes of an object. For more information
1485
- # about the HTTP Range header, see
1486
- # [http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35][1].
2854
+ # time; otherwise, return a 412 (precondition failed) error.
1487
2855
  #
1488
- # <note markdown="1"> Amazon S3 doesn't support retrieving multiple ranges of data per
1489
- # `GET` request.
2856
+ # If both of the `If-Match` and `If-Unmodified-Since` headers are
2857
+ # present in the request as follows:
1490
2858
  #
1491
- # </note>
2859
+ # * `If-Match` condition evaluates to `true`, and;
2860
+ #
2861
+ # * `If-Unmodified-Since` condition evaluates to `false`;
2862
+ #
2863
+ # Then Amazon S3 returns `200 OK` and the data requested.
2864
+ #
2865
+ # For more information about conditional requests, see [RFC 7232][1].
1492
2866
  #
1493
2867
  #
1494
2868
  #
1495
- # [1]: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35
2869
+ # [1]: https://tools.ietf.org/html/rfc7232
2870
+ # @option options [String] :range
2871
+ # HeadObject returns only the metadata for an object. If the Range is
2872
+ # satisfiable, only the `ContentLength` is affected in the response. If
2873
+ # the Range is not satisfiable, S3 returns a `416 - Requested Range Not
2874
+ # Satisfiable` error.
2875
+ # @option options [String] :response_cache_control
2876
+ # Sets the `Cache-Control` header of the response.
2877
+ # @option options [String] :response_content_disposition
2878
+ # Sets the `Content-Disposition` header of the response.
2879
+ # @option options [String] :response_content_encoding
2880
+ # Sets the `Content-Encoding` header of the response.
2881
+ # @option options [String] :response_content_language
2882
+ # Sets the `Content-Language` header of the response.
2883
+ # @option options [String] :response_content_type
2884
+ # Sets the `Content-Type` header of the response.
2885
+ # @option options [Time,DateTime,Date,Integer,String] :response_expires
2886
+ # Sets the `Expires` header of the response.
1496
2887
  # @option options [String] :version_id
1497
- # VersionId used to reference a specific version of the object.
2888
+ # Version ID used to reference a specific version of the object.
2889
+ #
2890
+ # <note markdown="1"> For directory buckets in this API operation, only the `null` value of
2891
+ # the version ID is supported.
2892
+ #
2893
+ # </note>
1498
2894
  # @option options [String] :sse_customer_algorithm
1499
- # Specifies the algorithm to use to when encrypting the object (for
2895
+ # Specifies the algorithm to use when encrypting the object (for
1500
2896
  # example, AES256).
2897
+ #
2898
+ # <note markdown="1"> This functionality is not supported for directory buckets.
2899
+ #
2900
+ # </note>
1501
2901
  # @option options [String] :sse_customer_key
1502
2902
  # Specifies the customer-provided encryption key for Amazon S3 to use in
1503
2903
  # encrypting data. This value is used to store the object and then it is
1504
2904
  # discarded; Amazon S3 does not store the encryption key. The key must
1505
2905
  # be appropriate for use with the algorithm specified in the
1506
2906
  # `x-amz-server-side-encryption-customer-algorithm` header.
2907
+ #
2908
+ # <note markdown="1"> This functionality is not supported for directory buckets.
2909
+ #
2910
+ # </note>
1507
2911
  # @option options [String] :sse_customer_key_md5
1508
2912
  # Specifies the 128-bit MD5 digest of the encryption key according to
1509
2913
  # RFC 1321. Amazon S3 uses this header for a message integrity check to
1510
2914
  # ensure that the encryption key was transmitted without error.
2915
+ #
2916
+ # <note markdown="1"> This functionality is not supported for directory buckets.
2917
+ #
2918
+ # </note>
1511
2919
  # @option options [String] :request_payer
1512
2920
  # Confirms that the requester knows that they will be charged for the
1513
2921
  # request. Bucket owners need not specify this parameter in their
1514
- # requests. For information about downloading objects from requester
1515
- # pays buckets, see [Downloading Objects in Requestor Pays Buckets][1]
2922
+ # requests. If either the source or destination S3 bucket has Requester
2923
+ # Pays enabled, the requester will pay for corresponding charges to copy
2924
+ # the object. For information about downloading objects from Requester
2925
+ # Pays buckets, see [Downloading Objects in Requester Pays Buckets][1]
1516
2926
  # in the *Amazon S3 User Guide*.
1517
2927
  #
2928
+ # <note markdown="1"> This functionality is not supported for directory buckets.
2929
+ #
2930
+ # </note>
2931
+ #
1518
2932
  #
1519
2933
  #
1520
2934
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
@@ -1524,16 +2938,25 @@ module Aws::S3
1524
2938
  # for the part specified. Useful querying about the size of the part and
1525
2939
  # the number of parts in this object.
1526
2940
  # @option options [String] :expected_bucket_owner
1527
- # The account ID of the expected bucket owner. If the bucket is owned by
1528
- # a different account, the request will fail with an HTTP `403 (Access
1529
- # Denied)` error.
2941
+ # The account ID of the expected bucket owner. If the account ID that
2942
+ # you provide does not match the actual owner of the bucket, the request
2943
+ # fails with the HTTP status code `403 Forbidden` (access denied).
2944
+ # @option options [String] :checksum_mode
2945
+ # To retrieve the checksum, this parameter must be enabled.
2946
+ #
2947
+ # In addition, if you enable `ChecksumMode` and the object is encrypted
2948
+ # with Amazon Web Services Key Management Service (Amazon Web Services
2949
+ # KMS), you must have permission to use the `kms:Decrypt` action for the
2950
+ # request to succeed.
1530
2951
  # @return [Types::HeadObjectOutput]
1531
2952
  def head(options = {})
1532
2953
  options = options.merge(
1533
2954
  bucket: @bucket_name,
1534
2955
  key: @key
1535
2956
  )
1536
- resp = @client.head_object(options)
2957
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
2958
+ @client.head_object(options)
2959
+ end
1537
2960
  resp.data
1538
2961
  end
1539
2962
 
@@ -1650,6 +3073,7 @@ module Aws::S3
1650
3073
  # request_payer: "requester", # accepts requester
1651
3074
  # bypass_governance_retention: false,
1652
3075
  # expected_bucket_owner: "AccountId",
3076
+ # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256
1653
3077
  # })
1654
3078
  # @param options ({})
1655
3079
  # @option options [String] :mfa
@@ -1657,24 +3081,85 @@ module Aws::S3
1657
3081
  # space, and the value that is displayed on your authentication device.
1658
3082
  # Required to permanently delete a versioned object if versioning is
1659
3083
  # configured with MFA delete enabled.
3084
+ #
3085
+ # When performing the `DeleteObjects` operation on an MFA delete enabled
3086
+ # bucket, which attempts to delete the specified versioned objects, you
3087
+ # must include an MFA token. If you don't provide an MFA token, the
3088
+ # entire request will fail, even if there are non-versioned objects that
3089
+ # you are trying to delete. If you provide an invalid token, whether
3090
+ # there are versioned object keys in the request or not, the entire
3091
+ # Multi-Object Delete request will fail. For information about MFA
3092
+ # Delete, see [ MFA Delete][1] in the *Amazon S3 User Guide*.
3093
+ #
3094
+ # <note markdown="1"> This functionality is not supported for directory buckets.
3095
+ #
3096
+ # </note>
3097
+ #
3098
+ #
3099
+ #
3100
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html#MultiFactorAuthenticationDelete
1660
3101
  # @option options [String] :request_payer
1661
3102
  # Confirms that the requester knows that they will be charged for the
1662
3103
  # request. Bucket owners need not specify this parameter in their
1663
- # requests. For information about downloading objects from requester
1664
- # pays buckets, see [Downloading Objects in Requestor Pays Buckets][1]
3104
+ # requests. If either the source or destination S3 bucket has Requester
3105
+ # Pays enabled, the requester will pay for corresponding charges to copy
3106
+ # the object. For information about downloading objects from Requester
3107
+ # Pays buckets, see [Downloading Objects in Requester Pays Buckets][1]
1665
3108
  # in the *Amazon S3 User Guide*.
1666
3109
  #
3110
+ # <note markdown="1"> This functionality is not supported for directory buckets.
3111
+ #
3112
+ # </note>
3113
+ #
1667
3114
  #
1668
3115
  #
1669
3116
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
1670
3117
  # @option options [Boolean] :bypass_governance_retention
1671
3118
  # Specifies whether you want to delete this object even if it has a
1672
3119
  # Governance-type Object Lock in place. To use this header, you must
1673
- # have the `s3:PutBucketPublicAccessBlock` permission.
3120
+ # have the `s3:BypassGovernanceRetention` permission.
3121
+ #
3122
+ # <note markdown="1"> This functionality is not supported for directory buckets.
3123
+ #
3124
+ # </note>
1674
3125
  # @option options [String] :expected_bucket_owner
1675
- # The account ID of the expected bucket owner. If the bucket is owned by
1676
- # a different account, the request will fail with an HTTP `403 (Access
1677
- # Denied)` error.
3126
+ # The account ID of the expected bucket owner. If the account ID that
3127
+ # you provide does not match the actual owner of the bucket, the request
3128
+ # fails with the HTTP status code `403 Forbidden` (access denied).
3129
+ # @option options [String] :checksum_algorithm
3130
+ # Indicates the algorithm used to create the checksum for the object
3131
+ # when you use the SDK. This header will not provide any additional
3132
+ # functionality if you don't use the SDK. When you send this header,
3133
+ # there must be a corresponding `x-amz-checksum-algorithm ` or
3134
+ # `x-amz-trailer` header sent. Otherwise, Amazon S3 fails the request
3135
+ # with the HTTP status code `400 Bad Request`.
3136
+ #
3137
+ # For the `x-amz-checksum-algorithm ` header, replace ` algorithm ` with
3138
+ # the supported algorithm from the following list:
3139
+ #
3140
+ # * CRC32
3141
+ #
3142
+ # * CRC32C
3143
+ #
3144
+ # * SHA1
3145
+ #
3146
+ # * SHA256
3147
+ #
3148
+ # For more information, see [Checking object integrity][1] in the
3149
+ # *Amazon S3 User Guide*.
3150
+ #
3151
+ # If the individual checksum value you provide through
3152
+ # `x-amz-checksum-algorithm ` doesn't match the checksum algorithm you
3153
+ # set through `x-amz-sdk-checksum-algorithm`, Amazon S3 ignores any
3154
+ # provided `ChecksumAlgorithm` parameter and uses the checksum algorithm
3155
+ # that matches the provided value in `x-amz-checksum-algorithm `.
3156
+ #
3157
+ # If you provide an individual checksum, Amazon S3 ignores any provided
3158
+ # `ChecksumAlgorithm` parameter.
3159
+ #
3160
+ #
3161
+ #
3162
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
1678
3163
  # @return [void]
1679
3164
  def batch_delete!(options = {})
1680
3165
  batch_enum.each do |batch|
@@ -1687,7 +3172,9 @@ module Aws::S3
1687
3172
  key: item.key
1688
3173
  }
1689
3174
  end
1690
- batch[0].client.delete_objects(params)
3175
+ Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
3176
+ batch[0].client.delete_objects(params)
3177
+ end
1691
3178
  end
1692
3179
  nil
1693
3180
  end