aws-sdk-s3 1.79.1 → 1.212.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.
Files changed (133) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1548 -0
  3. data/LICENSE.txt +202 -0
  4. data/VERSION +1 -0
  5. data/lib/aws-sdk-s3/access_grants_credentials.rb +57 -0
  6. data/lib/aws-sdk-s3/access_grants_credentials_provider.rb +250 -0
  7. data/lib/aws-sdk-s3/bucket.rb +900 -98
  8. data/lib/aws-sdk-s3/bucket_acl.rb +44 -10
  9. data/lib/aws-sdk-s3/bucket_cors.rb +51 -11
  10. data/lib/aws-sdk-s3/bucket_lifecycle.rb +53 -8
  11. data/lib/aws-sdk-s3/bucket_lifecycle_configuration.rb +107 -9
  12. data/lib/aws-sdk-s3/bucket_logging.rb +43 -6
  13. data/lib/aws-sdk-s3/bucket_notification.rb +32 -9
  14. data/lib/aws-sdk-s3/bucket_policy.rb +90 -6
  15. data/lib/aws-sdk-s3/bucket_region_cache.rb +9 -5
  16. data/lib/aws-sdk-s3/bucket_request_payment.rb +38 -8
  17. data/lib/aws-sdk-s3/bucket_tagging.rb +46 -7
  18. data/lib/aws-sdk-s3/bucket_versioning.rb +127 -9
  19. data/lib/aws-sdk-s3/bucket_website.rb +46 -7
  20. data/lib/aws-sdk-s3/client.rb +13729 -3146
  21. data/lib/aws-sdk-s3/client_api.rb +1604 -277
  22. data/lib/aws-sdk-s3/customizations/bucket.rb +31 -47
  23. data/lib/aws-sdk-s3/customizations/errors.rb +40 -0
  24. data/lib/aws-sdk-s3/customizations/object.rb +253 -82
  25. data/lib/aws-sdk-s3/customizations/object_summary.rb +5 -0
  26. data/lib/aws-sdk-s3/customizations/object_version.rb +13 -0
  27. data/lib/aws-sdk-s3/customizations/types/permanent_redirect.rb +26 -0
  28. data/lib/aws-sdk-s3/customizations.rb +28 -29
  29. data/lib/aws-sdk-s3/default_executor.rb +103 -0
  30. data/lib/aws-sdk-s3/encryption/client.rb +9 -5
  31. data/lib/aws-sdk-s3/encryption/decrypt_handler.rb +0 -4
  32. data/lib/aws-sdk-s3/encryption/default_cipher_provider.rb +2 -0
  33. data/lib/aws-sdk-s3/encryption/encrypt_handler.rb +2 -0
  34. data/lib/aws-sdk-s3/encryption/kms_cipher_provider.rb +15 -9
  35. data/lib/aws-sdk-s3/encryptionV2/client.rb +105 -26
  36. data/lib/aws-sdk-s3/encryptionV2/decrypt_handler.rb +7 -165
  37. data/lib/aws-sdk-s3/encryptionV2/decryption.rb +205 -0
  38. data/lib/aws-sdk-s3/encryptionV2/default_cipher_provider.rb +20 -3
  39. data/lib/aws-sdk-s3/encryptionV2/encrypt_handler.rb +2 -4
  40. data/lib/aws-sdk-s3/encryptionV2/io_encrypter.rb +2 -0
  41. data/lib/aws-sdk-s3/encryptionV2/kms_cipher_provider.rb +18 -6
  42. data/lib/aws-sdk-s3/encryptionV2/utils.rb +5 -0
  43. data/lib/aws-sdk-s3/encryptionV3/client.rb +885 -0
  44. data/lib/aws-sdk-s3/encryptionV3/decrypt_handler.rb +98 -0
  45. data/lib/aws-sdk-s3/encryptionV3/decryption.rb +244 -0
  46. data/lib/aws-sdk-s3/encryptionV3/default_cipher_provider.rb +159 -0
  47. data/lib/aws-sdk-s3/encryptionV3/default_key_provider.rb +35 -0
  48. data/lib/aws-sdk-s3/encryptionV3/encrypt_handler.rb +98 -0
  49. data/lib/aws-sdk-s3/encryptionV3/errors.rb +47 -0
  50. data/lib/aws-sdk-s3/encryptionV3/io_auth_decrypter.rb +60 -0
  51. data/lib/aws-sdk-s3/encryptionV3/io_decrypter.rb +35 -0
  52. data/lib/aws-sdk-s3/encryptionV3/io_encrypter.rb +84 -0
  53. data/lib/aws-sdk-s3/encryptionV3/key_provider.rb +28 -0
  54. data/lib/aws-sdk-s3/encryptionV3/kms_cipher_provider.rb +159 -0
  55. data/lib/aws-sdk-s3/encryptionV3/materials.rb +58 -0
  56. data/lib/aws-sdk-s3/encryptionV3/utils.rb +321 -0
  57. data/lib/aws-sdk-s3/encryption_v2.rb +1 -0
  58. data/lib/aws-sdk-s3/encryption_v3.rb +24 -0
  59. data/lib/aws-sdk-s3/endpoint_parameters.rb +181 -0
  60. data/lib/aws-sdk-s3/endpoint_provider.rb +889 -0
  61. data/lib/aws-sdk-s3/endpoints.rb +1544 -0
  62. data/lib/aws-sdk-s3/errors.rb +80 -1
  63. data/lib/aws-sdk-s3/event_streams.rb +1 -1
  64. data/lib/aws-sdk-s3/express_credentials.rb +55 -0
  65. data/lib/aws-sdk-s3/express_credentials_provider.rb +59 -0
  66. data/lib/aws-sdk-s3/file_downloader.rb +258 -82
  67. data/lib/aws-sdk-s3/file_uploader.rb +25 -14
  68. data/lib/aws-sdk-s3/legacy_signer.rb +17 -26
  69. data/lib/aws-sdk-s3/multipart_download_error.rb +8 -0
  70. data/lib/aws-sdk-s3/multipart_file_uploader.rb +111 -86
  71. data/lib/aws-sdk-s3/multipart_stream_uploader.rb +110 -92
  72. data/lib/aws-sdk-s3/multipart_upload.rb +304 -14
  73. data/lib/aws-sdk-s3/multipart_upload_error.rb +3 -4
  74. data/lib/aws-sdk-s3/multipart_upload_part.rb +344 -20
  75. data/lib/aws-sdk-s3/object.rb +2457 -225
  76. data/lib/aws-sdk-s3/object_acl.rb +76 -15
  77. data/lib/aws-sdk-s3/object_copier.rb +7 -5
  78. data/lib/aws-sdk-s3/object_multipart_copier.rb +48 -23
  79. data/lib/aws-sdk-s3/object_summary.rb +2033 -169
  80. data/lib/aws-sdk-s3/object_version.rb +470 -53
  81. data/lib/aws-sdk-s3/plugins/accelerate.rb +1 -39
  82. data/lib/aws-sdk-s3/plugins/access_grants.rb +178 -0
  83. data/lib/aws-sdk-s3/plugins/arn.rb +70 -0
  84. data/lib/aws-sdk-s3/plugins/bucket_dns.rb +3 -41
  85. data/lib/aws-sdk-s3/plugins/bucket_name_restrictions.rb +1 -6
  86. data/lib/aws-sdk-s3/plugins/checksum_algorithm.rb +44 -0
  87. data/lib/aws-sdk-s3/plugins/dualstack.rb +2 -49
  88. data/lib/aws-sdk-s3/plugins/endpoints.rb +86 -0
  89. data/lib/aws-sdk-s3/plugins/expect_100_continue.rb +3 -1
  90. data/lib/aws-sdk-s3/plugins/express_session_auth.rb +88 -0
  91. data/lib/aws-sdk-s3/plugins/get_bucket_location_fix.rb +1 -1
  92. data/lib/aws-sdk-s3/plugins/http_200_errors.rb +87 -26
  93. data/lib/aws-sdk-s3/plugins/iad_regional_endpoint.rb +8 -26
  94. data/lib/aws-sdk-s3/plugins/location_constraint.rb +3 -1
  95. data/lib/aws-sdk-s3/plugins/md5s.rb +10 -68
  96. data/lib/aws-sdk-s3/plugins/s3_signer.rb +48 -88
  97. data/lib/aws-sdk-s3/plugins/streaming_retry.rb +28 -9
  98. data/lib/aws-sdk-s3/plugins/url_encoded_keys.rb +2 -1
  99. data/lib/aws-sdk-s3/presigned_post.rb +99 -78
  100. data/lib/aws-sdk-s3/presigner.rb +50 -42
  101. data/lib/aws-sdk-s3/resource.rb +144 -15
  102. data/lib/aws-sdk-s3/transfer_manager.rb +321 -0
  103. data/lib/aws-sdk-s3/types.rb +12223 -4723
  104. data/lib/aws-sdk-s3/waiters.rb +1 -1
  105. data/lib/aws-sdk-s3.rb +37 -28
  106. data/sig/bucket.rbs +231 -0
  107. data/sig/bucket_acl.rbs +78 -0
  108. data/sig/bucket_cors.rbs +69 -0
  109. data/sig/bucket_lifecycle.rbs +88 -0
  110. data/sig/bucket_lifecycle_configuration.rbs +115 -0
  111. data/sig/bucket_logging.rbs +76 -0
  112. data/sig/bucket_notification.rbs +114 -0
  113. data/sig/bucket_policy.rbs +59 -0
  114. data/sig/bucket_request_payment.rbs +54 -0
  115. data/sig/bucket_tagging.rbs +65 -0
  116. data/sig/bucket_versioning.rbs +77 -0
  117. data/sig/bucket_website.rbs +93 -0
  118. data/sig/client.rbs +2612 -0
  119. data/sig/customizations/bucket.rbs +19 -0
  120. data/sig/customizations/object.rbs +38 -0
  121. data/sig/customizations/object_summary.rbs +35 -0
  122. data/sig/errors.rbs +44 -0
  123. data/sig/multipart_upload.rbs +120 -0
  124. data/sig/multipart_upload_part.rbs +109 -0
  125. data/sig/object.rbs +464 -0
  126. data/sig/object_acl.rbs +86 -0
  127. data/sig/object_summary.rbs +347 -0
  128. data/sig/object_version.rbs +143 -0
  129. data/sig/resource.rbs +141 -0
  130. data/sig/types.rbs +2899 -0
  131. data/sig/waiters.rbs +95 -0
  132. metadata +74 -16
  133. data/lib/aws-sdk-s3/plugins/bucket_arn.rb +0 -212
