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
@@ -56,6 +56,12 @@ module Aws::S3
56
56
  data[:etag]
57
57
  end
58
58
 
59
+ # The algorithm that was used to create a checksum of the object.
60
+ # @return [Array<String>]
61
+ def checksum_algorithm
62
+ data[:checksum_algorithm]
63
+ end
64
+
59
65
  # Size in bytes of the object.
60
66
  # @return [Integer]
61
67
  def size
@@ -87,7 +93,7 @@ module Aws::S3
87
93
  data[:is_latest]
88
94
  end
89
95
 
90
- # Date and time the object was last modified.
96
+ # Date and time when the object was last modified.
91
97
  # @return [Time]
92
98
  def last_modified
93
99
  data[:last_modified]
@@ -99,6 +105,20 @@ module Aws::S3
99
105
  data[:owner]
100
106
  end
101
107
 
108
+ # Specifies the restoration status of an object. Objects in certain
109
+ # storage classes must be restored before they can be retrieved. For
110
+ # more information about these storage classes and how to work with
111
+ # archived objects, see [ Working with archived objects][1] in the
112
+ # *Amazon S3 User Guide*.
113
+ #
114
+ #
115
+ #
116
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/archived-objects.html
117
+ # @return [Types::RestoreStatus]
118
+ def restore_status
119
+ data[:restore_status]
120
+ end
121
+
102
122
  # @!endgroup
103
123
 
104
124
  # @return [Client]
@@ -223,7 +243,9 @@ module Aws::S3
223
243
  :retry
224
244
  end
225
245
  end
226
- Aws::Waiters::Waiter.new(options).wait({})
246
+ Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
247
+ Aws::Waiters::Waiter.new(options).wait({})
248
+ end
227
249
  end
228
250
 
229
251
  # @!group Actions
@@ -242,24 +264,38 @@ module Aws::S3
242
264
  # space, and the value that is displayed on your authentication device.
243
265
  # Required to permanently delete a versioned object if versioning is
244
266
  # configured with MFA delete enabled.
267
+ #
268
+ # <note markdown="1"> This functionality is not supported for directory buckets.
269
+ #
270
+ # </note>
245
271
  # @option options [String] :request_payer
246
272
  # Confirms that the requester knows that they will be charged for the
247
273
  # request. Bucket owners need not specify this parameter in their
248
- # requests. For information about downloading objects from requester
249
- # pays buckets, see [Downloading Objects in Requestor Pays Buckets][1]
274
+ # requests. If either the source or destination S3 bucket has Requester
275
+ # Pays enabled, the requester will pay for corresponding charges to copy
276
+ # the object. For information about downloading objects from Requester
277
+ # Pays buckets, see [Downloading Objects in Requester Pays Buckets][1]
250
278
  # in the *Amazon S3 User Guide*.
251
279
  #
280
+ # <note markdown="1"> This functionality is not supported for directory buckets.
281
+ #
282
+ # </note>
283
+ #
252
284
  #
253
285
  #
254
286
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
255
287
  # @option options [Boolean] :bypass_governance_retention
256
288
  # Indicates whether S3 Object Lock should bypass Governance-mode
257
289
  # restrictions to process this operation. To use this header, you must
258
- # have the `s3:PutBucketPublicAccessBlock` permission.
290
+ # have the `s3:BypassGovernanceRetention` permission.
291
+ #
292
+ # <note markdown="1"> This functionality is not supported for directory buckets.
293
+ #
294
+ # </note>
259
295
  # @option options [String] :expected_bucket_owner
260
- # The account ID of the expected bucket owner. If the bucket is owned by
261
- # a different account, the request will fail with an HTTP `403 (Access
262
- # Denied)` error.
296
+ # The account ID of the expected bucket owner. If the account ID that
297
+ # you provide does not match the actual owner of the bucket, the request
298
+ # fails with the HTTP status code `403 Forbidden` (access denied).
263
299
  # @return [Types::DeleteObjectOutput]
264
300
  def delete(options = {})
265
301
  options = options.merge(
@@ -267,7 +303,9 @@ module Aws::S3
267
303
  key: @object_key,
268
304
  version_id: @id
269
305
  )
270
- resp = @client.delete_object(options)
306
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
307
+ @client.delete_object(options)
308
+ end
271
309
  resp.data
