aws-sdk-s3 1.128.0 → 1.130.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6ec7c4fd0f4d8fb1a8efd8527908821bc3fabd58ee2078241bbcb9bb5ad2b040
4
- data.tar.gz: 2fb1ef8bfc93f1821890cd9ff18b51f1bc6708286581b3e94733c4cc96975949
3
+ metadata.gz: 9170ab560df5828b8608754ee83facb83ccd4f09b425661c2f81bef05d45085c
4
+ data.tar.gz: 70f914ab9977fac81df71f9dd5ba0509a0d598f72cf1f988c491e37aa9db000c
5
5
  SHA512:
6
- metadata.gz: fcb07dec8c0c01ef7a334c27694b3ab5974702a63d2a4232db073d09f464498e3dbeef28f9e201201c8fc3e9b943bf605bf1dc7a5b4199710654b17b48d88416
7
- data.tar.gz: a82960fccb97ad47049ade2b4222c8a52422eba7a0f3b63b61fb3257de080436db8d184a58d957151e041f63af171577b3e45a18ca91d851cba98d49d9cb72e8
6
+ metadata.gz: ece1dd86bf6963b66f243289c3ca2d9e77ddee8f745dd9ea166464c96250de2377a8a2b7ce38e3d38bb66b02bc292884f9293b4aaa9d6b9a267b81b1b1fa2e06
7
+ data.tar.gz: e9cca71b4d710aad1af40c1dea6f06955480d6a8db748a61c66e8f41d49fb271def041fffce98c81f47fa5100c2375caa8492684ab7601d8fe45f712f07061f4
data/CHANGELOG.md CHANGED
@@ -1,6 +1,19 @@
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
+
12
+ 1.129.0 (2023-07-11)
13
+ ------------------
14
+
15
+ * Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
16
+
4
17
  1.128.0 (2023-07-06)
5
18
  ------------------
6
19
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.128.0
1
+ 1.130.0
@@ -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",
@@ -272,6 +272,10 @@ module Aws::S3
272
272
  # When set to `true`, the bucket name is always left in the
273
273
  # request URI and never moved to the host as a sub-domain.
274
274
  #
275
+ # @option options [Boolean] :ignore_configured_endpoint_urls
276
+ # Setting to true disables use of endpoint URLs provided via environment
277
+ # variables and the shared configuration file.
278
+ #
275
279
  # @option options [Proc] :input_event_stream_handler
276
280
  # When an EventStream or Proc object is provided, it can be used for sending events for the event stream.
277
281
  #
@@ -964,8 +968,10 @@ module Aws::S3
964
968
  # </note>
965
969
  #
966
970
  # The copy request charge is based on the storage class and Region that
967
- # you specify for the destination object. For pricing information, see
968
- # [Amazon S3 pricing][3].
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].
969
975
  #
970
976
  # Amazon S3 transfer acceleration does not support cross-Region copies.
971
977
  # If you request a cross-Region copy using a transfer acceleration
@@ -1691,33 +1697,33 @@ module Aws::S3
1691
1697
  # * {Types::CreateBucketOutput#location #location} => String
1692
1698
  #
1693
1699
  #
1694
- # @example Example: To create a bucket
1700
+ # @example Example: To create a bucket in a specific region
1695
1701
  #
1696
- # # The following example creates a bucket.
1702
+ # # The following example creates a bucket. The request specifies an AWS region where to create the bucket.
1697
1703
  #
1698
1704
  # resp = client.create_bucket({
1699
1705
  # bucket: "examplebucket",
1706
+ # create_bucket_configuration: {
1707
+ # location_constraint: "eu-west-1",
1708
+ # },
1700
1709
  # })
1701
1710
  #
1702
1711
  # resp.to_h outputs the following:
1703
1712
  # {
1704
- # location: "/examplebucket",
1713
+ # location: "http://examplebucket.<Region>.s3.amazonaws.com/",
1705
1714
  # }
1706
1715
  #
1707
- # @example Example: To create a bucket in a specific region
1716
+ # @example Example: To create a bucket
1708
1717
  #
1709
- # # The following example creates a bucket. The request specifies an AWS region where to create the bucket.
1718
+ # # The following example creates a bucket.
1710
1719
  #
1711
1720
  # resp = client.create_bucket({
