aws-sdk-s3 1.136.0 → 1.208.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 (119) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +452 -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 +728 -145
  7. data/lib/aws-sdk-s3/bucket_acl.rb +19 -18
  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 +74 -41
  18. data/lib/aws-sdk-s3/bucket_website.rb +19 -19
  19. data/lib/aws-sdk-s3/client.rb +9951 -3365
  20. data/lib/aws-sdk-s3/client_api.rb +758 -164
  21. data/lib/aws-sdk-s3/customizations/bucket.rb +1 -1
  22. data/lib/aws-sdk-s3/customizations/errors.rb +15 -2
  23. data/lib/aws-sdk-s3/customizations/object.rb +87 -91
  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 +28 -31
  27. data/lib/aws-sdk-s3/default_executor.rb +103 -0
  28. data/lib/aws-sdk-s3/encryption/client.rb +4 -4
  29. data/lib/aws-sdk-s3/encryption/default_cipher_provider.rb +2 -0
  30. data/lib/aws-sdk-s3/encryption/encrypt_handler.rb +2 -0
  31. data/lib/aws-sdk-s3/encryption/kms_cipher_provider.rb +4 -2
  32. data/lib/aws-sdk-s3/encryptionV2/client.rb +100 -25
  33. data/lib/aws-sdk-s3/encryptionV2/decrypt_handler.rb +7 -162
  34. data/lib/aws-sdk-s3/encryptionV2/decryption.rb +205 -0
  35. data/lib/aws-sdk-s3/encryptionV2/default_cipher_provider.rb +17 -0
  36. data/lib/aws-sdk-s3/encryptionV2/encrypt_handler.rb +2 -0
  37. data/lib/aws-sdk-s3/encryptionV2/io_encrypter.rb +2 -0
  38. data/lib/aws-sdk-s3/encryptionV2/kms_cipher_provider.rb +10 -2
  39. data/lib/aws-sdk-s3/encryptionV2/utils.rb +5 -0
  40. data/lib/aws-sdk-s3/encryptionV3/client.rb +885 -0
  41. data/lib/aws-sdk-s3/encryptionV3/decrypt_handler.rb +98 -0
  42. data/lib/aws-sdk-s3/encryptionV3/decryption.rb +244 -0
  43. data/lib/aws-sdk-s3/encryptionV3/default_cipher_provider.rb +159 -0
  44. data/lib/aws-sdk-s3/encryptionV3/default_key_provider.rb +35 -0
  45. data/lib/aws-sdk-s3/encryptionV3/encrypt_handler.rb +98 -0
  46. data/lib/aws-sdk-s3/encryptionV3/errors.rb +47 -0
  47. data/lib/aws-sdk-s3/encryptionV3/io_auth_decrypter.rb +60 -0
  48. data/lib/aws-sdk-s3/encryptionV3/io_decrypter.rb +35 -0
  49. data/lib/aws-sdk-s3/encryptionV3/io_encrypter.rb +84 -0
  50. data/lib/aws-sdk-s3/encryptionV3/key_provider.rb +28 -0
  51. data/lib/aws-sdk-s3/encryptionV3/kms_cipher_provider.rb +159 -0
  52. data/lib/aws-sdk-s3/encryptionV3/materials.rb +58 -0
  53. data/lib/aws-sdk-s3/encryptionV3/utils.rb +321 -0
  54. data/lib/aws-sdk-s3/encryption_v2.rb +1 -0
  55. data/lib/aws-sdk-s3/encryption_v3.rb +24 -0
  56. data/lib/aws-sdk-s3/endpoint_parameters.rb +65 -30
  57. data/lib/aws-sdk-s3/endpoint_provider.rb +604 -227
  58. data/lib/aws-sdk-s3/endpoints.rb +655 -1261
  59. data/lib/aws-sdk-s3/errors.rb +58 -0
  60. data/lib/aws-sdk-s3/express_credentials.rb +55 -0
  61. data/lib/aws-sdk-s3/express_credentials_provider.rb +59 -0
  62. data/lib/aws-sdk-s3/file_downloader.rb +192 -147
  63. data/lib/aws-sdk-s3/file_uploader.rb +10 -14
  64. data/lib/aws-sdk-s3/legacy_signer.rb +2 -1
  65. data/lib/aws-sdk-s3/multipart_download_error.rb +8 -0
  66. data/lib/aws-sdk-s3/multipart_file_uploader.rb +106 -103
  67. data/lib/aws-sdk-s3/multipart_stream_uploader.rb +99 -109
  68. data/lib/aws-sdk-s3/multipart_upload.rb +185 -38
  69. data/lib/aws-sdk-s3/multipart_upload_error.rb +3 -4
  70. data/lib/aws-sdk-s3/multipart_upload_part.rb +205 -68
  71. data/lib/aws-sdk-s3/object.rb +2052 -315
  72. data/lib/aws-sdk-s3/object_acl.rb +46 -28
  73. data/lib/aws-sdk-s3/object_copier.rb +1 -1
  74. data/lib/aws-sdk-s3/object_multipart_copier.rb +12 -9
  75. data/lib/aws-sdk-s3/object_summary.rb +1778 -262
  76. data/lib/aws-sdk-s3/object_version.rb +400 -68
  77. data/lib/aws-sdk-s3/plugins/access_grants.rb +178 -0
  78. data/lib/aws-sdk-s3/plugins/checksum_algorithm.rb +31 -0
  79. data/lib/aws-sdk-s3/plugins/endpoints.rb +32 -208
  80. data/lib/aws-sdk-s3/plugins/express_session_auth.rb +88 -0
  81. data/lib/aws-sdk-s3/plugins/http_200_errors.rb +55 -18
  82. data/lib/aws-sdk-s3/plugins/location_constraint.rb +3 -1
  83. data/lib/aws-sdk-s3/plugins/md5s.rb +10 -70
  84. data/lib/aws-sdk-s3/plugins/s3_signer.rb +7 -2
  85. data/lib/aws-sdk-s3/plugins/streaming_retry.rb +5 -7
  86. data/lib/aws-sdk-s3/plugins/url_encoded_keys.rb +2 -1
  87. data/lib/aws-sdk-s3/presigner.rb +9 -7
  88. data/lib/aws-sdk-s3/resource.rb +127 -22
  89. data/lib/aws-sdk-s3/transfer_manager.rb +303 -0
  90. data/lib/aws-sdk-s3/types.rb +8065 -1783
  91. data/lib/aws-sdk-s3.rb +35 -31
  92. data/sig/bucket.rbs +231 -0
  93. data/sig/bucket_acl.rbs +78 -0
  94. data/sig/bucket_cors.rbs +69 -0
  95. data/sig/bucket_lifecycle.rbs +88 -0
  96. data/sig/bucket_lifecycle_configuration.rbs +115 -0
  97. data/sig/bucket_logging.rbs +76 -0
  98. data/sig/bucket_notification.rbs +114 -0
  99. data/sig/bucket_policy.rbs +59 -0
  100. data/sig/bucket_request_payment.rbs +54 -0
  101. data/sig/bucket_tagging.rbs +65 -0
  102. data/sig/bucket_versioning.rbs +77 -0
  103. data/sig/bucket_website.rbs +93 -0
  104. data/sig/client.rbs +2612 -0
  105. data/sig/customizations/bucket.rbs +19 -0
  106. data/sig/customizations/object.rbs +38 -0
  107. data/sig/customizations/object_summary.rbs +35 -0
  108. data/sig/errors.rbs +44 -0
  109. data/sig/multipart_upload.rbs +120 -0
  110. data/sig/multipart_upload_part.rbs +109 -0
  111. data/sig/object.rbs +464 -0
  112. data/sig/object_acl.rbs +86 -0
  113. data/sig/object_summary.rbs +347 -0
  114. data/sig/object_version.rbs +143 -0
  115. data/sig/resource.rbs +141 -0
  116. data/sig/types.rbs +2899 -0
  117. data/sig/waiters.rbs +95 -0
  118. metadata +61 -12
  119. 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, ap-south-2, eu-south-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.