@@ -3,7 +3,7 @@
3
3
  # WARNING ABOUT GENERATED CODE
4
4
  #
5
5
  # This file is generated. See the contributing guide for more information:
6
- # https://github.com/aws/aws-sdk-ruby/blob/master/CONTRIBUTING.md
6
+ # https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md
7
7
  #
8
8
  # WARNING ABOUT GENERATED CODE
9
9
 
@@ -69,6 +69,13 @@ module Aws::S3
69
69
  end
70
70
 
71
71
  # The class of storage used to store the object.
72
+ #
73
+ # <note markdown="1"> **Directory buckets** - Directory buckets only support
74
+ # `EXPRESS_ONEZONE` (the S3 Express One Zone storage class) in
75
+ # Availability Zones and `ONEZONE_IA` (the S3 One Zone-Infrequent Access
76
+ # storage class) in Dedicated Local Zones.
77
+ #
78
+ # </note>
72
79
  # @return [String]
73
80
  def storage_class
74
81
  data[:storage_class]
@@ -76,6 +83,11 @@ module Aws::S3
76
83
 
77
84
  # Specifies the owner of the object that is part of the multipart
78
85
  # upload.
86
+ #
87
+ # <note markdown="1"> **Directory buckets** - The bucket owner is returned as the object
88
+ # owner for all the objects.
89
+ #
90
+ # </note>
79
91
  # @return [Types::Owner]
