aws-sdk-s3 1.119.1 → 1.132.1
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +97 -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 +1740 -1441
- data/lib/aws-sdk-s3/client_api.rb +24 -0
- data/lib/aws-sdk-s3/customizations/bucket.rb +3 -1
- data/lib/aws-sdk-s3/customizations/errors.rb +27 -0
- data/lib/aws-sdk-s3/customizations/object.rb +49 -18
- 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 +4 -0
- data/lib/aws-sdk-s3/endpoint_provider.rb +103 -327
- data/lib/aws-sdk-s3/endpoints.rb +1 -0
- data/lib/aws-sdk-s3/file_downloader.rb +61 -25
- data/lib/aws-sdk-s3/file_uploader.rb +8 -6
- data/lib/aws-sdk-s3/multipart_stream_uploader.rb +5 -3
- 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 +33 -17
- data/lib/aws-sdk-s3/object_summary.rb +103 -64
- data/lib/aws-sdk-s3/object_version.rb +35 -9
- data/lib/aws-sdk-s3/plugins/s3_signer.rb +13 -11
- data/lib/aws-sdk-s3/presigned_post.rb +52 -43
- data/lib/aws-sdk-s3/presigner.rb +4 -2
- data/lib/aws-sdk-s3/resource.rb +7 -3
- data/lib/aws-sdk-s3/types.rb +711 -405
- data/lib/aws-sdk-s3.rb +1 -1
- metadata +8 -6
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,18 +15,21 @@ 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
|
27
|
-
if options[:checksum_algorithm]
|
28
|
-
raise ArgumentError, 'Multipart Copy does not support setting :checksum_algorithm'
|
29
|
-
end
|
30
33
|
end
|
31
34
|
|
32
35
|
# @return [Client]
|
@@ -78,10 +81,9 @@ module Aws
|
|
78
81
|
end
|
79
82
|
|
80
83
|
def copy_part(part)
|
81
|
-
{
|
82
|
-
|
83
|
-
|
84
|
-
}
|
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) }
|
85
87
|
end
|
86
88
|
|
87
89
|
def complete_upload(parts, options)
|
@@ -104,24 +106,37 @@ module Aws
|
|
104
106
|
parts = []
|
105
107
|
options = options_for(:upload_part_copy, options)
|
106
108
|
while offset < size
|
109
|
+
part_size = calculate_part_size(part_number, default_part_size, options)
|
107
110
|
parts << options.merge({
|
108
111
|
part_number: part_number,
|
109
|
-
copy_source_range: byte_range(offset,
|
112
|
+
copy_source_range: byte_range(offset, part_size, size),
|
110
113
|
})
|
111
114
|
part_number += 1
|
112
|
-
offset +=
|
115
|
+
offset += part_size
|
113
116
|
end
|
114
117
|
parts
|
115
118
|
end
|
116
119
|
|
117
|
-
def byte_range(offset,
|
118
|
-
if offset +
|
119
|
-
"bytes=#{offset}-#{offset +
|
120
|
+
def byte_range(offset, part_size, size)
|
121
|
+
if offset + part_size < size
|
122
|
+
"bytes=#{offset}-#{offset + part_size - 1}"
|
120
123
|
else
|
121
124
|
"bytes=#{offset}-#{size - 1}"
|
122
125
|
end
|
123
126
|
end
|
124
127
|
|
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
|
+
|
125
140
|
def source_metadata(options)
|
126
141
|
if options[:content_length]
|
127
142
|
return { content_length: options.delete(:content_length) }
|
@@ -138,6 +153,7 @@ module Aws
|
|
138
153
|
key = CGI.unescape(key)
|
139
154
|
opts = { bucket: bucket, key: key }
|
140
155
|
opts[:version_id] = version_id if version_id
|
156
|
+
opts[:part_number] = options[:part_number] if options[:part_number]
|
141
157
|
client.head_object(opts).to_h
|
142
158
|
end
|
143
159
|
|