272
310
  end
273
311
 
@@ -291,24 +329,71 @@ module Aws::S3
291
329
  # request_payer: "requester", # accepts requester
292
330
  # part_number: 1,
293
331
  # expected_bucket_owner: "AccountId",
332
+ # checksum_mode: "ENABLED", # accepts ENABLED
294
333
  # })
295
334
  # @param [Hash] options ({})
296
335
  # @option options [String] :if_match
297
336
  # Return the object only if its entity tag (ETag) is the same as the one
298
- # specified, otherwise return a 412 (precondition failed).
337
+ # specified in this header; otherwise, return a `412 Precondition
338
+ # Failed` error.
339
+ #
340
+ # If both of the `If-Match` and `If-Unmodified-Since` headers are
341
+ # present in the request as follows: `If-Match` condition evaluates to
342
+ # `true`, and; `If-Unmodified-Since` condition evaluates to `false`;
343
+ # then, S3 returns `200 OK` and the data requested.
344
+ #
345
+ # For more information about conditional requests, see [RFC 7232][1].
346
+ #
347
+ #
348
+ #
349
+ # [1]: https://tools.ietf.org/html/rfc7232
299
350
  # @option options [Time,DateTime,Date,Integer,String] :if_modified_since
300
351
  # Return the object only if it has been modified since the specified
301
- # time, otherwise return a 304 (not modified).
352
+ # time; otherwise, return a `304 Not Modified` error.
353
+ #
354
+ # If both of the `If-None-Match` and `If-Modified-Since` headers are
355
+ # present in the request as follows:` If-None-Match` condition evaluates
356
+ # to `false`, and; `If-Modified-Since` condition evaluates to `true`;
357
+ # then, S3 returns `304 Not Modified` status code.
358
+ #
359
+ # For more information about conditional requests, see [RFC 7232][1].
360
+ #
361
+ #
362
+ #
363
+ # [1]: https://tools.ietf.org/html/rfc7232
302
364
  # @option options [String] :if_none_match
303
365
  # Return the object only if its entity tag (ETag) is different from the
304
- # one specified, otherwise return a 304 (not modified).
366
+ # one specified in this header; otherwise, return a `304 Not Modified`
367
+ # error.
368
+ #
369
+ # If both of the `If-None-Match` and `If-Modified-Since` headers are
370
+ # present in the request as follows:` If-None-Match` condition evaluates
371
+ # to `false`, and; `If-Modified-Since` condition evaluates to `true`;
372
+ # then, S3 returns `304 Not Modified` HTTP status code.
373
+ #
374
+ # For more information about conditional requests, see [RFC 7232][1].
375
+ #
376
+ #
377
+ #
378
+ # [1]: https://tools.ietf.org/html/rfc7232
305
379
  # @option options [Time,DateTime,Date,Integer,String] :if_unmodified_since
306
380
  # Return the object only if it has not been modified since the specified
307
- # time, otherwise return a 412 (precondition failed).
381
+ # time; otherwise, return a `412 Precondition Failed` error.
382
+ #
383
+ # If both of the `If-Match` and `If-Unmodified-Since` headers are
384
+ # present in the request as follows: `If-Match` condition evaluates to
385
+ # `true`, and; `If-Unmodified-Since` condition evaluates to `false`;
386
+ # then, S3 returns `200 OK` and the data requested.
387
+ #
388
+ # For more information about conditional requests, see [RFC 7232][1].
389
+ #
390
+ #
391
+ #
392
+ # [1]: https://tools.ietf.org/html/rfc7232
308
393
  # @option options [String] :range
309
- # Downloads the specified range bytes of an object. For more information
394
+ # Downloads the specified byte range of an object. For more information
310
395
  # about the HTTP Range header, see
311
- # [https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35][1].
396
+ # [https://www.rfc-editor.org/rfc/rfc9110.html#name-range][1].
312
397
  #
313
398
  # <note markdown="1"> Amazon S3 doesn't support retrieving multiple ranges of data per
314
399
  # `GET` request.
@@ -317,11 +402,11 @@ module Aws::S3
317
402
  #
318
403
  #
319
404
  #
