aws-sdk-s3 1.114.0 → 1.125.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 (61) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +94 -0
  3. data/VERSION +1 -1
  4. data/lib/aws-sdk-s3/bucket.rb +51 -28
  5. data/lib/aws-sdk-s3/bucket_acl.rb +9 -3
  6. data/lib/aws-sdk-s3/bucket_cors.rb +12 -4
  7. data/lib/aws-sdk-s3/bucket_lifecycle.rb +12 -4
  8. data/lib/aws-sdk-s3/bucket_lifecycle_configuration.rb +12 -4
  9. data/lib/aws-sdk-s3/bucket_logging.rb +9 -3
  10. data/lib/aws-sdk-s3/bucket_notification.rb +9 -3
  11. data/lib/aws-sdk-s3/bucket_policy.rb +12 -4
  12. data/lib/aws-sdk-s3/bucket_request_payment.rb +9 -3
  13. data/lib/aws-sdk-s3/bucket_tagging.rb +12 -4
  14. data/lib/aws-sdk-s3/bucket_versioning.rb +15 -5
  15. data/lib/aws-sdk-s3/bucket_website.rb +12 -4
  16. data/lib/aws-sdk-s3/client.rb +1721 -1457
  17. data/lib/aws-sdk-s3/client_api.rb +189 -189
  18. data/lib/aws-sdk-s3/customizations/bucket.rb +23 -47
  19. data/lib/aws-sdk-s3/customizations/errors.rb +27 -0
  20. data/lib/aws-sdk-s3/customizations/object.rb +32 -19
  21. data/lib/aws-sdk-s3/customizations/types/permanent_redirect.rb +26 -0
  22. data/lib/aws-sdk-s3/customizations.rb +2 -0
  23. data/lib/aws-sdk-s3/encryption/client.rb +6 -2
  24. data/lib/aws-sdk-s3/encryption/kms_cipher_provider.rb +13 -9
  25. data/lib/aws-sdk-s3/encryptionV2/client.rb +6 -2
  26. data/lib/aws-sdk-s3/encryptionV2/decrypt_handler.rb +1 -0
  27. data/lib/aws-sdk-s3/encryptionV2/kms_cipher_provider.rb +10 -6
  28. data/lib/aws-sdk-s3/endpoint_parameters.rb +142 -0
  29. data/lib/aws-sdk-s3/endpoint_provider.rb +733 -0
  30. data/lib/aws-sdk-s3/endpoints.rb +2150 -0
  31. data/lib/aws-sdk-s3/file_downloader.rb +28 -24
  32. data/lib/aws-sdk-s3/file_uploader.rb +8 -6
  33. data/lib/aws-sdk-s3/multipart_stream_uploader.rb +41 -13
  34. data/lib/aws-sdk-s3/multipart_upload.rb +12 -4
  35. data/lib/aws-sdk-s3/multipart_upload_part.rb +10 -4
  36. data/lib/aws-sdk-s3/object.rb +86 -57
  37. data/lib/aws-sdk-s3/object_acl.rb +9 -3
  38. data/lib/aws-sdk-s3/object_copier.rb +7 -5
  39. data/lib/aws-sdk-s3/object_multipart_copier.rb +11 -5
  40. data/lib/aws-sdk-s3/object_summary.rb +72 -46
  41. data/lib/aws-sdk-s3/object_version.rb +21 -9
  42. data/lib/aws-sdk-s3/plugins/accelerate.rb +3 -50
  43. data/lib/aws-sdk-s3/plugins/arn.rb +0 -184
  44. data/lib/aws-sdk-s3/plugins/bucket_dns.rb +3 -39
  45. data/lib/aws-sdk-s3/plugins/bucket_name_restrictions.rb +1 -6
  46. data/lib/aws-sdk-s3/plugins/dualstack.rb +1 -49
  47. data/lib/aws-sdk-s3/plugins/endpoints.rb +262 -0
  48. data/lib/aws-sdk-s3/plugins/expect_100_continue.rb +2 -1
  49. data/lib/aws-sdk-s3/plugins/iad_regional_endpoint.rb +0 -29
  50. data/lib/aws-sdk-s3/plugins/s3_signer.rb +32 -126
  51. data/lib/aws-sdk-s3/presigned_post.rb +9 -16
  52. data/lib/aws-sdk-s3/presigner.rb +20 -33
  53. data/lib/aws-sdk-s3/resource.rb +7 -3
  54. data/lib/aws-sdk-s3/types.rb +406 -3903
  55. data/lib/aws-sdk-s3.rb +5 -1
  56. metadata +10 -9
  57. data/lib/aws-sdk-s3/arn/access_point_arn.rb +0 -69
  58. data/lib/aws-sdk-s3/arn/multi_region_access_point_arn.rb +0 -68
  59. data/lib/aws-sdk-s3/arn/object_lambda_arn.rb +0 -69
  60. data/lib/aws-sdk-s3/arn/outpost_access_point_arn.rb +0 -74
  61. data/lib/aws-sdk-s3/plugins/object_lambda_endpoint.rb +0 -25