1712
1721
  # bucket: "examplebucket",
1713
- # create_bucket_configuration: {
1714
- # location_constraint: "eu-west-1",
1715
- # },
1716
1722
  # })
1717
1723
  #
1718
1724
  # resp.to_h outputs the following:
1719
1725
  # {
1720
- # location: "http://examplebucket.<Region>.s3.amazonaws.com/",
1726
+ # location: "/examplebucket",
1721
1727
  # }
1722
1728
  #
1723
1729
  # @example Request syntax with placeholder values
@@ -1726,7 +1732,7 @@ module Aws::S3
1726
1732
  # acl: "private", # accepts private, public-read, public-read-write, authenticated-read
1727
1733
  # bucket: "BucketName", # required
1728
1734
  # create_bucket_configuration: {
1729
- # 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
1730
1736
  # },
1731
1737
  # grant_full_control: "GrantFullControl",
1732
1738
  # grant_read: "GrantRead",
@@ -3169,6 +3175,15 @@ module Aws::S3
3169
3175
  # * {Types::DeleteObjectOutput#request_charged #request_charged} => String
3170
3176
  #
3171
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
+ #
3172
3187
  # @example Example: To delete an object
3173
3188
  #
3174
3189
  # # The following example deletes an object from an S3 bucket.
@@ -3182,15 +3197,6 @@ module Aws::S3
3182
3197
  # {
3183
3198
  # }
3184
3199
  #
3185
- # @example Example: To delete an object (from a non-versioned bucket)
3186
- #
3187
- # # The following example deletes an object from a non-versioned bucket.
3188
- #
3189
- # resp = client.delete_object({
3190
- # bucket: "ExampleBucket",
3191
- # key: "HappyFace.jpg",
3192
- # })
3193
- #
3194
3200
  # @example Request syntax with placeholder values
3195
3201
  #
3196
3202
  # resp = client.delete_object({
@@ -3282,35 +3288,35 @@ module Aws::S3
3282
3288
  # * {Types::DeleteObjectTaggingOutput#version_id #version_id} => String
3283
3289
  #
3284
3290
  #
3285
- # @example Example: To remove tag set from an object version
3291
+ # @example Example: To remove tag set from an object
3286
3292
  #
3287
- # # The following example removes tag set associated with the specified object version. The request specifies both the
3288
- # # object key and object version.
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.
3289
3295
  #
3290
3296
  # resp = client.delete_object_tagging({
3291
3297
  # bucket: "examplebucket",
3292
3298
  # key: "HappyFace.jpg",
3293
- # version_id: "ydlaNkwWm0SfKJR.T1b1fIdPRbldTYRI",
3294
3299
  # })
3295
3300
  #
3296
3301
  # resp.to_h outputs the following:
3297
3302
  # {
3298
- # version_id: "ydlaNkwWm0SfKJR.T1b1fIdPRbldTYRI",
3303
+ # version_id: "null",
3299
3304
  # }
3300
3305
  #
3301
- # @example Example: To remove tag set from an object
3306
+ # @example Example: To remove tag set from an object version
3302
3307
  #
3303
- # # The following example removes tag set associated with the specified object. If the bucket is versioning enabled, the
3304
- # # operation removes tag set from the latest object version.
3308
+ # # The following example removes tag set associated with the specified object version. The request specifies both the
3309
+ # # object key and object version.
3305
3310
  #
3306
3311
  # resp = client.delete_object_tagging({
3307
3312
  # bucket: "examplebucket",
3308
3313
  # key: "HappyFace.jpg",
3314
+ # version_id: "ydlaNkwWm0SfKJR.T1b1fIdPRbldTYRI",
3309
3315
  # })
3310
3316
  #
3311
3317
  # resp.to_h outputs the following:
3312
3318
  # {
3313
- # version_id: "null",
3319
+ # version_id: "ydlaNkwWm0SfKJR.T1b1fIdPRbldTYRI",
3314
3320
  # }
3315
3321
  #
3316
3322
  # @example Request syntax with placeholder values
@@ -4223,7 +4229,7 @@ module Aws::S3
4223
4229
  # resp.inventory_configuration.id #=> String
4224
4230
  # resp.inventory_configuration.included_object_versions #=> String, one of "All", "Current"