320
- # [1]: https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35
405
+ # [1]: https://www.rfc-editor.org/rfc/rfc9110.html#name-range
321
406
  # @option options [String] :response_cache_control
322
407
  # Sets the `Cache-Control` header of the response.
323
408
  # @option options [String] :response_content_disposition
324
- # Sets the `Content-Disposition` header of the response
409
+ # Sets the `Content-Disposition` header of the response.
325
410
  # @option options [String] :response_content_encoding
326
411
  # Sets the `Content-Encoding` header of the response.
327
412
  # @option options [String] :response_content_language
@@ -331,25 +416,99 @@ module Aws::S3
331
416
  # @option options [Time,DateTime,Date,Integer,String] :response_expires
332
417
  # Sets the `Expires` header of the response.
333
418
  # @option options [String] :sse_customer_algorithm
334
- # Specifies the algorithm to use to when decrypting the object (for
335
- # example, AES256).
419
+ # Specifies the algorithm to use when decrypting the object (for
420
+ # example, `AES256`).
421
+ #
422
+ # If you encrypt an object by using server-side encryption with
423
+ # customer-provided encryption keys (SSE-C) when you store the object in
424
+ # Amazon S3, then when you GET the object, you must use the following
425
+ # headers:
426
+ #
427
+ # * `x-amz-server-side-encryption-customer-algorithm`
428
+ #
429
+ # * `x-amz-server-side-encryption-customer-key`
430
+ #
431
+ # * `x-amz-server-side-encryption-customer-key-MD5`
432
+ #
433
+ # For more information about SSE-C, see [Server-Side Encryption (Using
434
+ # Customer-Provided Encryption Keys)][1] in the *Amazon S3 User Guide*.
435
+ #
436
+ # <note markdown="1"> This functionality is not supported for directory buckets.
437
+ #
438
+ # </note>
439
+ #
440
+ #
441
+ #
442
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html
336
443
  # @option options [String] :sse_customer_key
337
- # Specifies the customer-provided encryption key for Amazon S3 used to
338
- # encrypt the data. This value is used to decrypt the object when
339
- # recovering it and must match the one used when storing the data. The
340
- # key must be appropriate for use with the algorithm specified in the
444
+ # Specifies the customer-provided encryption key that you originally
445
+ # provided for Amazon S3 to encrypt the data before storing it. This
446
+ # value is used to decrypt the object when recovering it and must match
447
+ # the one used when storing the data. The key must be appropriate for
448
+ # use with the algorithm specified in the
341
449
  # `x-amz-server-side-encryption-customer-algorithm` header.
450
+ #
451
+ # If you encrypt an object by using server-side encryption with
452
+ # customer-provided encryption keys (SSE-C) when you store the object in
453
+ # Amazon S3, then when you GET the object, you must use the following
454
+ # headers:
455
+ #
456
+ # * `x-amz-server-side-encryption-customer-algorithm`
457
+ #
458
+ # * `x-amz-server-side-encryption-customer-key`
459
+ #
460
+ # * `x-amz-server-side-encryption-customer-key-MD5`
461
+ #
462
+ # For more information about SSE-C, see [Server-Side Encryption (Using
463
+ # Customer-Provided Encryption Keys)][1] in the *Amazon S3 User Guide*.
464
+ #
465
+ # <note markdown="1"> This functionality is not supported for directory buckets.
466
+ #
467
+ # </note>
468
+ #
469
+ #
470
+ #
471
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html
342
472
  # @option options [String] :sse_customer_key_md5
343
- # Specifies the 128-bit MD5 digest of the encryption key according to
344
- # RFC 1321. Amazon S3 uses this header for a message integrity check to
345
- # ensure that the encryption key was transmitted without error.
473
+ # Specifies the 128-bit MD5 digest of the customer-provided encryption
474
+ # key according to RFC 1321. Amazon S3 uses this header for a message
475
+ # integrity check to ensure that the encryption key was transmitted
476
+ # without error.
477
+ #
478
+ # If you encrypt an object by using server-side encryption with
479
+ # customer-provided encryption keys (SSE-C) when you store the object in
480
+ # Amazon S3, then when you GET the object, you must use the following
481
+ # headers:
482
+ #
483
+ # * `x-amz-server-side-encryption-customer-algorithm`
484
+ #
485
+ # * `x-amz-server-side-encryption-customer-key`
486
+ #
487
+ # * `x-amz-server-side-encryption-customer-key-MD5`
488
+ #
489
+ # For more information about SSE-C, see [Server-Side Encryption (Using
490
+ # Customer-Provided Encryption Keys)][1] in the *Amazon S3 User Guide*.
491
+ #
492
+ # <note markdown="1"> This functionality is not supported for directory buckets.
493
+ #
494
+ # </note>
495
+ #
496
+ #
497
+ #
498
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html
346
499
  # @option options [String] :request_payer