@@ -239,11 +239,8 @@ module Aws::S3
239
239
  data[:website_redirect_location]
240
240
  end
241
241
 
242
- # If the object is stored using server-side encryption either with an
243
- # Amazon Web Services KMS key or an Amazon S3-managed encryption key,
244
- # the response includes this header with the value of the server-side
245
- # encryption algorithm used when storing this object in Amazon S3 (for
246
- # example, AES256, aws:kms).
242
+ # The server-side encryption algorithm used when storing this object in
243
+ # Amazon S3 (for example, AES256, `aws:kms`).
247
244
  # @return [String]
248
245
  def server_side_encryption
249
246
  data[:server_side_encryption]
@@ -273,8 +270,8 @@ module Aws::S3
273
270
  end
274
271
 
275
272
  # If present, specifies the ID of the Amazon Web Services Key Management
276
- # Service (Amazon Web Services KMS) symmetric customer managed key that
277
- # was used for the object.
273
+ # Service (Amazon Web Services KMS) symmetric encryption customer
274
+ # managed key that was used for the object.
278
275
  # @return [String]
279
276
  def ssekms_key_id
280
277
  data[:ssekms_key_id]
@@ -410,10 +407,12 @@ module Aws::S3
410
407
  #
411
408
  # @return [self]
412
409
  def load