359
+ #
360
+ # </note>
274
361
  #
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.
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,14 +425,35 @@ 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. If either the source or destination Amazon S3 bucket has
339
- # Requester Pays enabled, the requester will pay for corresponding
340
- # charges to copy the object. For information about downloading objects
341
- # from Requester Pays buckets, see [Downloading Objects in Requester
342
- # Pays Buckets][1] in the *Amazon S3 User Guide*.
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
451
+ # Pays buckets, see [Downloading Objects in Requester Pays Buckets][1]
452
+ # in the *Amazon S3 User Guide*.
453
+ #
454
+ # <note markdown="1"> This functionality is not supported for directory buckets.
455
+ #
456
+ # </note>
343
457
  #
344
458
  #
345
459
  #
@@ -348,32 +462,53 @@ module Aws::S3
348
462
  # Specifies whether you want to delete this object even if it has a
349
463
  # Governance-type Object Lock in place. To use this header, you must
350
464
  # have the `s3:BypassGovernanceRetention` permission.
465
+ #
466
+ # <note markdown="1"> This functionality is not supported for directory buckets.
467
+ #
468
+ # </note>
351
469
  # @option options [String] :expected_bucket_owner
352
- # The account ID of the expected bucket owner. If the bucket is owned by
353
- # a different account, the request fails with the HTTP status code `403
354
- # 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).
355
473
  # @option options [String] :checksum_algorithm