4225
4231
  # resp.inventory_configuration.optional_fields #=> Array
4226
- # 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"
4227
4233
  # resp.inventory_configuration.schedule.frequency #=> String, one of "Daily", "Weekly"
4228
4234
  #
4229
4235
  # @see http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketInventoryConfiguration AWS API Documentation
@@ -4567,7 +4573,7 @@ module Aws::S3
4567
4573
  #
4568
4574
  # @example Response structure
4569
4575
  #
4570
- # 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"
4571
4577
  #
4572
4578
  # @see http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLocation AWS API Documentation
4573
4579
  #
@@ -7741,7 +7747,7 @@ module Aws::S3
7741
7747
  # resp.inventory_configuration_list[0].id #=> String
7742
7748
  # resp.inventory_configuration_list[0].included_object_versions #=> String, one of "All", "Current"
7743
7749
  # resp.inventory_configuration_list[0].optional_fields #=> Array
7744
- # 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"
7745
7751
  # resp.inventory_configuration_list[0].schedule.frequency #=> String, one of "Daily", "Weekly"
7746
7752
  # resp.is_truncated #=> Boolean
7747
7753
  # resp.next_continuation_token #=> String
@@ -10165,7 +10171,7 @@ module Aws::S3
10165
10171
  # },
10166
10172
  # id: "InventoryId", # required
10167
10173
  # included_object_versions: "All", # required, accepts All, Current
10168
- # 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
10169
10175
  # schedule: { # required
10170
10176
  # frequency: "Daily", # required, accepts Daily, Weekly
10171
10177
  # },
@@ -12489,61 +12495,58 @@ module Aws::S3
12489
12495
  # * {Types::PutObjectOutput#request_charged #request_charged} => String
12490
12496
  #
12491
12497
  #
12492
- # @example Example: To upload object and specify user-defined metadata
12498
+ # @example Example: To create an object.
12493
12499
  #
12494
- # # The following example creates an object. The request also specifies optional metadata. If the bucket is versioning
12495
- # # 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.
12496
12501
  #
12497
12502
  # resp = client.put_object({
12498
12503
  # body: "filetoupload",
12499
12504
  # bucket: "examplebucket",
12500
- # key: "exampleobject",
12501
- # metadata: {
12502
- # "metadata1" => "value1",
12503
- # "metadata2" => "value2",
12504
- # },
12505
+ # key: "objectkey",
12505
12506
  # })
12506
12507
  #
12507
12508
  # resp.to_h outputs the following:
12508
12509
  # {
12509
12510
  # etag: "\"6805f2cfc46c0f04559748bb039d69ae\"",
12510
- # version_id: "pSKidl4pHBiNwukdbcPXAIs.sshFFOc0",
12511
+ # version_id: "Bvq0EDKxOcXLJXNo_Lkz37eM3R4pfzyQ",
12511
12512
  # }
12512
12513
  #
12513
- # @example Example: To upload an object (specify optional headers)
12514
+ # @example Example: To upload object and specify user-defined metadata
12514
12515
  #
12515
- # # The following example uploads an object. The request specifies optional request headers to directs S3 to use specific
12516
- # # storage class and use server-side encryption.
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.
12517
12518
  #
12518
12519
  # resp = client.put_object({
12519
- # body: "HappyFace.jpg",
12520
+ # body: "filetoupload",
12520
12521
  # bucket: "examplebucket",
12521
- # key: "HappyFace.jpg",
12522
- # server_side_encryption: "AES256",
12523
- # storage_class: "STANDARD_IA",
12522
+ # key: "exampleobject",
12523
+ # metadata: {
12524
+ # "metadata1" => "value1",
12525
+ # "metadata2" => "value2",
12526
+ # },
12524
12527
  # })
12525
12528
  #
12526
12529
  # resp.to_h outputs the following:
12527
12530
  # {
12528
12531
  # etag: "\"6805f2cfc46c0f04559748bb039d69ae\"",
12529
- # server_side_encryption: "AES256",
12530
- # version_id: "CG612hodqujkf8FaaNfp8U..FIhLROcp",
12532
+ # version_id: "pSKidl4pHBiNwukdbcPXAIs.sshFFOc0",
12531
12533
  # }
12532
12534
  #
12533
- # @example Example: To create an object.
12535
+ # @example Example: To upload an object
12534
12536
  #