347
500
  # Confirms that the requester knows that they will be charged for the
348
501
  # request. Bucket owners need not specify this parameter in their
349
- # requests. For information about downloading objects from requester
350
- # pays buckets, see [Downloading Objects in Requestor Pays Buckets][1]
502
+ # requests. If either the source or destination S3 bucket has Requester
503
+ # Pays enabled, the requester will pay for corresponding charges to copy
504
+ # the object. For information about downloading objects from Requester
505
+ # Pays buckets, see [Downloading Objects in Requester Pays Buckets][1]
351
506
  # in the *Amazon S3 User Guide*.
352
507
  #
508
+ # <note markdown="1"> This functionality is not supported for directory buckets.
509
+ #
510
+ # </note>
511
+ #
353
512
  #
354
513
  #
355
514
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
@@ -359,9 +518,11 @@ module Aws::S3
359
518
  # for the part specified. Useful for downloading just a part of an
360
519
  # object.
361
520
  # @option options [String] :expected_bucket_owner
362
- # The account ID of the expected bucket owner. If the bucket is owned by
363
- # a different account, the request will fail with an HTTP `403 (Access
364
- # Denied)` error.
521
+ # The account ID of the expected bucket owner. If the account ID that
522
+ # you provide does not match the actual owner of the bucket, the request
523
+ # fails with the HTTP status code `403 Forbidden` (access denied).
524
+ # @option options [String] :checksum_mode
525
+ # To retrieve the checksum, this mode must be enabled.
365
526
  # @return [Types::GetObjectOutput]
366
527
  def get(options = {}, &block)
367
528
  options = options.merge(
@@ -369,7 +530,9 @@ module Aws::S3
369
530
  key: @object_key,
370
531
  version_id: @id
371
532
  )
372
- resp = @client.get_object(options, &block)
533
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
534
+ @client.get_object(options, &block)
535
+ end
373
536
  resp.data
374
537
  end
375
538
 
@@ -381,59 +544,148 @@ module Aws::S3
381
544
  # if_none_match: "IfNoneMatch",
382
545
  # if_unmodified_since: Time.now,
383
546
  # range: "Range",
547
+ # response_cache_control: "ResponseCacheControl",
548
+ # response_content_disposition: "ResponseContentDisposition",
549
+ # response_content_encoding: "ResponseContentEncoding",
550
+ # response_content_language: "ResponseContentLanguage",
551
+ # response_content_type: "ResponseContentType",
552
+ # response_expires: Time.now,
384
553
  # sse_customer_algorithm: "SSECustomerAlgorithm",
385
554
  # sse_customer_key: "SSECustomerKey",
386
555
  # sse_customer_key_md5: "SSECustomerKeyMD5",
387
556
  # request_payer: "requester", # accepts requester
388
557
  # part_number: 1,
389
558
  # expected_bucket_owner: "AccountId",
559
+ # checksum_mode: "ENABLED", # accepts ENABLED
390
560
  # })
391
561
  # @param [Hash] options ({})
392
562
  # @option options [String] :if_match
393
563
  # Return the object only if its entity tag (ETag) is the same as the one
394
- # specified, otherwise return a 412 (precondition failed).
564
+ # specified; otherwise, return a 412 (precondition failed) error.
565
+ #
566
+ # If both of the `If-Match` and `If-Unmodified-Since` headers are
567
+ # present in the request as follows:
568
+ #
569
+ # * `If-Match` condition evaluates to `true`, and;
570
+ #
571
+ # * `If-Unmodified-Since` condition evaluates to `false`;
572
+ #
573
+ # Then Amazon S3 returns `200 OK` and the data requested.
574
+ #
575
+ # For more information about conditional requests, see [RFC 7232][1].
576
+ #
577
+ #
578
+ #
579
+ # [1]: https://tools.ietf.org/html/rfc7232
395
580
  # @option options [Time,DateTime,Date,Integer,String] :if_modified_since