356
474
  # Indicates the algorithm used to create the checksum for the object
357
- # when using the SDK. This header will not provide any additional
358
- # functionality if not using the SDK. When sending this header, there
359
- # must be a corresponding `x-amz-checksum` or `x-amz-trailer` header
360
- # sent. Otherwise, Amazon S3 fails the request with the HTTP status code
361
- # `400 Bad Request`. For more information, see [Checking object
362
- # 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.
363
501
  #
364
502
  # If you provide an individual checksum, Amazon S3 ignores any provided
365
503
  # `ChecksumAlgorithm` parameter.
366
504
  #
367
- # This checksum algorithm must be the same for all parts and it match
368
- # the checksum value supplied in the `CreateMultipartUpload` request.
369
- #
370
505
  #
371
506
  #
372
507
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
373
508
  # @return [Types::DeleteObjectsOutput]
374
509
  def delete_objects(options = {})
375
510
  options = options.merge(bucket: @name)
376
- resp = Aws::Plugins::UserAgent.feature('resource') do
511
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
377
512
  @client.delete_objects(options)
378
513
  end
379
514
  resp.data
@@ -391,22 +526,26 @@ module Aws::S3
391
526
  # content_length: 1,
392
527
  # content_md5: "ContentMD5",
393
528
  # content_type: "ContentType",
394
- # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256
529
+ # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256, CRC64NVME
395
530
  # checksum_crc32: "ChecksumCRC32",
396
531
  # checksum_crc32c: "ChecksumCRC32C",
532
+ # checksum_crc64nvme: "ChecksumCRC64NVME",
397
533
  # checksum_sha1: "ChecksumSHA1",
398
534
  # checksum_sha256: "ChecksumSHA256",
399
535
  # expires: Time.now,
536
+ # if_match: "IfMatch",
537
+ # if_none_match: "IfNoneMatch",
400
538
  # grant_full_control: "GrantFullControl",
401
539
  # grant_read: "GrantRead",
402
540
  # grant_read_acp: "GrantReadACP",
403
541
  # grant_write_acp: "GrantWriteACP",
404
542
  # key: "ObjectKey", # required
543
+ # write_offset_bytes: 1,
405
544
  # metadata: {
406
545
  # "MetadataKey" => "MetadataValue",
407
546
  # },