12535
- # # The following example creates an object. If the bucket is versioning enabled, S3 returns version ID in response.
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.
12536
12539
  #
12537
12540
  # resp = client.put_object({
12538
- # body: "filetoupload",
12541
+ # body: "HappyFace.jpg",
12539
12542
  # bucket: "examplebucket",
12540
- # key: "objectkey",
12543
+ # key: "HappyFace.jpg",
12541
12544
  # })
12542
12545
  #
12543
12546
  # resp.to_h outputs the following:
12544
12547
  # {
12545
12548
  # etag: "\"6805f2cfc46c0f04559748bb039d69ae\"",
12546
- # version_id: "Bvq0EDKxOcXLJXNo_Lkz37eM3R4pfzyQ",
12549
+ # version_id: "tpf3zF08nBplQK1XLOefGskR7mGDwcDk",
12547
12550
  # }
12548
12551
  #
12549
12552
  # @example Example: To upload an object and specify canned ACL.
@@ -12564,59 +12567,62 @@ module Aws::S3
12564
12567
  # version_id: "Kirh.unyZwjQ69YxcQLA8z4F5j3kJJKr",
12565
12568
  # }
12566
12569
  #
12567
- # @example Example: To upload an object
12570
+ # @example Example: To upload an object (specify optional headers)
12568
12571
  #
12569
- # # The following example uploads an object to a versioning-enabled bucket. The source file is specified using Windows file
12570
- # # syntax. S3 returns VersionId of the newly created object.
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.
12571
12574
  #
12572
12575
  # resp = client.put_object({
12573
12576
  # body: "HappyFace.jpg",
12574
12577
  # bucket: "examplebucket",
12575
12578
  # key: "HappyFace.jpg",
12579
+ # server_side_encryption: "AES256",
12580
+ # storage_class: "STANDARD_IA",
12576
12581
  # })
12577
12582
  #
12578
12583
  # resp.to_h outputs the following:
12579
12584
  # {
12580
12585
  # etag: "\"6805f2cfc46c0f04559748bb039d69ae\"",
12581
- # version_id: "tpf3zF08nBplQK1XLOefGskR7mGDwcDk",
12586
+ # server_side_encryption: "AES256",
12587
+ # version_id: "CG612hodqujkf8FaaNfp8U..FIhLROcp",
12582
12588
  # }
12583
12589
  #
12584
- # @example Example: To upload an object and specify server-side encryption and object tags
12590
+ # @example Example: To upload an object and specify optional tags
12585
12591
  #
12586
- # # The following example uploads an object. The request specifies the optional server-side encryption option. The request
12587
- # # also specifies optional object tags. If the bucket is versioning enabled, S3 returns version ID in response.
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.
12588
12594
  #
12589
12595
  # resp = client.put_object({
12590
- # body: "filetoupload",
12596
+ # body: "c:\\HappyFace.jpg",
12591
12597
  # bucket: "examplebucket",
12592
- # key: "exampleobject",
12593
- # server_side_encryption: "AES256",
12598
+ # key: "HappyFace.jpg",
12594
12599
  # tagging: "key1=value1&key2=value2",
12595
12600
  # })
12596
12601
  #
12597
12602
  # resp.to_h outputs the following:
12598
12603
  # {
12599
12604
  # etag: "\"6805f2cfc46c0f04559748bb039d69ae\"",
12600
- # server_side_encryption: "AES256",
12601
- # version_id: "Ri.vC6qVlA4dEnjgRV4ZHsHoFIjqEMNt",
12605
+ # version_id: "psM2sYY4.o1501dSx8wMvnkOzSBB.V4a",
12602
12606
  # }
12603
12607
  #
12604
- # @example Example: To upload an object and specify optional tags
12608
+ # @example Example: To upload an object and specify server-side encryption and object tags
12605
12609
  #
12606
- # # The following example uploads an object. The request specifies optional object tags. The bucket is versioned, therefore
12607
- # # S3 returns version ID of the newly created object.
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.
12608
12612
  #
12609
12613
  # resp = client.put_object({
12610
- # body: "c:\\HappyFace.jpg",
12614
+ # body: "filetoupload",
12611
12615
  # bucket: "examplebucket",