80
92
  def owner
81
93
  data[:owner]
@@ -87,6 +99,24 @@ module Aws::S3
87
99
  data[:initiator]
88
100
  end
89
101
 
102
+ # The algorithm that was used to create a checksum of the object.
103
+ # @return [String]
104
+ def checksum_algorithm
105
+ data[:checksum_algorithm]
106
+ end
107
+
108
+ # The checksum type that is used to calculate the object’s checksum
109
+ # value. For more information, see [Checking object integrity][1] in the
110
+ # *Amazon S3 User Guide*.
111
+ #
112
+ #
113
+ #
114
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
115
+ # @return [String]
116
+ def checksum_type
117
+ data[:checksum_type]
118
+ end
119
+
90
120
  # @!endgroup
91
121
 
92
122
  # @return [Client]
@@ -211,7 +241,9 @@ module Aws::S3
211
241
  :retry
212
242
  end
213
243
  end
214
- Aws::Waiters::Waiter.new(options).wait({})
244
+ Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
245
+ Aws::Waiters::Waiter.new(options).wait({})
246
+ end
215
247
  end
216
248
 
217
249
  # @!group Actions
@@ -220,18 +252,41 @@ module Aws::S3
220
252
  #
221
253
  # multipart_upload.abort({
222
254
  # request_payer: "requester", # accepts requester