408
- # server_side_encryption: "AES256", # accepts AES256, aws:kms, aws:kms:dsse
409
- # 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, FSX_ONTAP
410
549
  # website_redirect_location: "WebsiteRedirectLocation",
411
550
  # sse_customer_algorithm: "SSECustomerAlgorithm",
412
551
  # sse_customer_key: "SSECustomerKey",
@@ -424,13 +563,41 @@ module Aws::S3
424
563
  # @param [Hash] options ({})
425
564
  # @option options [String] :acl
426
565
  # The canned ACL to apply to the object. For more information, see
427
- # [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*.
428
588
  #
429
- # This action is not supported by Amazon S3 on Outposts.
589
+ # <note markdown="1"> * This functionality is not supported for directory buckets.
590
+ #
591
+ # * This functionality is not supported for Amazon S3 on Outposts.
592
+ #
593
+ # </note>
430
594
  #
431
595
  #
432
596
  #
433
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
434
601
  # @option options [String, StringIO, File] :body
435
602
  # Object data.
436
603
  # @option options [String] :cache_control
@@ -469,7 +636,7 @@ module Aws::S3
469
636
  #
470
637
  # [1]: https://www.rfc-editor.org/rfc/rfc9110.html#name-content-length
471
638
  # @option options [String] :content_md5
472
- # 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
473
640
  # headers) according to RFC 1864. This header can be used as a message
474
641
  # integrity check to verify that the data is the same data that was
475
642
  # originally sent. Although it is optional, we recommend using the
@@ -477,9 +644,22 @@ module Aws::S3
477
644
  # information about REST request authentication, see [REST
478
645
  # Authentication][1].
479
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
+ #
480
659
  #
481
660
  #
482
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
483
663
  # @option options [String] :content_type
484
664
  # A standard MIME type describing the format of the contents. For more
485
665
  # information, see
@@ -490,25 +670,54 @@ module Aws::S3
490
670
  # [1]: https://www.rfc-editor.org/rfc/rfc9110.html#name-content-type
491
671
  # @option options [String] :checksum_algorithm
492
672
  # Indicates the algorithm used to create the checksum for the object
493
- # when using the SDK. This header will not provide any additional
494
- # functionality if not using the SDK. When sending this header, there
495
- # must be a corresponding `x-amz-checksum` or `x-amz-trailer` header
496
- # sent. Otherwise, Amazon S3 fails the request with the HTTP status code
497
- # `400 Bad Request`. For more information, see [Checking object
498
- # 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`.
499
678
  #
500
- # If you provide an individual checksum, Amazon S3 ignores any provided
501
- # `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.
502
710
  #
503
711
  #
504
712
  #
505
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
506
715
  # @option options [String] :checksum_crc32
507
716
  # This header can be used as a data integrity check to verify that the
508
717
  # data received is the same data that was originally sent. This header
509
- # specifies the base64-encoded, 32-bit CRC32 checksum of the object. For
510
- # more information, see [Checking object integrity][1] in the *Amazon S3
511
- # 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*.
512
721
  #
513
722
  #
514
723
  #
@@ -516,17 +725,28 @@ module Aws::S3
516
725
  # @option options [String] :checksum_crc32c
517
726
  # This header can be used as a data integrity check to verify that the
518
727
  # data received is the same data that was originally sent. This header
519
- # specifies the base64-encoded, 32-bit CRC32C checksum of the object.
728
+ # specifies the Base64 encoded, 32-bit `CRC32C` checksum of the object.
520
729
  # For more information, see [Checking object integrity][1] in the
521
730
  # *Amazon S3 User Guide*.
522
731
  #
523
732
  #
524
733
  #
525
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
526
746
  # @option options [String] :checksum_sha1
527
747
  # This header can be used as a data integrity check to verify that the
528
748
  # data received is the same data that was originally sent. This header
529
- # 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
530
750
  # more information, see [Checking object integrity][1] in the *Amazon S3
531
751
  # User Guide*.
532
752
  #
@@ -536,7 +756,7 @@ module Aws::S3
536
756
  # @option options [String] :checksum_sha256