12612
- # key: "HappyFace.jpg",
12616
+ # key: "exampleobject",
12617
+ # server_side_encryption: "AES256",
12613
12618
  # tagging: "key1=value1&key2=value2",
12614
12619
  # })
12615
12620
  #
12616
12621
  # resp.to_h outputs the following:
12617
12622
  # {
12618
12623
  # etag: "\"6805f2cfc46c0f04559748bb039d69ae\"",
12619
- # version_id: "psM2sYY4.o1501dSx8wMvnkOzSBB.V4a",
12624
+ # server_side_encryption: "AES256",
12625
+ # version_id: "Ri.vC6qVlA4dEnjgRV4ZHsHoFIjqEMNt",
12620
12626
  # }
12621
12627
  #
12622
12628
  # @example Streaming a file from disk
@@ -15161,45 +15167,45 @@ module Aws::S3
15161
15167
  # * {Types::UploadPartCopyOutput#request_charged #request_charged} => String
15162
15168
  #
15163
15169
  #
15164
- # @example Example: To upload a part by copying data from an existing object as data source
15170
+ # @example Example: To upload a part by copying byte range from an existing object as data source
15165
15171
  #
15166
- # # The following example uploads a part of a multipart upload by copying data from an existing object as data source.
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.
15167
15174
  #
15168
15175
  # resp = client.upload_part_copy({
15169
15176
  # bucket: "examplebucket",
15170
15177
  # copy_source: "/bucketname/sourceobjectkey",
15178
+ # copy_source_range: "bytes=1-100000",
15171
15179
  # key: "examplelargeobject",
15172
- # part_number: 1,
15180
+ # part_number: 2,
15173
15181
  # upload_id: "exampleuoh_10OhKhT7YukE9bjzTPRiuaCotmZM_pFngJFir9OZNrSr5cWa3cq3LZSUsfjI4FI7PkP91We7Nrw--",
15174
15182
  # })
15175
15183
  #
15176
15184
  # resp.to_h outputs the following:
15177
15185
  # {
15178
15186
  # copy_part_result: {
15179
- # etag: "\"b0c6f0e7e054ab8fa2536a2677f8734d\"",
15180
- # last_modified: Time.parse("2016-12-29T21:24:43.000Z"),
15187
+ # etag: "\"65d16d19e65a7508a51f043180edcc36\"",
15188
+ # last_modified: Time.parse("2016-12-29T21:44:28.000Z"),
15181
15189
  # },
15182
15190
  # }
15183
15191
  #
15184
- # @example Example: To upload a part by copying byte range from an existing object as data source
15192
+ # @example Example: To upload a part by copying data from an existing object as data source
15185
15193
  #
15186
- # # The following example uploads a part of a multipart upload by copying a specified byte range from an existing object as
15187
- # # data source.
15194
+ # # The following example uploads a part of a multipart upload by copying data from an existing object as data source.
15188
15195
  #
15189
15196
  # resp = client.upload_part_copy({
15190
15197
  # bucket: "examplebucket",
15191
15198
  # copy_source: "/bucketname/sourceobjectkey",
15192
- # copy_source_range: "bytes=1-100000",
15193
15199
  # key: "examplelargeobject",
15194
- # part_number: 2,
15200
+ # part_number: 1,
15195
15201
  # upload_id: "exampleuoh_10OhKhT7YukE9bjzTPRiuaCotmZM_pFngJFir9OZNrSr5cWa3cq3LZSUsfjI4FI7PkP91We7Nrw--",
15196
15202
  # })
15197
15203
  #
15198
15204
  # resp.to_h outputs the following:
15199
15205
  # {
15200
15206
  # copy_part_result: {
15201
- # etag: "\"65d16d19e65a7508a51f043180edcc36\"",
15202
- # last_modified: Time.parse("2016-12-29T21:44:28.000Z"),
15207
+ # etag: "\"b0c6f0e7e054ab8fa2536a2677f8734d\"",
15208
+ # last_modified: Time.parse("2016-12-29T21:24:43.000Z"),
15203
15209
  # },
15204
15210
  # }
15205
15211
  #
@@ -15647,7 +15653,7 @@ module Aws::S3
15647
15653
  params: params,
15648
15654
  config: config)
15649
15655
  context[:gem_name] = 'aws-sdk-s3'
