aws-sdk-s3 1.129.0 → 1.130.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 +8 -0
- data/VERSION +1 -1
- data/lib/aws-sdk-s3/bucket.rb +1 -1
- data/lib/aws-sdk-s3/client.rb +90 -88
- data/lib/aws-sdk-s3/customizations/object.rb +8 -0
- data/lib/aws-sdk-s3/object_multipart_copier.rb +33 -17
- data/lib/aws-sdk-s3/resource.rb +1 -1
- data/lib/aws-sdk-s3.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9170ab560df5828b8608754ee83facb83ccd4f09b425661c2f81bef05d45085c
|
4
|
+
data.tar.gz: 70f914ab9977fac81df71f9dd5ba0509a0d598f72cf1f988c491e37aa9db000c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ece1dd86bf6963b66f243289c3ca2d9e77ddee8f745dd9ea166464c96250de2377a8a2b7ce38e3d38bb66b02bc292884f9293b4aaa9d6b9a267b81b1b1fa2e06
|
7
|
+
data.tar.gz: e9cca71b4d710aad1af40c1dea6f06955480d6a8db748a61c66e8f41d49fb271def041fffce98c81f47fa5100c2375caa8492684ab7601d8fe45f712f07061f4
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,14 @@
|
|
1
1
|
Unreleased Changes
|
2
2
|
------------------
|
3
3
|
|
4
|
+
1.130.0 (2023-07-13)
|
5
|
+
------------------
|
6
|
+
|
7
|
+
* Feature - S3 Inventory now supports Object Access Control List and Object Owner as available object metadata fields in inventory reports.
|
8
|
+
|
9
|
+
* Feature - Allow Object multipart copy API to work when requiring a checksum algorithm.
|
10
|
+
* Feature - Allow Object multipart copy API to optionally copy parts as they exist on the source object if it has parts, instead of generating new part ranges, when specifying `use_source_parts: true`.
|
11
|
+
|
4
12
|
1.129.0 (2023-07-11)
|
5
13
|
------------------
|
6
14
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.130.0
|
data/lib/aws-sdk-s3/bucket.rb
CHANGED
@@ -229,7 +229,7 @@ module Aws::S3
|
|
229
229
|
# bucket.create({
|
230
230
|
# acl: "private", # accepts private, public-read, public-read-write, authenticated-read
|
231
231
|
# create_bucket_configuration: {
|
232
|
-
# location_constraint: "af-south-1", # accepts af-south-1, ap-east-1, ap-northeast-1, ap-northeast-2, ap-northeast-3, ap-south-1, ap-southeast-1, ap-southeast-2, ap-southeast-3, ca-central-1, cn-north-1, cn-northwest-1, EU, eu-central-1, eu-north-1, eu-south-1, eu-west-1, eu-west-2, eu-west-3, me-south-1, sa-east-1, us-east-2, us-gov-east-1, us-gov-west-1, us-west-1, us-west-2
|
232
|
+
# location_constraint: "af-south-1", # accepts af-south-1, ap-east-1, ap-northeast-1, ap-northeast-2, ap-northeast-3, ap-south-1, ap-southeast-1, ap-southeast-2, ap-southeast-3, ca-central-1, cn-north-1, cn-northwest-1, EU, eu-central-1, eu-north-1, eu-south-1, eu-west-1, eu-west-2, eu-west-3, me-south-1, sa-east-1, us-east-2, us-gov-east-1, us-gov-west-1, us-west-1, us-west-2, ap-south-2, eu-south-2
|
233
233
|
# },
|
234
234
|
# grant_full_control: "GrantFullControl",
|
235
235
|
# grant_read: "GrantRead",
|
data/lib/aws-sdk-s3/client.rb
CHANGED
@@ -968,8 +968,10 @@ module Aws::S3
|
|
968
968
|
# </note>
|
969
969
|
#
|
970
970
|
# The copy request charge is based on the storage class and Region that
|
971
|
-
# you specify for the destination object.
|
972
|
-
#
|
971
|
+
# you specify for the destination object. The request can also result in
|
972
|
+
# a data retrieval charge for the source if the source storage class
|
973
|
+
# bills for data retrieval. For pricing information, see [Amazon S3
|
974
|
+
# pricing][3].
|
973
975
|
#
|
974
976
|
# Amazon S3 transfer acceleration does not support cross-Region copies.
|
975
977
|
# If you request a cross-Region copy using a transfer acceleration
|
@@ -1695,33 +1697,33 @@ module Aws::S3
|
|
1695
1697
|
# * {Types::CreateBucketOutput#location #location} => String
|
1696
1698
|
#
|
1697
1699
|
#
|
1698
|
-
# @example Example: To create a bucket
|
1700
|
+
# @example Example: To create a bucket in a specific region
|
1699
1701
|
#
|
1700
|
-
# # The following example creates a bucket.
|
1702
|
+
# # The following example creates a bucket. The request specifies an AWS region where to create the bucket.
|
1701
1703
|
#
|
1702
1704
|
# resp = client.create_bucket({
|
1703
1705
|
# bucket: "examplebucket",
|
1706
|
+
# create_bucket_configuration: {
|
1707
|
+
# location_constraint: "eu-west-1",
|
1708
|
+
# },
|
1704
1709
|
# })
|
1705
1710
|
#
|
1706
1711
|
# resp.to_h outputs the following:
|
1707
1712
|
# {
|
1708
|
-
# location: "/
|
1713
|
+
# location: "http://examplebucket.<Region>.s3.amazonaws.com/",
|
1709
1714
|
# }
|
1710
1715
|
#
|
1711
|
-
# @example Example: To create a bucket
|
1716
|
+
# @example Example: To create a bucket
|
1712
1717
|
#
|
1713
|
-
# # The following example creates a bucket.
|
1718
|
+
# # The following example creates a bucket.
|
1714
1719
|
#
|
1715
1720
|
# resp = client.create_bucket({
|
1716
1721
|
# bucket: "examplebucket",
|
1717
|
-
# create_bucket_configuration: {
|
1718
|
-
# location_constraint: "eu-west-1",
|
1719
|
-
# },
|
1720
1722
|
# })
|
1721
1723
|
#
|
1722
1724
|
# resp.to_h outputs the following:
|
1723
1725
|
# {
|
1724
|
-
# location: "
|
1726
|
+
# location: "/examplebucket",
|
1725
1727
|
# }
|
1726
1728
|
#
|
1727
1729
|
# @example Request syntax with placeholder values
|
@@ -1730,7 +1732,7 @@ module Aws::S3
|
|
1730
1732
|
# acl: "private", # accepts private, public-read, public-read-write, authenticated-read
|
1731
1733
|
# bucket: "BucketName", # required
|
1732
1734
|
# create_bucket_configuration: {
|
1733
|
-
# location_constraint: "af-south-1", # accepts af-south-1, ap-east-1, ap-northeast-1, ap-northeast-2, ap-northeast-3, ap-south-1, ap-southeast-1, ap-southeast-2, ap-southeast-3, ca-central-1, cn-north-1, cn-northwest-1, EU, eu-central-1, eu-north-1, eu-south-1, eu-west-1, eu-west-2, eu-west-3, me-south-1, sa-east-1, us-east-2, us-gov-east-1, us-gov-west-1, us-west-1, us-west-2
|
1735
|
+
# location_constraint: "af-south-1", # accepts af-south-1, ap-east-1, ap-northeast-1, ap-northeast-2, ap-northeast-3, ap-south-1, ap-southeast-1, ap-southeast-2, ap-southeast-3, ca-central-1, cn-north-1, cn-northwest-1, EU, eu-central-1, eu-north-1, eu-south-1, eu-west-1, eu-west-2, eu-west-3, me-south-1, sa-east-1, us-east-2, us-gov-east-1, us-gov-west-1, us-west-1, us-west-2, ap-south-2, eu-south-2
|
1734
1736
|
# },
|
1735
1737
|
# grant_full_control: "GrantFullControl",
|
1736
1738
|
# grant_read: "GrantRead",
|
@@ -3173,6 +3175,15 @@ module Aws::S3
|
|
3173
3175
|
# * {Types::DeleteObjectOutput#request_charged #request_charged} => String
|
3174
3176
|
#
|
3175
3177
|
#
|
3178
|
+
# @example Example: To delete an object (from a non-versioned bucket)
|
3179
|
+
#
|
3180
|
+
# # The following example deletes an object from a non-versioned bucket.
|
3181
|
+
#
|
3182
|
+
# resp = client.delete_object({
|
3183
|
+
# bucket: "ExampleBucket",
|
3184
|
+
# key: "HappyFace.jpg",
|
3185
|
+
# })
|
3186
|
+
#
|
3176
3187
|
# @example Example: To delete an object
|
3177
3188
|
#
|
3178
3189
|
# # The following example deletes an object from an S3 bucket.
|
@@ -3186,15 +3197,6 @@ module Aws::S3
|
|
3186
3197
|
# {
|
3187
3198
|
# }
|
3188
3199
|
#
|
3189
|
-
# @example Example: To delete an object (from a non-versioned bucket)
|
3190
|
-
#
|
3191
|
-
# # The following example deletes an object from a non-versioned bucket.
|
3192
|
-
#
|
3193
|
-
# resp = client.delete_object({
|
3194
|
-
# bucket: "ExampleBucket",
|
3195
|
-
# key: "HappyFace.jpg",
|
3196
|
-
# })
|
3197
|
-
#
|
3198
3200
|
# @example Request syntax with placeholder values
|
3199
3201
|
#
|
3200
3202
|
# resp = client.delete_object({
|
@@ -3286,35 +3288,35 @@ module Aws::S3
|
|
3286
3288
|
# * {Types::DeleteObjectTaggingOutput#version_id #version_id} => String
|
3287
3289
|
#
|
3288
3290
|
#
|
3289
|
-
# @example Example: To remove tag set from an object
|
3291
|
+
# @example Example: To remove tag set from an object
|
3290
3292
|
#
|
3291
|
-
# # The following example removes tag set associated with the specified object
|
3292
|
-
# #
|
3293
|
+
# # The following example removes tag set associated with the specified object. If the bucket is versioning enabled, the
|
3294
|
+
# # operation removes tag set from the latest object version.
|
3293
3295
|
#
|
3294
3296
|
# resp = client.delete_object_tagging({
|
3295
3297
|
# bucket: "examplebucket",
|
3296
3298
|
# key: "HappyFace.jpg",
|
3297
|
-
# version_id: "ydlaNkwWm0SfKJR.T1b1fIdPRbldTYRI",
|
3298
3299
|
# })
|
3299
3300
|
#
|
3300
3301
|
# resp.to_h outputs the following:
|
3301
3302
|
# {
|
3302
|
-
# version_id: "
|
3303
|
+
# version_id: "null",
|
3303
3304
|
# }
|
3304
3305
|
#
|
3305
|
-
# @example Example: To remove tag set from an object
|
3306
|
+
# @example Example: To remove tag set from an object version
|
3306
3307
|
#
|
3307
|
-
# # The following example removes tag set associated with the specified object.
|
3308
|
-
# #
|
3308
|
+
# # The following example removes tag set associated with the specified object version. The request specifies both the
|
3309
|
+
# # object key and object version.
|
3309
3310
|
#
|
3310
3311
|
# resp = client.delete_object_tagging({
|
3311
3312
|
# bucket: "examplebucket",
|
3312
3313
|
# key: "HappyFace.jpg",
|
3314
|
+
# version_id: "ydlaNkwWm0SfKJR.T1b1fIdPRbldTYRI",
|
3313
3315
|
# })
|
3314
3316
|
#
|
3315
3317
|
# resp.to_h outputs the following:
|
3316
3318
|
# {
|
3317
|
-
# version_id: "
|
3319
|
+
# version_id: "ydlaNkwWm0SfKJR.T1b1fIdPRbldTYRI",
|
3318
3320
|
# }
|
3319
3321
|
#
|
3320
3322
|
# @example Request syntax with placeholder values
|
@@ -4227,7 +4229,7 @@ module Aws::S3
|
|
4227
4229
|
# resp.inventory_configuration.id #=> String
|
4228
4230
|
# resp.inventory_configuration.included_object_versions #=> String, one of "All", "Current"
|
4229
4231
|
# resp.inventory_configuration.optional_fields #=> Array
|
4230
|
-
# resp.inventory_configuration.optional_fields[0] #=> String, one of "Size", "LastModifiedDate", "StorageClass", "ETag", "IsMultipartUploaded", "ReplicationStatus", "EncryptionStatus", "ObjectLockRetainUntilDate", "ObjectLockMode", "ObjectLockLegalHoldStatus", "IntelligentTieringAccessTier", "BucketKeyStatus", "ChecksumAlgorithm"
|
4232
|
+
# resp.inventory_configuration.optional_fields[0] #=> String, one of "Size", "LastModifiedDate", "StorageClass", "ETag", "IsMultipartUploaded", "ReplicationStatus", "EncryptionStatus", "ObjectLockRetainUntilDate", "ObjectLockMode", "ObjectLockLegalHoldStatus", "IntelligentTieringAccessTier", "BucketKeyStatus", "ChecksumAlgorithm", "ObjectAccessControlList", "ObjectOwner"
|
4231
4233
|
# resp.inventory_configuration.schedule.frequency #=> String, one of "Daily", "Weekly"
|
4232
4234
|
#
|
4233
4235
|
# @see http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketInventoryConfiguration AWS API Documentation
|
@@ -4571,7 +4573,7 @@ module Aws::S3
|
|
4571
4573
|
#
|
4572
4574
|
# @example Response structure
|
4573
4575
|
#
|
4574
|
-
# resp.location_constraint #=> String, one of "af-south-1", "ap-east-1", "ap-northeast-1", "ap-northeast-2", "ap-northeast-3", "ap-south-1", "ap-southeast-1", "ap-southeast-2", "ap-southeast-3", "ca-central-1", "cn-north-1", "cn-northwest-1", "EU", "eu-central-1", "eu-north-1", "eu-south-1", "eu-west-1", "eu-west-2", "eu-west-3", "me-south-1", "sa-east-1", "us-east-2", "us-gov-east-1", "us-gov-west-1", "us-west-1", "us-west-2"
|
4576
|
+
# resp.location_constraint #=> String, one of "af-south-1", "ap-east-1", "ap-northeast-1", "ap-northeast-2", "ap-northeast-3", "ap-south-1", "ap-southeast-1", "ap-southeast-2", "ap-southeast-3", "ca-central-1", "cn-north-1", "cn-northwest-1", "EU", "eu-central-1", "eu-north-1", "eu-south-1", "eu-west-1", "eu-west-2", "eu-west-3", "me-south-1", "sa-east-1", "us-east-2", "us-gov-east-1", "us-gov-west-1", "us-west-1", "us-west-2", "ap-south-2", "eu-south-2"
|
4575
4577
|
#
|
4576
4578
|
# @see http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLocation AWS API Documentation
|
4577
4579
|
#
|
@@ -7745,7 +7747,7 @@ module Aws::S3
|
|
7745
7747
|
# resp.inventory_configuration_list[0].id #=> String
|
7746
7748
|
# resp.inventory_configuration_list[0].included_object_versions #=> String, one of "All", "Current"
|
7747
7749
|
# resp.inventory_configuration_list[0].optional_fields #=> Array
|
7748
|
-
# resp.inventory_configuration_list[0].optional_fields[0] #=> String, one of "Size", "LastModifiedDate", "StorageClass", "ETag", "IsMultipartUploaded", "ReplicationStatus", "EncryptionStatus", "ObjectLockRetainUntilDate", "ObjectLockMode", "ObjectLockLegalHoldStatus", "IntelligentTieringAccessTier", "BucketKeyStatus", "ChecksumAlgorithm"
|
7750
|
+
# resp.inventory_configuration_list[0].optional_fields[0] #=> String, one of "Size", "LastModifiedDate", "StorageClass", "ETag", "IsMultipartUploaded", "ReplicationStatus", "EncryptionStatus", "ObjectLockRetainUntilDate", "ObjectLockMode", "ObjectLockLegalHoldStatus", "IntelligentTieringAccessTier", "BucketKeyStatus", "ChecksumAlgorithm", "ObjectAccessControlList", "ObjectOwner"
|
7749
7751
|
# resp.inventory_configuration_list[0].schedule.frequency #=> String, one of "Daily", "Weekly"
|
7750
7752
|
# resp.is_truncated #=> Boolean
|
7751
7753
|
# resp.next_continuation_token #=> String
|
@@ -10169,7 +10171,7 @@ module Aws::S3
|
|
10169
10171
|
# },
|
10170
10172
|
# id: "InventoryId", # required
|
10171
10173
|
# included_object_versions: "All", # required, accepts All, Current
|
10172
|
-
# optional_fields: ["Size"], # accepts Size, LastModifiedDate, StorageClass, ETag, IsMultipartUploaded, ReplicationStatus, EncryptionStatus, ObjectLockRetainUntilDate, ObjectLockMode, ObjectLockLegalHoldStatus, IntelligentTieringAccessTier, BucketKeyStatus, ChecksumAlgorithm
|
10174
|
+
# optional_fields: ["Size"], # accepts Size, LastModifiedDate, StorageClass, ETag, IsMultipartUploaded, ReplicationStatus, EncryptionStatus, ObjectLockRetainUntilDate, ObjectLockMode, ObjectLockLegalHoldStatus, IntelligentTieringAccessTier, BucketKeyStatus, ChecksumAlgorithm, ObjectAccessControlList, ObjectOwner
|
10173
10175
|
# schedule: { # required
|
10174
10176
|
# frequency: "Daily", # required, accepts Daily, Weekly
|
10175
10177
|
# },
|
@@ -12493,61 +12495,58 @@ module Aws::S3
|
|
12493
12495
|
# * {Types::PutObjectOutput#request_charged #request_charged} => String
|
12494
12496
|
#
|
12495
12497
|
#
|
12496
|
-
# @example Example: To
|
12498
|
+
# @example Example: To create an object.
|
12497
12499
|
#
|
12498
|
-
# # The following example creates an object.
|
12499
|
-
# # enabled, S3 returns version ID in response.
|
12500
|
+
# # The following example creates an object. If the bucket is versioning enabled, S3 returns version ID in response.
|
12500
12501
|
#
|
12501
12502
|
# resp = client.put_object({
|
12502
12503
|
# body: "filetoupload",
|
12503
12504
|
# bucket: "examplebucket",
|
12504
|
-
# key: "
|
12505
|
-
# metadata: {
|
12506
|
-
# "metadata1" => "value1",
|
12507
|
-
# "metadata2" => "value2",
|
12508
|
-
# },
|
12505
|
+
# key: "objectkey",
|
12509
12506
|
# })
|
12510
12507
|
#
|
12511
12508
|
# resp.to_h outputs the following:
|
12512
12509
|
# {
|
12513
12510
|
# etag: "\"6805f2cfc46c0f04559748bb039d69ae\"",
|
12514
|
-
# version_id: "
|
12511
|
+
# version_id: "Bvq0EDKxOcXLJXNo_Lkz37eM3R4pfzyQ",
|
12515
12512
|
# }
|
12516
12513
|
#
|
12517
|
-
# @example Example: To upload
|
12514
|
+
# @example Example: To upload object and specify user-defined metadata
|
12518
12515
|
#
|
12519
|
-
# # The following example
|
12520
|
-
# #
|
12516
|
+
# # The following example creates an object. The request also specifies optional metadata. If the bucket is versioning
|
12517
|
+
# # enabled, S3 returns version ID in response.
|
12521
12518
|
#
|
12522
12519
|
# resp = client.put_object({
|
12523
|
-
# body: "
|
12520
|
+
# body: "filetoupload",
|
12524
12521
|
# bucket: "examplebucket",
|
12525
|
-
# key: "
|
12526
|
-
#
|
12527
|
-
#
|
12522
|
+
# key: "exampleobject",
|
12523
|
+
# metadata: {
|
12524
|
+
# "metadata1" => "value1",
|
12525
|
+
# "metadata2" => "value2",
|
12526
|
+
# },
|
12528
12527
|
# })
|
12529
12528
|
#
|
12530
12529
|
# resp.to_h outputs the following:
|
12531
12530
|
# {
|
12532
12531
|
# etag: "\"6805f2cfc46c0f04559748bb039d69ae\"",
|
12533
|
-
#
|
12534
|
-
# version_id: "CG612hodqujkf8FaaNfp8U..FIhLROcp",
|
12532
|
+
# version_id: "pSKidl4pHBiNwukdbcPXAIs.sshFFOc0",
|
12535
12533
|
# }
|
12536
12534
|
#
|
12537
|
-
# @example Example: To
|
12535
|
+
# @example Example: To upload an object
|
12538
12536
|
#
|
12539
|
-
# # The following example
|
12537
|
+
# # The following example uploads an object to a versioning-enabled bucket. The source file is specified using Windows file
|
12538
|
+
# # syntax. S3 returns VersionId of the newly created object.
|
12540
12539
|
#
|
12541
12540
|
# resp = client.put_object({
|
12542
|
-
# body: "
|
12541
|
+
# body: "HappyFace.jpg",
|
12543
12542
|
# bucket: "examplebucket",
|
12544
|
-
# key: "
|
12543
|
+
# key: "HappyFace.jpg",
|
12545
12544
|
# })
|
12546
12545
|
#
|
12547
12546
|
# resp.to_h outputs the following:
|
12548
12547
|
# {
|
12549
12548
|
# etag: "\"6805f2cfc46c0f04559748bb039d69ae\"",
|
12550
|
-
# version_id: "
|
12549
|
+
# version_id: "tpf3zF08nBplQK1XLOefGskR7mGDwcDk",
|
12551
12550
|
# }
|
12552
12551
|
#
|
12553
12552
|
# @example Example: To upload an object and specify canned ACL.
|
@@ -12568,59 +12567,62 @@ module Aws::S3
|
|
12568
12567
|
# version_id: "Kirh.unyZwjQ69YxcQLA8z4F5j3kJJKr",
|
12569
12568
|
# }
|
12570
12569
|
#
|
12571
|
-
# @example Example: To upload an object
|
12570
|
+
# @example Example: To upload an object (specify optional headers)
|
12572
12571
|
#
|
12573
|
-
# # The following example uploads an object
|
12574
|
-
# #
|
12572
|
+
# # The following example uploads an object. The request specifies optional request headers to directs S3 to use specific
|
12573
|
+
# # storage class and use server-side encryption.
|
12575
12574
|
#
|
12576
12575
|
# resp = client.put_object({
|
12577
12576
|
# body: "HappyFace.jpg",
|
12578
12577
|
# bucket: "examplebucket",
|
12579
12578
|
# key: "HappyFace.jpg",
|
12579
|
+
# server_side_encryption: "AES256",
|
12580
|
+
# storage_class: "STANDARD_IA",
|
12580
12581
|
# })
|
12581
12582
|
#
|
12582
12583
|
# resp.to_h outputs the following:
|
12583
12584
|
# {
|
12584
12585
|
# etag: "\"6805f2cfc46c0f04559748bb039d69ae\"",
|
12585
|
-
#
|
12586
|
+
# server_side_encryption: "AES256",
|
12587
|
+
# version_id: "CG612hodqujkf8FaaNfp8U..FIhLROcp",
|
12586
12588
|
# }
|
12587
12589
|
#
|
12588
|
-
# @example Example: To upload an object and specify
|
12590
|
+
# @example Example: To upload an object and specify optional tags
|
12589
12591
|
#
|
12590
|
-
# # The following example uploads an object. The request specifies
|
12591
|
-
# #
|
12592
|
+
# # The following example uploads an object. The request specifies optional object tags. The bucket is versioned, therefore
|
12593
|
+
# # S3 returns version ID of the newly created object.
|
12592
12594
|
#
|
12593
12595
|
# resp = client.put_object({
|
12594
|
-
# body: "
|
12596
|
+
# body: "c:\\HappyFace.jpg",
|
12595
12597
|
# bucket: "examplebucket",
|
12596
|
-
# key: "
|
12597
|
-
# server_side_encryption: "AES256",
|
12598
|
+
# key: "HappyFace.jpg",
|
12598
12599
|
# tagging: "key1=value1&key2=value2",
|
12599
12600
|
# })
|
12600
12601
|
#
|
12601
12602
|
# resp.to_h outputs the following:
|
12602
12603
|
# {
|
12603
12604
|
# etag: "\"6805f2cfc46c0f04559748bb039d69ae\"",
|
12604
|
-
#
|
12605
|
-
# version_id: "Ri.vC6qVlA4dEnjgRV4ZHsHoFIjqEMNt",
|
12605
|
+
# version_id: "psM2sYY4.o1501dSx8wMvnkOzSBB.V4a",
|
12606
12606
|
# }
|
12607
12607
|
#
|
12608
|
-
# @example Example: To upload an object and specify
|
12608
|
+
# @example Example: To upload an object and specify server-side encryption and object tags
|
12609
12609
|
#
|
12610
|
-
# # The following example uploads an object. The request specifies optional
|
12611
|
-
# # S3 returns version ID
|
12610
|
+
# # The following example uploads an object. The request specifies the optional server-side encryption option. The request
|
12611
|
+
# # also specifies optional object tags. If the bucket is versioning enabled, S3 returns version ID in response.
|
12612
12612
|
#
|
12613
12613
|
# resp = client.put_object({
|
12614
|
-
# body: "
|
12614
|
+
# body: "filetoupload",
|
12615
12615
|
# bucket: "examplebucket",
|
12616
|
-
# key: "
|
12616
|
+
# key: "exampleobject",
|
12617
|
+
# server_side_encryption: "AES256",
|
12617
12618
|
# tagging: "key1=value1&key2=value2",
|
12618
12619
|
# })
|
12619
12620
|
#
|
12620
12621
|
# resp.to_h outputs the following:
|
12621
12622
|
# {
|
12622
12623
|
# etag: "\"6805f2cfc46c0f04559748bb039d69ae\"",
|
12623
|
-
#
|
12624
|
+
# server_side_encryption: "AES256",
|
12625
|
+
# version_id: "Ri.vC6qVlA4dEnjgRV4ZHsHoFIjqEMNt",
|
12624
12626
|
# }
|
12625
12627
|
#
|
12626
12628
|
# @example Streaming a file from disk
|
@@ -15165,45 +15167,45 @@ module Aws::S3
|
|
15165
15167
|
# * {Types::UploadPartCopyOutput#request_charged #request_charged} => String
|
15166
15168
|
#
|
15167
15169
|
#
|
15168
|
-
# @example Example: To upload a part by copying
|
15170
|
+
# @example Example: To upload a part by copying byte range from an existing object as data source
|
15169
15171
|
#
|
15170
|
-
# # The following example uploads a part of a multipart upload by copying
|
15172
|
+
# # The following example uploads a part of a multipart upload by copying a specified byte range from an existing object as
|
15173
|
+
# # data source.
|
15171
15174
|
#
|
15172
15175
|
# resp = client.upload_part_copy({
|
15173
15176
|
# bucket: "examplebucket",
|
15174
15177
|
# copy_source: "/bucketname/sourceobjectkey",
|
15178
|
+
# copy_source_range: "bytes=1-100000",
|
15175
15179
|
# key: "examplelargeobject",
|
15176
|
-
# part_number:
|
15180
|
+
# part_number: 2,
|
15177
15181
|
# upload_id: "exampleuoh_10OhKhT7YukE9bjzTPRiuaCotmZM_pFngJFir9OZNrSr5cWa3cq3LZSUsfjI4FI7PkP91We7Nrw--",
|
15178
15182
|
# })
|
15179
15183
|
#
|
15180
15184
|
# resp.to_h outputs the following:
|
15181
15185
|
# {
|
15182
15186
|
# copy_part_result: {
|
15183
|
-
# etag: "\"
|
15184
|
-
# last_modified: Time.parse("2016-12-29T21:
|
15187
|
+
# etag: "\"65d16d19e65a7508a51f043180edcc36\"",
|
15188
|
+
# last_modified: Time.parse("2016-12-29T21:44:28.000Z"),
|
15185
15189
|
# },
|
15186
15190
|
# }
|
15187
15191
|
#
|
15188
|
-
# @example Example: To upload a part by copying
|
15192
|
+
# @example Example: To upload a part by copying data from an existing object as data source
|
15189
15193
|
#
|
15190
|
-
# # The following example uploads a part of a multipart upload by copying
|
15191
|
-
# # data source.
|
15194
|
+
# # The following example uploads a part of a multipart upload by copying data from an existing object as data source.
|
15192
15195
|
#
|
15193
15196
|
# resp = client.upload_part_copy({
|
15194
15197
|
# bucket: "examplebucket",
|
15195
15198
|
# copy_source: "/bucketname/sourceobjectkey",
|
15196
|
-
# copy_source_range: "bytes=1-100000",
|
15197
15199
|
# key: "examplelargeobject",
|
15198
|
-
# part_number:
|
15200
|
+
# part_number: 1,
|
15199
15201
|
# upload_id: "exampleuoh_10OhKhT7YukE9bjzTPRiuaCotmZM_pFngJFir9OZNrSr5cWa3cq3LZSUsfjI4FI7PkP91We7Nrw--",
|
15200
15202
|
# })
|
15201
15203
|
#
|
15202
15204
|
# resp.to_h outputs the following:
|
15203
15205
|
# {
|
15204
15206
|
# copy_part_result: {
|
15205
|
-
# etag: "\"
|
15206
|
-
# last_modified: Time.parse("2016-12-29T21:
|
15207
|
+
# etag: "\"b0c6f0e7e054ab8fa2536a2677f8734d\"",
|
15208
|
+
# last_modified: Time.parse("2016-12-29T21:24:43.000Z"),
|
15207
15209
|
# },
|
15208
15210
|
# }
|
15209
15211
|
#
|
@@ -15651,7 +15653,7 @@ module Aws::S3
|
|
15651
15653
|
params: params,
|
15652
15654
|
config: config)
|
15653
15655
|
context[:gem_name] = 'aws-sdk-s3'
|
15654
|
-
context[:gem_version] = '1.
|
15656
|
+
context[:gem_version] = '1.130.0'
|
15655
15657
|
Seahorse::Client::Request.new(handlers, context)
|
15656
15658
|
end
|
15657
15659
|
|
@@ -46,6 +46,14 @@ module Aws
|
|
46
46
|
# different region. You do not need to specify this option
|
47
47
|
# if you have provided a `:source_client` or a `:content_length`.
|
48
48
|
#
|
49
|
+
# @option options [Boolean] :use_source_parts (false) Only used when
|
50
|
+
# `:multipart_copy` is `true`. Use part sizes defined on the source
|
51
|
+
# object if any exist. If copying or moving an object that
|
52
|
+
# is already multipart, this does not re-part the object, instead
|
53
|
+
# re-using the part definitions on the original. That means the etag
|
54
|
+
# and any checksums will not change. This is especially useful if the
|
55
|
+
# source object has parts with varied sizes.
|
56
|
+
#
|
49
57
|
# @example Basic object copy
|
50
58
|
#
|
51
59
|
# bucket = Aws::S3::Bucket.new('target-bucket')
|
@@ -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
|
|
data/lib/aws-sdk-s3/resource.rb
CHANGED
@@ -41,7 +41,7 @@ module Aws::S3
|
|
41
41
|
# acl: "private", # accepts private, public-read, public-read-write, authenticated-read
|
42
42
|
# bucket: "BucketName", # required
|
43
43
|
# create_bucket_configuration: {
|
44
|
-
# location_constraint: "af-south-1", # accepts af-south-1, ap-east-1, ap-northeast-1, ap-northeast-2, ap-northeast-3, ap-south-1, ap-southeast-1, ap-southeast-2, ap-southeast-3, ca-central-1, cn-north-1, cn-northwest-1, EU, eu-central-1, eu-north-1, eu-south-1, eu-west-1, eu-west-2, eu-west-3, me-south-1, sa-east-1, us-east-2, us-gov-east-1, us-gov-west-1, us-west-1, us-west-2
|
44
|
+
# location_constraint: "af-south-1", # accepts af-south-1, ap-east-1, ap-northeast-1, ap-northeast-2, ap-northeast-3, ap-south-1, ap-southeast-1, ap-southeast-2, ap-southeast-3, ca-central-1, cn-north-1, cn-northwest-1, EU, eu-central-1, eu-north-1, eu-south-1, eu-west-1, eu-west-2, eu-west-3, me-south-1, sa-east-1, us-east-2, us-gov-east-1, us-gov-west-1, us-west-1, us-west-2, ap-south-2, eu-south-2
|
45
45
|
# },
|
46
46
|
# grant_full_control: "GrantFullControl",
|
47
47
|
# grant_read: "GrantRead",
|
data/lib/aws-sdk-s3.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aws-sdk-s3
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.130.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Amazon Web Services
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-07-
|
11
|
+
date: 2023-07-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk-kms
|