537
757
  # This header can be used as a data integrity check to verify that the
538
758
  # data received is the same data that was originally sent. This header
539
- # specifies the base64-encoded, 256-bit SHA-256 digest of the object.
759
+ # specifies the Base64 encoded, 256-bit `SHA256` digest of the object.
540
760
  # For more information, see [Checking object integrity][1] in the
541
761
  # *Amazon S3 User Guide*.
542
762
  #
@@ -551,37 +771,175 @@ module Aws::S3
551
771
  #
552
772
  #
553
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
554
811
  # @option options [String] :grant_full_control
555
812
  # Gives the grantee READ, READ\_ACP, and WRITE\_ACP permissions on the
556
813
  # object.
557
814
  #
558
- # 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>
559
820
  # @option options [String] :grant_read
560
821
  # Allows grantee to read the object data and its metadata.
561
822
  #
562
- # 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>
563
828
  # @option options [String] :grant_read_acp
564
829
  # Allows grantee to read the object ACL.
565
830
  #
566
- # 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>
567
836
  # @option options [String] :grant_write_acp
568
837
  # Allows grantee to write the ACL for the applicable object.
569
838
  #
570
- # 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>
571
844
  # @option options [required, String] :key
572
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>
573
856
  # @option options [Hash<String,String>] :metadata
574
857
  # A map of metadata to store with the object in S3.
575
858
  # @option options [String] :server_side_encryption
576
- # The server-side encryption algorithm used when storing this object in
577
- # 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
578
929
  # @option options [String] :storage_class
579
930
  # By default, Amazon S3 uses the STANDARD Storage Class to store newly
580
931
  # created objects. The STANDARD storage class provides high durability
581
932
  # and high availability. Depending on performance needs, you can specify
582
- # a different Storage Class. Amazon S3 on Outposts only uses the
583
- # OUTPOSTS Storage Class. For more information, see [Storage Classes][1]
584
- # 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>
585
943
  #
586
944
  #
587
945
  #
@@ -590,7 +948,8 @@ module Aws::S3
590
948
  # If the bucket is configured as a website, redirects requests for this
591
949
  # object to another object in the same bucket or to an external URL.
592
950
  # Amazon S3 stores the value of this header in the object metadata. For
593
- # 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*.
594
953
  #
595
954
  # In the following example, the request header sets the redirect to an
596
955
  # object (anotherPage.html) in the same bucket:
@@ -604,7 +963,11 @@ module Aws::S3
604
963
  #
605
964
  # For more information about website hosting in Amazon S3, see [Hosting
606
965
  # Websites on Amazon S3][2] and [How to Configure Website Page
607
- # 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>
608
971
  #
609
972
  #
610
973
  #
@@ -612,52 +975,120 @@ module Aws::S3
612
975
  # [2]: https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html
613
976
  # [3]: https://docs.aws.amazon.com/AmazonS3/latest/dev/how-to-page-redirect.html
614
977
  # @option options [String] :sse_customer_algorithm
615
- # Specifies the algorithm to use to when encrypting the object (for
616
- # 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>
617
984
  # @option options [String] :sse_customer_key
618
985
  # Specifies the customer-provided encryption key for Amazon S3 to use in
619
986
  # encrypting data. This value is used to store the object and then it is
620
987
  # discarded; Amazon S3 does not store the encryption key. The key must
621
988
  # be appropriate for use with the algorithm specified in the
622
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>
623
994
  # @option options [String] :sse_customer_key_md5
624
995
  # Specifies the 128-bit MD5 digest of the encryption key according to
625
996
  # RFC 1321. Amazon S3 uses this header for a message integrity check to
626
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>
627
1002
  # @option options [String] :ssekms_key_id