396
581
  # Return the object only if it has been modified since the specified
397
- # time, otherwise return a 304 (not modified).
582
+ # time; otherwise, return a 304 (not modified) error.
583
+ #
584
+ # If both of the `If-None-Match` and `If-Modified-Since` headers are
585
+ # present in the request as follows:
586
+ #
587
+ # * `If-None-Match` condition evaluates to `false`, and;
588
+ #
589
+ # * `If-Modified-Since` condition evaluates to `true`;
590
+ #
591
+ # Then Amazon S3 returns the `304 Not Modified` response code.
592
+ #
593
+ # For more information about conditional requests, see [RFC 7232][1].
594
+ #
595
+ #
596
+ #
597
+ # [1]: https://tools.ietf.org/html/rfc7232
398
598
  # @option options [String] :if_none_match
399
599
  # Return the object only if its entity tag (ETag) is different from the
400
- # one specified, otherwise return a 304 (not modified).
600
+ # one specified; otherwise, return a 304 (not modified) error.
601
+ #
602
+ # If both of the `If-None-Match` and `If-Modified-Since` headers are
603
+ # present in the request as follows:
604
+ #
605
+ # * `If-None-Match` condition evaluates to `false`, and;
606
+ #
607
+ # * `If-Modified-Since` condition evaluates to `true`;
608
+ #
609
+ # Then Amazon S3 returns the `304 Not Modified` response code.
610
+ #
611
+ # For more information about conditional requests, see [RFC 7232][1].
612
+ #
613
+ #
614
+ #
615
+ # [1]: https://tools.ietf.org/html/rfc7232
401
616
  # @option options [Time,DateTime,Date,Integer,String] :if_unmodified_since
402
617
  # Return the object only if it has not been modified since the specified
403
- # time, otherwise return a 412 (precondition failed).
404
- # @option options [String] :range
405
- # Downloads the specified range bytes of an object. For more information
406
- # about the HTTP Range header, see
407
- # [http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35][1].
618
+ # time; otherwise, return a 412 (precondition failed) error.
408
619
  #
409
- # <note markdown="1"> Amazon S3 doesn't support retrieving multiple ranges of data per
410
- # `GET` request.
620
+ # If both of the `If-Match` and `If-Unmodified-Since` headers are
621
+ # present in the request as follows:
411
622
  #
412
- # </note>
623
+ # * `If-Match` condition evaluates to `true`, and;
624
+ #
625
+ # * `If-Unmodified-Since` condition evaluates to `false`;
626
+ #
627
+ # Then Amazon S3 returns `200 OK` and the data requested.
413
628
  #
629
+ # For more information about conditional requests, see [RFC 7232][1].
414
630
  #
415
631
  #
416
- # [1]: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35
632
+ #
633
+ # [1]: https://tools.ietf.org/html/rfc7232
634
+ # @option options [String] :range
635
+ # HeadObject returns only the metadata for an object. If the Range is
636
+ # satisfiable, only the `ContentLength` is affected in the response. If
637
+ # the Range is not satisfiable, S3 returns a `416 - Requested Range Not
638
+ # Satisfiable` error.
639
+ # @option options [String] :response_cache_control
640
+ # Sets the `Cache-Control` header of the response.
641
+ # @option options [String] :response_content_disposition
642
+ # Sets the `Content-Disposition` header of the response.
643
+ # @option options [String] :response_content_encoding
644
+ # Sets the `Content-Encoding` header of the response.
645
+ # @option options [String] :response_content_language
646
+ # Sets the `Content-Language` header of the response.
647
+ # @option options [String] :response_content_type
648
+ # Sets the `Content-Type` header of the response.
649
+ # @option options [Time,DateTime,Date,Integer,String] :response_expires
650
+ # Sets the `Expires` header of the response.
417
651
  # @option options [String] :sse_customer_algorithm
418
- # Specifies the algorithm to use to when encrypting the object (for
652
+ # Specifies the algorithm to use when encrypting the object (for
419
653
  # example, AES256).