15650
- context[:gem_version] = '1.128.0'
15656
+ context[:gem_version] = '1.130.0'
15651
15657
  Seahorse::Client::Request.new(handlers, context)
15652
15658
  end
15653
15659
 
@@ -8,7 +8,7 @@ module Aws
8
8
  class PermanentRedirect < ServiceError
9
9
  # @param [Seahorse::Client::RequestContext] context
10
10
  # @param [String] message
11
- # @param [Aws::S3::Types::PermanentRedirect] data
11
+ # @param [Aws::S3::Types::PermanentRedirect] _data
12
12
  def initialize(context, message, _data = Aws::EmptyStructure.new)
13
13
  data = Aws::S3::Types::PermanentRedirect.new(message: message)
14
14
  body = context.http_response.body_contents
@@ -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) Size of copied parts.
19
- # Defaults to 50MB.
20
- # will be constructed from the given `options' hash.
21
- # @option [Integer] :thread_count (10) Number of concurrent threads to
22
- # use for copying parts.
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
- etag: @client.upload_part_copy(part).copy_part_result.etag,
83
- part_number: part[:part_number],
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, default_part_size, size),
112
+ copy_source_range: byte_range(offset, part_size, size),
110
113
  })
111
114
  part_number += 1
112
- offset += default_part_size
115
+ offset += part_size
113
116
  end
114
117
  parts
115
118
  end
116
119
 
117
- def byte_range(offset, default_part_size, size)
118
- if offset + default_part_size < size
119
- "bytes=#{offset}-#{offset + default_part_size - 1}"
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
 
@@ -315,26 +315,28 @@ module Aws
315
315
 
316
316
  # @!group Fields
317
317
 
318
- # The key to use for the uploaded object. You can use `${filename}`
319
- # as a variable in the key. This will be replaced with the name
320
- # of the file as provided by the user.
318
+ # @!method key(key)
319
+ # The key to use for the uploaded object. You can use `${filename}`
320
+ # as a variable in the key. This will be replaced with the name
321
+ # of the file as provided by the user.
321
322
  #
322
- # For example, if the key is given as `/user/betty/${filename}` and
323
- # the file uploaded is named `lolcatz.jpg`, the resultant key will
324
- # be `/user/betty/lolcatz.jpg`.
323
+ # For example, if the key is given as `/user/betty/${filename}` and
324
+ # the file uploaded is named `lolcatz.jpg`, the resultant key will
325
+ # be `/user/betty/lolcatz.jpg`.
325
326
  #
326
- # @param [String] key
327
- # @see http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html)
328
- # @return [self]
327
+ # @param [String] key
328
+ # @see http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html)
329
+ # @return [self]
329
330
  define_field(:key) do |key|
330
331
  @key_set = true
331
332
  with('key', key)
332
333
  end
333
334
 
334
- # Specify a prefix the uploaded
335
- # @param [String] prefix
336
- # @see #key
337
- # @return [self]
335
+ # @!method key_starts_with(prefix)
336
+ # Specify a prefix the uploaded
337
+ # @param [String] prefix
338
+ # @see #key
339
+ # @return [self]
338
340
  define_field(:key_starts_with) do |prefix|
339
341
  @key_set = true
340
342
  starts_with('key', prefix)
@@ -412,26 +414,29 @@ module Aws
412
414
  # @return [self]
413
415
  define_field(:content_encoding, 'Content-Encoding', starts_with: true)
414
416
 
415
- # The date and time at which the object is no longer cacheable.
416
- # @note This does not affect the expiration of the presigned post
417
- # signature.
418
- # @param [Time] time
419
- # @see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21
420
- # @return [self]
417
+ # @!method expires(time)
418
+ # The date and time at which the object is no longer cacheable.
419
+ # @note This does not affect the expiration of the presigned post
420
+ # signature.
421
+ # @param [Time] time
422
+ # @see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21
423
+ # @return [self]
421
424
  define_field(:expires) do |time|
422
425
  with('Expires', time.httpdate)
423
426
  end
424
427
 
425
- # @param [String] prefix
426
- # @see #expires
427
- # @return [self]
428
+ # @!method expires_starts_with(prefix)
429
+ # @param [String] prefix
430
+ # @see #expires
431
+ # @return [self]
428
432
  define_field(:expires_starts_with) do |prefix|