413
- resp = @client.head_object(
410
+ resp = Aws::Plugins::UserAgent.feature('resource') do
411
+ @client.head_object(
414
412
  bucket: @bucket_name,
415
413
  key: @key
416
414
  )
415
+ end
417
416
  @data = resp.data
418
417
  self
419
418
  end
@@ -458,8 +457,10 @@ module Aws::S3
458
457
  options, params = separate_params_and_options(options)
459
458
  waiter = Waiters::ObjectExists.new(options)
460
459
  yield_waiter_and_warn(waiter, &block) if block_given?
461
- waiter.wait(params.merge(bucket: @bucket_name,
460
+ Aws::Plugins::UserAgent.feature('resource') do
461
+ waiter.wait(params.merge(bucket: @bucket_name,
462
462
  key: @key))
463
+ end
463
464
  Object.new({
464
465
  bucket_name: @bucket_name,
465
466
  key: @key,
@@ -477,8 +478,10 @@ module Aws::S3
477
478
  options, params = separate_params_and_options(options)
478
479
  waiter = Waiters::ObjectNotExists.new(options)
479
480
  yield_waiter_and_warn(waiter, &block) if block_given?
480
- waiter.wait(params.merge(bucket: @bucket_name,
481
+ Aws::Plugins::UserAgent.feature('resource') do
482
+ waiter.wait(params.merge(bucket: @bucket_name,
481
483
  key: @key))
484
+ end
482
485
  Object.new({
483
486
  bucket_name: @bucket_name,
484
487
  key: @key,
@@ -580,7 +583,9 @@ module Aws::S3
580
583
  :retry
581
584
  end
582
585
  end
583
- Aws::Waiters::Waiter.new(options).wait({})
586
+ Aws::Plugins::UserAgent.feature('resource') do
587
+ Aws::Waiters::Waiter.new(options).wait({})
588
+ end
584
589
  end
585
590
 
586
591
  # @!group Actions
@@ -610,8 +615,8 @@ module Aws::S3
610
615
  # },
611
616
  # metadata_directive: "COPY", # accepts COPY, REPLACE
612
617
  # tagging_directive: "COPY", # accepts COPY, REPLACE
613
- # server_side_encryption: "AES256", # accepts AES256, aws:kms
614
- # storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE, OUTPOSTS, GLACIER_IR
618
+ # server_side_encryption: "AES256", # accepts AES256, aws:kms, aws:kms:dsse
619
+ # storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE, OUTPOSTS, GLACIER_IR, SNOW
615
620
  # website_redirect_location: "WebsiteRedirectLocation",
616
621
  # sse_customer_algorithm: "SSECustomerAlgorithm",
617
622
  # sse_customer_key: "SSECustomerKey",
@@ -658,7 +663,7 @@ module Aws::S3
658
663
  # @option options [required, String] :copy_source
659
664
  # Specifies the source object for the copy operation. You specify the
660
665
  # value in one of two formats, depending on whether you want to access
661
- # the source object through an [access point][1]\:
666
+ # the source object through an [access point][1]:
662
667
  #
663
668
  # * For objects not accessed through an access point, specify the name
664
669
  # of the source bucket and the key of the source object, separated by
@@ -740,7 +745,7 @@ module Aws::S3
740
745
  # or replaced with tag-set provided in the request.
741
746
  # @option options [String] :server_side_encryption
742
747
  # The server-side encryption algorithm used when storing this object in
743
- # Amazon S3 (for example, AES256, aws:kms).
748
+ # Amazon S3 (for example, AES256, `aws:kms`).
744
749
  # @option options [String] :storage_class
745
750
  # By default, Amazon S3 uses the STANDARD Storage Class to store newly
746
751
  # created objects. The STANDARD storage class provides high durability
@@ -755,7 +760,10 @@ module Aws::S3
755
760
  # @option options [String] :website_redirect_location
756
761
  # If the bucket is configured as a website, redirects requests for this
757
762
  # object to another object in the same bucket or to an external URL.
758
- # Amazon S3 stores the value of this header in the object metadata.
763
+ # Amazon S3 stores the value of this header in the object metadata. This
764
+ # value is unique to each object and is not copied when using the
765
+ # `x-amz-metadata-directive` header. Instead, you may opt to provide
766
+ # this header in combination with the directive.
759
767
  # @option options [String] :sse_customer_algorithm
760
768
  # Specifies the algorithm to use to when encrypting the object (for
761
769
  # example, AES256).
@@ -839,7 +847,9 @@ module Aws::S3
839
847
  bucket: @bucket_name,
840
848
  key: @key
841
849
  )
842
- resp = @client.copy_object(options)
850
+ resp = Aws::Plugins::UserAgent.feature('resource') do
851
+ @client.copy_object(options)
852
+ end
843
853
  resp.data
844
854
  end
845
855
 
@@ -884,7 +894,9 @@ module Aws::S3
884
894
  bucket: @bucket_name,
885
895
  key: @key
886
896
  )
887
- resp = @client.delete_object(options)
897
+ resp = Aws::Plugins::UserAgent.feature('resource') do
898
+ @client.delete_object(options)
899
+ end
888
900
  resp.data
889
901
  end
890
902
 
@@ -927,7 +939,7 @@ module Aws::S3
927
939
  # @option options [String] :range
928
940
  # Downloads the specified range bytes of an object. For more information
929
941
  # about the HTTP Range header, see
930
- # [https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35][1].
942
+ # [https://www.rfc-editor.org/rfc/rfc9110.html#name-range][1].
931
943
  #
932
944
  # <note markdown="1"> Amazon S3 doesn't support retrieving multiple ranges of data per
933
945
  # `GET` request.
@@ -936,7 +948,7 @@ module Aws::S3
936
948
  #
937
949
  #
938
950
  #
939
- # [1]: https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35
951
+ # [1]: https://www.rfc-editor.org/rfc/rfc9110.html#name-range
940
952
  # @option options [String] :response_cache_control
941
953
  # Sets the `Cache-Control` header of the response.
942
954
  # @option options [String] :response_content_disposition
@@ -991,7 +1003,9 @@ module Aws::S3
991
1003
  bucket: @bucket_name,
992
1004
  key: @key
993
1005
  )
994
- resp = @client.get_object(options, &block)
1006
+ resp = Aws::Plugins::UserAgent.feature('resource') do
1007
+ @client.get_object(options, &block)
1008
+ end
995
1009
  resp.data
996
1010
  end
997
1011
 
@@ -1012,8 +1026,8 @@ module Aws::S3
1012
1026
  # metadata: {
1013
1027
  # "MetadataKey" => "MetadataValue",
1014
1028
  # },
1015
- # server_side_encryption: "AES256", # accepts AES256, aws:kms
1016
- # storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE, OUTPOSTS, GLACIER_IR
1029
+ # server_side_encryption: "AES256", # accepts AES256, aws:kms, aws:kms:dsse
1030
+ # storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE, OUTPOSTS, GLACIER_IR, SNOW
1017
1031
  # website_redirect_location: "WebsiteRedirectLocation",
1018
1032
  # sse_customer_algorithm: "SSECustomerAlgorithm",
1019
1033
  # sse_customer_key: "SSECustomerKey",
@@ -1069,7 +1083,7 @@ module Aws::S3
1069
1083
  # A map of metadata to store with the object in S3.
1070
1084
  # @option options [String] :server_side_encryption
1071
1085
  # The server-side encryption algorithm used when storing this object in
1072
- # Amazon S3 (for example, AES256, aws:kms).
1086
+ # Amazon S3 (for example, AES256, `aws:kms`).
1073
1087
  # @option options [String] :storage_class
1074
1088
  # By default, Amazon S3 uses the STANDARD Storage Class to store newly
1075
1089
  # created objects. The STANDARD storage class provides high durability
@@ -1099,13 +1113,13 @@ module Aws::S3
1099
1113
  # RFC 1321. Amazon S3 uses this header for a message integrity check to
1100
1114
  # ensure that the encryption key was transmitted without error.
1101
1115
  # @option options [String] :ssekms_key_id
1102
- # Specifies the ID of the symmetric customer managed key to use for
1103
- # object encryption. All GET and PUT requests for an object protected by
1104
- # Amazon Web Services KMS will fail if not made via SSL or using SigV4.
1105
- # For information about configuring using any of the officially
1106
- # supported Amazon Web Services SDKs and Amazon Web Services CLI, see
1107
- # [Specifying the Signature Version in Request Authentication][1] in the
1108
- # *Amazon S3 User Guide*.
1116
+ # Specifies the ID of the symmetric encryption customer managed key to
1117
+ # use for object encryption. All GET and PUT requests for an object
1118
+ # protected by Amazon Web Services KMS will fail if not made via SSL or
1119
+ # using SigV4. For information about configuring using any of the
1120
+ # officially supported Amazon Web Services SDKs and Amazon Web Services
1121
+ # CLI, see [Specifying the Signature Version in Request
1122
+ # Authentication][1] in the *Amazon S3 User Guide*.
1109
1123
  #
1110
1124
  #
1111
1125
  #
@@ -1161,7 +1175,9 @@ module Aws::S3
1161
1175
  bucket: @bucket_name,
1162
1176
  key: @key
1163
1177
  )
1164
- resp = @client.create_multipart_upload(options)
1178
+ resp = Aws::Plugins::UserAgent.feature('resource') do
1179
+ @client.create_multipart_upload(options)
1180
+ end
1165
1181
  MultipartUpload.new(
1166
1182
  bucket_name: @bucket_name,
1167
1183
  object_key: @key,
@@ -1195,8 +1211,8 @@ module Aws::S3
1195
1211
  # metadata: {
1196
1212
  # "MetadataKey" => "MetadataValue",
1197
1213
  # },
1198
- # server_side_encryption: "AES256", # accepts AES256, aws:kms
1199
- # storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE, OUTPOSTS, GLACIER_IR
1214
+ # server_side_encryption: "AES256", # accepts AES256, aws:kms, aws:kms:dsse
1215
+ # storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE, OUTPOSTS, GLACIER_IR, SNOW
1200
1216
  # website_redirect_location: "WebsiteRedirectLocation",
1201
1217
  # sse_customer_algorithm: "SSECustomerAlgorithm",
1202
1218
  # sse_customer_key: "SSECustomerKey",
@@ -1234,30 +1250,30 @@ module Aws::S3
1234
1250
  # @option options [String] :content_disposition
1235
1251
  # Specifies presentational information for the object. For more
1236
1252
  # information, see
1237
- # [http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1][1].
1253
+ # [https://www.rfc-editor.org/rfc/rfc6266#section-4][1].
1238
1254
  #
1239
1255
  #
1240
1256
  #
1241
- # [1]: http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html#sec19.5.1
1257
+ # [1]: https://www.rfc-editor.org/rfc/rfc6266#section-4
1242
1258
  # @option options [String] :content_encoding
1243
1259
  # Specifies what content encodings have been applied to the object and
1244
1260
  # thus what decoding mechanisms must be applied to obtain the media-type
1245
1261
  # referenced by the Content-Type header field. For more information, see
1246
- # [http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11][1].
1262
+ # [https://www.rfc-editor.org/rfc/rfc9110.html#field.content-encoding][1].
1247
1263
  #
1248
1264
  #
1249
1265
  #
1250
- # [1]: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.11
1266
+ # [1]: https://www.rfc-editor.org/rfc/rfc9110.html#field.content-encoding
1251
1267
  # @option options [String] :content_language
1252
1268
  # The language the content is in.
1253
1269
  # @option options [Integer] :content_length
1254
1270
  # Size of the body in bytes. This parameter is useful when the size of
1255
1271
  # the body cannot be determined automatically. For more information, see
1256
- # [http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13][1].
1272
+ # [https://www.rfc-editor.org/rfc/rfc9110.html#name-content-length][1].
1257
1273
  #
1258
1274
  #
1259
1275
  #
1260
- # [1]: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.13
1276
+ # [1]: https://www.rfc-editor.org/rfc/rfc9110.html#name-content-length
1261
1277
  # @option options [String] :content_md5
1262
1278
  # The base64-encoded 128-bit MD5 digest of the message (without the
1263
1279
  # headers) according to RFC 1864. This header can be used as a message
@@ -1273,11 +1289,11 @@ module Aws::S3
1273
1289
  # @option options [String] :content_type
1274
1290
  # A standard MIME type describing the format of the contents. For more
1275
1291
  # information, see
1276
- # [http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17][1].
1292
+ # [https://www.rfc-editor.org/rfc/rfc9110.html#name-content-type][1].
1277
1293
  #
1278
1294
  #
1279
1295
  #
1280
- # [1]: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.17
1296
+ # [1]: https://www.rfc-editor.org/rfc/rfc9110.html#name-content-type
1281
1297
  # @option options [String] :checksum_algorithm
1282
1298
  # Indicates the algorithm used to create the checksum for the object
1283
1299
  # when using the SDK. This header will not provide any additional
@@ -1336,11 +1352,11 @@ module Aws::S3
1336
1352
  # @option options [Time,DateTime,Date,Integer,String] :expires
1337
1353
  # The date and time at which the object is no longer cacheable. For more
1338
1354
  # information, see
1339
- # [http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21][1].
1355
+ # [https://www.rfc-editor.org/rfc/rfc7234#section-5.3][1].
1340
1356
  #
1341
1357
  #
1342
1358
  #
1343
- # [1]: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21
1359
+ # [1]: https://www.rfc-editor.org/rfc/rfc7234#section-5.3
1344
1360
  # @option options [String] :grant_full_control
1345
1361
  # Gives the grantee READ, READ\_ACP, and WRITE\_ACP permissions on the
1346
1362
  # object.
@@ -1362,7 +1378,7 @@ module Aws::S3
1362
1378
  # A map of metadata to store with the object in S3.
1363
1379
  # @option options [String] :server_side_encryption
1364
1380
  # The server-side encryption algorithm used when storing this object in
1365
- # Amazon S3 (for example, AES256, aws:kms).
1381
+ # Amazon S3 (for example, AES256, `aws:kms`).
1366
1382
  # @option options [String] :storage_class
1367
1383
  # By default, Amazon S3 uses the STANDARD Storage Class to store newly
1368
1384
  # created objects. The STANDARD storage class provides high durability
@@ -1413,9 +1429,9 @@ module Aws::S3
1413
1429
  # RFC 1321. Amazon S3 uses this header for a message integrity check to
1414
1430
  # ensure that the encryption key was transmitted without error.
1415
1431
  # @option options [String] :ssekms_key_id
1416
- # If `x-amz-server-side-encryption` is present and has the value of
1417
- # `aws:kms`, this header specifies the ID of the Amazon Web Services Key
1418
- # Management Service (Amazon Web Services KMS) symmetrical customer
1432
+ # If `x-amz-server-side-encryption` has a valid value of `aws:kms`, this
1433
+ # header specifies the ID of the Amazon Web Services Key Management
1434
+ # Service (Amazon Web Services KMS) symmetric encryption customer
1419
1435
  # managed key that was used for the object. If you specify
1420
1436
  # `x-amz-server-side-encryption:aws:kms`, but do not provide`
1421
1437
  # x-amz-server-side-encryption-aws-kms-key-id`, Amazon S3 uses the
@@ -1425,7 +1441,10 @@ module Aws::S3
1425
1441
  # @option options [String] :ssekms_encryption_context
1426
1442
  # Specifies the Amazon Web Services KMS Encryption Context to use for
1427
1443
  # object encryption. The value of this header is a base64-encoded UTF-8
1428
- # string holding JSON with the encryption context key-value pairs.
1444
+ # string holding JSON with the encryption context key-value pairs. This
1445
+ # value is stored as object metadata and automatically gets passed on to
1446
+ # Amazon Web Services KMS for future `GetObject` or `CopyObject`
1447
+ # operations on this object.
1429
1448
  # @option options [Boolean] :bucket_key_enabled
1430
1449
  # Specifies whether Amazon S3 should use an S3 Bucket Key for object
1431
1450
  # encryption with server-side encryption using AWS KMS (SSE-KMS).
@@ -1469,7 +1488,9 @@ module Aws::S3
1469
1488
  bucket: @bucket_name,
1470
1489
  key: @key
1471
1490
  )
1472
- resp = @client.put_object(options)
1491
+ resp = Aws::Plugins::UserAgent.feature('resource') do
1492
+ @client.put_object(options)
1493
+ end
1473
1494
  resp.data
1474
1495
  end
1475
1496
 
@@ -1523,7 +1544,7 @@ module Aws::S3
1523
1544
  # bucket_name: "BucketName", # required
1524
1545
  # prefix: "LocationPrefix", # required
1525
1546
  # encryption: {
1526
- # encryption_type: "AES256", # required, accepts AES256, aws:kms
1547
+ # encryption_type: "AES256", # required, accepts AES256, aws:kms, aws:kms:dsse
1527
1548
  # kms_key_id: "SSEKMSKeyId",
1528
1549
  # kms_context: "KMSContext",
1529
1550
  # },
@@ -1554,7 +1575,7 @@ module Aws::S3
1554
1575
  # value: "MetadataValue",
1555
1576
  # },
1556
1577
  # ],
1557
- # storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE, OUTPOSTS, GLACIER_IR
1578
+ # storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE, OUTPOSTS, GLACIER_IR, SNOW
1558
1579
  # },
1559
1580
  # },
1560
1581
  # },
@@ -1602,7 +1623,9 @@ module Aws::S3
1602
1623
  bucket: @bucket_name,
1603
1624
  key: @key
1604
1625
  )
1605
- resp = @client.restore_object(options)
1626
+ resp = Aws::Plugins::UserAgent.feature('resource') do
1627
+ @client.restore_object(options)
1628
+ end
1606
1629
  resp.data
1607
1630
  end
1608
1631
 
@@ -1637,8 +1660,10 @@ module Aws::S3
1637
1660
  # Return the object only if it has not been modified since the specified
1638
1661
  # time; otherwise, return a 412 (precondition failed) error.
1639
1662
  # @option options [String] :range
1640
- # Because `HeadObject` returns only the metadata for an object, this
1641
- # parameter has no effect.
1663
+ # HeadObject returns only the metadata for an object. If the Range is
1664
+ # satisfiable, only the `ContentLength` is affected in the response. If
1665
+ # the Range is not satisfiable, S3 returns a `416 - Requested Range Not
1666
+ # Satisfiable` error.
1642
1667
  # @option options [String] :version_id
1643
1668
  # VersionId used to reference a specific version of the object.
1644
1669
  # @option options [String] :sse_customer_algorithm
@@ -1686,7 +1711,9 @@ module Aws::S3
1686
1711
  bucket: @bucket_name,
1687
1712
  key: @key
1688
1713
  )
1689
- resp = @client.head_object(options)
1714
+ resp = Aws::Plugins::UserAgent.feature('resource') do
1715
+ @client.head_object(options)
1716
+ end
1690
1717
  resp.data
1691
1718
  end
1692
1719
 
@@ -1859,7 +1886,9 @@ module Aws::S3
1859
1886
  key: item.key
1860
1887
  }
1861
1888
  end
1862
- batch[0].client.delete_objects(params)
1889
+ Aws::Plugins::UserAgent.feature('resource') do
1890
+ batch[0].client.delete_objects(params)
1891
+ end
1863
1892
  end
1864
1893
  nil
1865
1894
  end
@@ -75,10 +75,12 @@ module Aws::S3
75
75
  #
76
76
  # @return [self]
77
77
  def load
78
- resp = @client.get_object_acl(
78
+ resp = Aws::Plugins::UserAgent.feature('resource') do
79
+ @client.get_object_acl(
79
80
  bucket: @bucket_name,
80
81
  key: @object_key
81
82
  )
83
+ end
82
84
  @data = resp.data
83
85
  self
84
86
  end
@@ -193,7 +195,9 @@ module Aws::S3
193
195
  :retry
194
196
  end
195
197
  end
196
- Aws::Waiters::Waiter.new(options).wait({})
198
+ Aws::Plugins::UserAgent.feature('resource') do
199
+ Aws::Waiters::Waiter.new(options).wait({})
200
+ end
197
201
  end
198
202
 
199
203
  # @!group Actions
@@ -314,7 +318,9 @@ module Aws::S3
314
318
  bucket: @bucket_name,
315
319
  key: @object_key
316
320
  )
317
- resp = @client.put_object_acl(options)
321
+ resp = Aws::Plugins::UserAgent.feature('resource') do
322
+ @client.put_object_acl(options)
323
+ end
318
324
  resp.data
319
325
  end
320
326
 
@@ -28,11 +28,13 @@ module Aws
28
28
  options[:bucket] = target_bucket
29
29
  options[:key] = target_key
30
30
  options[:copy_source] = copy_source(source)
31
- if options.delete(:multipart_copy)
32
- apply_source_client(source, options)
33
- ObjectMultipartCopier.new(@options).copy(options)
34
- else
35
- @object.client.copy_object(options)
31
+ Aws::Plugins::UserAgent.feature('s3-transfer') do
32
+ if options.delete(:multipart_copy)
33
+ apply_source_client(source, options)
34
+ ObjectMultipartCopier.new(@options).copy(options)
35
+ else
36
+ @object.client.copy_object(options)
37
+ end
36
38
  end
37
39
  end
38
40
 
@@ -24,6 +24,9 @@ module Aws
24
24
  @thread_count = options.delete(:thread_count) || 10
25
25
  @min_part_size = options.delete(:min_part_size) || (FIVE_MB * 10)
26
26
  @client = options[:client] || Client.new
27
+ if options[:checksum_algorithm]
28
+ raise ArgumentError, 'Multipart Copy does not support setting :checksum_algorithm'
29
+ end
27
30
  end
28
31
 
29
32
  # @return [Client]
@@ -31,8 +34,9 @@ module Aws
31
34
 
32
35
  # @option (see S3::Client#copy_object)
33
36
  def copy(options = {})
34
- size = source_size(options)
35
- options[:upload_id] = initiate_upload(options)
37
+ metadata = source_metadata(options)
38
+ size = metadata[:content_length]
39
+ options[:upload_id] = initiate_upload(metadata.merge(options))
36
40
  begin
37
41
  parts = copy_parts(size, default_part_size(size), options)
38
42
  complete_upload(parts, options)
@@ -118,8 +122,10 @@ module Aws
118
122
  end
119
123
  end
120
124
 
121
- def source_size(options)
122
- return options.delete(:content_length) if options[:content_length]
125
+ def source_metadata(options)
126
+ if options[:content_length]
127
+ return { content_length: options.delete(:content_length) }
128
+ end
123
129
 
124
130
  client = options[:copy_source_client] || @client
125
131
 
@@ -132,7 +138,7 @@ module Aws
132
138
  key = CGI.unescape(key)
133
139
  opts = { bucket: bucket, key: key }
134
140
  opts[:version_id] = version_id if version_id
135
- client.head_object(opts).content_length
141
+ client.head_object(opts).to_h
136
142
  end
137
143
 
138
144
  def default_part_size(source_size)