654
+ #
655
+ # <note markdown="1"> This functionality is not supported for directory buckets.
656
+ #
657
+ # </note>
420
658
  # @option options [String] :sse_customer_key
421
659
  # Specifies the customer-provided encryption key for Amazon S3 to use in
422
660
  # encrypting data. This value is used to store the object and then it is
423
661
  # discarded; Amazon S3 does not store the encryption key. The key must
424
662
  # be appropriate for use with the algorithm specified in the
425
663
  # `x-amz-server-side-encryption-customer-algorithm` header.
664
+ #
665
+ # <note markdown="1"> This functionality is not supported for directory buckets.
666
+ #
667
+ # </note>
426
668
  # @option options [String] :sse_customer_key_md5
427
669
  # Specifies the 128-bit MD5 digest of the encryption key according to
428
670
  # RFC 1321. Amazon S3 uses this header for a message integrity check to
429
671
  # ensure that the encryption key was transmitted without error.
672
+ #
673
+ # <note markdown="1"> This functionality is not supported for directory buckets.
674
+ #
675
+ # </note>
430
676
  # @option options [String] :request_payer
431
677
  # Confirms that the requester knows that they will be charged for the
432
678
  # request. Bucket owners need not specify this parameter in their
433
- # requests. For information about downloading objects from requester
434
- # pays buckets, see [Downloading Objects in Requestor Pays Buckets][1]
679
+ # requests. If either the source or destination S3 bucket has Requester
680
+ # Pays enabled, the requester will pay for corresponding charges to copy
681
+ # the object. For information about downloading objects from Requester
682
+ # Pays buckets, see [Downloading Objects in Requester Pays Buckets][1]
435
683
  # in the *Amazon S3 User Guide*.
436
684
  #
685
+ # <note markdown="1"> This functionality is not supported for directory buckets.
686
+ #
687
+ # </note>
688
+ #
437
689
  #
438
690
  #
439
691
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
@@ -443,9 +695,16 @@ module Aws::S3
443
695
  # for the part specified. Useful querying about the size of the part and
444
696
  # the number of parts in this object.
445
697
  # @option options [String] :expected_bucket_owner
446
- # The account ID of the expected bucket owner. If the bucket is owned by
447
- # a different account, the request will fail with an HTTP `403 (Access
448
- # Denied)` error.
698
+ # The account ID of the expected bucket owner. If the account ID that
699
+ # you provide does not match the actual owner of the bucket, the request
700
+ # fails with the HTTP status code `403 Forbidden` (access denied).
701
+ # @option options [String] :checksum_mode
702
+ # To retrieve the checksum, this parameter must be enabled.
703
+ #
704
+ # In addition, if you enable `ChecksumMode` and the object is encrypted
705
+ # with Amazon Web Services Key Management Service (Amazon Web Services
706
+ # KMS), you must have permission to use the `kms:Decrypt` action for the
707
+ # request to succeed.
449
708
  # @return [Types::HeadObjectOutput]
450
709
  def head(options = {})
451
710
  options = options.merge(
@@ -453,7 +712,9 @@ module Aws::S3
453
712
  key: @object_key,
454
713
  version_id: @id
455
714
  )
456
- resp = @client.head_object(options)
715
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
716
+ @client.head_object(options)
717
+ end
457
718
  resp.data
458
719
  end
459
720
 
@@ -525,6 +786,7 @@ module Aws::S3
525
786
  # request_payer: "requester", # accepts requester
526
787
  # bypass_governance_retention: false,
527
788
  # expected_bucket_owner: "AccountId",
789
+ # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256
528
790
  # })
529
791
  # @param options ({})
530
792
  # @option options [String] :mfa
@@ -532,24 +794,85 @@ module Aws::S3
532
794
  # space, and the value that is displayed on your authentication device.
533
795
  # Required to permanently delete a versioned object if versioning is
534
796
  # configured with MFA delete enabled.