628
- # If `x-amz-server-side-encryption` has a valid value of `aws:kms` or
629
- # `aws:kms:dsse`, this header specifies the ID (Key ID, Key ARN, or Key
630
- # Alias) of the Key Management Service (KMS) symmetric encryption
631
- # customer managed key that was used for the object. If you specify
632
- # `x-amz-server-side-encryption:aws:kms` or
633
- # `x-amz-server-side-encryption:aws:kms:dsse`, but do not provide`
634
- # x-amz-server-side-encryption-aws-kms-key-id`, Amazon S3 uses the
635
- # Amazon Web Services managed key (`aws/s3`) to protect the data. If the
636
- # KMS key does not exist in the same account that's issuing the
637
- # 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
638
1032
  # @option options [String] :ssekms_encryption_context
639
- # Specifies the Amazon Web Services KMS Encryption Context to use for
640
- # object encryption. The value of this header is a base64-encoded UTF-8
641
- # string holding JSON with the encryption context key-value pairs. This
642
- # value is stored as object metadata and automatically gets passed on to
643
- # Amazon Web Services KMS for future `GetObject` or `CopyObject`
644
- # 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
645
1054
  # @option options [Boolean] :bucket_key_enabled
646
1055
  # Specifies whether Amazon S3 should use an S3 Bucket Key for object
647
1056
  # encryption with server-side encryption using Key Management Service
648
- # (KMS) keys (SSE-KMS). Setting this header to `true` causes Amazon S3
649
- # 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.
650
1063
  #
651
- # Specifying this header with a PUT action doesn’t affect bucket-level
652
- # settings for S3 Bucket Key.
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.
1073
+ #
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
653
1080
  # @option options [String] :request_payer
654
1081
  # Confirms that the requester knows that they will be charged for the
655
1082
  # request. Bucket owners need not specify this parameter in their
656
- # requests. If either the source or destination Amazon S3 bucket has
657
- # Requester Pays enabled, the requester will pay for corresponding
658
- # charges to copy the object. For information about downloading objects
659
- # from Requester Pays buckets, see [Downloading Objects in Requester
660
- # Pays Buckets][1] in the *Amazon S3 User Guide*.
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
1086
+ # Pays buckets, see [Downloading Objects in Requester Pays Buckets][1]
1087
+ # in the *Amazon S3 User Guide*.
1088
+ #
1089
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1090
+ #
1091
+ # </note>
661
1092
  #
662
1093
  #
663
1094
  #
@@ -665,26 +1096,43 @@ module Aws::S3
665
1096
  # @option options [String] :tagging
666
1097
  # The tag-set for the object. The tag-set must be encoded as URL Query
667
1098
  # parameters. (For example, "Key1=Value1")
1099
+ #
1100
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1101
+ #
1102
+ # </note>
668
1103
  # @option options [String] :object_lock_mode
669
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>
670
1109
  # @option options [Time,DateTime,Date,Integer,String] :object_lock_retain_until_date
671
1110
  # The date and time when you want this object's Object Lock to expire.
672
1111
  # Must be formatted as a timestamp parameter.
1112
+ #
1113
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1114
+ #
1115
+ # </note>
673
1116
  # @option options [String] :object_lock_legal_hold_status
674
1117
  # Specifies whether a legal hold will be applied to this object. For
675
- # 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>
676
1124
  #
677
1125
  #
678
1126
  #
679
1127
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock.html
680
1128
  # @option options [String] :expected_bucket_owner
681
- # The account ID of the expected bucket owner. If the bucket is owned by
682
- # a different account, the request fails with the HTTP status code `403
683
- # 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).
684
1132
  # @return [Object]
685
1133
  def put_object(options = {})
686
1134
  options = options.merge(bucket: @name)
687
- Aws::Plugins::UserAgent.feature('resource') do
1135
+ Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
688
1136
  @client.put_object(options)
689
1137
  end