255
+ # expected_bucket_owner: "AccountId",
256
+ # if_match_initiated_time: Time.now,
223
257
  # })
224
258
  # @param [Hash] options ({})
225
259
  # @option options [String] :request_payer
226
260
  # Confirms that the requester knows that they will be charged for the
227
261
  # request. Bucket owners need not specify this parameter in their
228
- # requests. For information about downloading objects from requester
229
- # pays buckets, see [Downloading Objects in Requestor Pays Buckets][1]
230
- # in the *Amazon S3 Developer Guide*.
262
+ # requests. If either the source or destination S3 bucket has Requester
263
+ # Pays enabled, the requester will pay for corresponding charges to copy
264
+ # the object. For information about downloading objects from Requester
265
+ # Pays buckets, see [Downloading Objects in Requester Pays Buckets][1]
266
+ # in the *Amazon S3 User Guide*.
267
+ #
268
+ # <note markdown="1"> This functionality is not supported for directory buckets.
269
+ #
270
+ # </note>
231
271
  #
232
272
  #
233
273
  #
234
274
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
275
+ # @option options [String] :expected_bucket_owner
276
+ # The account ID of the expected bucket owner. If the account ID that
277
+ # you provide does not match the actual owner of the bucket, the request
278
+ # fails with the HTTP status code `403 Forbidden` (access denied).
279
+ # @option options [Time,DateTime,Date,Integer,String] :if_match_initiated_time
280
+ # If present, this header aborts an in progress multipart upload only if
281
+ # it was initiated on the provided timestamp. If the initiated timestamp
282
+ # of the multipart upload does not match the provided value, the
283
+ # operation returns a `412 Precondition Failed` error. If the initiated
284
+ # timestamp matches or if the multipart upload doesn’t exist, the
285
+ # operation returns a `204 Success (No Content)` response.
286
+ #
287
+ # <note markdown="1"> This functionality is only supported for directory buckets.
288
+ #
289
+ # </note>
235
290
  # @return [Types::AbortMultipartUploadOutput]
236
291
  def abort(options = {})
237
292
  options = options.merge(
@@ -239,7 +294,9 @@ module Aws::S3
239
294
  key: @object_key,
240
295
  upload_id: @id
241
296
  )
242
- resp = @client.abort_multipart_upload(options)
297
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
298
+ @client.abort_multipart_upload(options)
299
+ end
243
300
  resp.data
244
301
  end
245
302
 
@@ -250,25 +307,198 @@ module Aws::S3
250
307
  # parts: [
251
308
  # {
252
309
  # etag: "ETag",
310
+ # checksum_crc32: "ChecksumCRC32",
311
+ # checksum_crc32c: "ChecksumCRC32C",
312
+ # checksum_crc64nvme: "ChecksumCRC64NVME",
313
+ # checksum_sha1: "ChecksumSHA1",
314
+ # checksum_sha256: "ChecksumSHA256",
253
315
  # part_number: 1,
254
316
  # },
255
317
  # ],
256
318
  # },
319
+ # checksum_crc32: "ChecksumCRC32",
320
+ # checksum_crc32c: "ChecksumCRC32C",
321
+ # checksum_crc64nvme: "ChecksumCRC64NVME",
322
+ # checksum_sha1: "ChecksumSHA1",
323
+ # checksum_sha256: "ChecksumSHA256",
324
+ # checksum_type: "COMPOSITE", # accepts COMPOSITE, FULL_OBJECT
325
+ # mpu_object_size: 1,
257
326
  # request_payer: "requester", # accepts requester
327
+ # expected_bucket_owner: "AccountId",
328
+ # if_match: "IfMatch",
329
+ # if_none_match: "IfNoneMatch",
330
+ # sse_customer_algorithm: "SSECustomerAlgorithm",
331
+ # sse_customer_key: "SSECustomerKey",
332
+ # sse_customer_key_md5: "SSECustomerKeyMD5",
258
333
  # })