797
+ #
798
+ # When performing the `DeleteObjects` operation on an MFA delete enabled
799
+ # bucket, which attempts to delete the specified versioned objects, you
800
+ # must include an MFA token. If you don't provide an MFA token, the
801
+ # entire request will fail, even if there are non-versioned objects that
802
+ # you are trying to delete. If you provide an invalid token, whether
803
+ # there are versioned object keys in the request or not, the entire
804
+ # Multi-Object Delete request will fail. For information about MFA
805
+ # Delete, see [ MFA Delete][1] in the *Amazon S3 User Guide*.
806
+ #
807
+ # <note markdown="1"> This functionality is not supported for directory buckets.
808
+ #
809
+ # </note>
810
+ #
811
+ #
812
+ #
813
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html#MultiFactorAuthenticationDelete
535
814
  # @option options [String] :request_payer
536
815
  # Confirms that the requester knows that they will be charged for the
537
816
  # request. Bucket owners need not specify this parameter in their
538
- # requests. For information about downloading objects from requester
539
- # pays buckets, see [Downloading Objects in Requestor Pays Buckets][1]
817
+ # requests. If either the source or destination S3 bucket has Requester
818
+ # Pays enabled, the requester will pay for corresponding charges to copy
819
+ # the object. For information about downloading objects from Requester
820
+ # Pays buckets, see [Downloading Objects in Requester Pays Buckets][1]
540
821
  # in the *Amazon S3 User Guide*.
541
822
  #
823
+ # <note markdown="1"> This functionality is not supported for directory buckets.
824
+ #
825
+ # </note>
826
+ #
542
827
  #
543
828
  #
544
829
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
545
830
  # @option options [Boolean] :bypass_governance_retention
546
831
  # Specifies whether you want to delete this object even if it has a
547
832
  # Governance-type Object Lock in place. To use this header, you must
548
- # have the `s3:PutBucketPublicAccessBlock` permission.
833
+ # have the `s3:BypassGovernanceRetention` permission.
834
+ #
835
+ # <note markdown="1"> This functionality is not supported for directory buckets.
836
+ #
837
+ # </note>
549
838
  # @option options [String] :expected_bucket_owner
550
- # The account ID of the expected bucket owner. If the bucket is owned by
551
- # a different account, the request will fail with an HTTP `403 (Access
552
- # Denied)` error.
839
+ # The account ID of the expected bucket owner. If the account ID that
840
+ # you provide does not match the actual owner of the bucket, the request
841
+ # fails with the HTTP status code `403 Forbidden` (access denied).
842
+ # @option options [String] :checksum_algorithm
843
+ # Indicates the algorithm used to create the checksum for the object
844
+ # when you use the SDK. This header will not provide any additional
845
+ # functionality if you don't use the SDK. When you send this header,
846
+ # there must be a corresponding `x-amz-checksum-algorithm ` or
847
+ # `x-amz-trailer` header sent. Otherwise, Amazon S3 fails the request
848
+ # with the HTTP status code `400 Bad Request`.
849
+ #
850
+ # For the `x-amz-checksum-algorithm ` header, replace ` algorithm ` with
851
+ # the supported algorithm from the following list:
852
+ #
853
+ # * CRC32
854
+ #
855
+ # * CRC32C
856
+ #
857
+ # * SHA1
858
+ #
859
+ # * SHA256
860
+ #
861
+ # For more information, see [Checking object integrity][1] in the
862
+ # *Amazon S3 User Guide*.
863
+ #
864
+ # If the individual checksum value you provide through
865
+ # `x-amz-checksum-algorithm ` doesn't match the checksum algorithm you
866
+ # set through `x-amz-sdk-checksum-algorithm`, Amazon S3 ignores any
867
+ # provided `ChecksumAlgorithm` parameter and uses the checksum algorithm
868
+ # that matches the provided value in `x-amz-checksum-algorithm `.
869
+ #
870
+ # If you provide an individual checksum, Amazon S3 ignores any provided
871
+ # `ChecksumAlgorithm` parameter.
872
+ #
873
+ #
874
+ #
875
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
553
876
  # @return [void]
554
877
  def batch_delete!(options = {})
555
878
  batch_enum.each do |batch|
@@ -563,7 +886,9 @@ module Aws::S3
563
886
  version_id: item.id
564
887
  }
565
888
  end
566
- batch[0].client.delete_objects(params)
889
+ Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
890
+ batch[0].client.delete_objects(params)
891
+ end
567
892
  end
568
893
  nil
569
894
  end