aws-sdk-s3 1.128.0 → 1.199.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +450 -1
  3. data/VERSION +1 -1
  4. data/lib/aws-sdk-s3/access_grants_credentials.rb +57 -0
  5. data/lib/aws-sdk-s3/access_grants_credentials_provider.rb +250 -0
  6. data/lib/aws-sdk-s3/bucket.rb +720 -128
  7. data/lib/aws-sdk-s3/bucket_acl.rb +18 -17
  8. data/lib/aws-sdk-s3/bucket_cors.rb +22 -21
  9. data/lib/aws-sdk-s3/bucket_lifecycle.rb +23 -18
  10. data/lib/aws-sdk-s3/bucket_lifecycle_configuration.rb +76 -19
  11. data/lib/aws-sdk-s3/bucket_logging.rb +21 -14
  12. data/lib/aws-sdk-s3/bucket_notification.rb +6 -6
  13. data/lib/aws-sdk-s3/bucket_policy.rb +65 -20
  14. data/lib/aws-sdk-s3/bucket_region_cache.rb +9 -5
  15. data/lib/aws-sdk-s3/bucket_request_payment.rb +15 -15
  16. data/lib/aws-sdk-s3/bucket_tagging.rb +19 -19
  17. data/lib/aws-sdk-s3/bucket_versioning.rb +41 -41
  18. data/lib/aws-sdk-s3/bucket_website.rb +19 -19
  19. data/lib/aws-sdk-s3/client.rb +9352 -3264
  20. data/lib/aws-sdk-s3/client_api.rb +697 -164
  21. data/lib/aws-sdk-s3/customizations/bucket.rb +1 -1
  22. data/lib/aws-sdk-s3/customizations/errors.rb +16 -3
  23. data/lib/aws-sdk-s3/customizations/object.rb +112 -56
  24. data/lib/aws-sdk-s3/customizations/object_summary.rb +5 -0
  25. data/lib/aws-sdk-s3/customizations/object_version.rb +13 -0
  26. data/lib/aws-sdk-s3/customizations.rb +26 -31
  27. data/lib/aws-sdk-s3/encryption/client.rb +2 -2
  28. data/lib/aws-sdk-s3/encryption/kms_cipher_provider.rb +2 -2
  29. data/lib/aws-sdk-s3/encryptionV2/client.rb +2 -2
  30. data/lib/aws-sdk-s3/encryptionV2/kms_cipher_provider.rb +2 -2
  31. data/lib/aws-sdk-s3/endpoint_parameters.rb +54 -15
  32. data/lib/aws-sdk-s3/endpoint_provider.rb +439 -456
  33. data/lib/aws-sdk-s3/endpoints.rb +629 -1261
  34. data/lib/aws-sdk-s3/errors.rb +58 -0
  35. data/lib/aws-sdk-s3/express_credentials.rb +55 -0
  36. data/lib/aws-sdk-s3/express_credentials_provider.rb +59 -0
  37. data/lib/aws-sdk-s3/file_downloader.rb +156 -69
  38. data/lib/aws-sdk-s3/file_uploader.rb +4 -6
  39. data/lib/aws-sdk-s3/legacy_signer.rb +2 -1
  40. data/lib/aws-sdk-s3/multipart_download_error.rb +8 -0
  41. data/lib/aws-sdk-s3/multipart_file_uploader.rb +56 -69
  42. data/lib/aws-sdk-s3/multipart_stream_uploader.rb +84 -91
  43. data/lib/aws-sdk-s3/multipart_upload.rb +179 -26
  44. data/lib/aws-sdk-s3/multipart_upload_error.rb +3 -4
  45. data/lib/aws-sdk-s3/multipart_upload_part.rb +201 -60
  46. data/lib/aws-sdk-s3/object.rb +2007 -281
  47. data/lib/aws-sdk-s3/object_acl.rb +43 -23
  48. data/lib/aws-sdk-s3/object_copier.rb +1 -1
  49. data/lib/aws-sdk-s3/object_multipart_copier.rb +44 -25
  50. data/lib/aws-sdk-s3/object_summary.rb +1735 -232
  51. data/lib/aws-sdk-s3/object_version.rb +394 -52
  52. data/lib/aws-sdk-s3/plugins/access_grants.rb +178 -0
  53. data/lib/aws-sdk-s3/plugins/checksum_algorithm.rb +31 -0
  54. data/lib/aws-sdk-s3/plugins/endpoints.rb +32 -208
  55. data/lib/aws-sdk-s3/plugins/express_session_auth.rb +88 -0
  56. data/lib/aws-sdk-s3/plugins/http_200_errors.rb +55 -18
  57. data/lib/aws-sdk-s3/plugins/location_constraint.rb +3 -1
  58. data/lib/aws-sdk-s3/plugins/md5s.rb +10 -70
  59. data/lib/aws-sdk-s3/plugins/s3_signer.rb +7 -2
  60. data/lib/aws-sdk-s3/plugins/streaming_retry.rb +5 -7
  61. data/lib/aws-sdk-s3/plugins/url_encoded_keys.rb +2 -1
  62. data/lib/aws-sdk-s3/presigned_post.rb +52 -43
  63. data/lib/aws-sdk-s3/presigner.rb +9 -7
  64. data/lib/aws-sdk-s3/resource.rb +127 -22
  65. data/lib/aws-sdk-s3/transfer_manager.rb +252 -0
  66. data/lib/aws-sdk-s3/types.rb +8068 -1887
  67. data/lib/aws-sdk-s3.rb +35 -31
  68. data/sig/bucket.rbs +231 -0
  69. data/sig/bucket_acl.rbs +78 -0
  70. data/sig/bucket_cors.rbs +69 -0
  71. data/sig/bucket_lifecycle.rbs +88 -0
  72. data/sig/bucket_lifecycle_configuration.rbs +115 -0
  73. data/sig/bucket_logging.rbs +76 -0
  74. data/sig/bucket_notification.rbs +114 -0
  75. data/sig/bucket_policy.rbs +59 -0
  76. data/sig/bucket_request_payment.rbs +54 -0
  77. data/sig/bucket_tagging.rbs +65 -0
  78. data/sig/bucket_versioning.rbs +77 -0
  79. data/sig/bucket_website.rbs +93 -0
  80. data/sig/client.rbs +2584 -0
  81. data/sig/customizations/bucket.rbs +19 -0
  82. data/sig/customizations/object.rbs +38 -0
  83. data/sig/customizations/object_summary.rbs +35 -0
  84. data/sig/errors.rbs +44 -0
  85. data/sig/multipart_upload.rbs +120 -0
  86. data/sig/multipart_upload_part.rbs +109 -0
  87. data/sig/object.rbs +462 -0
  88. data/sig/object_acl.rbs +86 -0
  89. data/sig/object_summary.rbs +345 -0
  90. data/sig/object_version.rbs +143 -0
  91. data/sig/resource.rbs +141 -0
  92. data/sig/types.rbs +2866 -0
  93. data/sig/waiters.rbs +95 -0
  94. metadata +44 -12
  95. data/lib/aws-sdk-s3/plugins/skip_whole_multipart_get_checksums.rb +0 -31
@@ -41,6 +41,31 @@ module Aws::S3
41
41
  data[:creation_date]
42
42
  end
43
43
 
44
+ # `BucketRegion` indicates the Amazon Web Services region where the
45
+ # bucket is located. If the request contains at least one valid
46
+ # parameter, it is included in the response.
47
+ # @return [String]
48
+ def bucket_region
49
+ data[:bucket_region]
50
+ end
51
+
52
+ # The Amazon Resource Name (ARN) of the S3 bucket. ARNs uniquely
53
+ # identify Amazon Web Services resources across all of Amazon Web
54
+ # Services.
55
+ #
56
+ # <note markdown="1"> This parameter is only supported for S3 directory buckets. For more
57
+ # information, see [Using tags with directory buckets][1].
58
+ #
59
+ # </note>
60
+ #
61
+ #
62
+ #
63
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-buckets-tagging.html
64
+ # @return [String]
65
+ def bucket_arn
66
+ data[:bucket_arn]
67
+ end
68
+
44
69
  # @!endgroup
45
70
 
46
71
  # @return [Client]
@@ -95,7 +120,7 @@ module Aws::S3
95
120
  options, params = separate_params_and_options(options)
96
121
  waiter = Waiters::BucketExists.new(options)
97
122
  yield_waiter_and_warn(waiter, &block) if block_given?
98
- Aws::Plugins::UserAgent.feature('resource') do
123
+ Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
99
124
  waiter.wait(params.merge(bucket: @name))