259
334
  # @param [Hash] options ({})
260
335
  # @option options [Types::CompletedMultipartUpload] :multipart_upload
261
336
  # The container for the multipart upload request information.
337
+ # @option options [String] :checksum_crc32
338
+ # This header can be used as a data integrity check to verify that the
339
+ # data received is the same data that was originally sent. This header
340
+ # specifies the Base64 encoded, 32-bit `CRC32` checksum of the object.
341
+ # For more information, see [Checking object integrity][1] in the
342
+ # *Amazon S3 User Guide*.
343
+ #
344
+ #
345
+ #
346
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
347
+ # @option options [String] :checksum_crc32c
348
+ # This header can be used as a data integrity check to verify that the
349
+ # data received is the same data that was originally sent. This header
350
+ # specifies the Base64 encoded, 32-bit `CRC32C` checksum of the object.
351
+ # For more information, see [Checking object integrity][1] in the
352
+ # *Amazon S3 User Guide*.
353
+ #
354
+ #
355
+ #
356
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
357
+ # @option options [String] :checksum_crc64nvme
358
+ # This header can be used as a data integrity check to verify that the
359
+ # data received is the same data that was originally sent. This header
360
+ # specifies the Base64 encoded, 64-bit `CRC64NVME` checksum of the
361
+ # object. The `CRC64NVME` checksum is always a full object checksum. For
362
+ # more information, see [Checking object integrity in the Amazon S3 User
363
+ # Guide][1].
364
+ #
365
+ #
366
+ #
367
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
368
+ # @option options [String] :checksum_sha1
369
+ # This header can be used as a data integrity check to verify that the
370
+ # data received is the same data that was originally sent. This header
371
+ # specifies the Base64 encoded, 160-bit `SHA1` digest of the object. For
372
+ # more information, see [Checking object integrity][1] in the *Amazon S3
373
+ # User Guide*.
374
+ #
375
+ #
376
+ #
377
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
378
+ # @option options [String] :checksum_sha256
379
+ # This header can be used as a data integrity check to verify that the
380
+ # data received is the same data that was originally sent. This header
381
+ # specifies the Base64 encoded, 256-bit `SHA256` digest of the object.
382
+ # For more information, see [Checking object integrity][1] in the
383
+ # *Amazon S3 User Guide*.
384
+ #
385
+ #
386
+ #
387
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
388
+ # @option options [String] :checksum_type
389
+ # This header specifies the checksum type of the object, which
390
+ # determines how part-level checksums are combined to create an
391
+ # object-level checksum for multipart objects. You can use this header
392
+ # as a data integrity check to verify that the checksum type that is
393
+ # received is the same checksum that was specified. If the checksum type
394
+ # doesn’t match the checksum type that was specified for the object
395
+ # during the `CreateMultipartUpload` request, it’ll result in a
396
+ # `BadDigest` error. For more information, see Checking object integrity
397
+ # in the Amazon S3 User Guide.
398
+ # @option options [Integer] :mpu_object_size
399
+ # The expected total object size of the multipart upload request. If
400
+ # there’s a mismatch between the specified object size value and the
401
+ # actual object size value, it results in an `HTTP 400 InvalidRequest`
402
+ # error.
262
403
  # @option options [String] :request_payer
263
404
  # Confirms that the requester knows that they will be charged for the
264
405
  # request. Bucket owners need not specify this parameter in their
265
- # requests. For information about downloading objects from requester
266
- # pays buckets, see [Downloading Objects in Requestor Pays Buckets][1]
267
- # in the *Amazon S3 Developer Guide*.
406
+ # requests. If either the source or destination S3 bucket has Requester
407
+ # Pays enabled, the requester will pay for corresponding charges to copy
408
+ # the object. For information about downloading objects from Requester
409
+ # Pays buckets, see [Downloading Objects in Requester Pays Buckets][1]
410
+ # in the *Amazon S3 User Guide*.
411
+ #
412
+ # <note markdown="1"> This functionality is not supported for directory buckets.
413
+ #
414
+ # </note>
268
415
  #
269
416
  #
270
417
  #