429
433
  starts_with('Expires', prefix)
430
434
  end
431
435
 
432
- # The minimum and maximum allowable size for the uploaded content.
433
- # @param [Range<Integer>] byte_range
434
- # @return [self]
436
+ # @!method content_length_range(byte_range)
437
+ # The minimum and maximum allowable size for the uploaded content.
438
+ # @param [Range<Integer>] byte_range
439
+ # @return [self]
435
440
  define_field(:content_length_range) do |byte_range|
436
441
  min = byte_range.begin
437
442
  max = byte_range.end
@@ -507,10 +512,11 @@ module Aws
507
512
  # @return [self]
508
513
  define_field(:website_redirect_location, 'x-amz-website-redirect-location')
509
514
 
510
- # Metadata hash to store with the uploaded object. Hash keys will be
511
- # prefixed with "x-amz-meta-".
512
- # @param [Hash<String,String>] hash
513
- # @return [self]
515
+ # @!method metadata(hash)
516
+ # Metadata hash to store with the uploaded object. Hash keys will be
517
+ # prefixed with "x-amz-meta-".
518
+ # @param [Hash<String,String>] hash
519
+ # @return [self]
514
520
  define_field(:metadata) do |hash|
515
521
  hash.each do |key, value|
516
522
  with("x-amz-meta-#{key}", value)
@@ -518,10 +524,11 @@ module Aws
518
524
  self
519
525
  end
520
526
 
521
- # Specify allowable prefix for each key in the metadata hash.
522
- # @param [Hash<String,String>] hash
523
- # @see #metadata
524
- # @return [self]
527
+ # @!method metadata_starts_with(hash)
528
+ # Specify allowable prefix for each key in the metadata hash.
529
+ # @param [Hash<String,String>] hash
530
+ # @see #metadata
531
+ # @return [self]
525
532
  define_field(:metadata_starts_with) do |hash|
526
533
  hash.each do |key, value|
527
534
  starts_with("x-amz-meta-#{key}", value)
@@ -571,24 +578,26 @@ module Aws
571
578
  'x-amz-server-side-encryption-customer-algorithm'
572
579
  )
573
580
 
574
- # Specifies the customer-provided encryption key for Amazon S3 to use
575
- # in encrypting data. This value is used to store the object and then
576
- # it is discarded; Amazon does not store the encryption key.
581
+ # @!method server_side_encryption_customer_key(value)
582
+ # Specifies the customer-provided encryption key for Amazon S3 to use
583
+ # in encrypting data. This value is used to store the object and then
584
+ # it is discarded; Amazon does not store the encryption key.
577
585
  #
578
- # You must also call {#server_side_encryption_customer_algorithm}.
586
+ # You must also call {#server_side_encryption_customer_algorithm}.
579
587
  #
580
- # @param [String] value
581
- # @see #server_side_encryption_customer_algorithm
582
- # @return [self]
588
+ # @param [String] value
589
+ # @see #server_side_encryption_customer_algorithm
590
+ # @return [self]
583
591
  define_field(:server_side_encryption_customer_key) do |value|
584
592
  field_name = 'x-amz-server-side-encryption-customer-key'
585
593
  with(field_name, base64(value))
586
594
  with(field_name + '-MD5', base64(OpenSSL::Digest::MD5.digest(value)))
587
595
  end
588
596
 
589
- # @param [String] prefix
590
- # @see #server_side_encryption_customer_key
591
- # @return [self]
597
+ # @!method server_side_encryption_customer_key_starts_with(prefix)
598
+ # @param [String] prefix
599
+ # @see #server_side_encryption_customer_key
600
+ # @return [self]
592
601
  define_field(:server_side_encryption_customer_key_starts_with) do |prefix|
593
602
  field_name = 'x-amz-server-side-encryption-customer-key'
594
603
  starts_with(field_name, prefix)
@@ -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
@@ -73,6 +73,6 @@ require_relative 'aws-sdk-s3/event_streams'
73
73
  # @!group service
74
74
  module Aws::S3
75
75
 
76
- GEM_VERSION = '1.128.0'
76
+ GEM_VERSION = '1.130.0'
77
77
 
78
78
  end
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.128.0
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-06 00:00:00.000000000 Z
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