aws-sdk-s3 1.113.0 → 1.133.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +163 -0
- data/VERSION +1 -1
- data/lib/aws-sdk-s3/bucket.rb +108 -55
- data/lib/aws-sdk-s3/bucket_acl.rb +9 -3
- data/lib/aws-sdk-s3/bucket_cors.rb +12 -4
- data/lib/aws-sdk-s3/bucket_lifecycle.rb +12 -4
- data/lib/aws-sdk-s3/bucket_lifecycle_configuration.rb +12 -4
- data/lib/aws-sdk-s3/bucket_logging.rb +9 -3
- data/lib/aws-sdk-s3/bucket_notification.rb +9 -3
- data/lib/aws-sdk-s3/bucket_policy.rb +12 -4
- data/lib/aws-sdk-s3/bucket_request_payment.rb +9 -3
- data/lib/aws-sdk-s3/bucket_tagging.rb +12 -4
- data/lib/aws-sdk-s3/bucket_versioning.rb +15 -5
- data/lib/aws-sdk-s3/bucket_website.rb +12 -4
- data/lib/aws-sdk-s3/client.rb +1894 -1573
- data/lib/aws-sdk-s3/client_api.rb +213 -189
- data/lib/aws-sdk-s3/customizations/bucket.rb +23 -47
- data/lib/aws-sdk-s3/customizations/errors.rb +27 -0
- data/lib/aws-sdk-s3/customizations/object.rb +95 -19
- data/lib/aws-sdk-s3/customizations/types/permanent_redirect.rb +26 -0
- data/lib/aws-sdk-s3/customizations.rb +2 -0
- data/lib/aws-sdk-s3/encryption/client.rb +6 -2
- data/lib/aws-sdk-s3/encryption/kms_cipher_provider.rb +13 -9
- data/lib/aws-sdk-s3/encryptionV2/client.rb +6 -2
- data/lib/aws-sdk-s3/encryptionV2/decrypt_handler.rb +1 -0
- data/lib/aws-sdk-s3/encryptionV2/kms_cipher_provider.rb +10 -6
- data/lib/aws-sdk-s3/endpoint_parameters.rb +146 -0
- data/lib/aws-sdk-s3/endpoint_provider.rb +509 -0
- data/lib/aws-sdk-s3/endpoints.rb +2150 -0
- data/lib/aws-sdk-s3/file_downloader.rb +170 -44
- data/lib/aws-sdk-s3/file_uploader.rb +8 -6
- data/lib/aws-sdk-s3/multipart_stream_uploader.rb +41 -13
- data/lib/aws-sdk-s3/multipart_upload.rb +12 -4
- data/lib/aws-sdk-s3/multipart_upload_part.rb +10 -4
- data/lib/aws-sdk-s3/object.rb +105 -77
- data/lib/aws-sdk-s3/object_acl.rb +9 -3
- data/lib/aws-sdk-s3/object_copier.rb +7 -5
- data/lib/aws-sdk-s3/object_multipart_copier.rb +41 -19
- data/lib/aws-sdk-s3/object_summary.rb +106 -65
- data/lib/aws-sdk-s3/object_version.rb +35 -9
- data/lib/aws-sdk-s3/plugins/accelerate.rb +3 -50
- data/lib/aws-sdk-s3/plugins/arn.rb +0 -184
- data/lib/aws-sdk-s3/plugins/bucket_dns.rb +3 -39
- data/lib/aws-sdk-s3/plugins/bucket_name_restrictions.rb +1 -6
- data/lib/aws-sdk-s3/plugins/dualstack.rb +1 -49
- data/lib/aws-sdk-s3/plugins/endpoints.rb +262 -0
- data/lib/aws-sdk-s3/plugins/expect_100_continue.rb +2 -1
- data/lib/aws-sdk-s3/plugins/iad_regional_endpoint.rb +0 -29
- data/lib/aws-sdk-s3/plugins/s3_signer.rb +35 -124
- data/lib/aws-sdk-s3/plugins/streaming_retry.rb +23 -2
- data/lib/aws-sdk-s3/presigned_post.rb +61 -59
- data/lib/aws-sdk-s3/presigner.rb +24 -35
- data/lib/aws-sdk-s3/resource.rb +7 -3
- data/lib/aws-sdk-s3/types.rb +714 -4040
- data/lib/aws-sdk-s3.rb +5 -1
- metadata +12 -11
- data/lib/aws-sdk-s3/arn/access_point_arn.rb +0 -69
- data/lib/aws-sdk-s3/arn/multi_region_access_point_arn.rb +0 -68
- data/lib/aws-sdk-s3/arn/object_lambda_arn.rb +0 -69
- data/lib/aws-sdk-s3/arn/outpost_access_point_arn.rb +0 -74
- data/lib/aws-sdk-s3/plugins/object_lambda_endpoint.rb +0 -25
data/lib/aws-sdk-s3/object.rb
CHANGED
@@ -239,11 +239,8 @@ module Aws::S3
|
|
239
239
|
data[:website_redirect_location]
|
240
240
|
end
|
241
241
|
|
242
|
-
#
|
243
|
-
# Amazon
|
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`, `aws:kms:dsse`).
|
247
244
|
# @return [String]
|
248
245
|
def server_side_encryption
|
249
246
|
data[:server_side_encryption]
|
@@ -272,16 +269,16 @@ module Aws::S3
|
|
272
269
|
data[:sse_customer_key_md5]
|
273
270
|
end
|
274
271
|
|
275
|
-
# If present, specifies the ID of the
|
276
|
-
#
|
277
|
-
#
|
272
|
+
# If present, specifies the ID of the Key Management Service (KMS)
|
273
|
+
# symmetric encryption customer managed key that was used for the
|
274
|
+
# object.
|
278
275
|
# @return [String]
|
279
276
|
def ssekms_key_id
|
280
277
|
data[:ssekms_key_id]
|
281
278
|
end
|
282
279
|
|
283
280
|
# Indicates whether the object uses an S3 Bucket Key for server-side
|
284
|
-
# encryption with
|
281
|
+
# encryption with Key Management Service (KMS) keys (SSE-KMS).
|
285
282
|
# @return [Boolean]
|
286
283
|
def bucket_key_enabled
|
287
284
|
data[:bucket_key_enabled]
|
@@ -410,10 +407,12 @@ module Aws::S3
|
|
410
407
|
#
|
411
408
|
# @return [self]
|
412
409
|
def load
|
413
|
-
resp =
|
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
|
-
|
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
|
-
|
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::
|
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
|
748
|
+
# Amazon S3 (for example, `AES256`, `aws:kms`, `aws:kms:dsse`).
|
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).
|
@@ -770,13 +778,12 @@ module Aws::S3
|
|
770
778
|
# RFC 1321. Amazon S3 uses this header for a message integrity check to
|
771
779
|
# ensure that the encryption key was transmitted without error.
|
772
780
|
# @option options [String] :ssekms_key_id
|
773
|
-
# Specifies the
|
774
|
-
#
|
775
|
-
#
|
776
|
-
#
|
777
|
-
#
|
778
|
-
#
|
779
|
-
# User Guide*.
|
781
|
+
# Specifies the KMS key ID to use for object encryption. All GET and PUT
|
782
|
+
# requests for an object protected by KMS will fail if they're not made
|
783
|
+
# via SSL or using SigV4. For information about configuring any of the
|
784
|
+
# officially supported Amazon Web Services SDKs and Amazon Web Services
|
785
|
+
# CLI, see [Specifying the Signature Version in Request
|
786
|
+
# Authentication][1] in the *Amazon S3 User Guide*.
|
780
787
|
#
|
781
788
|
#
|
782
789
|
#
|
@@ -787,9 +794,9 @@ module Aws::S3
|
|
787
794
|
# string holding JSON with the encryption context key-value pairs.
|
788
795
|
# @option options [Boolean] :bucket_key_enabled
|
789
796
|
# Specifies whether Amazon S3 should use an S3 Bucket Key for object
|
790
|
-
# encryption with server-side encryption using
|
791
|
-
# Setting this header to `true` causes Amazon S3
|
792
|
-
# for object encryption with SSE-KMS.
|
797
|
+
# encryption with server-side encryption using Key Management Service
|
798
|
+
# (KMS) keys (SSE-KMS). Setting this header to `true` causes Amazon S3
|
799
|
+
# to use an S3 Bucket Key for object encryption with SSE-KMS.
|
793
800
|
#
|
794
801
|
# Specifying this header with a COPY action doesn’t affect bucket-level
|
795
802
|
# settings for S3 Bucket Key.
|
@@ -839,7 +846,9 @@ module Aws::S3
|
|
839
846
|
bucket: @bucket_name,
|
840
847
|
key: @key
|
841
848
|
)
|
842
|
-
resp =
|
849
|
+
resp = Aws::Plugins::UserAgent.feature('resource') do
|
850
|
+
@client.copy_object(options)
|
851
|
+
end
|
843
852
|
resp.data
|
844
853
|
end
|
845
854
|
|
@@ -884,7 +893,9 @@ module Aws::S3
|
|
884
893
|
bucket: @bucket_name,
|
885
894
|
key: @key
|
886
895
|
)
|
887
|
-
resp =
|
896
|
+
resp = Aws::Plugins::UserAgent.feature('resource') do
|
897
|
+
@client.delete_object(options)
|
898
|
+
end
|
888
899
|
resp.data
|
889
900
|
end
|
890
901
|
|
@@ -927,7 +938,7 @@ module Aws::S3
|
|
927
938
|
# @option options [String] :range
|
928
939
|
# Downloads the specified range bytes of an object. For more information
|
929
940
|
# about the HTTP Range header, see
|
930
|
-
# [https://www.
|
941
|
+
# [https://www.rfc-editor.org/rfc/rfc9110.html#name-range][1].
|
931
942
|
#
|
932
943
|
# <note markdown="1"> Amazon S3 doesn't support retrieving multiple ranges of data per
|
933
944
|
# `GET` request.
|
@@ -936,7 +947,7 @@ module Aws::S3
|
|
936
947
|
#
|
937
948
|
#
|
938
949
|
#
|
939
|
-
# [1]: https://www.
|
950
|
+
# [1]: https://www.rfc-editor.org/rfc/rfc9110.html#name-range
|
940
951
|
# @option options [String] :response_cache_control
|
941
952
|
# Sets the `Cache-Control` header of the response.
|
942
953
|
# @option options [String] :response_content_disposition
|
@@ -991,7 +1002,9 @@ module Aws::S3
|
|
991
1002
|
bucket: @bucket_name,
|
992
1003
|
key: @key
|
993
1004
|
)
|
994
|
-
resp =
|
1005
|
+
resp = Aws::Plugins::UserAgent.feature('resource') do
|
1006
|
+
@client.get_object(options, &block)
|
1007
|
+
end
|
995
1008
|
resp.data
|
996
1009
|
end
|
997
1010
|
|
@@ -1012,8 +1025,8 @@ module Aws::S3
|
|
1012
1025
|
# metadata: {
|
1013
1026
|
# "MetadataKey" => "MetadataValue",
|
1014
1027
|
# },
|
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
|
1028
|
+
# server_side_encryption: "AES256", # accepts AES256, aws:kms, aws:kms:dsse
|
1029
|
+
# storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE, OUTPOSTS, GLACIER_IR, SNOW
|
1017
1030
|
# website_redirect_location: "WebsiteRedirectLocation",
|
1018
1031
|
# sse_customer_algorithm: "SSECustomerAlgorithm",
|
1019
1032
|
# sse_customer_key: "SSECustomerKey",
|
@@ -1069,7 +1082,7 @@ module Aws::S3
|
|
1069
1082
|
# A map of metadata to store with the object in S3.
|
1070
1083
|
# @option options [String] :server_side_encryption
|
1071
1084
|
# The server-side encryption algorithm used when storing this object in
|
1072
|
-
# Amazon S3 (for example, AES256
|
1085
|
+
# Amazon S3 (for example, `AES256`, `aws:kms`).
|
1073
1086
|
# @option options [String] :storage_class
|
1074
1087
|
# By default, Amazon S3 uses the STANDARD Storage Class to store newly
|
1075
1088
|
# created objects. The STANDARD storage class provides high durability
|
@@ -1099,10 +1112,10 @@ module Aws::S3
|
|
1099
1112
|
# RFC 1321. Amazon S3 uses this header for a message integrity check to
|
1100
1113
|
# ensure that the encryption key was transmitted without error.
|
1101
1114
|
# @option options [String] :ssekms_key_id
|
1102
|
-
# Specifies the ID of the symmetric customer managed key to
|
1103
|
-
# object encryption. All GET and PUT requests for an object
|
1104
|
-
#
|
1105
|
-
# For information about configuring
|
1115
|
+
# Specifies the ID of the symmetric encryption customer managed key to
|
1116
|
+
# use for object encryption. All GET and PUT requests for an object
|
1117
|
+
# protected by KMS will fail if they're not made via SSL or using
|
1118
|
+
# SigV4. For information about configuring any of the officially
|
1106
1119
|
# supported Amazon Web Services SDKs and Amazon Web Services CLI, see
|
1107
1120
|
# [Specifying the Signature Version in Request Authentication][1] in the
|
1108
1121
|
# *Amazon S3 User Guide*.
|
@@ -1116,9 +1129,9 @@ module Aws::S3
|
|
1116
1129
|
# string holding JSON with the encryption context key-value pairs.
|
1117
1130
|
# @option options [Boolean] :bucket_key_enabled
|
1118
1131
|
# Specifies whether Amazon S3 should use an S3 Bucket Key for object
|
1119
|
-
# encryption with server-side encryption using
|
1120
|
-
# Setting this header to `true` causes Amazon S3
|
1121
|
-
# for object encryption with SSE-KMS.
|
1132
|
+
# encryption with server-side encryption using Key Management Service
|
1133
|
+
# (KMS) keys (SSE-KMS). Setting this header to `true` causes Amazon S3
|
1134
|
+
# to use an S3 Bucket Key for object encryption with SSE-KMS.
|
1122
1135
|
#
|
1123
1136
|
# Specifying this header with an object action doesn’t affect
|
1124
1137
|
# bucket-level settings for S3 Bucket Key.
|
@@ -1161,7 +1174,9 @@ module Aws::S3
|
|
1161
1174
|
bucket: @bucket_name,
|
1162
1175
|
key: @key
|
1163
1176
|
)
|
1164
|
-
resp =
|
1177
|
+
resp = Aws::Plugins::UserAgent.feature('resource') do
|
1178
|
+
@client.create_multipart_upload(options)
|
1179
|
+
end
|
1165
1180
|
MultipartUpload.new(
|
1166
1181
|
bucket_name: @bucket_name,
|
1167
1182
|
object_key: @key,
|
@@ -1195,8 +1210,8 @@ module Aws::S3
|
|
1195
1210
|
# metadata: {
|
1196
1211
|
# "MetadataKey" => "MetadataValue",
|
1197
1212
|
# },
|
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
|
1213
|
+
# server_side_encryption: "AES256", # accepts AES256, aws:kms, aws:kms:dsse
|
1214
|
+
# storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE, OUTPOSTS, GLACIER_IR, SNOW
|
1200
1215
|
# website_redirect_location: "WebsiteRedirectLocation",
|
1201
1216
|
# sse_customer_algorithm: "SSECustomerAlgorithm",
|
1202
1217
|
# sse_customer_key: "SSECustomerKey",
|
@@ -1234,30 +1249,30 @@ module Aws::S3
|
|
1234
1249
|
# @option options [String] :content_disposition
|
1235
1250
|
# Specifies presentational information for the object. For more
|
1236
1251
|
# information, see
|
1237
|
-
# [
|
1252
|
+
# [https://www.rfc-editor.org/rfc/rfc6266#section-4][1].
|
1238
1253
|
#
|
1239
1254
|
#
|
1240
1255
|
#
|
1241
|
-
# [1]:
|
1256
|
+
# [1]: https://www.rfc-editor.org/rfc/rfc6266#section-4
|
1242
1257
|
# @option options [String] :content_encoding
|
1243
1258
|
# Specifies what content encodings have been applied to the object and
|
1244
1259
|
# thus what decoding mechanisms must be applied to obtain the media-type
|
1245
1260
|
# referenced by the Content-Type header field. For more information, see
|
1246
|
-
# [
|
1261
|
+
# [https://www.rfc-editor.org/rfc/rfc9110.html#field.content-encoding][1].
|
1247
1262
|
#
|
1248
1263
|
#
|
1249
1264
|
#
|
1250
|
-
# [1]:
|
1265
|
+
# [1]: https://www.rfc-editor.org/rfc/rfc9110.html#field.content-encoding
|
1251
1266
|
# @option options [String] :content_language
|
1252
1267
|
# The language the content is in.
|
1253
1268
|
# @option options [Integer] :content_length
|
1254
1269
|
# Size of the body in bytes. This parameter is useful when the size of
|
1255
1270
|
# the body cannot be determined automatically. For more information, see
|
1256
|
-
# [
|
1271
|
+
# [https://www.rfc-editor.org/rfc/rfc9110.html#name-content-length][1].
|
1257
1272
|
#
|
1258
1273
|
#
|
1259
1274
|
#
|
1260
|
-
# [1]:
|
1275
|
+
# [1]: https://www.rfc-editor.org/rfc/rfc9110.html#name-content-length
|
1261
1276
|
# @option options [String] :content_md5
|
1262
1277
|
# The base64-encoded 128-bit MD5 digest of the message (without the
|
1263
1278
|
# headers) according to RFC 1864. This header can be used as a message
|
@@ -1273,11 +1288,11 @@ module Aws::S3
|
|
1273
1288
|
# @option options [String] :content_type
|
1274
1289
|
# A standard MIME type describing the format of the contents. For more
|
1275
1290
|
# information, see
|
1276
|
-
# [
|
1291
|
+
# [https://www.rfc-editor.org/rfc/rfc9110.html#name-content-type][1].
|
1277
1292
|
#
|
1278
1293
|
#
|
1279
1294
|
#
|
1280
|
-
# [1]:
|
1295
|
+
# [1]: https://www.rfc-editor.org/rfc/rfc9110.html#name-content-type
|
1281
1296
|
# @option options [String] :checksum_algorithm
|
1282
1297
|
# Indicates the algorithm used to create the checksum for the object
|
1283
1298
|
# when using the SDK. This header will not provide any additional
|
@@ -1336,11 +1351,11 @@ module Aws::S3
|
|
1336
1351
|
# @option options [Time,DateTime,Date,Integer,String] :expires
|
1337
1352
|
# The date and time at which the object is no longer cacheable. For more
|
1338
1353
|
# information, see
|
1339
|
-
# [
|
1354
|
+
# [https://www.rfc-editor.org/rfc/rfc7234#section-5.3][1].
|
1340
1355
|
#
|
1341
1356
|
#
|
1342
1357
|
#
|
1343
|
-
# [1]:
|
1358
|
+
# [1]: https://www.rfc-editor.org/rfc/rfc7234#section-5.3
|
1344
1359
|
# @option options [String] :grant_full_control
|
1345
1360
|
# Gives the grantee READ, READ\_ACP, and WRITE\_ACP permissions on the
|
1346
1361
|
# object.
|
@@ -1362,7 +1377,7 @@ module Aws::S3
|
|
1362
1377
|
# A map of metadata to store with the object in S3.
|
1363
1378
|
# @option options [String] :server_side_encryption
|
1364
1379
|
# The server-side encryption algorithm used when storing this object in
|
1365
|
-
# Amazon S3 (for example, AES256
|
1380
|
+
# Amazon S3 (for example, `AES256`, `aws:kms`, `aws:kms:dsse`).
|
1366
1381
|
# @option options [String] :storage_class
|
1367
1382
|
# By default, Amazon S3 uses the STANDARD Storage Class to store newly
|
1368
1383
|
# created objects. The STANDARD storage class provides high durability
|
@@ -1413,24 +1428,27 @@ module Aws::S3
|
|
1413
1428
|
# RFC 1321. Amazon S3 uses this header for a message integrity check to
|
1414
1429
|
# ensure that the encryption key was transmitted without error.
|
1415
1430
|
# @option options [String] :ssekms_key_id
|
1416
|
-
# If `x-amz-server-side-encryption`
|
1417
|
-
# `aws:kms`, this header specifies the ID of the
|
1418
|
-
#
|
1419
|
-
#
|
1420
|
-
# `x-amz-server-side-encryption:aws:kms`, but do not provide`
|
1431
|
+
# If `x-amz-server-side-encryption` has a valid value of `aws:kms` or
|
1432
|
+
# `aws:kms:dsse`, this header specifies the ID of the Key Management
|
1433
|
+
# Service (KMS) symmetric encryption customer managed key that was used
|
1434
|
+
# for the object. If you specify `x-amz-server-side-encryption:aws:kms`
|
1435
|
+
# or `x-amz-server-side-encryption:aws:kms:dsse`, but do not provide`
|
1421
1436
|
# x-amz-server-side-encryption-aws-kms-key-id`, Amazon S3 uses the
|
1422
|
-
# Amazon Web Services managed key to protect the data. If the
|
1423
|
-
# does not exist in the same account issuing the
|
1424
|
-
# the full ARN and not just the ID.
|
1437
|
+
# Amazon Web Services managed key (`aws/s3`) to protect the data. If the
|
1438
|
+
# KMS key does not exist in the same account that's issuing the
|
1439
|
+
# command, you must use the full ARN and not just the ID.
|
1425
1440
|
# @option options [String] :ssekms_encryption_context
|
1426
1441
|
# Specifies the Amazon Web Services KMS Encryption Context to use for
|
1427
1442
|
# object encryption. The value of this header is a base64-encoded UTF-8
|
1428
|
-
# string holding JSON with the encryption context key-value pairs.
|
1443
|
+
# string holding JSON with the encryption context key-value pairs. This
|
1444
|
+
# value is stored as object metadata and automatically gets passed on to
|
1445
|
+
# Amazon Web Services KMS for future `GetObject` or `CopyObject`
|
1446
|
+
# operations on this object.
|
1429
1447
|
# @option options [Boolean] :bucket_key_enabled
|
1430
1448
|
# Specifies whether Amazon S3 should use an S3 Bucket Key for object
|
1431
|
-
# encryption with server-side encryption using
|
1432
|
-
# Setting this header to `true` causes Amazon S3
|
1433
|
-
# for object encryption with SSE-KMS.
|
1449
|
+
# encryption with server-side encryption using Key Management Service
|
1450
|
+
# (KMS) keys (SSE-KMS). Setting this header to `true` causes Amazon S3
|
1451
|
+
# to use an S3 Bucket Key for object encryption with SSE-KMS.
|
1434
1452
|
#
|
1435
1453
|
# Specifying this header with a PUT action doesn’t affect bucket-level
|
1436
1454
|
# settings for S3 Bucket Key.
|
@@ -1469,7 +1487,9 @@ module Aws::S3
|
|
1469
1487
|
bucket: @bucket_name,
|
1470
1488
|
key: @key
|
1471
1489
|
)
|
1472
|
-
resp =
|
1490
|
+
resp = Aws::Plugins::UserAgent.feature('resource') do
|
1491
|
+
@client.put_object(options)
|
1492
|
+
end
|
1473
1493
|
resp.data
|
1474
1494
|
end
|
1475
1495
|
|
@@ -1523,7 +1543,7 @@ module Aws::S3
|
|
1523
1543
|
# bucket_name: "BucketName", # required
|
1524
1544
|
# prefix: "LocationPrefix", # required
|
1525
1545
|
# encryption: {
|
1526
|
-
# encryption_type: "AES256", # required, accepts AES256, aws:kms
|
1546
|
+
# encryption_type: "AES256", # required, accepts AES256, aws:kms, aws:kms:dsse
|
1527
1547
|
# kms_key_id: "SSEKMSKeyId",
|
1528
1548
|
# kms_context: "KMSContext",
|
1529
1549
|
# },
|
@@ -1554,7 +1574,7 @@ module Aws::S3
|
|
1554
1574
|
# value: "MetadataValue",
|
1555
1575
|
# },
|
1556
1576
|
# ],
|
1557
|
-
# storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE, OUTPOSTS, GLACIER_IR
|
1577
|
+
# storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE, OUTPOSTS, GLACIER_IR, SNOW
|
1558
1578
|
# },
|
1559
1579
|
# },
|
1560
1580
|
# },
|
@@ -1602,7 +1622,9 @@ module Aws::S3
|
|
1602
1622
|
bucket: @bucket_name,
|
1603
1623
|
key: @key
|
1604
1624
|
)
|
1605
|
-
resp =
|
1625
|
+
resp = Aws::Plugins::UserAgent.feature('resource') do
|
1626
|
+
@client.restore_object(options)
|
1627
|
+
end
|
1606
1628
|
resp.data
|
1607
1629
|
end
|
1608
1630
|
|
@@ -1637,8 +1659,10 @@ module Aws::S3
|
|
1637
1659
|
# Return the object only if it has not been modified since the specified
|
1638
1660
|
# time; otherwise, return a 412 (precondition failed) error.
|
1639
1661
|
# @option options [String] :range
|
1640
|
-
#
|
1641
|
-
#
|
1662
|
+
# HeadObject returns only the metadata for an object. If the Range is
|
1663
|
+
# satisfiable, only the `ContentLength` is affected in the response. If
|
1664
|
+
# the Range is not satisfiable, S3 returns a `416 - Requested Range Not
|
1665
|
+
# Satisfiable` error.
|
1642
1666
|
# @option options [String] :version_id
|
1643
1667
|
# VersionId used to reference a specific version of the object.
|
1644
1668
|
# @option options [String] :sse_customer_algorithm
|
@@ -1686,7 +1710,9 @@ module Aws::S3
|
|
1686
1710
|
bucket: @bucket_name,
|
1687
1711
|
key: @key
|
1688
1712
|
)
|
1689
|
-
resp =
|
1713
|
+
resp = Aws::Plugins::UserAgent.feature('resource') do
|
1714
|
+
@client.head_object(options)
|
1715
|
+
end
|
1690
1716
|
resp.data
|
1691
1717
|
end
|
1692
1718
|
|
@@ -1859,7 +1885,9 @@ module Aws::S3
|
|
1859
1885
|
key: item.key
|
1860
1886
|
}
|
1861
1887
|
end
|
1862
|
-
|
1888
|
+
Aws::Plugins::UserAgent.feature('resource') do
|
1889
|
+
batch[0].client.delete_objects(params)
|
1890
|
+
end
|
1863
1891
|
end
|
1864
1892
|
nil
|
1865
1893
|
end
|
@@ -75,10 +75,12 @@ module Aws::S3
|
|
75
75
|
#
|
76
76
|
# @return [self]
|
77
77
|
def load
|
78
|
-
resp =
|
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::
|
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 =
|
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
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
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
|
|
@@ -15,12 +15,18 @@ module Aws
|
|
15
15
|
MAX_PARTS = 10_000
|
16
16
|
|
17
17
|
# @option options [Client] :client
|
18
|
-
# @option [Integer] :min_part_size (52428800)
|
19
|
-
# Defaults to 50MB.
|
20
|
-
#
|
21
|
-
#
|
22
|
-
#
|
18
|
+
# @option options [Integer] :min_part_size (52428800)
|
19
|
+
# Size of copied parts. Defaults to 50MB.
|
20
|
+
# @option options [Integer] :thread_count (10) Number of concurrent
|
21
|
+
# threads to use for copying parts.
|
22
|
+
# @option options [Boolean] :use_source_parts (false) Use part sizes
|
23
|
+
# defined on the source object if any exist. If copying or moving an
|
24
|
+
# object that is already multipart, this does not re-part the object,
|
25
|
+
# instead re-using the part definitions on the original. That means
|
26
|
+
# the etag and any checksums will not change. This is especially
|
27
|
+
# useful if the source object has parts with varied sizes.
|
23
28
|
def initialize(options = {})
|
29
|
+
@use_source_parts = options.delete(:use_source_parts) || false
|
24
30
|
@thread_count = options.delete(:thread_count) || 10
|
25
31
|
@min_part_size = options.delete(:min_part_size) || (FIVE_MB * 10)
|
26
32
|
@client = options[:client] || Client.new
|
@@ -31,8 +37,9 @@ module Aws
|
|
31
37
|
|
32
38
|
# @option (see S3::Client#copy_object)
|
33
39
|
def copy(options = {})
|
34
|
-
|
35
|
-
|
40
|
+
metadata = source_metadata(options)
|
41
|
+
size = metadata[:content_length]
|
42
|
+
options[:upload_id] = initiate_upload(metadata.merge(options))
|
36
43
|
begin
|
37
44
|
parts = copy_parts(size, default_part_size(size), options)
|
38
45
|
complete_upload(parts, options)
|
@@ -74,10 +81,9 @@ module Aws
|
|
74
81
|
end
|
75
82
|
|
76
83
|
def copy_part(part)
|
77
|
-
{
|
78
|
-
|
79
|
-
|
80
|
-
}
|
84
|
+
@client.upload_part_copy(part).copy_part_result.to_h.merge({
|
85
|
+
part_number: part[:part_number]
|
86
|
+
}).tap { |result| result.delete(:last_modified) }
|
81
87
|
end
|
82
88
|
|
83
89
|
def complete_upload(parts, options)
|
@@ -100,26 +106,41 @@ module Aws
|
|
100
106
|
parts = []
|
101
107
|
options = options_for(:upload_part_copy, options)
|
102
108
|
while offset < size
|
109
|
+
part_size = calculate_part_size(part_number, default_part_size, options)
|
103
110
|
parts << options.merge({
|
104
111
|
part_number: part_number,
|
105
|
-
copy_source_range: byte_range(offset,
|
112
|
+
copy_source_range: byte_range(offset, part_size, size),
|
106
113
|
})
|
107
114
|
part_number += 1
|
108
|
-
offset +=
|
115
|
+
offset += part_size
|
109
116
|
end
|
110
117
|
parts
|
111
118
|
end
|
112
119
|
|
113
|
-
def byte_range(offset,
|
114
|
-
if offset +
|
115
|
-
"bytes=#{offset}-#{offset +
|
120
|
+
def byte_range(offset, part_size, size)
|
121
|
+
if offset + part_size < size
|
122
|
+
"bytes=#{offset}-#{offset + part_size - 1}"
|
116
123
|
else
|
117
124
|
"bytes=#{offset}-#{size - 1}"
|
118
125
|
end
|
119
126
|
end
|
120
127
|
|
121
|
-
def
|
122
|
-
|
128
|
+
def calculate_part_size(part_number, default_part_size, options)
|
129
|
+
if @use_source_parts && source_has_parts(options)
|
130
|
+
source_metadata(options.merge({ part_number: part_number }))[:content_length]
|
131
|
+
else
|
132
|
+
default_part_size
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
def source_has_parts(options)
|
137
|
+
@source_has_parts ||= source_metadata(options.merge({ part_number: 1 }))[:parts_count]
|
138
|
+
end
|
139
|
+
|
140
|
+
def source_metadata(options)
|
141
|
+
if options[:content_length]
|
142
|
+
return { content_length: options.delete(:content_length) }
|
143
|
+
end
|
123
144
|
|
124
145
|
client = options[:copy_source_client] || @client
|
125
146
|
|
@@ -132,7 +153,8 @@ module Aws
|
|
132
153
|
key = CGI.unescape(key)
|
133
154
|
opts = { bucket: bucket, key: key }
|
134
155
|
opts[:version_id] = version_id if version_id
|
135
|
-
|
156
|
+
opts[:part_number] = options[:part_number] if options[:part_number]
|
157
|
+
client.head_object(opts).to_h
|
136
158
|
end
|
137
159
|
|
138
160
|
def default_part_size(source_size)
|