271
418
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
419
+ # @option options [String] :expected_bucket_owner
420
+ # The account ID of the expected bucket owner. If the account ID that
421
+ # you provide does not match the actual owner of the bucket, the request
422
+ # fails with the HTTP status code `403 Forbidden` (access denied).
423
+ # @option options [String] :if_match
424
+ # Uploads the object only if the ETag (entity tag) value provided during
425
+ # the WRITE operation matches the ETag of the object in S3. If the ETag
426
+ # values do not match, the operation returns a `412 Precondition Failed`
427
+ # error.
428
+ #
429
+ # If a conflicting operation occurs during the upload S3 returns a `409
430
+ # ConditionalRequestConflict` response. On a 409 failure you should
431
+ # fetch the object's ETag, re-initiate the multipart upload with
432
+ # `CreateMultipartUpload`, and re-upload each part.
433
+ #
434
+ # Expects the ETag value as a string.
435
+ #
436
+ # For more information about conditional requests, see [RFC 7232][1], or
437
+ # [Conditional requests][2] in the *Amazon S3 User Guide*.
438
+ #
439
+ #
440
+ #
441
+ # [1]: https://tools.ietf.org/html/rfc7232
442
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/conditional-requests.html
443
+ # @option options [String] :if_none_match
444
+ # Uploads the object only if the object key name does not already exist
445
+ # in the bucket specified. Otherwise, Amazon S3 returns a `412
446
+ # Precondition Failed` error.
447
+ #
448
+ # If a conflicting operation occurs during the upload S3 returns a `409
449
+ # ConditionalRequestConflict` response. On a 409 failure you should
450
+ # re-initiate the multipart upload with `CreateMultipartUpload` and
451
+ # re-upload each part.
452
+ #
453
+ # Expects the '*' (asterisk) character.
454
+ #
455
+ # For more information about conditional requests, see [RFC 7232][1], or
456
+ # [Conditional requests][2] in the *Amazon S3 User Guide*.
457
+ #
458
+ #
459
+ #
460
+ # [1]: https://tools.ietf.org/html/rfc7232
461
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/conditional-requests.html
462
+ # @option options [String] :sse_customer_algorithm
463
+ # The server-side encryption (SSE) algorithm used to encrypt the object.
464
+ # This parameter is required only when the object was created using a
465
+ # checksum algorithm or if your bucket policy requires the use of SSE-C.
466
+ # For more information, see [Protecting data using SSE-C keys][1] in the
467
+ # *Amazon S3 User Guide*.
468
+ #
469
+ # <note markdown="1"> This functionality is not supported for directory buckets.
470
+ #
471
+ # </note>
472
+ #
473
+ #
474
+ #
475
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/ServerSideEncryptionCustomerKeys.html#ssec-require-condition-key
476
+ # @option options [String] :sse_customer_key
477
+ # The server-side encryption (SSE) customer managed key. This parameter
478
+ # is needed only when the object was created using a checksum algorithm.
479
+ # For more information, see [Protecting data using SSE-C keys][1] in the
480
+ # *Amazon S3 User Guide*.
481
+ #
482
+ # <note markdown="1"> This functionality is not supported for directory buckets.
483
+ #
484
+ # </note>
485
+ #
486
+ #
487
+ #
488
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html
489
+ # @option options [String] :sse_customer_key_md5
490
+ # The MD5 server-side encryption (SSE) customer managed key. This
491
+ # parameter is needed only when the object was created using a checksum
492
+ # algorithm. For more information, see [Protecting data using SSE-C
493
+ # keys][1] in the *Amazon S3 User Guide*.
494
+ #
495
+ # <note markdown="1"> This functionality is not supported for directory buckets.
496
+ #
497
+ # </note>
498
+ #
499
+ #
500
+ #
501
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html
272
502
  # @return [Object]
273
503
  def complete(options = {})
274
504
  options = options.merge(
@@ -276,7 +506,9 @@ module Aws::S3
276
506
  key: @object_key,
277
507
  upload_id: @id
278
508
  )
