aws-sdk-s3 1.122.0 → 1.136.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +94 -0
- data/VERSION +1 -1
- data/lib/aws-sdk-s3/bucket.rb +108 -49
- 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 +727 -626
- 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 +1 -1
- data/lib/aws-sdk-s3/customizations/object.rb +91 -18
- 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 +22 -246
- data/lib/aws-sdk-s3/endpoints.rb +1 -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 +5 -3
- data/lib/aws-sdk-s3/multipart_upload.rb +27 -13
- data/lib/aws-sdk-s3/multipart_upload_part.rb +19 -9
- data/lib/aws-sdk-s3/object.rb +125 -84
- data/lib/aws-sdk-s3/object_acl.rb +14 -6
- 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 +123 -74
- data/lib/aws-sdk-s3/object_version.rb +49 -17
- 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 +529 -299
- data/lib/aws-sdk-s3.rb +1 -1
- metadata +6 -6
data/lib/aws-sdk-s3/object.rb
CHANGED
@@ -240,7 +240,7 @@ module Aws::S3
|
|
240
240
|
end
|
241
241
|
|
242
242
|
# The server-side encryption algorithm used when storing this object in
|
243
|
-
# Amazon S3 (for example, AES256
|
243
|
+
# Amazon S3 (for example, `AES256`, `aws:kms`, `aws:kms:dsse`).
|
244
244
|
# @return [String]
|
245
245
|
def server_side_encryption
|
246
246
|
data[:server_side_encryption]
|
@@ -269,16 +269,16 @@ module Aws::S3
|
|
269
269
|
data[:sse_customer_key_md5]
|
270
270
|
end
|
271
271
|
|
272
|
-
# If present, specifies the ID of the
|
273
|
-
#
|
274
|
-
#
|
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.
|
275
275
|
# @return [String]
|
276
276
|
def ssekms_key_id
|
277
277
|
data[:ssekms_key_id]
|
278
278
|
end
|
279
279
|
|
280
280
|
# Indicates whether the object uses an S3 Bucket Key for server-side
|
281
|
-
# encryption with
|
281
|
+
# encryption with Key Management Service (KMS) keys (SSE-KMS).
|
282
282
|
# @return [Boolean]
|
283
283
|
def bucket_key_enabled
|
284
284
|
data[:bucket_key_enabled]
|
@@ -407,10 +407,12 @@ module Aws::S3
|
|
407
407
|
#
|
408
408
|
# @return [self]
|
409
409
|
def load
|
410
|
-
resp =
|
410
|
+
resp = Aws::Plugins::UserAgent.feature('resource') do
|
411
|
+
@client.head_object(
|
411
412
|
bucket: @bucket_name,
|
412
413
|
key: @key
|
413
414
|
)
|
415
|
+
end
|
414
416
|
@data = resp.data
|
415
417
|
self
|
416
418
|
end
|
@@ -455,8 +457,10 @@ module Aws::S3
|
|
455
457
|
options, params = separate_params_and_options(options)
|
456
458
|
waiter = Waiters::ObjectExists.new(options)
|
457
459
|
yield_waiter_and_warn(waiter, &block) if block_given?
|
458
|
-
|
460
|
+
Aws::Plugins::UserAgent.feature('resource') do
|
461
|
+
waiter.wait(params.merge(bucket: @bucket_name,
|
459
462
|
key: @key))
|
463
|
+
end
|
460
464
|
Object.new({
|
461
465
|
bucket_name: @bucket_name,
|
462
466
|
key: @key,
|
@@ -474,8 +478,10 @@ module Aws::S3
|
|
474
478
|
options, params = separate_params_and_options(options)
|
475
479
|
waiter = Waiters::ObjectNotExists.new(options)
|
476
480
|
yield_waiter_and_warn(waiter, &block) if block_given?
|
477
|
-
|
481
|
+
Aws::Plugins::UserAgent.feature('resource') do
|
482
|
+
waiter.wait(params.merge(bucket: @bucket_name,
|
478
483
|
key: @key))
|
484
|
+
end
|
479
485
|
Object.new({
|
480
486
|
bucket_name: @bucket_name,
|
481
487
|
key: @key,
|
@@ -577,7 +583,9 @@ module Aws::S3
|
|
577
583
|
:retry
|
578
584
|
end
|
579
585
|
end
|
580
|
-
Aws::
|
586
|
+
Aws::Plugins::UserAgent.feature('resource') do
|
587
|
+
Aws::Waiters::Waiter.new(options).wait({})
|
588
|
+
end
|
581
589
|
end
|
582
590
|
|
583
591
|
# @!group Actions
|
@@ -607,7 +615,7 @@ module Aws::S3
|
|
607
615
|
# },
|
608
616
|
# metadata_directive: "COPY", # accepts COPY, REPLACE
|
609
617
|
# tagging_directive: "COPY", # accepts COPY, REPLACE
|
610
|
-
# server_side_encryption: "AES256", # accepts AES256, aws:kms
|
618
|
+
# server_side_encryption: "AES256", # accepts AES256, aws:kms, aws:kms:dsse
|
611
619
|
# storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE, OUTPOSTS, GLACIER_IR, SNOW
|
612
620
|
# website_redirect_location: "WebsiteRedirectLocation",
|
613
621
|
# sse_customer_algorithm: "SSECustomerAlgorithm",
|
@@ -737,14 +745,15 @@ module Aws::S3
|
|
737
745
|
# or replaced with tag-set provided in the request.
|
738
746
|
# @option options [String] :server_side_encryption
|
739
747
|
# The server-side encryption algorithm used when storing this object in
|
740
|
-
# Amazon S3 (for example, AES256
|
748
|
+
# Amazon S3 (for example, `AES256`, `aws:kms`, `aws:kms:dsse`).
|
741
749
|
# @option options [String] :storage_class
|
742
|
-
#
|
743
|
-
#
|
744
|
-
#
|
745
|
-
#
|
746
|
-
#
|
747
|
-
# in the *Amazon S3 User
|
750
|
+
# If the `x-amz-storage-class` header is not used, the copied object
|
751
|
+
# will be stored in the STANDARD Storage Class by default. The STANDARD
|
752
|
+
# storage class provides high durability and high availability.
|
753
|
+
# Depending on performance needs, you can specify a different Storage
|
754
|
+
# Class. Amazon S3 on Outposts only uses the OUTPOSTS Storage Class. For
|
755
|
+
# more information, see [Storage Classes][1] in the *Amazon S3 User
|
756
|
+
# Guide*.
|
748
757
|
#
|
749
758
|
#
|
750
759
|
#
|
@@ -770,13 +779,12 @@ module Aws::S3
|
|
770
779
|
# RFC 1321. Amazon S3 uses this header for a message integrity check to
|
771
780
|
# ensure that the encryption key was transmitted without error.
|
772
781
|
# @option options [String] :ssekms_key_id
|
773
|
-
# Specifies the
|
774
|
-
# encryption. All GET and PUT requests for an object protected by
|
775
|
-
#
|
776
|
-
#
|
777
|
-
#
|
778
|
-
#
|
779
|
-
# User Guide*.
|
782
|
+
# Specifies the KMS ID (Key ID, Key ARN, or Key Alias) to use for object
|
783
|
+
# encryption. All GET and PUT requests for an object protected by KMS
|
784
|
+
# will fail if they're not made via SSL or using SigV4. For information
|
785
|
+
# about configuring any of the officially supported Amazon Web Services
|
786
|
+
# SDKs and Amazon Web Services CLI, see [Specifying the Signature
|
787
|
+
# Version in Request Authentication][1] in the *Amazon S3 User Guide*.
|
780
788
|
#
|
781
789
|
#
|
782
790
|
#
|
@@ -787,9 +795,9 @@ module Aws::S3
|
|
787
795
|
# string holding JSON with the encryption context key-value pairs.
|
788
796
|
# @option options [Boolean] :bucket_key_enabled
|
789
797
|
# 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.
|
798
|
+
# encryption with server-side encryption using Key Management Service
|
799
|
+
# (KMS) keys (SSE-KMS). Setting this header to `true` causes Amazon S3
|
800
|
+
# to use an S3 Bucket Key for object encryption with SSE-KMS.
|
793
801
|
#
|
794
802
|
# Specifying this header with a COPY action doesn’t affect bucket-level
|
795
803
|
# settings for S3 Bucket Key.
|
@@ -807,9 +815,11 @@ module Aws::S3
|
|
807
815
|
# @option options [String] :request_payer
|
808
816
|
# Confirms that the requester knows that they will be charged for the
|
809
817
|
# request. Bucket owners need not specify this parameter in their
|
810
|
-
# requests.
|
811
|
-
# Pays
|
812
|
-
#
|
818
|
+
# requests. If either the source or destination Amazon S3 bucket has
|
819
|
+
# Requester Pays enabled, the requester will pay for corresponding
|
820
|
+
# charges to copy the object. For information about downloading objects
|
821
|
+
# from Requester Pays buckets, see [Downloading Objects in Requester
|
822
|
+
# Pays Buckets][1] in the *Amazon S3 User Guide*.
|
813
823
|
#
|
814
824
|
#
|
815
825
|
#
|
@@ -839,7 +849,9 @@ module Aws::S3
|
|
839
849
|
bucket: @bucket_name,
|
840
850
|
key: @key
|
841
851
|
)
|
842
|
-
resp =
|
852
|
+
resp = Aws::Plugins::UserAgent.feature('resource') do
|
853
|
+
@client.copy_object(options)
|
854
|
+
end
|
843
855
|
resp.data
|
844
856
|
end
|
845
857
|
|
@@ -863,9 +875,11 @@ module Aws::S3
|
|
863
875
|
# @option options [String] :request_payer
|
864
876
|
# Confirms that the requester knows that they will be charged for the
|
865
877
|
# request. Bucket owners need not specify this parameter in their
|
866
|
-
# requests.
|
867
|
-
# Pays
|
868
|
-
#
|
878
|
+
# requests. If either the source or destination Amazon S3 bucket has
|
879
|
+
# Requester Pays enabled, the requester will pay for corresponding
|
880
|
+
# charges to copy the object. For information about downloading objects
|
881
|
+
# from Requester Pays buckets, see [Downloading Objects in Requester
|
882
|
+
# Pays Buckets][1] in the *Amazon S3 User Guide*.
|
869
883
|
#
|
870
884
|
#
|
871
885
|
#
|
@@ -884,7 +898,9 @@ module Aws::S3
|
|
884
898
|
bucket: @bucket_name,
|
885
899
|
key: @key
|
886
900
|
)
|
887
|
-
resp =
|
901
|
+
resp = Aws::Plugins::UserAgent.feature('resource') do
|
902
|
+
@client.delete_object(options)
|
903
|
+
end
|
888
904
|
resp.data
|
889
905
|
end
|
890
906
|
|
@@ -967,9 +983,11 @@ module Aws::S3
|
|
967
983
|
# @option options [String] :request_payer
|
968
984
|
# Confirms that the requester knows that they will be charged for the
|
969
985
|
# request. Bucket owners need not specify this parameter in their
|
970
|
-
# requests.
|
971
|
-
# Pays
|
972
|
-
#
|
986
|
+
# requests. If either the source or destination Amazon S3 bucket has
|
987
|
+
# Requester Pays enabled, the requester will pay for corresponding
|
988
|
+
# charges to copy the object. For information about downloading objects
|
989
|
+
# from Requester Pays buckets, see [Downloading Objects in Requester
|
990
|
+
# Pays Buckets][1] in the *Amazon S3 User Guide*.
|
973
991
|
#
|
974
992
|
#
|
975
993
|
#
|
@@ -991,7 +1009,9 @@ module Aws::S3
|
|
991
1009
|
bucket: @bucket_name,
|
992
1010
|
key: @key
|
993
1011
|
)
|
994
|
-
resp =
|
1012
|
+
resp = Aws::Plugins::UserAgent.feature('resource') do
|
1013
|
+
@client.get_object(options, &block)
|
1014
|
+
end
|
995
1015
|
resp.data
|
996
1016
|
end
|
997
1017
|
|
@@ -1012,7 +1032,7 @@ module Aws::S3
|
|
1012
1032
|
# metadata: {
|
1013
1033
|
# "MetadataKey" => "MetadataValue",
|
1014
1034
|
# },
|
1015
|
-
# server_side_encryption: "AES256", # accepts AES256, aws:kms
|
1035
|
+
# server_side_encryption: "AES256", # accepts AES256, aws:kms, aws:kms:dsse
|
1016
1036
|
# storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE, OUTPOSTS, GLACIER_IR, SNOW
|
1017
1037
|
# website_redirect_location: "WebsiteRedirectLocation",
|
1018
1038
|
# sse_customer_algorithm: "SSECustomerAlgorithm",
|
@@ -1069,7 +1089,7 @@ module Aws::S3
|
|
1069
1089
|
# A map of metadata to store with the object in S3.
|
1070
1090
|
# @option options [String] :server_side_encryption
|
1071
1091
|
# The server-side encryption algorithm used when storing this object in
|
1072
|
-
# Amazon S3 (for example, AES256
|
1092
|
+
# Amazon S3 (for example, `AES256`, `aws:kms`).
|
1073
1093
|
# @option options [String] :storage_class
|
1074
1094
|
# By default, Amazon S3 uses the STANDARD Storage Class to store newly
|
1075
1095
|
# created objects. The STANDARD storage class provides high durability
|
@@ -1099,12 +1119,12 @@ module Aws::S3
|
|
1099
1119
|
# RFC 1321. Amazon S3 uses this header for a message integrity check to
|
1100
1120
|
# ensure that the encryption key was transmitted without error.
|
1101
1121
|
# @option options [String] :ssekms_key_id
|
1102
|
-
# Specifies the ID
|
1103
|
-
# use for object encryption. All GET
|
1104
|
-
#
|
1105
|
-
# using SigV4. For information about configuring
|
1106
|
-
# officially supported Amazon Web Services SDKs and Amazon Web
|
1107
|
-
# CLI, see [Specifying the Signature Version in Request
|
1122
|
+
# Specifies the ID (Key ID, Key ARN, or Key Alias) of the symmetric
|
1123
|
+
# encryption customer managed key to use for object encryption. All GET
|
1124
|
+
# and PUT requests for an object protected by KMS will fail if they're
|
1125
|
+
# not made via SSL or using SigV4. For information about configuring any
|
1126
|
+
# of the officially supported Amazon Web Services SDKs and Amazon Web
|
1127
|
+
# Services CLI, see [Specifying the Signature Version in Request
|
1108
1128
|
# Authentication][1] in the *Amazon S3 User Guide*.
|
1109
1129
|
#
|
1110
1130
|
#
|
@@ -1116,18 +1136,20 @@ module Aws::S3
|
|
1116
1136
|
# string holding JSON with the encryption context key-value pairs.
|
1117
1137
|
# @option options [Boolean] :bucket_key_enabled
|
1118
1138
|
# 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.
|
1139
|
+
# encryption with server-side encryption using Key Management Service
|
1140
|
+
# (KMS) keys (SSE-KMS). Setting this header to `true` causes Amazon S3
|
1141
|
+
# to use an S3 Bucket Key for object encryption with SSE-KMS.
|
1122
1142
|
#
|
1123
1143
|
# Specifying this header with an object action doesn’t affect
|
1124
1144
|
# bucket-level settings for S3 Bucket Key.
|
1125
1145
|
# @option options [String] :request_payer
|
1126
1146
|
# Confirms that the requester knows that they will be charged for the
|
1127
1147
|
# request. Bucket owners need not specify this parameter in their
|
1128
|
-
# requests.
|
1129
|
-
# Pays
|
1130
|
-
#
|
1148
|
+
# requests. If either the source or destination Amazon S3 bucket has
|
1149
|
+
# Requester Pays enabled, the requester will pay for corresponding
|
1150
|
+
# charges to copy the object. For information about downloading objects
|
1151
|
+
# from Requester Pays buckets, see [Downloading Objects in Requester
|
1152
|
+
# Pays Buckets][1] in the *Amazon S3 User Guide*.
|
1131
1153
|
#
|
1132
1154
|
#
|
1133
1155
|
#
|
@@ -1161,7 +1183,9 @@ module Aws::S3
|
|
1161
1183
|
bucket: @bucket_name,
|
1162
1184
|
key: @key
|
1163
1185
|
)
|
1164
|
-
resp =
|
1186
|
+
resp = Aws::Plugins::UserAgent.feature('resource') do
|
1187
|
+
@client.create_multipart_upload(options)
|
1188
|
+
end
|
1165
1189
|
MultipartUpload.new(
|
1166
1190
|
bucket_name: @bucket_name,
|
1167
1191
|
object_key: @key,
|
@@ -1195,7 +1219,7 @@ module Aws::S3
|
|
1195
1219
|
# metadata: {
|
1196
1220
|
# "MetadataKey" => "MetadataValue",
|
1197
1221
|
# },
|
1198
|
-
# server_side_encryption: "AES256", # accepts AES256, aws:kms
|
1222
|
+
# server_side_encryption: "AES256", # accepts AES256, aws:kms, aws:kms:dsse
|
1199
1223
|
# storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE, OUTPOSTS, GLACIER_IR, SNOW
|
1200
1224
|
# website_redirect_location: "WebsiteRedirectLocation",
|
1201
1225
|
# sse_customer_algorithm: "SSECustomerAlgorithm",
|
@@ -1362,7 +1386,7 @@ module Aws::S3
|
|
1362
1386
|
# A map of metadata to store with the object in S3.
|
1363
1387
|
# @option options [String] :server_side_encryption
|
1364
1388
|
# The server-side encryption algorithm used when storing this object in
|
1365
|
-
# Amazon S3 (for example, AES256
|
1389
|
+
# Amazon S3 (for example, `AES256`, `aws:kms`, `aws:kms:dsse`).
|
1366
1390
|
# @option options [String] :storage_class
|
1367
1391
|
# By default, Amazon S3 uses the STANDARD Storage Class to store newly
|
1368
1392
|
# created objects. The STANDARD storage class provides high durability
|
@@ -1413,15 +1437,16 @@ module Aws::S3
|
|
1413
1437
|
# RFC 1321. Amazon S3 uses this header for a message integrity check to
|
1414
1438
|
# ensure that the encryption key was transmitted without error.
|
1415
1439
|
# @option options [String] :ssekms_key_id
|
1416
|
-
# If `x-amz-server-side-encryption` has a valid value of `aws:kms
|
1417
|
-
# header specifies the ID
|
1418
|
-
#
|
1419
|
-
# managed key that was used for the object. If you specify
|
1420
|
-
# `x-amz-server-side-encryption:aws:kms
|
1440
|
+
# If `x-amz-server-side-encryption` has a valid value of `aws:kms` or
|
1441
|
+
# `aws:kms:dsse`, this header specifies the ID (Key ID, Key ARN, or Key
|
1442
|
+
# Alias) of the Key Management Service (KMS) symmetric encryption
|
1443
|
+
# customer managed key that was used for the object. If you specify
|
1444
|
+
# `x-amz-server-side-encryption:aws:kms` or
|
1445
|
+
# `x-amz-server-side-encryption:aws:kms:dsse`, but do not provide`
|
1421
1446
|
# 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.
|
1447
|
+
# Amazon Web Services managed key (`aws/s3`) to protect the data. If the
|
1448
|
+
# KMS key does not exist in the same account that's issuing the
|
1449
|
+
# command, you must use the full ARN and not just the ID.
|
1425
1450
|
# @option options [String] :ssekms_encryption_context
|
1426
1451
|
# Specifies the Amazon Web Services KMS Encryption Context to use for
|
1427
1452
|
# object encryption. The value of this header is a base64-encoded UTF-8
|
@@ -1431,18 +1456,20 @@ module Aws::S3
|
|
1431
1456
|
# operations on this object.
|
1432
1457
|
# @option options [Boolean] :bucket_key_enabled
|
1433
1458
|
# Specifies whether Amazon S3 should use an S3 Bucket Key for object
|
1434
|
-
# encryption with server-side encryption using
|
1435
|
-
# Setting this header to `true` causes Amazon S3
|
1436
|
-
# for object encryption with SSE-KMS.
|
1459
|
+
# encryption with server-side encryption using Key Management Service
|
1460
|
+
# (KMS) keys (SSE-KMS). Setting this header to `true` causes Amazon S3
|
1461
|
+
# to use an S3 Bucket Key for object encryption with SSE-KMS.
|
1437
1462
|
#
|
1438
1463
|
# Specifying this header with a PUT action doesn’t affect bucket-level
|
1439
1464
|
# settings for S3 Bucket Key.
|
1440
1465
|
# @option options [String] :request_payer
|
1441
1466
|
# Confirms that the requester knows that they will be charged for the
|
1442
1467
|
# request. Bucket owners need not specify this parameter in their
|
1443
|
-
# requests.
|
1444
|
-
# Pays
|
1445
|
-
#
|
1468
|
+
# requests. If either the source or destination Amazon S3 bucket has
|
1469
|
+
# Requester Pays enabled, the requester will pay for corresponding
|
1470
|
+
# charges to copy the object. For information about downloading objects
|
1471
|
+
# from Requester Pays buckets, see [Downloading Objects in Requester
|
1472
|
+
# Pays Buckets][1] in the *Amazon S3 User Guide*.
|
1446
1473
|
#
|
1447
1474
|
#
|
1448
1475
|
#
|
@@ -1472,7 +1499,9 @@ module Aws::S3
|
|
1472
1499
|
bucket: @bucket_name,
|
1473
1500
|
key: @key
|
1474
1501
|
)
|
1475
|
-
resp =
|
1502
|
+
resp = Aws::Plugins::UserAgent.feature('resource') do
|
1503
|
+
@client.put_object(options)
|
1504
|
+
end
|
1476
1505
|
resp.data
|
1477
1506
|
end
|
1478
1507
|
|
@@ -1526,7 +1555,7 @@ module Aws::S3
|
|
1526
1555
|
# bucket_name: "BucketName", # required
|
1527
1556
|
# prefix: "LocationPrefix", # required
|
1528
1557
|
# encryption: {
|
1529
|
-
# encryption_type: "AES256", # required, accepts AES256, aws:kms
|
1558
|
+
# encryption_type: "AES256", # required, accepts AES256, aws:kms, aws:kms:dsse
|
1530
1559
|
# kms_key_id: "SSEKMSKeyId",
|
1531
1560
|
# kms_context: "KMSContext",
|
1532
1561
|
# },
|
@@ -1573,9 +1602,11 @@ module Aws::S3
|
|
1573
1602
|
# @option options [String] :request_payer
|
1574
1603
|
# Confirms that the requester knows that they will be charged for the
|
1575
1604
|
# request. Bucket owners need not specify this parameter in their
|
1576
|
-
# requests.
|
1577
|
-
# Pays
|
1578
|
-
#
|
1605
|
+
# requests. If either the source or destination Amazon S3 bucket has
|
1606
|
+
# Requester Pays enabled, the requester will pay for corresponding
|
1607
|
+
# charges to copy the object. For information about downloading objects
|
1608
|
+
# from Requester Pays buckets, see [Downloading Objects in Requester
|
1609
|
+
# Pays Buckets][1] in the *Amazon S3 User Guide*.
|
1579
1610
|
#
|
1580
1611
|
#
|
1581
1612
|
#
|
@@ -1605,7 +1636,9 @@ module Aws::S3
|
|
1605
1636
|
bucket: @bucket_name,
|
1606
1637
|
key: @key
|
1607
1638
|
)
|
1608
|
-
resp =
|
1639
|
+
resp = Aws::Plugins::UserAgent.feature('resource') do
|
1640
|
+
@client.restore_object(options)
|
1641
|
+
end
|
1609
1642
|
resp.data
|
1610
1643
|
end
|
1611
1644
|
|
@@ -1662,9 +1695,11 @@ module Aws::S3
|
|
1662
1695
|
# @option options [String] :request_payer
|
1663
1696
|
# Confirms that the requester knows that they will be charged for the
|
1664
1697
|
# request. Bucket owners need not specify this parameter in their
|
1665
|
-
# requests.
|
1666
|
-
# Pays
|
1667
|
-
#
|
1698
|
+
# requests. If either the source or destination Amazon S3 bucket has
|
1699
|
+
# Requester Pays enabled, the requester will pay for corresponding
|
1700
|
+
# charges to copy the object. For information about downloading objects
|
1701
|
+
# from Requester Pays buckets, see [Downloading Objects in Requester
|
1702
|
+
# Pays Buckets][1] in the *Amazon S3 User Guide*.
|
1668
1703
|
#
|
1669
1704
|
#
|
1670
1705
|
#
|
@@ -1691,7 +1726,9 @@ module Aws::S3
|
|
1691
1726
|
bucket: @bucket_name,
|
1692
1727
|
key: @key
|
1693
1728
|
)
|
1694
|
-
resp =
|
1729
|
+
resp = Aws::Plugins::UserAgent.feature('resource') do
|
1730
|
+
@client.head_object(options)
|
1731
|
+
end
|
1695
1732
|
resp.data
|
1696
1733
|
end
|
1697
1734
|
|
@@ -1819,9 +1856,11 @@ module Aws::S3
|
|
1819
1856
|
# @option options [String] :request_payer
|
1820
1857
|
# Confirms that the requester knows that they will be charged for the
|
1821
1858
|
# request. Bucket owners need not specify this parameter in their
|
1822
|
-
# requests.
|
1823
|
-
# Pays
|
1824
|
-
#
|
1859
|
+
# requests. If either the source or destination Amazon S3 bucket has
|
1860
|
+
# Requester Pays enabled, the requester will pay for corresponding
|
1861
|
+
# charges to copy the object. For information about downloading objects
|
1862
|
+
# from Requester Pays buckets, see [Downloading Objects in Requester
|
1863
|
+
# Pays Buckets][1] in the *Amazon S3 User Guide*.
|
1825
1864
|
#
|
1826
1865
|
#
|
1827
1866
|
#
|
@@ -1864,7 +1903,9 @@ module Aws::S3
|
|
1864
1903
|
key: item.key
|
1865
1904
|
}
|
1866
1905
|
end
|
1867
|
-
|
1906
|
+
Aws::Plugins::UserAgent.feature('resource') do
|
1907
|
+
batch[0].client.delete_objects(params)
|
1908
|
+
end
|
1868
1909
|
end
|
1869
1910
|
nil
|
1870
1911
|
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
|
@@ -295,9 +299,11 @@ module Aws::S3
|
|
295
299
|
# @option options [String] :request_payer
|
296
300
|
# Confirms that the requester knows that they will be charged for the
|
297
301
|
# request. Bucket owners need not specify this parameter in their
|
298
|
-
# requests.
|
299
|
-
# Pays
|
300
|
-
#
|
302
|
+
# requests. If either the source or destination Amazon S3 bucket has
|
303
|
+
# Requester Pays enabled, the requester will pay for corresponding
|
304
|
+
# charges to copy the object. For information about downloading objects
|
305
|
+
# from Requester Pays buckets, see [Downloading Objects in Requester
|
306
|
+
# Pays Buckets][1] in the *Amazon S3 User Guide*.
|
301
307
|
#
|
302
308
|
#
|
303
309
|
#
|
@@ -314,7 +320,9 @@ module Aws::S3
|
|
314
320
|
bucket: @bucket_name,
|
315
321
|
key: @object_key
|
316
322
|
)
|
317
|
-
resp =
|
323
|
+
resp = Aws::Plugins::UserAgent.feature('resource') do
|
324
|
+
@client.put_object_acl(options)
|
325
|
+
end
|
318
326
|
resp.data
|
319
327
|
end
|
320
328
|
|
@@ -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
|
|