690
1138
  Object.new(
@@ -757,30 +1205,73 @@ module Aws::S3
757
1205
  # don't specify the prefix parameter, then the substring starts at the
758
1206
  # beginning of the key. The keys that are grouped under `CommonPrefixes`
759
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>
760
1216
  # @option options [String] :encoding_type
761
- # Requests Amazon S3 to encode the object keys in the response and
762
- # specifies the encoding method to use. An object key can contain any
763
- # Unicode character; however, the XML 1.0 parser cannot parse some
764
- # characters, such as characters with an ASCII value from 0 to 10. For
765
- # characters that are not supported in XML 1.0, you can add this
766
- # 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
767
1237
  # @option options [String] :key_marker
768
- # Together with `upload-id-marker`, this parameter specifies the
769
- # multipart upload after which listing should begin.
1238
+ # Specifies the multipart upload after which listing should begin.
770
1239
  #
771
- # If `upload-id-marker` is not specified, only the keys
772
- # lexicographically greater than the specified `key-marker` will be
773
- # 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.
774
1244
  #
775
- # If `upload-id-marker` is specified, any multipart uploads for a key
776
- # equal to the `key-marker` might also be included, provided those
777
- # multipart uploads have upload IDs lexicographically greater than the
778
- # 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>
779
1265
  # @option options [String] :prefix
780
1266
  # Lists in-progress uploads only for those keys that begin with the
781
1267
  # specified prefix. You can use prefixes to separate a bucket into
782
1268
  # different grouping of keys. (You can think of using `prefix` to make
783
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>
784
1275
  # @option options [String] :upload_id_marker
785
1276
  # Together with key-marker, specifies the multipart upload after which
786
1277
  # listing should begin. If key-marker is not specified, the
@@ -788,18 +1279,26 @@ module Aws::S3
788
1279
  # uploads for a key equal to the key-marker might be included in the
789
1280
  # list only if they have an upload ID lexicographically greater than the
790
1281
  # specified `upload-id-marker`.
1282
+ #
1283
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1284
+ #
1285
+ # </note>
791
1286
  # @option options [String] :expected_bucket_owner
792
- # The account ID of the expected bucket owner. If the bucket is owned by
793
- # a different account, the request fails with the HTTP status code `403
794
- # 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).
795
1290
  # @option options [String] :request_payer
796
1291
  # Confirms that the requester knows that they will be charged for the
797
1292
  # request. Bucket owners need not specify this parameter in their
798
- # requests. If either the source or destination Amazon S3 bucket has
799
- # Requester Pays enabled, the requester will pay for corresponding
800
- # charges to copy the object. For information about downloading objects
801
- # from Requester Pays buckets, see [Downloading Objects in Requester
802
- # Pays Buckets][1] in the *Amazon S3 User Guide*.
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
1296
+ # Pays buckets, see [Downloading Objects in Requester Pays Buckets][1]
1297
+ # in the *Amazon S3 User Guide*.
1298
+ #
1299
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1300
+ #
1301
+ # </note>
803
1302
  #
804
1303
  #
805
1304
  #
@@ -808,7 +1307,7 @@ module Aws::S3
808
1307
  def multipart_uploads(options = {})
809
1308
  batches = Enumerator.new do |y|
810
1309
  options = options.merge(bucket: @name)
811
- resp = Aws::Plugins::UserAgent.feature('resource') do
1310
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
812
1311
  @client.list_multipart_uploads(options)
813
1312
  end
814
1313
  resp.each_page do |page|
@@ -866,13 +1365,30 @@ module Aws::S3
866
1365
  # in `CommonPrefixes`. These groups are counted as one result against
867
1366
  # the `max-keys` limitation. These keys are not returned elsewhere in
868
1367
  # the response.
1368
+ #
1369
+ # `CommonPrefixes` is filtered out from results if it is not
1370
+ # lexicographically greater than the key-marker.
869
1371
  # @option options [String] :encoding_type
870
- # Requests Amazon S3 to encode the object keys in the response and
871
- # specifies the encoding method to use. An object key can contain any
872
- # Unicode character; however, the XML 1.0 parser cannot parse some
873
- # characters, such as characters with an ASCII value from 0 to 10. For
874
- # characters that are not supported in XML 1.0, you can add this
875
- # 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
876
1392
  # @option options [String] :key_marker
877
1393
  # Specifies the key to start with when listing objects in a bucket.
878
1394
  # @option options [String] :prefix
@@ -885,17 +1401,21 @@ module Aws::S3
885
1401
  # @option options [String] :version_id_marker
886
1402
  # Specifies the object version you want to start listing from.
887
1403
  # @option options [String] :expected_bucket_owner
888
- # The account ID of the expected bucket owner. If the bucket is owned by
889
- # a different account, the request fails with the HTTP status code `403
890
- # 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).
891
1407
  # @option options [String] :request_payer
892
1408
  # Confirms that the requester knows that they will be charged for the
893
1409
  # request. Bucket owners need not specify this parameter in their
894
- # requests. If either the source or destination Amazon S3 bucket has
895
- # Requester Pays enabled, the requester will pay for corresponding
896
- # charges to copy the object. For information about downloading objects
897
- # from Requester Pays buckets, see [Downloading Objects in Requester
898
- # Pays Buckets][1] in the *Amazon S3 User Guide*.
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
1413
+ # Pays buckets, see [Downloading Objects in Requester Pays Buckets][1]
1414
+ # in the *Amazon S3 User Guide*.
1415
+ #
1416
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1417
+ #
1418
+ # </note>
899
1419
  #
900
1420
  #
901
1421
  #
@@ -907,7 +1427,7 @@ module Aws::S3
907
1427
  def object_versions(options = {})
908
1428
  batches = Enumerator.new do |y|
909
1429
  options = options.merge(bucket: @name)
910
- resp = Aws::Plugins::UserAgent.feature('resource') do
1430
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
911
1431
  @client.list_object_versions(options)
912
1432
  end
913
1433
  resp.each_page do |page|
@@ -942,34 +1462,94 @@ module Aws::S3
942
1462
  # @param [Hash] options ({})
943
1463
  # @option options [String] :delimiter
944
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
945
1484
  # @option options [String] :encoding_type
946
- # 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
947
1505
  # @option options [String] :prefix
948
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>
949
1512
  # @option options [Boolean] :fetch_owner
950
1513
  # The owner field is not present in `ListObjectsV2` by default. If you
951
1514
  # want to return the owner field with each key in the result, then set
952
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>
953
1521
  # @option options [String] :start_after
954
1522
  # StartAfter is where you want Amazon S3 to start listing from. Amazon
955
1523
  # S3 starts listing after this specified key. StartAfter can be any key
956
1524
  # in the bucket.
1525
+ #
1526
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1527
+ #
1528
+ # </note>
957
1529
  # @option options [String] :request_payer
958
1530
  # Confirms that the requester knows that she or he will be charged for
959
1531
  # the list objects request in V2 style. Bucket owners need not specify
960
1532
  # this parameter in their requests.
1533
+ #
1534
+ # <note markdown="1"> This functionality is not supported for directory buckets.
1535
+ #
1536
+ # </note>
961
1537
  # @option options [String] :expected_bucket_owner
962
- # The account ID of the expected bucket owner. If the bucket is owned by
963
- # a different account, the request fails with the HTTP status code `403
964
- # 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).
965
1541
  # @option options [Array<String>] :optional_object_attributes
966
1542
  # Specifies the optional fields that you want returned in the response.
967
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>
968
1548
  # @return [ObjectSummary::Collection]
969
1549
  def objects(options = {})
970
1550
  batches = Enumerator.new do |y|
971
1551
  options = options.merge(bucket: @name)
972
- resp = Aws::Plugins::UserAgent.feature('resource') do
1552
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
973
1553
  @client.list_objects_v2(options)
974
1554
  end
975
1555
  resp.each_page do |page|
@@ -1078,3 +1658,6 @@ module Aws::S3
1078
1658
  class Collection < Aws::Resources::Collection; end
1079
1659
  end
1080
1660
  end
1661
+
1662
+ # Load customizations if they exist
1663
+ require 'aws-sdk-s3/customizations/bucket'