279
- @client.complete_multipart_upload(options)
509
+ Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
510
+ @client.complete_multipart_upload(options)
511
+ end
280
512
  Object.new(
281
513
  bucket_name: @bucket_name,
282
514
  key: @object_key,
@@ -311,18 +543,71 @@ module Aws::S3
311
543
  #
312
544
  # parts = multipart_upload.parts({
313
545
  # request_payer: "requester", # accepts requester
546
+ # expected_bucket_owner: "AccountId",
547
+ # sse_customer_algorithm: "SSECustomerAlgorithm",
548
+ # sse_customer_key: "SSECustomerKey",
549
+ # sse_customer_key_md5: "SSECustomerKeyMD5",
314
550
  # })
315
551
  # @param [Hash] options ({})
316
552
  # @option options [String] :request_payer
317
553
  # Confirms that the requester knows that they will be charged for the
318
554
  # request. Bucket owners need not specify this parameter in their
319
- # requests. For information about downloading objects from requester
320
- # pays buckets, see [Downloading Objects in Requestor Pays Buckets][1]
321
- # in the *Amazon S3 Developer Guide*.
555
+ # requests. If either the source or destination S3 bucket has Requester
556
+ # Pays enabled, the requester will pay for corresponding charges to copy
557
+ # the object. For information about downloading objects from Requester
558
+ # Pays buckets, see [Downloading Objects in Requester Pays Buckets][1]
559
+ # in the *Amazon S3 User Guide*.
560
+ #
561
+ # <note markdown="1"> This functionality is not supported for directory buckets.
562
+ #
563
+ # </note>
322
564
  #
323
565
  #
324
566
  #
325
567
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
568
+ # @option options [String] :expected_bucket_owner
569
+ # The account ID of the expected bucket owner. If the account ID that
570
+ # you provide does not match the actual owner of the bucket, the request
571
+ # fails with the HTTP status code `403 Forbidden` (access denied).
572
+ # @option options [String] :sse_customer_algorithm
573
+ # The server-side encryption (SSE) algorithm used to encrypt the object.
574
+ # This parameter is needed only when the object was created using a
575
+ # checksum algorithm. For more information, see [Protecting data using
576
+ # SSE-C keys][1] in the *Amazon S3 User Guide*.
577
+ #
578
+ # <note markdown="1"> This functionality is not supported for directory buckets.
579
+ #
580
+ # </note>
581
+ #
582
+ #
583
+ #
584
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html
585
+ # @option options [String] :sse_customer_key
586
+ # The server-side encryption (SSE) customer managed key. This parameter
587
+ # is needed only when the object was created using a checksum algorithm.
588
+ # For more information, see [Protecting data using SSE-C keys][1] in the
589
+ # *Amazon S3 User Guide*.
590
+ #
591
+ # <note markdown="1"> This functionality is not supported for directory buckets.
592
+ #
593
+ # </note>
594
+ #
595
+ #
596
+ #
597
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html
598
+ # @option options [String] :sse_customer_key_md5
599
+ # The MD5 server-side encryption (SSE) customer managed key. This
600
+ # parameter is needed only when the object was created using a checksum
601
+ # algorithm. For more information, see [Protecting data using SSE-C
602
+ # keys][1] in the *Amazon S3 User Guide*.
603
+ #
604
+ # <note markdown="1"> This functionality is not supported for directory buckets.
605
+ #
606
+ # </note>
607
+ #
608
+ #
609
+ #
610
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html
326
611
  # @return [MultipartUploadPart::Collection]
327
612
  def parts(options = {})
328
613
  batches = Enumerator.new do |y|
@@ -331,7 +616,9 @@ module Aws::S3
331
616
  key: @object_key,
332
617
  upload_id: @id
333
618
  )
334
- resp = @client.list_parts(options)
619
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
620
+ @client.list_parts(options)
621
+ end
335
622
  resp.each_page do |page|
336
623
  batch = []
337
624
  page.data.parts.each do |p|
@@ -399,3 +686,6 @@ module Aws::S3
399
686
  class Collection < Aws::Resources::Collection; end
400
687
  end
401
688
  end
689
+
690
+ # Load customizations if they exist
691
+ require 'aws-sdk-s3/customizations/multipart_upload'
@@ -2,17 +2,16 @@
2
2
 
3
3
  module Aws
4
4
  module S3
5
+ # Raise when multipart upload fails to complete.
5
6
  class MultipartUploadError < StandardError
6
7
 
7
- def initialize(message, errors)
8
+ def initialize(message, errors = [])
8
9
  @errors = errors
9
10
  super(message)
10
11
  end
11
12
 
12
- # @return [Array<StandardError>] The list of errors encountered
13
- # when uploading or aborting the upload.
13
+ # @return [Array<StandardError>] The list of errors encountered when uploading or aborting the upload.
14
14
  attr_reader :errors
15
-
16
15
  end
17
16
  end
18
17
  end