100
125
  end
101
126
  Bucket.new({
@@ -114,7 +139,7 @@ module Aws::S3
114
139
  options, params = separate_params_and_options(options)
115
140
  waiter = Waiters::BucketNotExists.new(options)
116
141
  yield_waiter_and_warn(waiter, &block) if block_given?
117
- Aws::Plugins::UserAgent.feature('resource') do
142
+ Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
118
143
  waiter.wait(params.merge(bucket: @name))
119
144
  end
120
145
  Bucket.new({
@@ -217,7 +242,7 @@ module Aws::S3
217
242
  :retry
218
243
  end
219
244
  end
220
- Aws::Plugins::UserAgent.feature('resource') do
245
+ Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
221
246
  Aws::Waiters::Waiter.new(options).wait({})
222
247
  end
223
248
  end
@@ -229,7 +254,21 @@ module Aws::S3
229
254
  # bucket.create({
230
255
  # acl: "private", # accepts private, public-read, public-read-write, authenticated-read
231
256
  # 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
257
+ # 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-south-2, ap-southeast-1, ap-southeast-2, ap-southeast-3, ap-southeast-4, ap-southeast-5, ca-central-1, cn-north-1, cn-northwest-1, EU, eu-central-1, eu-central-2, eu-north-1, eu-south-1, eu-south-2, eu-west-1, eu-west-2, eu-west-3, il-central-1, me-central-1, me-south-1, sa-east-1, us-east-2, us-gov-east-1, us-gov-west-1, us-west-1, us-west-2
258
+ # location: {
259
+ # type: "AvailabilityZone", # accepts AvailabilityZone, LocalZone
260
+ # name: "LocationNameAsString",
261
+ # },
262
+ # bucket: {
263
+ # data_redundancy: "SingleAvailabilityZone", # accepts SingleAvailabilityZone, SingleLocalZone
264
+ # type: "Directory", # accepts Directory
265
+ # },
266
+ # tags: [
267
+ # {
268
+ # key: "ObjectKey", # required
269
+ # value: "Value", # required
270
+ # },
271
+ # ],
233
272
  # },
234
273
  # grant_full_control: "GrantFullControl",
235
274
  # grant_read: "GrantRead",
@@ -242,46 +281,91 @@ module Aws::S3
242
281
  # @param [Hash] options ({})
243
282
  # @option options [String] :acl
244
283
  # The canned ACL to apply to the bucket.
284
+ #
285
+ # <note markdown="1"> This functionality is not supported for directory buckets.
286
+ #
287
+ # </note>
245
288
  # @option options [Types::CreateBucketConfiguration] :create_bucket_configuration
246
289
  # The configuration information for the bucket.
247
290
  # @option options [String] :grant_full_control
248
291
  # Allows grantee the read, write, read ACP, and write ACP permissions on
249
292
  # the bucket.
293
+ #
294
+ # <note markdown="1"> This functionality is not supported for directory buckets.
295
+ #
296
+ # </note>
250
297
  # @option options [String] :grant_read
251
298
  # Allows grantee to list the objects in the bucket.
299
+ #
300
+ # <note markdown="1"> This functionality is not supported for directory buckets.
301
+ #
302
+ # </note>
252
303
  # @option options [String] :grant_read_acp
253
304
  # Allows grantee to read the bucket ACL.
305
+ #
306
+ # <note markdown="1"> This functionality is not supported for directory buckets.
307
+ #
308
+ # </note>
254
309
  # @option options [String] :grant_write
255
310
  # Allows grantee to create new objects in the bucket.
256
311
  #
257
312
  # For the bucket and object owners of existing objects, also allows
258
313
  # deletions and overwrites of those objects.
314
+ #
315
+ # <note markdown="1"> This functionality is not supported for directory buckets.
316
+ #
317
+ # </note>
259
318
  # @option options [String] :grant_write_acp
260
319
  # Allows grantee to write the ACL for the applicable bucket.
320
+ #
321
+ # <note markdown="1"> This functionality is not supported for directory buckets.
322
+ #
323
+ # </note>
261
324
  # @option options [Boolean] :object_lock_enabled_for_bucket
262
325
  # Specifies whether you want S3 Object Lock to be enabled for the new
263
326
  # bucket.
327
+ #
328
+ # <note markdown="1"> This functionality is not supported for directory buckets.
329
+ #
330
+ # </note>
264
331
  # @option options [String] :object_ownership
265
332
  # The container element for object ownership for a bucket's ownership
266
333
  # controls.
267
334
  #
268
- # BucketOwnerPreferred - Objects uploaded to the bucket change ownership
269
- # to the bucket owner if the objects are uploaded with the
335
+ # `BucketOwnerPreferred` - Objects uploaded to the bucket change
336
+ # ownership to the bucket owner if the objects are uploaded with the
270
337
  # `bucket-owner-full-control` canned ACL.
271
338
  #
272
- # ObjectWriter - The uploading account will own the object if the object
273
- # is uploaded with the `bucket-owner-full-control` canned ACL.
339
+ # `ObjectWriter` - The uploading account will own the object if the
340
+ # object is uploaded with the `bucket-owner-full-control` canned ACL.
341
+ #
342
+ # `BucketOwnerEnforced` - Access control lists (ACLs) are disabled and
343
+ # no longer affect permissions. The bucket owner automatically owns and
344
+ # has full control over every object in the bucket. The bucket only
345
+ # accepts PUT requests that don't specify an ACL or specify bucket
346
+ # owner full control ACLs (such as the predefined
347
+ # `bucket-owner-full-control` canned ACL or a custom ACL in XML format
348
+ # that grants the same permissions).
349
+ #
350
+ # By default, `ObjectOwnership` is set to `BucketOwnerEnforced` and ACLs
351
+ # are disabled. We recommend keeping ACLs disabled, except in uncommon
352
+ # use cases where you must control access for each object individually.
353
+ # For more information about S3 Object Ownership, see [Controlling
354
+ # ownership of objects and disabling ACLs for your bucket][1] in the
355
+ # *Amazon S3 User Guide*.
356
+ #
357
+ # <note markdown="1"> This functionality is not supported for directory buckets. Directory
358
+ # buckets use the bucket owner enforced setting for S3 Object Ownership.
274
359
  #
275
- # BucketOwnerEnforced - Access control lists (ACLs) are disabled and no
276
- # longer affect permissions. The bucket owner automatically owns and has
277
- # full control over every object in the bucket. The bucket only accepts
278
- # PUT requests that don't specify an ACL or bucket owner full control
279
- # ACLs, such as the `bucket-owner-full-control` canned ACL or an
280
- # equivalent form of this ACL expressed in the XML format.
360
+ # </note>
361
+ #
362
+ #
363
+ #
364
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html
281
365
  # @return [Types::CreateBucketOutput]
282
366
  def create(options = {})
283
367
  options = options.merge(bucket: @name)
284
- resp = Aws::Plugins::UserAgent.feature('resource') do
368
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
285
369
  @client.create_bucket(options)
286
370
  end
287
371
  resp.data
@@ -294,13 +378,19 @@ module Aws::S3
294
378
  # })
295
379
  # @param [Hash] options ({})
296
380
  # @option options [String] :expected_bucket_owner
297
- # The account ID of the expected bucket owner. If the bucket is owned by
298
- # a different account, the request fails with the HTTP status code `403
299
- # Forbidden` (access denied).
381
+ # The account ID of the expected bucket owner. If the account ID that
382
+ # you provide does not match the actual owner of the bucket, the request
383
+ # fails with the HTTP status code `403 Forbidden` (access denied).
384
+ #
385
+ # <note markdown="1"> For directory buckets, this header is not supported in this API
386
+ # operation. If you specify this header, the request fails with the HTTP
387
+ # status code `501 Not Implemented`.
388
+ #
389
+ # </note>
300
390
  # @return [EmptyStructure]
301
391
  def delete(options = {})
302
392
  options = options.merge(bucket: @name)
303
- resp = Aws::Plugins::UserAgent.feature('resource') do
393
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
304
394
  @client.delete_bucket(options)
305
395
  end
306
396
  resp.data
@@ -314,6 +404,9 @@ module Aws::S3
314
404
  # {
315
405
  # key: "ObjectKey", # required
316
406
  # version_id: "ObjectVersionId",
407
+ # etag: "ETag",
408
+ # last_modified_time: Time.now,
409
+ # size: 1,
317
410
  # },
318
411
  # ],
319
412
  # quiet: false,
@@ -322,7 +415,7 @@ module Aws::S3
322
415
  # request_payer: "requester", # accepts requester
323
416
  # bypass_governance_retention: false,
324
417
  # expected_bucket_owner: "AccountId",
325
- # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256
418
+ # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256, CRC64NVME
326
419
  # })
327
420
  # @param [Hash] options ({})
328
421
  # @option options [required, Types::Delete] :delete
@@ -332,13 +425,36 @@ module Aws::S3
332
425
  # space, and the value that is displayed on your authentication device.
333
426
  # Required to permanently delete a versioned object if versioning is
334
427
  # configured with MFA delete enabled.
428
+ #
429
+ # When performing the `DeleteObjects` operation on an MFA delete enabled
430
+ # bucket, which attempts to delete the specified versioned objects, you
431
+ # must include an MFA token. If you don't provide an MFA token, the
432
+ # entire request will fail, even if there are non-versioned objects that
433
+ # you are trying to delete. If you provide an invalid token, whether
434
+ # there are versioned object keys in the request or not, the entire
435
+ # Multi-Object Delete request will fail. For information about MFA
436
+ # Delete, see [ MFA Delete][1] in the *Amazon S3 User Guide*.
437
+ #
438
+ # <note markdown="1"> This functionality is not supported for directory buckets.
439
+ #
440
+ # </note>
441
+ #
442
+ #
443
+ #
444
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html#MultiFactorAuthenticationDelete
335
445
  # @option options [String] :request_payer
336
446
  # Confirms that the requester knows that they will be charged for the
337
447
  # request. Bucket owners need not specify this parameter in their
338
- # requests. For information about downloading objects from Requester
448
+ # requests. If either the source or destination S3 bucket has Requester
449
+ # Pays enabled, the requester will pay for corresponding charges to copy
450
+ # the object. For information about downloading objects from Requester
339
451
  # Pays buckets, see [Downloading Objects in Requester Pays Buckets][1]
340
452
  # in the *Amazon S3 User Guide*.
341
453
  #
454
+ # <note markdown="1"> This functionality is not supported for directory buckets.
455
+ #
456
+ # </note>
457
+ #
342
458
  #
343
459
  #
344
460
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
@@ -346,32 +462,53 @@ module Aws::S3
346
462
  # Specifies whether you want to delete this object even if it has a
347
463
  # Governance-type Object Lock in place. To use this header, you must
348
464
  # have the `s3:BypassGovernanceRetention` permission.
465
+ #
466
+ # <note markdown="1"> This functionality is not supported for directory buckets.
467
+ #
468
+ # </note>
349
469
  # @option options [String] :expected_bucket_owner
350
- # The account ID of the expected bucket owner. If the bucket is owned by
351
- # a different account, the request fails with the HTTP status code `403
352
- # Forbidden` (access denied).
470
+ # The account ID of the expected bucket owner. If the account ID that
471
+ # you provide does not match the actual owner of the bucket, the request
472
+ # fails with the HTTP status code `403 Forbidden` (access denied).
353
473
  # @option options [String] :checksum_algorithm
354
474
  # Indicates the algorithm used to create the checksum for the object
355
- # when using the SDK. This header will not provide any additional
356
- # functionality if not using the SDK. When sending this header, there
357
- # must be a corresponding `x-amz-checksum` or `x-amz-trailer` header
358
- # sent. Otherwise, Amazon S3 fails the request with the HTTP status code
359
- # `400 Bad Request`. For more information, see [Checking object
360
- # integrity][1] in the *Amazon S3 User Guide*.
475
+ # when you use the SDK. This header will not provide any additional
476
+ # functionality if you don't use the SDK. When you send this header,
477
+ # there must be a corresponding `x-amz-checksum-algorithm ` or
478
+ # `x-amz-trailer` header sent. Otherwise, Amazon S3 fails the request
479
+ # with the HTTP status code `400 Bad Request`.
480
+ #
481
+ # For the `x-amz-checksum-algorithm ` header, replace ` algorithm ` with
482
+ # the supported algorithm from the following list:
483
+ #
484
+ # * `CRC32`
485
+ #
486
+ # * `CRC32C`
487
+ #
488
+ # * `CRC64NVME`
489
+ #
490
+ # * `SHA1`
491
+ #
492
+ # * `SHA256`
493
+ #
494
+ # For more information, see [Checking object integrity][1] in the
495
+ # *Amazon S3 User Guide*.
496
+ #
497
+ # If the individual checksum value you provide through
498
+ # `x-amz-checksum-algorithm ` doesn't match the checksum algorithm you
499
+ # set through `x-amz-sdk-checksum-algorithm`, Amazon S3 fails the
500
+ # request with a `BadDigest` error.
361
501
  #
362
502
  # If you provide an individual checksum, Amazon S3 ignores any provided
363
503
  # `ChecksumAlgorithm` parameter.
364
504
  #
365
- # This checksum algorithm must be the same for all parts and it match
366
- # the checksum value supplied in the `CreateMultipartUpload` request.
367
- #
368
505
  #
369
506
  #
370
507
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
371
508
  # @return [Types::DeleteObjectsOutput]
372
509
  def delete_objects(options = {})
373
510
  options = options.merge(bucket: @name)
374
- resp = Aws::Plugins::UserAgent.feature('resource') do
511
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
375
512
  @client.delete_objects(options)
376
513
  end
377
514
  resp.data
@@ -389,22 +526,26 @@ module Aws::S3
389
526
  # content_length: 1,
390
527
  # content_md5: "ContentMD5",
391
528
  # content_type: "ContentType",
392
- # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256
529
+ # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256, CRC64NVME
393
530
  # checksum_crc32: "ChecksumCRC32",
394
531
  # checksum_crc32c: "ChecksumCRC32C",
532
+ # checksum_crc64nvme: "ChecksumCRC64NVME",
395
533
  # checksum_sha1: "ChecksumSHA1",
396
534
  # checksum_sha256: "ChecksumSHA256",
397
535
  # expires: Time.now,
536
+ # if_match: "IfMatch",
537
+ # if_none_match: "IfNoneMatch",
398
538
  # grant_full_control: "GrantFullControl",
399
539
  # grant_read: "GrantRead",
400
540
  # grant_read_acp: "GrantReadACP",
401
541
  # grant_write_acp: "GrantWriteACP",
402
542
  # key: "ObjectKey", # required
543
+ # write_offset_bytes: 1,
403
544
  # metadata: {
404
545
  # "MetadataKey" => "MetadataValue",
405
546
  # },
406
- # server_side_encryption: "AES256", # accepts AES256, aws:kms, aws:kms:dsse
407
- # storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE, OUTPOSTS, GLACIER_IR, SNOW
547
+ # server_side_encryption: "AES256", # accepts AES256, aws:fsx, aws:kms, aws:kms:dsse
548
+ # storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE, OUTPOSTS, GLACIER_IR, SNOW, EXPRESS_ONEZONE, FSX_OPENZFS
408
549
  # website_redirect_location: "WebsiteRedirectLocation",
409
550
  # sse_customer_algorithm: "SSECustomerAlgorithm",
410
551
  # sse_customer_key: "SSECustomerKey",
@@ -422,13 +563,41 @@ module Aws::S3
422
563
  # @param [Hash] options ({})
423
564
  # @option options [String] :acl
424
565
  # The canned ACL to apply to the object. For more information, see
425
- # [Canned ACL][1].
566
+ # [Canned ACL][1] in the *Amazon S3 User Guide*.
567
+ #
568
+ # When adding a new object, you can use headers to grant ACL-based
569
+ # permissions to individual Amazon Web Services accounts or to
570
+ # predefined groups defined by Amazon S3. These permissions are then
571
+ # added to the ACL on the object. By default, all objects are private.
572
+ # Only the owner has full access control. For more information, see
573
+ # [Access Control List (ACL) Overview][2] and [Managing ACLs Using the
574
+ # REST API][3] in the *Amazon S3 User Guide*.
575
+ #
576
+ # If the bucket that you're uploading objects to uses the bucket owner
577
+ # enforced setting for S3 Object Ownership, ACLs are disabled and no
578
+ # longer affect permissions. Buckets that use this setting only accept
579
+ # PUT requests that don't specify an ACL or PUT requests that specify
580
+ # bucket owner full control ACLs, such as the
581
+ # `bucket-owner-full-control` canned ACL or an equivalent form of this
582
+ # ACL expressed in the XML format. PUT requests that contain other ACLs
583
+ # (for example, custom grants to certain Amazon Web Services accounts)
584
+ # fail and return a `400` error with the error code
585
+ # `AccessControlListNotSupported`. For more information, see [
586
+ # Controlling ownership of objects and disabling ACLs][4] in the *Amazon
587
+ # S3 User Guide*.
588
+ #
589
+ # <note markdown="1"> * This functionality is not supported for directory buckets.
590
+ #
591
+ # * This functionality is not supported for Amazon S3 on Outposts.
426
592
  #
427
- # This action is not supported by Amazon S3 on Outposts.
593
+ # </note>
428
594
  #
429
595
  #
430
596
  #
431
597
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#CannedACL
598
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html
599
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/dev/acl-using-rest-api.html
600
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/about-object-ownership.html
432
601
  # @option options [String, StringIO, File] :body
433
602
  # Object data.
434
603
  # @option options [String] :cache_control
@@ -467,7 +636,7 @@ module Aws::S3
467
636
  #
468
637
  # [1]: https://www.rfc-editor.org/rfc/rfc9110.html#name-content-length
469
638
  # @option options [String] :content_md5
470
- # The base64-encoded 128-bit MD5 digest of the message (without the
639
+ # The Base64 encoded 128-bit `MD5` digest of the message (without the
471
640
  # headers) according to RFC 1864. This header can be used as a message
472
641
  # integrity check to verify that the data is the same data that was
473
642
  # originally sent. Although it is optional, we recommend using the
@@ -475,9 +644,22 @@ module Aws::S3
475
644
  # information about REST request authentication, see [REST
476
645
  # Authentication][1].
477
646
  #
647
+ # <note markdown="1"> The `Content-MD5` or `x-amz-sdk-checksum-algorithm` header is required
648
+ # for any request to upload an object with a retention period configured
649
+ # using Amazon S3 Object Lock. For more information, see [Uploading
650
+ # objects to an Object Lock enabled bucket ][2] in the *Amazon S3 User
651
+ # Guide*.
652
+ #
653
+ # </note>
654
+ #
655
+ # <note markdown="1"> This functionality is not supported for directory buckets.
656
+ #
657
+ # </note>
658
+ #
478
659
  #
479
660
  #
480
661
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html
662
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-managing.html#object-lock-put-object
481
663
  # @option options [String] :content_type
482
664
  # A standard MIME type describing the format of the contents. For more
483
665
  # information, see
@@ -488,25 +670,54 @@ module Aws::S3
488
670
  # [1]: https://www.rfc-editor.org/rfc/rfc9110.html#name-content-type
489
671
  # @option options [String] :checksum_algorithm
490
672
  # Indicates the algorithm used to create the checksum for the object
491
- # when using the SDK. This header will not provide any additional
492
- # functionality if not using the SDK. When sending this header, there
493
- # must be a corresponding `x-amz-checksum` or `x-amz-trailer` header
494
- # sent. Otherwise, Amazon S3 fails the request with the HTTP status code
495
- # `400 Bad Request`. For more information, see [Checking object
496
- # integrity][1] in the *Amazon S3 User Guide*.
673
+ # when you use the SDK. This header will not provide any additional
674
+ # functionality if you don't use the SDK. When you send this header,
675
+ # there must be a corresponding `x-amz-checksum-algorithm ` or
676
+ # `x-amz-trailer` header sent. Otherwise, Amazon S3 fails the request
677
+ # with the HTTP status code `400 Bad Request`.
497
678
  #
498
- # If you provide an individual checksum, Amazon S3 ignores any provided
499
- # `ChecksumAlgorithm` parameter.
679
+ # For the `x-amz-checksum-algorithm ` header, replace ` algorithm ` with
680
+ # the supported algorithm from the following list:
681
+ #
682
+ # * `CRC32`
683
+ #
684
+ # * `CRC32C`
685
+ #
686
+ # * `CRC64NVME`
687
+ #
688
+ # * `SHA1`
689
+ #
690
+ # * `SHA256`
691
+ #
692
+ # For more information, see [Checking object integrity][1] in the
693
+ # *Amazon S3 User Guide*.
694
+ #
695
+ # If the individual checksum value you provide through
696
+ # `x-amz-checksum-algorithm ` doesn't match the checksum algorithm you
697
+ # set through `x-amz-sdk-checksum-algorithm`, Amazon S3 fails the
698
+ # request with a `BadDigest` error.
699
+ #
700
+ # <note markdown="1"> The `Content-MD5` or `x-amz-sdk-checksum-algorithm` header is required
701
+ # for any request to upload an object with a retention period configured
702
+ # using Amazon S3 Object Lock. For more information, see [Uploading
703
+ # objects to an Object Lock enabled bucket ][2] in the *Amazon S3 User
704
+ # Guide*.
705
+ #
706
+ # </note>
707
+ #
708
+ # For directory buckets, when you use Amazon Web Services SDKs, `CRC32`
709
+ # is the default checksum algorithm that's used for performance.
500
710
  #
501
711
  #
502
712
  #
503
713
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
714
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-managing.html#object-lock-put-object
504
715
  # @option options [String] :checksum_crc32
505
716
  # This header can be used as a data integrity check to verify that the
506
717
  # data received is the same data that was originally sent. This header
507
- # specifies the base64-encoded, 32-bit CRC32 checksum of the object. For
508
- # more information, see [Checking object integrity][1] in the *Amazon S3
509
- # User Guide*.
718
+ # specifies the Base64 encoded, 32-bit `CRC32` checksum of the object.
719
+ # For more information, see [Checking object integrity][1] in the
720
+ # *Amazon S3 User Guide*.
510
721
  #
511
722
  #
512
723
  #
@@ -514,17 +725,28 @@ module Aws::S3
514
725
  # @option options [String] :checksum_crc32c
515
726
  # This header can be used as a data integrity check to verify that the
516
727
  # data received is the same data that was originally sent. This header
517
- # specifies the base64-encoded, 32-bit CRC32C checksum of the object.
728
+ # specifies the Base64 encoded, 32-bit `CRC32C` checksum of the object.
518
729
  # For more information, see [Checking object integrity][1] in the
519
730
  # *Amazon S3 User Guide*.
520
731
  #
521
732
  #
522
733
  #
523
734
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
735
+ # @option options [String] :checksum_crc64nvme
736
+ # This header can be used as a data integrity check to verify that the
737
+ # data received is the same data that was originally sent. This header
738
+ # specifies the Base64 encoded, 64-bit `CRC64NVME` checksum of the
739
+ # object. The `CRC64NVME` checksum is always a full object checksum. For
740
+ # more information, see [Checking object integrity in the Amazon S3 User
741
+ # Guide][1].
742
+ #
743
+ #
744
+ #
745
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
524
746
  # @option options [String] :checksum_sha1
525
747
  # This header can be used as a data integrity check to verify that the
526
748
  # data received is the same data that was originally sent. This header
527
- # specifies the base64-encoded, 160-bit SHA-1 digest of the object. For
749
+ # specifies the Base64 encoded, 160-bit `SHA1` digest of the object. For
528
750
  # more information, see [Checking object integrity][1] in the *Amazon S3
529
751
  # User Guide*.
530
752
  #
@@ -534,7 +756,7 @@ module Aws::S3
534
756
  # @option options [String] :checksum_sha256
535
757
  # This header can be used as a data integrity check to verify that the
536
758
  # data received is the same data that was originally sent. This header
537
- # specifies the base64-encoded, 256-bit SHA-256 digest of the object.
759
+ # specifies the Base64 encoded, 256-bit `SHA256` digest of the object.
538
760
  # For more information, see [Checking object integrity][1] in the
539
761
  # *Amazon S3 User Guide*.
540
762
  #
@@ -549,37 +771,175 @@ module Aws::S3
549
771
  #
550
772
  #
551
773
  # [1]: https://www.rfc-editor.org/rfc/rfc7234#section-5.3
774
+ # @option options [String] :if_match
775
+ # Uploads the object only if the ETag (entity tag) value provided during
776
+ # the WRITE operation matches the ETag of the object in S3. If the ETag
777
+ # values do not match, the operation returns a `412 Precondition Failed`
778
+ # error.
779
+ #
780
+ # If a conflicting operation occurs during the upload S3 returns a `409
781
+ # ConditionalRequestConflict` response. On a 409 failure you should
782
+ # fetch the object's ETag and retry the upload.
783
+ #
784
+ # Expects the ETag value as a string.
785
+ #
786
+ # For more information about conditional requests, see [RFC 7232][1], or
787
+ # [Conditional requests][2] in the *Amazon S3 User Guide*.
788
+ #
789
+ #
790
+ #
791
+ # [1]: https://tools.ietf.org/html/rfc7232
792
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/conditional-requests.html
793
+ # @option options [String] :if_none_match
794
+ # Uploads the object only if the object key name does not already exist
795
+ # in the bucket specified. Otherwise, Amazon S3 returns a `412
796
+ # Precondition Failed` error.
797
+ #
798
+ # If a conflicting operation occurs during the upload S3 returns a `409
799
+ # ConditionalRequestConflict` response. On a 409 failure you should
800
+ # retry the upload.
801
+ #
802
+ # Expects the '*' (asterisk) character.
803
+ #
804
+ # For more information about conditional requests, see [RFC 7232][1], or
805
+ # [Conditional requests][2] in the *Amazon S3 User Guide*.
806
+ #
807
+ #
808
+ #
809
+ # [1]: https://tools.ietf.org/html/rfc7232
810
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/conditional-requests.html
552
811
  # @option options [String] :grant_full_control
553
812
  # Gives the grantee READ, READ\_ACP, and WRITE\_ACP permissions on the
554
813
  # object.
555
814
  #
556
- # This action is not supported by Amazon S3 on Outposts.
815
+ # <note markdown="1"> * This functionality is not supported for directory buckets.
816
+ #
817
+ # * This functionality is not supported for Amazon S3 on Outposts.
818
+ #
819
+ # </note>
557
820
  # @option options [String] :grant_read
558
821
  # Allows grantee to read the object data and its metadata.
559
822
  #
560
- # This action is not supported by Amazon S3 on Outposts.
823
+ # <note markdown="1"> * This functionality is not supported for directory buckets.
824
+ #
825
+ # * This functionality is not supported for Amazon S3 on Outposts.
826
+ #
827
+ # </note>
561
828
  # @option options [String] :grant_read_acp
562
829
  # Allows grantee to read the object ACL.
563
830
  #
564
- # This action is not supported by Amazon S3 on Outposts.
831
+ # <note markdown="1"> * This functionality is not supported for directory buckets.
832
+ #
833
+ # * This functionality is not supported for Amazon S3 on Outposts.
834
+ #
835
+ # </note>
565
836
  # @option options [String] :grant_write_acp
566
837
  # Allows grantee to write the ACL for the applicable object.
567
838
  #
568
- # This action is not supported by Amazon S3 on Outposts.
839
+ # <note markdown="1"> * This functionality is not supported for directory buckets.
840
+ #
841
+ # * This functionality is not supported for Amazon S3 on Outposts.
842
+ #
843
+ # </note>
569
844
  # @option options [required, String] :key
570
845
  # Object key for which the PUT action was initiated.
846
+ # @option options [Integer] :write_offset_bytes
847
+ # Specifies the offset for appending data to existing objects in bytes.
848
+ # The offset must be equal to the size of the existing object being
849
+ # appended to. If no object exists, setting this header to 0 will create
850
+ # a new object.
851
+ #
852
+ # <note markdown="1"> This functionality is only supported for objects in the Amazon S3
853
+ # Express One Zone storage class in directory buckets.
854
+ #
855
+ # </note>
571
856
  # @option options [Hash<String,String>] :metadata
572
857
  # A map of metadata to store with the object in S3.
573
858
  # @option options [String] :server_side_encryption
574
- # The server-side encryption algorithm used when storing this object in
575
- # Amazon S3 (for example, `AES256`, `aws:kms`, `aws:kms:dsse`).
859
+ # The server-side encryption algorithm that was used when you store this
860
+ # object in Amazon S3 or Amazon FSx.
861
+ #
862
+ # * <b>General purpose buckets </b> - You have four mutually exclusive
863
+ # options to protect data using server-side encryption in Amazon S3,
864
+ # depending on how you choose to manage the encryption keys.
865
+ # Specifically, the encryption key options are Amazon S3 managed keys
866
+ # (SSE-S3), Amazon Web Services KMS keys (SSE-KMS or DSSE-KMS), and
867
+ # customer-provided keys (SSE-C). Amazon S3 encrypts data with
868
+ # server-side encryption by using Amazon S3 managed keys (SSE-S3) by
869
+ # default. You can optionally tell Amazon S3 to encrypt data at rest
870
+ # by using server-side encryption with other key options. For more
871
+ # information, see [Using Server-Side Encryption][1] in the *Amazon S3
872
+ # User Guide*.
873
+ #
874
+ # * <b>Directory buckets </b> - For directory buckets, there are only
875
+ # two supported options for server-side encryption: server-side
876
+ # encryption with Amazon S3 managed keys (SSE-S3) (`AES256`) and
877
+ # server-side encryption with KMS keys (SSE-KMS) (`aws:kms`). We
878
+ # recommend that the bucket's default encryption uses the desired
879
+ # encryption configuration and you don't override the bucket default
880
+ # encryption in your `CreateSession` requests or `PUT` object
881
+ # requests. Then, new objects are automatically encrypted with the
882
+ # desired encryption settings. For more information, see [Protecting
883
+ # data with server-side encryption][2] in the *Amazon S3 User Guide*.
884
+ # For more information about the encryption overriding behaviors in
885
+ # directory buckets, see [Specifying server-side encryption with KMS
886
+ # for new object uploads][3].
887
+ #
888
+ # In the Zonal endpoint API calls (except [CopyObject][4] and
889
+ # [UploadPartCopy][5]) using the REST API, the encryption request
890
+ # headers must match the encryption settings that are specified in the
891
+ # `CreateSession` request. You can't override the values of the
892
+ # encryption settings (`x-amz-server-side-encryption`,
893
+ # `x-amz-server-side-encryption-aws-kms-key-id`,
894
+ # `x-amz-server-side-encryption-context`, and
895
+ # `x-amz-server-side-encryption-bucket-key-enabled`) that are
896
+ # specified in the `CreateSession` request. You don't need to
897
+ # explicitly specify these encryption settings values in Zonal
898
+ # endpoint API calls, and Amazon S3 will use the encryption settings
899
+ # values from the `CreateSession` request to protect new objects in
900
+ # the directory bucket.
901
+ #
902
+ # <note markdown="1"> When you use the CLI or the Amazon Web Services SDKs, for
903
+ # `CreateSession`, the session token refreshes automatically to avoid
904
+ # service interruptions when a session expires. The CLI or the Amazon
905
+ # Web Services SDKs use the bucket's default encryption configuration
906
+ # for the `CreateSession` request. It's not supported to override the
907
+ # encryption settings values in the `CreateSession` request. So in the
908
+ # Zonal endpoint API calls (except [CopyObject][4] and
909
+ # [UploadPartCopy][5]), the encryption request headers must match the
910
+ # default encryption configuration of the directory bucket.
911
+ #
912
+ # </note>
913
+ #
914
+ # * <b>S3 access points for Amazon FSx </b> - When accessing data stored
915
+ # in Amazon FSx file systems using S3 access points, the only valid
916
+ # server side encryption option is `aws:fsx`. All Amazon FSx file
917
+ # systems have encryption configured by default and are encrypted at
918
+ # rest. Data is automatically encrypted before being written to the
919
+ # file system, and automatically decrypted as it is read. These
920
+ # processes are handled transparently by Amazon FSx.
921
+ #
922
+ #
923
+ #
924
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html
925
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html
926
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html
927
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
928
+ # [5]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
576
929
  # @option options [String] :storage_class
577
930
  # By default, Amazon S3 uses the STANDARD Storage Class to store newly
578
931
  # created objects. The STANDARD storage class provides high durability
579
932
  # and high availability. Depending on performance needs, you can specify
580
- # a different Storage Class. Amazon S3 on Outposts only uses the
581
- # OUTPOSTS Storage Class. For more information, see [Storage Classes][1]
582
- # in the *Amazon S3 User Guide*.
933
+ # a different Storage Class. For more information, see [Storage
934
+ # Classes][1] in the *Amazon S3 User Guide*.
935
+ #
936
+ # <note markdown="1"> * Directory buckets only support `EXPRESS_ONEZONE` (the S3 Express One
937
+ # Zone storage class) in Availability Zones and `ONEZONE_IA` (the S3
938
+ # One Zone-Infrequent Access storage class) in Dedicated Local Zones.
939
+ #
940
+ # * Amazon S3 on Outposts only uses the OUTPOSTS Storage Class.
941
+ #
942
+ # </note>
583
943
  #
584
944
  #
585
945
  #
@@ -588,7 +948,8 @@ module Aws::S3
588
948
  # If the bucket is configured as a website, redirects requests for this
589
949
  # object to another object in the same bucket or to an external URL.
590
950
  # Amazon S3 stores the value of this header in the object metadata. For
591
- # information about object metadata, see [Object Key and Metadata][1].
951
+ # information about object metadata, see [Object Key and Metadata][1] in
952
+ # the *Amazon S3 User Guide*.
592
953
  #
593
954
  # In the following example, the request header sets the redirect to an
594
955
  # object (anotherPage.html) in the same bucket:
@@ -602,7 +963,11 @@ module Aws::S3
602
963
  #
603
964
  # For more information about website hosting in Amazon S3, see [Hosting
604
965
  # Websites on Amazon S3][2] and [How to Configure Website Page
605
- # Redirects][3].
966
+ # Redirects][3] in the *Amazon S3 User Guide*.
967
+ #
968
+ # <note markdown="1"> This functionality is not supported for directory buckets.
969
+ #
970
+ # </note>
606
971
  #
607
972
  #
608
973
  #
@@ -610,76 +975,164 @@ module Aws::S3
610
975
  # [2]: https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html
611
976
  # [3]: https://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html
612
977
  # @option options [String] :sse_customer_algorithm
613
- # Specifies the algorithm to use to when encrypting the object (for
614
- # example, AES256).
978
+ # Specifies the algorithm to use when encrypting the object (for
979
+ # example, `AES256`).
980
+ #
981
+ # <note markdown="1"> This functionality is not supported for directory buckets.
982
+ #
983
+ # </note>
615
984
  # @option options [String] :sse_customer_key
616
985
  # Specifies the customer-provided encryption key for Amazon S3 to use in
617
986
  # encrypting data. This value is used to store the object and then it is
618
987
  # discarded; Amazon S3 does not store the encryption key. The key must
619
988
  # be appropriate for use with the algorithm specified in the
620
989
  # `x-amz-server-side-encryption-customer-algorithm` header.
990
+ #
991
+ # <note markdown="1"> This functionality is not supported for directory buckets.
992
+ #
993
+ # </note>
621
994
  # @option options [String] :sse_customer_key_md5
622
995
  # Specifies the 128-bit MD5 digest of the encryption key according to
623
996
  # RFC 1321. Amazon S3 uses this header for a message integrity check to
624
997
  # ensure that the encryption key was transmitted without error.
998
+ #
999
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1000
+ #
1001
+ # </note>
625
1002
  # @option options [String] :ssekms_key_id
626
- # If `x-amz-server-side-encryption` has a valid value of `aws:kms` or
627
- # `aws:kms:dsse`, this header specifies the ID of the Key Management
628
- # Service (KMS) symmetric encryption customer managed key that was used
629
- # for the object. If you specify `x-amz-server-side-encryption:aws:kms`
630
- # or `x-amz-server-side-encryption:aws:kms:dsse`, but do not provide`
631
- # x-amz-server-side-encryption-aws-kms-key-id`, Amazon S3 uses the
632
- # Amazon Web Services managed key (`aws/s3`) to protect the data. If the
633
- # KMS key does not exist in the same account that's issuing the
634
- # command, you must use the full ARN and not just the ID.
1003
+ # Specifies the KMS key ID (Key ID, Key ARN, or Key Alias) to use for
1004
+ # object encryption. If the KMS key doesn't exist in the same account
1005
+ # that's issuing the command, you must use the full Key ARN not the Key
1006
+ # ID.
1007
+ #
1008
+ # **General purpose buckets** - If you specify
1009
+ # `x-amz-server-side-encryption` with `aws:kms` or `aws:kms:dsse`, this
1010
+ # header specifies the ID (Key ID, Key ARN, or Key Alias) of the KMS key
1011
+ # to use. If you specify `x-amz-server-side-encryption:aws:kms` or
1012
+ # `x-amz-server-side-encryption:aws:kms:dsse`, but do not provide
1013
+ # `x-amz-server-side-encryption-aws-kms-key-id`, Amazon S3 uses the
1014
+ # Amazon Web Services managed key (`aws/s3`) to protect the data.
1015
+ #
1016
+ # **Directory buckets** - To encrypt data using SSE-KMS, it's
1017
+ # recommended to specify the `x-amz-server-side-encryption` header to
1018
+ # `aws:kms`. Then, the `x-amz-server-side-encryption-aws-kms-key-id`
1019
+ # header implicitly uses the bucket's default KMS customer managed key
1020
+ # ID. If you want to explicitly set the `
1021
+ # x-amz-server-side-encryption-aws-kms-key-id` header, it must match the
1022
+ # bucket's default customer managed key (using key ID or ARN, not
1023
+ # alias). Your SSE-KMS configuration can only support 1 [customer
1024
+ # managed key][1] per directory bucket's lifetime. The [Amazon Web
1025
+ # Services managed key][2] (`aws/s3`) isn't supported. Incorrect key
1026
+ # specification results in an HTTP `400 Bad Request` error.
1027
+ #
1028
+ #
1029
+ #
1030
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk
1031
+ # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk
635
1032
  # @option options [String] :ssekms_encryption_context
636
- # Specifies the Amazon Web Services KMS Encryption Context to use for
637
- # object encryption. The value of this header is a base64-encoded UTF-8
638
- # string holding JSON with the encryption context key-value pairs. This
639
- # value is stored as object metadata and automatically gets passed on to
640
- # Amazon Web Services KMS for future `GetObject` or `CopyObject`
641
- # operations on this object.
1033
+ # Specifies the Amazon Web Services KMS Encryption Context as an
1034
+ # additional encryption context to use for object encryption. The value
1035
+ # of this header is a Base64 encoded string of a UTF-8 encoded JSON,
1036
+ # which contains the encryption context as key-value pairs. This value
1037
+ # is stored as object metadata and automatically gets passed on to
1038
+ # Amazon Web Services KMS for future `GetObject` operations on this
1039
+ # object.
1040
+ #
1041
+ # **General purpose buckets** - This value must be explicitly added
1042
+ # during `CopyObject` operations if you want an additional encryption
1043
+ # context for your object. For more information, see [Encryption
1044
+ # context][1] in the *Amazon S3 User Guide*.
1045
+ #
1046
+ # **Directory buckets** - You can optionally provide an explicit
1047
+ # encryption context value. The value must match the default encryption
1048
+ # context - the bucket Amazon Resource Name (ARN). An additional
1049
+ # encryption context value is not supported.
1050
+ #
1051
+ #
1052
+ #
1053
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html#encryption-context
642
1054
  # @option options [Boolean] :bucket_key_enabled
643
1055
  # Specifies whether Amazon S3 should use an S3 Bucket Key for object
644
1056
  # encryption with server-side encryption using Key Management Service
645
- # (KMS) keys (SSE-KMS). Setting this header to `true` causes Amazon S3
646
- # to use an S3 Bucket Key for object encryption with SSE-KMS.
1057
+ # (KMS) keys (SSE-KMS).
1058
+ #
1059
+ # **General purpose buckets** - Setting this header to `true` causes
1060
+ # Amazon S3 to use an S3 Bucket Key for object encryption with SSE-KMS.
1061
+ # Also, specifying this header with a PUT action doesn't affect
1062
+ # bucket-level settings for S3 Bucket Key.
1063
+ #
1064
+ # **Directory buckets** - S3 Bucket Keys are always enabled for `GET`
1065
+ # and `PUT` operations in a directory bucket and can’t be disabled. S3
1066
+ # Bucket Keys aren't supported, when you copy SSE-KMS encrypted objects
1067
+ # from general purpose buckets to directory buckets, from directory
1068
+ # buckets to general purpose buckets, or between directory buckets,
1069
+ # through [CopyObject][1], [UploadPartCopy][2], [the Copy operation in
1070
+ # Batch Operations][3], or [the import jobs][4]. In this case, Amazon S3
1071
+ # makes a call to KMS every time a copy request is made for a
1072
+ # KMS-encrypted object.
647
1073
  #
648
- # Specifying this header with a PUT action doesn’t affect bucket-level
649
- # settings for S3 Bucket Key.
1074
+ #
1075
+ #
1076
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
1077
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
1078
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-buckets-objects-Batch-Ops
1079
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-import-job
650
1080
  # @option options [String] :request_payer
651
1081
  # Confirms that the requester knows that they will be charged for the
652
1082
  # request. Bucket owners need not specify this parameter in their
653
- # requests. For information about downloading objects from Requester
1083
+ # requests. If either the source or destination S3 bucket has Requester
1084
+ # Pays enabled, the requester will pay for corresponding charges to copy
1085
+ # the object. For information about downloading objects from Requester
654
1086
  # Pays buckets, see [Downloading Objects in Requester Pays Buckets][1]
655
1087
  # in the *Amazon S3 User Guide*.
656
1088
  #
1089
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1090
+ #
1091
+ # </note>
1092
+ #
657
1093
  #
658
1094
  #
659
1095
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
660
1096
  # @option options [String] :tagging
661
1097
  # The tag-set for the object. The tag-set must be encoded as URL Query
662
1098
  # parameters. (For example, "Key1=Value1")
1099
+ #
1100
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1101
+ #
1102
+ # </note>
663
1103
  # @option options [String] :object_lock_mode
664
1104
  # The Object Lock mode that you want to apply to this object.
1105
+ #
1106
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1107
+ #
1108
+ # </note>
665
1109
  # @option options [Time,DateTime,Date,Integer,String] :object_lock_retain_until_date
666
1110
  # The date and time when you want this object's Object Lock to expire.
667
1111
  # Must be formatted as a timestamp parameter.
1112
+ #
1113
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1114
+ #
1115
+ # </note>
668
1116
  # @option options [String] :object_lock_legal_hold_status
669
1117
  # Specifies whether a legal hold will be applied to this object. For
670
- # more information about S3 Object Lock, see [Object Lock][1].
1118
+ # more information about S3 Object Lock, see [Object Lock][1] in the
1119
+ # *Amazon S3 User Guide*.
1120
+ #
1121
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1122
+ #
1123
+ # </note>
671
1124
  #
672
1125
  #
673
1126
  #
674
1127
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html
675
1128
  # @option options [String] :expected_bucket_owner
676
- # The account ID of the expected bucket owner. If the bucket is owned by
677
- # a different account, the request fails with the HTTP status code `403
678
- # Forbidden` (access denied).
1129
+ # The account ID of the expected bucket owner. If the account ID that
1130
+ # you provide does not match the actual owner of the bucket, the request
1131
+ # fails with the HTTP status code `403 Forbidden` (access denied).
679
1132
  # @return [Object]
680
1133
  def put_object(options = {})
681
1134
  options = options.merge(bucket: @name)
682
- Aws::Plugins::UserAgent.feature('resource') do
1135
+ Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
683
1136
  @client.put_object(options)
684
1137
  end
685
1138
  Object.new(
@@ -752,30 +1205,73 @@ module Aws::S3
752
1205
  # don't specify the prefix parameter, then the substring starts at the
753
1206
  # beginning of the key. The keys that are grouped under `CommonPrefixes`
754
1207
  # result element are not returned elsewhere in the response.
1208
+ #
1209
+ # `CommonPrefixes` is filtered out from results if it is not
1210
+ # lexicographically greater than the key-marker.
1211
+ #
1212
+ # <note markdown="1"> **Directory buckets** - For directory buckets, `/` is the only
1213
+ # supported delimiter.
1214
+ #
1215
+ # </note>
755
1216
  # @option options [String] :encoding_type
756
- # Requests Amazon S3 to encode the object keys in the response and
757
- # specifies the encoding method to use. An object key can contain any
758
- # Unicode character; however, the XML 1.0 parser cannot parse some
759
- # characters, such as characters with an ASCII value from 0 to 10. For
760
- # characters that are not supported in XML 1.0, you can add this
761
- # parameter to request that Amazon S3 encode the keys in the response.
1217
+ # Encoding type used by Amazon S3 to encode the [object keys][1] in the
1218
+ # response. Responses are encoded only in UTF-8. An object key can
1219
+ # contain any Unicode character. However, the XML 1.0 parser can't
1220
+ # parse certain characters, such as characters with an ASCII value from
1221
+ # 0 to 10. For characters that aren't supported in XML 1.0, you can add
1222
+ # this parameter to request that Amazon S3 encode the keys in the
1223
+ # response. For more information about characters to avoid in object key
1224
+ # names, see [Object key naming guidelines][2].
1225
+ #
1226
+ # <note markdown="1"> When using the URL encoding type, non-ASCII characters that are used
1227
+ # in an object's key name will be percent-encoded according to UTF-8
1228
+ # code values. For example, the object `test_file(3).png` will appear as
1229
+ # `test_file%283%29.png`.
1230
+ #
1231
+ # </note>
1232
+ #
1233
+ #
1234
+ #
1235
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html
1236
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-guidelines
762
1237
  # @option options [String] :key_marker
763
- # Together with `upload-id-marker`, this parameter specifies the
764
- # multipart upload after which listing should begin.
1238
+ # Specifies the multipart upload after which listing should begin.
765
1239
  #
766
- # If `upload-id-marker` is not specified, only the keys
767
- # lexicographically greater than the specified `key-marker` will be
768
- # included in the list.
1240
+ # <note markdown="1"> * **General purpose buckets** - For general purpose buckets,
1241
+ # `key-marker` is an object key. Together with `upload-id-marker`,
1242
+ # this parameter specifies the multipart upload after which listing
1243
+ # should begin.
769
1244
  #
770
- # If `upload-id-marker` is specified, any multipart uploads for a key
771
- # equal to the `key-marker` might also be included, provided those
772
- # multipart uploads have upload IDs lexicographically greater than the
773
- # specified `upload-id-marker`.
1245
+ # If `upload-id-marker` is not specified, only the keys
1246
+ # lexicographically greater than the specified `key-marker` will be
1247
+ # included in the list.
1248
+ #
1249
+ # If `upload-id-marker` is specified, any multipart uploads for a key
1250
+ # equal to the `key-marker` might also be included, provided those
1251
+ # multipart uploads have upload IDs lexicographically greater than the
1252
+ # specified `upload-id-marker`.
1253
+ #
1254
+ # * **Directory buckets** - For directory buckets, `key-marker` is
1255
+ # obfuscated and isn't a real object key. The `upload-id-marker`
1256
+ # parameter isn't supported by directory buckets. To list the
1257
+ # additional multipart uploads, you only need to set the value of
1258
+ # `key-marker` to the `NextKeyMarker` value from the previous
1259
+ # response.
1260
+ #
1261
+ # In the `ListMultipartUploads` response, the multipart uploads
1262
+ # aren't sorted lexicographically based on the object keys.
1263
+ #
1264
+ # </note>
774
1265
  # @option options [String] :prefix
775
1266
  # Lists in-progress uploads only for those keys that begin with the
776
1267
  # specified prefix. You can use prefixes to separate a bucket into
777
1268
  # different grouping of keys. (You can think of using `prefix` to make
778
1269
  # groups in the same way that you'd use a folder in a file system.)
1270
+ #
1271
+ # <note markdown="1"> **Directory buckets** - For directory buckets, only prefixes that end
1272
+ # in a delimiter (`/`) are supported.
1273
+ #
1274
+ # </note>
779
1275
  # @option options [String] :upload_id_marker
780
1276
  # Together with key-marker, specifies the multipart upload after which
781
1277
  # listing should begin. If key-marker is not specified, the
@@ -783,17 +1279,27 @@ module Aws::S3
783
1279
  # uploads for a key equal to the key-marker might be included in the
784
1280
  # list only if they have an upload ID lexicographically greater than the
785
1281
  # specified `upload-id-marker`.
1282
+ #
1283
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1284
+ #
1285
+ # </note>
786
1286
  # @option options [String] :expected_bucket_owner
787
- # The account ID of the expected bucket owner. If the bucket is owned by
788
- # a different account, the request fails with the HTTP status code `403
789
- # Forbidden` (access denied).
1287
+ # The account ID of the expected bucket owner. If the account ID that
1288
+ # you provide does not match the actual owner of the bucket, the request
1289
+ # fails with the HTTP status code `403 Forbidden` (access denied).
790
1290
  # @option options [String] :request_payer
791
1291
  # Confirms that the requester knows that they will be charged for the
792
1292
  # request. Bucket owners need not specify this parameter in their
793
- # requests. For information about downloading objects from Requester
1293
+ # requests. If either the source or destination S3 bucket has Requester
1294
+ # Pays enabled, the requester will pay for corresponding charges to copy
1295
+ # the object. For information about downloading objects from Requester
794
1296
  # Pays buckets, see [Downloading Objects in Requester Pays Buckets][1]
795
1297
  # in the *Amazon S3 User Guide*.
796
1298
  #
1299
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1300
+ #
1301
+ # </note>
1302
+ #
797
1303
  #
798
1304
  #
799
1305
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
@@ -801,7 +1307,7 @@ module Aws::S3
801
1307
  def multipart_uploads(options = {})
802
1308
  batches = Enumerator.new do |y|
803
1309
  options = options.merge(bucket: @name)
804
- resp = Aws::Plugins::UserAgent.feature('resource') do
1310
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
805
1311
  @client.list_multipart_uploads(options)
806
1312
  end
807
1313
  resp.each_page do |page|
@@ -859,13 +1365,30 @@ module Aws::S3
859
1365
  # in `CommonPrefixes`. These groups are counted as one result against
860
1366
  # the `max-keys` limitation. These keys are not returned elsewhere in
861
1367
  # the response.
1368
+ #
1369
+ # `CommonPrefixes` is filtered out from results if it is not
1370
+ # lexicographically greater than the key-marker.
862
1371
  # @option options [String] :encoding_type
863
- # Requests Amazon S3 to encode the object keys in the response and
864
- # specifies the encoding method to use. An object key can contain any
865
- # Unicode character; however, the XML 1.0 parser cannot parse some
866
- # characters, such as characters with an ASCII value from 0 to 10. For
867
- # characters that are not supported in XML 1.0, you can add this
868
- # parameter to request that Amazon S3 encode the keys in the response.
1372
+ # Encoding type used by Amazon S3 to encode the [object keys][1] in the
1373
+ # response. Responses are encoded only in UTF-8. An object key can
1374
+ # contain any Unicode character. However, the XML 1.0 parser can't
1375
+ # parse certain characters, such as characters with an ASCII value from
1376
+ # 0 to 10. For characters that aren't supported in XML 1.0, you can add
1377
+ # this parameter to request that Amazon S3 encode the keys in the
1378
+ # response. For more information about characters to avoid in object key
1379
+ # names, see [Object key naming guidelines][2].
1380
+ #
1381
+ # <note markdown="1"> When using the URL encoding type, non-ASCII characters that are used
1382
+ # in an object's key name will be percent-encoded according to UTF-8
1383
+ # code values. For example, the object `test_file(3).png` will appear as
1384
+ # `test_file%283%29.png`.
1385
+ #
1386
+ # </note>
1387
+ #
1388
+ #
1389
+ #
1390
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html
1391
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-guidelines
869
1392
  # @option options [String] :key_marker
870
1393
  # Specifies the key to start with when listing objects in a bucket.
871
1394
  # @option options [String] :prefix
@@ -878,16 +1401,22 @@ module Aws::S3
878
1401
  # @option options [String] :version_id_marker
879
1402
  # Specifies the object version you want to start listing from.
880
1403
  # @option options [String] :expected_bucket_owner
881
- # The account ID of the expected bucket owner. If the bucket is owned by
882
- # a different account, the request fails with the HTTP status code `403
883
- # Forbidden` (access denied).
1404
+ # The account ID of the expected bucket owner. If the account ID that
1405
+ # you provide does not match the actual owner of the bucket, the request
1406
+ # fails with the HTTP status code `403 Forbidden` (access denied).
884
1407
  # @option options [String] :request_payer
885
1408
  # Confirms that the requester knows that they will be charged for the
886
1409
  # request. Bucket owners need not specify this parameter in their
887
- # requests. For information about downloading objects from Requester
1410
+ # requests. If either the source or destination S3 bucket has Requester
1411
+ # Pays enabled, the requester will pay for corresponding charges to copy
1412
+ # the object. For information about downloading objects from Requester
888
1413
  # Pays buckets, see [Downloading Objects in Requester Pays Buckets][1]
889
1414
  # in the *Amazon S3 User Guide*.
890
1415
  #
1416
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1417
+ #
1418
+ # </note>
1419
+ #
891
1420
  #
892
1421
  #
893
1422
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
@@ -898,7 +1427,7 @@ module Aws::S3
898
1427
  def object_versions(options = {})
899
1428
  batches = Enumerator.new do |y|
900
1429
  options = options.merge(bucket: @name)
901
- resp = Aws::Plugins::UserAgent.feature('resource') do
1430
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
902
1431
  @client.list_object_versions(options)
903
1432
  end
904
1433
  resp.each_page do |page|
@@ -933,34 +1462,94 @@ module Aws::S3
933
1462
  # @param [Hash] options ({})
934
1463
  # @option options [String] :delimiter
935
1464
  # A delimiter is a character that you use to group keys.
1465
+ #
1466
+ # `CommonPrefixes` is filtered out from results if it is not
1467
+ # lexicographically greater than the `StartAfter` value.
1468
+ #
1469
+ # <note markdown="1"> * **Directory buckets** - For directory buckets, `/` is the only
1470
+ # supported delimiter.
1471
+ #
1472
+ # * <b>Directory buckets </b> - When you query `ListObjectsV2` with a
1473
+ # delimiter during in-progress multipart uploads, the `CommonPrefixes`
1474
+ # response parameter contains the prefixes that are associated with
1475
+ # the in-progress multipart uploads. For more information about
1476
+ # multipart uploads, see [Multipart Upload Overview][1] in the *Amazon
1477
+ # S3 User Guide*.
1478
+ #
1479
+ # </note>
1480
+ #
1481
+ #
1482
+ #
1483
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html
936
1484
  # @option options [String] :encoding_type
937
- # Encoding type used by Amazon S3 to encode object keys in the response.
1485
+ # Encoding type used by Amazon S3 to encode the [object keys][1] in the
1486
+ # response. Responses are encoded only in UTF-8. An object key can
1487
+ # contain any Unicode character. However, the XML 1.0 parser can't
1488
+ # parse certain characters, such as characters with an ASCII value from
1489
+ # 0 to 10. For characters that aren't supported in XML 1.0, you can add
1490
+ # this parameter to request that Amazon S3 encode the keys in the
1491
+ # response. For more information about characters to avoid in object key
1492
+ # names, see [Object key naming guidelines][2].
1493
+ #
1494
+ # <note markdown="1"> When using the URL encoding type, non-ASCII characters that are used
1495
+ # in an object's key name will be percent-encoded according to UTF-8
1496
+ # code values. For example, the object `test_file(3).png` will appear as
1497
+ # `test_file%283%29.png`.
1498
+ #
1499
+ # </note>
1500
+ #
1501
+ #
1502
+ #
1503
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html
1504
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-guidelines
938
1505
  # @option options [String] :prefix
939
1506
  # Limits the response to keys that begin with the specified prefix.
1507
+ #
1508
+ # <note markdown="1"> **Directory buckets** - For directory buckets, only prefixes that end
1509
+ # in a delimiter (`/`) are supported.
1510
+ #
1511
+ # </note>
940
1512
  # @option options [Boolean] :fetch_owner
941
1513
  # The owner field is not present in `ListObjectsV2` by default. If you
942
1514
  # want to return the owner field with each key in the result, then set
943
1515
  # the `FetchOwner` field to `true`.
1516
+ #
1517
+ # <note markdown="1"> **Directory buckets** - For directory buckets, the bucket owner is
1518
+ # returned as the object owner for all objects.
1519
+ #
1520
+ # </note>
944
1521
  # @option options [String] :start_after
945
1522
  # StartAfter is where you want Amazon S3 to start listing from. Amazon
946
1523
  # S3 starts listing after this specified key. StartAfter can be any key
947
1524
  # in the bucket.
1525
+ #
1526
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1527
+ #
1528
+ # </note>
948
1529
  # @option options [String] :request_payer
949
1530
  # Confirms that the requester knows that she or he will be charged for
950
1531
  # the list objects request in V2 style. Bucket owners need not specify
951
1532
  # this parameter in their requests.
1533
+ #
1534
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1535
+ #
1536
+ # </note>
952
1537
  # @option options [String] :expected_bucket_owner
953
- # The account ID of the expected bucket owner. If the bucket is owned by
954
- # a different account, the request fails with the HTTP status code `403
955
- # Forbidden` (access denied).
1538
+ # The account ID of the expected bucket owner. If the account ID that
1539
+ # you provide does not match the actual owner of the bucket, the request
1540
+ # fails with the HTTP status code `403 Forbidden` (access denied).
956
1541
  # @option options [Array<String>] :optional_object_attributes
957
1542
  # Specifies the optional fields that you want returned in the response.
958
1543
  # Fields that you do not specify are not returned.
1544
+ #
1545
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1546
+ #
1547
+ # </note>
959
1548
  # @return [ObjectSummary::Collection]
960
1549
  def objects(options = {})
961
1550
  batches = Enumerator.new do |y|
962
1551
  options = options.merge(bucket: @name)
963
- resp = Aws::Plugins::UserAgent.feature('resource') do
1552
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
964
1553
  @client.list_objects_v2(options)
965
1554
  end
966
1555
  resp.each_page do |page|
@@ -1069,3 +1658,6 @@ module Aws::S3
1069
1658
  class Collection < Aws::Resources::Collection; end
1070
1659
  end
1071
1660
  end
1661
+
1662
+ # Load customizations if they exist
1663
+ require 'aws-sdk-s3/customizations/bucket'