aws-sdk-s3 1.142.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 (118) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +417 -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 +358 -106
  7. data/lib/aws-sdk-s3/bucket_acl.rb +10 -9
  8. data/lib/aws-sdk-s3/bucket_cors.rb +10 -9
  9. data/lib/aws-sdk-s3/bucket_lifecycle.rb +11 -6
  10. data/lib/aws-sdk-s3/bucket_lifecycle_configuration.rb +64 -7
  11. data/lib/aws-sdk-s3/bucket_logging.rb +5 -5
  12. data/lib/aws-sdk-s3/bucket_notification.rb +3 -3
  13. data/lib/aws-sdk-s3/bucket_policy.rb +14 -13
  14. data/lib/aws-sdk-s3/bucket_region_cache.rb +9 -5
  15. data/lib/aws-sdk-s3/bucket_request_payment.rb +6 -6
  16. data/lib/aws-sdk-s3/bucket_tagging.rb +7 -7
  17. data/lib/aws-sdk-s3/bucket_versioning.rb +47 -14
  18. data/lib/aws-sdk-s3/bucket_website.rb +7 -7
  19. data/lib/aws-sdk-s3/client.rb +5671 -2195
  20. data/lib/aws-sdk-s3/client_api.rb +665 -166
  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 -36
  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 +37 -34
  57. data/lib/aws-sdk-s3/endpoint_provider.rb +572 -277
  58. data/lib/aws-sdk-s3/endpoints.rb +566 -1612
  59. data/lib/aws-sdk-s3/errors.rb +58 -0
  60. data/lib/aws-sdk-s3/express_credentials_provider.rb +27 -4
  61. data/lib/aws-sdk-s3/file_downloader.rb +192 -146
  62. data/lib/aws-sdk-s3/file_uploader.rb +10 -14
  63. data/lib/aws-sdk-s3/legacy_signer.rb +2 -1
  64. data/lib/aws-sdk-s3/multipart_download_error.rb +8 -0
  65. data/lib/aws-sdk-s3/multipart_file_uploader.rb +106 -102
  66. data/lib/aws-sdk-s3/multipart_stream_uploader.rb +99 -108
  67. data/lib/aws-sdk-s3/multipart_upload.rb +112 -12
  68. data/lib/aws-sdk-s3/multipart_upload_error.rb +3 -4
  69. data/lib/aws-sdk-s3/multipart_upload_part.rb +55 -39
  70. data/lib/aws-sdk-s3/object.rb +713 -227
  71. data/lib/aws-sdk-s3/object_acl.rb +15 -9
  72. data/lib/aws-sdk-s3/object_copier.rb +1 -1
  73. data/lib/aws-sdk-s3/object_multipart_copier.rb +12 -9
  74. data/lib/aws-sdk-s3/object_summary.rb +592 -173
  75. data/lib/aws-sdk-s3/object_version.rb +102 -17
  76. data/lib/aws-sdk-s3/plugins/access_grants.rb +178 -0
  77. data/lib/aws-sdk-s3/plugins/checksum_algorithm.rb +31 -0
  78. data/lib/aws-sdk-s3/plugins/endpoints.rb +26 -213
  79. data/lib/aws-sdk-s3/plugins/express_session_auth.rb +19 -21
  80. data/lib/aws-sdk-s3/plugins/http_200_errors.rb +55 -18
  81. data/lib/aws-sdk-s3/plugins/md5s.rb +10 -71
  82. data/lib/aws-sdk-s3/plugins/s3_signer.rb +7 -2
  83. data/lib/aws-sdk-s3/plugins/streaming_retry.rb +5 -7
  84. data/lib/aws-sdk-s3/plugins/url_encoded_keys.rb +2 -1
  85. data/lib/aws-sdk-s3/presigner.rb +7 -5
  86. data/lib/aws-sdk-s3/resource.rb +53 -20
  87. data/lib/aws-sdk-s3/transfer_manager.rb +303 -0
  88. data/lib/aws-sdk-s3/types.rb +4738 -1542
  89. data/lib/aws-sdk-s3.rb +35 -31
  90. data/sig/bucket.rbs +231 -0
  91. data/sig/bucket_acl.rbs +78 -0
  92. data/sig/bucket_cors.rbs +69 -0
  93. data/sig/bucket_lifecycle.rbs +88 -0
  94. data/sig/bucket_lifecycle_configuration.rbs +115 -0
  95. data/sig/bucket_logging.rbs +76 -0
  96. data/sig/bucket_notification.rbs +114 -0
  97. data/sig/bucket_policy.rbs +59 -0
  98. data/sig/bucket_request_payment.rbs +54 -0
  99. data/sig/bucket_tagging.rbs +65 -0
  100. data/sig/bucket_versioning.rbs +77 -0
  101. data/sig/bucket_website.rbs +93 -0
  102. data/sig/client.rbs +2612 -0
  103. data/sig/customizations/bucket.rbs +19 -0
  104. data/sig/customizations/object.rbs +38 -0
  105. data/sig/customizations/object_summary.rbs +35 -0
  106. data/sig/errors.rbs +44 -0
  107. data/sig/multipart_upload.rbs +120 -0
  108. data/sig/multipart_upload_part.rbs +109 -0
  109. data/sig/object.rbs +464 -0
  110. data/sig/object_acl.rbs +86 -0
  111. data/sig/object_summary.rbs +347 -0
  112. data/sig/object_version.rbs +143 -0
  113. data/sig/resource.rbs +141 -0
  114. data/sig/types.rbs +2899 -0
  115. data/sig/waiters.rbs +95 -0
  116. metadata +58 -13
  117. data/lib/aws-sdk-s3/express_credentials_cache.rb +0 -30
  118. data/lib/aws-sdk-s3/plugins/skip_whole_multipart_get_checksums.rb +0 -31
@@ -66,7 +66,9 @@ module Aws::S3
66
66
  # providing object expiration information. The value of the `rule-id` is
67
67
  # URL-encoded.
68
68
  #
69
- # <note markdown="1"> This functionality is not supported for directory buckets.
69
+ # <note markdown="1"> Object expiration information is not returned in directory buckets and
70
+ # this header returns the value "`NotImplemented`" in all responses
71
+ # for directory buckets.
70
72
  #
71
73
  # </note>
72
74
  #
@@ -95,9 +97,10 @@ module Aws::S3
95
97
  # For more information about archiving objects, see [Transitioning
96
98
  # Objects: General Considerations][2].
97
99
  #
98
- # <note markdown="1"> This functionality is not supported for directory buckets. Only the S3
99
- # Express One Zone storage class is supported by directory buckets to
100
- # store objects.
100
+ # <note markdown="1"> This functionality is not supported for directory buckets. Directory
101
+ # buckets only support `EXPRESS_ONEZONE` (the S3 Express One Zone
102
+ # storage class) in Availability Zones and `ONEZONE_IA` (the S3 One
103
+ # Zone-Infrequent Access storage class) in Dedicated Local Zones.
101
104
  #
102
105
  # </note>
103
106
  #
@@ -132,14 +135,14 @@ module Aws::S3
132
135
  data[:content_length]
133
136
  end
134
137
 
135
- # The base64-encoded, 32-bit CRC32 checksum of the object. This will
136
- # only be present if it was uploaded with the object. When you use an
137
- # API operation on an object that was uploaded using multipart uploads,
138
- # this value may not be a direct checksum value of the full object.
139
- # Instead, it's a calculation based on the checksum values of each
140
- # individual part. For more information about how checksums are
141
- # calculated with multipart uploads, see [ Checking object integrity][1]
142
- # in the *Amazon S3 User Guide*.
138
+ # The Base64 encoded, 32-bit `CRC32 checksum` of the object. This
139
+ # checksum is only present if the checksum was uploaded with the object.
140
+ # When you use an API operation on an object that was uploaded using
141
+ # multipart uploads, this value may not be a direct checksum value of
142
+ # the full object. Instead, it's a calculation based on the checksum
143
+ # values of each individual part. For more information about how
144
+ # checksums are calculated with multipart uploads, see [ Checking object
145
+ # integrity][1] in the *Amazon S3 User Guide*.
143
146
  #
144
147
  #
145
148
  #
@@ -149,14 +152,14 @@ module Aws::S3
149
152
  data[:checksum_crc32]
150
153
  end
151
154
 
152
- # The base64-encoded, 32-bit CRC32C checksum of the object. This will
153
- # only be present if it was uploaded with the object. When you use an
154
- # API operation on an object that was uploaded using multipart uploads,
155
- # this value may not be a direct checksum value of the full object.
156
- # Instead, it's a calculation based on the checksum values of each
157
- # individual part. For more information about how checksums are
158
- # calculated with multipart uploads, see [ Checking object integrity][1]
159
- # in the *Amazon S3 User Guide*.
155
+ # The Base64 encoded, 32-bit `CRC32C` checksum of the object. This
156
+ # checksum is only present if the checksum was uploaded with the object.
157
+ # When you use an API operation on an object that was uploaded using
158
+ # multipart uploads, this value may not be a direct checksum value of
159
+ # the full object. Instead, it's a calculation based on the checksum
160
+ # values of each individual part. For more information about how
161
+ # checksums are calculated with multipart uploads, see [ Checking object
162
+ # integrity][1] in the *Amazon S3 User Guide*.
160
163
  #
161
164
  #
162
165
  #
@@ -166,14 +169,26 @@ module Aws::S3
166
169
  data[:checksum_crc32c]
167
170
  end
168
171
 
169
- # The base64-encoded, 160-bit SHA-1 digest of the object. This will only
170
- # be present if it was uploaded with the object. When you use the API
171
- # operation on an object that was uploaded using multipart uploads, this
172
- # value may not be a direct checksum value of the full object. Instead,
173
- # it's a calculation based on the checksum values of each individual
174
- # part. For more information about how checksums are calculated with
175
- # multipart uploads, see [ Checking object integrity][1] in the *Amazon
176
- # S3 User Guide*.
172
+ # The Base64 encoded, 64-bit `CRC64NVME` checksum of the object. For
173
+ # more information, see [Checking object integrity in the Amazon S3 User
174
+ # Guide][1].
175
+ #
176
+ #
177
+ #
178
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
179
+ # @return [String]
180
+ def checksum_crc64nvme
181
+ data[:checksum_crc64nvme]
182
+ end
183
+
184
+ # The Base64 encoded, 160-bit `SHA1` digest of the object. This checksum
185
+ # is only present if the checksum was uploaded with the object. When you
186
+ # use the API operation on an object that was uploaded using multipart
187
+ # uploads, this value may not be a direct checksum value of the full
188
+ # object. Instead, it's a calculation based on the checksum values of
189
+ # each individual part. For more information about how checksums are
190
+ # calculated with multipart uploads, see [ Checking object integrity][1]
191
+ # in the *Amazon S3 User Guide*.
177
192
  #
178
193
  #
179
194
  #
@@ -183,14 +198,14 @@ module Aws::S3
183
198
  data[:checksum_sha1]
184
199
  end
185
200
 
186
- # The base64-encoded, 256-bit SHA-256 digest of the object. This will
187
- # only be present if it was uploaded with the object. When you use an
188
- # API operation on an object that was uploaded using multipart uploads,
189
- # this value may not be a direct checksum value of the full object.
190
- # Instead, it's a calculation based on the checksum values of each
191
- # individual part. For more information about how checksums are
192
- # calculated with multipart uploads, see [ Checking object integrity][1]
193
- # in the *Amazon S3 User Guide*.
201
+ # The Base64 encoded, 256-bit `SHA256` digest of the object. This
202
+ # checksum is only present if the checksum was uploaded with the object.
203
+ # When you use an API operation on an object that was uploaded using
204
+ # multipart uploads, this value may not be a direct checksum value of
205
+ # the full object. Instead, it's a calculation based on the checksum
206
+ # values of each individual part. For more information about how
207
+ # checksums are calculated with multipart uploads, see [ Checking object
208
+ # integrity][1] in the *Amazon S3 User Guide*.
194
209
  #
195
210
  #
196
211
  #
@@ -200,6 +215,21 @@ module Aws::S3
200
215
  data[:checksum_sha256]
201
216
  end
202
217
 
218
+ # The checksum type, which determines how part-level checksums are
219
+ # combined to create an object-level checksum for multipart objects. You
220
+ # can use this header response to verify that the checksum type that is
221
+ # received is the same checksum type that was specified in
222
+ # `CreateMultipartUpload` request. For more information, see [Checking
223
+ # object integrity in the Amazon S3 User Guide][1].
224
+ #
225
+ #
226
+ #
227
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
228
+ # @return [String]
229
+ def checksum_type
230
+ data[:checksum_type]
231
+ end
232
+
203
233
  # An entity tag (ETag) is an opaque identifier assigned by a web server
204
234
  # to a specific version of a resource found at a URL.
205
235
  # @return [String]
@@ -263,6 +293,13 @@ module Aws::S3
263
293
  data[:content_type]
264
294
  end
265
295
 
296
+ # The portion of the object returned in the response for a `GET`
297
+ # request.
298
+ # @return [String]
299
+ def content_range
300
+ data[:content_range]
301
+ end
302
+
266
303
  # The date and time at which the object is no longer cacheable.
267
304
  # @return [Time]
268
305
  def expires
@@ -287,10 +324,10 @@ module Aws::S3
287
324
  end
288
325
 
289
326
  # The server-side encryption algorithm used when you store this object
290
- # in Amazon S3 (for example, `AES256`, `aws:kms`, `aws:kms:dsse`).
327
+ # in Amazon S3 or Amazon FSx.
291
328
  #
292
- # <note markdown="1"> For directory buckets, only server-side encryption with Amazon S3
293
- # managed keys (SSE-S3) (`AES256`) is supported.
329
+ # <note markdown="1"> When accessing data stored in Amazon FSx file systems using S3 access
330
+ # points, the only valid server side encryption option is `aws:fsx`.
294
331
  #
295
332
  # </note>
296
333
  # @return [String]
@@ -329,13 +366,8 @@ module Aws::S3
329
366
  data[:sse_customer_key_md5]
330
367
  end
331
368
 
332
- # If present, indicates the ID of the Key Management Service (KMS)
333
- # symmetric encryption customer managed key that was used for the
334
- # object.
335
- #
336
- # <note markdown="1"> This functionality is not supported for directory buckets.
337
- #
338
- # </note>
369
+ # If present, indicates the ID of the KMS key that was used for object
370
+ # encryption.
339
371
  # @return [String]
340
372
  def ssekms_key_id
341
373
  data[:ssekms_key_id]
@@ -343,10 +375,6 @@ module Aws::S3
343
375
 
344
376
  # Indicates whether the object uses an S3 Bucket Key for server-side
345
377
  # encryption with Key Management Service (KMS) keys (SSE-KMS).
346
- #
347
- # <note markdown="1"> This functionality is not supported for directory buckets.
348
- #
349
- # </note>
350
378
  # @return [Boolean]
351
379
  def bucket_key_enabled
352
380
  data[:bucket_key_enabled]
@@ -358,8 +386,10 @@ module Aws::S3
358
386
  #
359
387
  # For more information, see [Storage Classes][1].
360
388
  #
361
- # <note markdown="1"> <b>Directory buckets </b> - Only the S3 Express One Zone storage class
362
- # is supported by directory buckets to store objects.
389
+ # <note markdown="1"> <b>Directory buckets </b> - Directory buckets only support
390
+ # `EXPRESS_ONEZONE` (the S3 Express One Zone storage class) in
391
+ # Availability Zones and `ONEZONE_IA` (the S3 One Zone-Infrequent Access
392
+ # storage class) in Dedicated Local Zones.
363
393
  #
364
394
  # </note>
365
395
  #
@@ -372,11 +402,17 @@ module Aws::S3
372
402
  end
373
403
 
374
404
  # If present, indicates that the requester was successfully charged for
375
- # the request.
405
+ # the request. For more information, see [Using Requester Pays buckets
406
+ # for storage transfers and usage][1] in the *Amazon Simple Storage
407
+ # Service user guide*.
376
408
  #
377
409
  # <note markdown="1"> This functionality is not supported for directory buckets.
378
410
  #
379
411
  # </note>
412
+ #
413
+ #
414
+ #
415
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/RequesterPaysBuckets.html
380
416
  # @return [String]
381
417
  def request_charged
382
418
  data[:request_charged]
@@ -439,6 +475,24 @@ module Aws::S3
439
475
  data[:parts_count]
440
476
  end
441
477
 
478
+ # The number of tags, if any, on the object, when you have the relevant
479
+ # permission to read object tags.
480
+ #
481
+ # You can use [GetObjectTagging][1] to retrieve the tag set associated
482
+ # with an object.
483
+ #
484
+ # <note markdown="1"> This functionality is not supported for directory buckets.
485
+ #
486
+ # </note>
487
+ #
488
+ #
489
+ #
490
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html
491
+ # @return [Integer]
492
+ def tag_count
493
+ data[:tag_count]
494
+ end
495
+
442
496
  # The Object Lock mode, if any, that's in effect for this object. This
443
497
  # header is only returned if the requester has the
444
498
  # `s3:GetObjectRetention` permission. For more information about S3
@@ -500,7 +554,7 @@ module Aws::S3
500
554
  #
501
555
  # @return [self]
502
556
  def load
503
- resp = Aws::Plugins::UserAgent.feature('resource') do
557
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
504
558
  @client.head_object(
505
559
  bucket: @bucket_name,
506
560
  key: @key
@@ -550,7 +604,7 @@ module Aws::S3
550
604
  options, params = separate_params_and_options(options)
551
605
  waiter = Waiters::ObjectExists.new(options)
552
606
  yield_waiter_and_warn(waiter, &block) if block_given?
553
- Aws::Plugins::UserAgent.feature('resource') do
607
+ Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
554
608
  waiter.wait(params.merge(bucket: @bucket_name,
555
609
  key: @key))
556
610
  end
@@ -571,7 +625,7 @@ module Aws::S3
571
625
  options, params = separate_params_and_options(options)
572
626
  waiter = Waiters::ObjectNotExists.new(options)
573
627
  yield_waiter_and_warn(waiter, &block) if block_given?
574
- Aws::Plugins::UserAgent.feature('resource') do
628
+ Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
575
629
  waiter.wait(params.merge(bucket: @bucket_name,
576
630
  key: @key))
577
631
  end
@@ -676,7 +730,7 @@ module Aws::S3
676
730
  :retry
677
731
  end
678
732
  end
679
- Aws::Plugins::UserAgent.feature('resource') do
733
+ Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
680
734
  Aws::Waiters::Waiter.new(options).wait({})
681
735
  end
682
736
  end
@@ -688,7 +742,7 @@ module Aws::S3
688
742
  # object.copy_from({
689
743
  # acl: "private", # accepts private, public-read, public-read-write, authenticated-read, aws-exec-read, bucket-owner-read, bucket-owner-full-control
690
744
  # cache_control: "CacheControl",
691
- # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256
745
+ # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256, CRC64NVME
692
746
  # content_disposition: "ContentDisposition",
693
747
  # content_encoding: "ContentEncoding",
694
748
  # content_language: "ContentLanguage",
@@ -703,13 +757,15 @@ module Aws::S3
703
757
  # grant_read: "GrantRead",
704
758
  # grant_read_acp: "GrantReadACP",
705
759
  # grant_write_acp: "GrantWriteACP",
760
+ # if_match: "IfMatch",
761
+ # if_none_match: "IfNoneMatch",
706
762
  # metadata: {
707
763
  # "MetadataKey" => "MetadataValue",
708
764
  # },
709
765
  # metadata_directive: "COPY", # accepts COPY, REPLACE
710
766
  # tagging_directive: "COPY", # accepts COPY, REPLACE
711
- # server_side_encryption: "AES256", # accepts AES256, aws:kms, aws:kms:dsse
712
- # storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE, OUTPOSTS, GLACIER_IR, SNOW, EXPRESS_ONEZONE
767
+ # server_side_encryption: "AES256", # accepts AES256, aws:fsx, aws:kms, aws:kms:dsse
768
+ # 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
713
769
  # website_redirect_location: "WebsiteRedirectLocation",
714
770
  # sse_customer_algorithm: "SSECustomerAlgorithm",
715
771
  # sse_customer_key: "SSECustomerKey",
@@ -959,6 +1015,35 @@ module Aws::S3
959
1015
  # * This functionality is not supported for Amazon S3 on Outposts.
960
1016
  #
961
1017
  # </note>
1018
+ # @option options [String] :if_match
1019
+ # Copies the object if the entity tag (ETag) of the destination object
1020
+ # matches the specified tag. If the ETag values do not match, the
1021
+ # operation returns a `412 Precondition Failed` error. If a concurrent
1022
+ # operation occurs during the upload S3 returns a `409
1023
+ # ConditionalRequestConflict` response. On a 409 failure you should
1024
+ # fetch the object's ETag and retry the upload.
1025
+ #
1026
+ # Expects the ETag value as a string.
1027
+ #
1028
+ # For more information about conditional requests, see [RFC 7232][1].
1029
+ #
1030
+ #
1031
+ #
1032
+ # [1]: https://tools.ietf.org/html/rfc7232
1033
+ # @option options [String] :if_none_match
1034
+ # Copies the object only if the object key name at the destination does
1035
+ # not already exist in the bucket specified. Otherwise, Amazon S3
1036
+ # returns a `412 Precondition Failed` error. If a concurrent operation
1037
+ # occurs during the upload S3 returns a `409 ConditionalRequestConflict`
1038
+ # response. On a 409 failure you should retry the upload.
1039
+ #
1040
+ # Expects the '*' (asterisk) character.
1041
+ #
1042
+ # For more information about conditional requests, see [RFC 7232][1].
1043
+ #
1044
+ #
1045
+ #
1046
+ # [1]: https://tools.ietf.org/html/rfc7232
962
1047
  # @option options [Hash<String,String>] :metadata
963
1048
  # A map of metadata to store with the object in S3.
964
1049
  # @option options [String] :metadata_directive
@@ -1031,9 +1116,8 @@ module Aws::S3
1031
1116
  # </note>
1032
1117
  # @option options [String] :server_side_encryption
1033
1118
  # The server-side encryption algorithm used when storing this object in
1034
- # Amazon S3 (for example, `AES256`, `aws:kms`, `aws:kms:dsse`).
1035
- # Unrecognized or unsupported values won’t write a destination object
1036
- # and will receive a `400 Bad Request` response.
1119
+ # Amazon S3. Unrecognized or unsupported values won’t write a
1120
+ # destination object and will receive a `400 Bad Request` response.
1037
1121
  #
1038
1122
  # Amazon S3 automatically encrypts all new objects that are copied to an
1039
1123
  # S3 bucket. When copying an object, if you don't specify encryption
@@ -1041,35 +1125,80 @@ module Aws::S3
1041
1125
  # object is set to the default encryption configuration of the
1042
1126
  # destination bucket. By default, all buckets have a base level of
1043
1127
  # encryption configuration that uses server-side encryption with Amazon
1044
- # S3 managed keys (SSE-S3). If the destination bucket has a default
1045
- # encryption configuration that uses server-side encryption with Key
1046
- # Management Service (KMS) keys (SSE-KMS), dual-layer server-side
1047
- # encryption with Amazon Web Services KMS keys (DSSE-KMS), or
1048
- # server-side encryption with customer-provided encryption keys (SSE-C),
1049
- # Amazon S3 uses the corresponding KMS key, or a customer-provided key
1050
- # to encrypt the target object copy.
1051
- #
1052
- # When you perform a `CopyObject` operation, if you want to use a
1053
- # different type of encryption setting for the target object, you can
1054
- # specify appropriate encryption-related headers to encrypt the target
1055
- # object with an Amazon S3 managed key, a KMS key, or a
1056
- # customer-provided key. If the encryption setting in your request is
1057
- # different from the default encryption configuration of the destination
1058
- # bucket, the encryption setting in your request takes precedence.
1128
+ # S3 managed keys (SSE-S3). If the destination bucket has a different
1129
+ # default encryption configuration, Amazon S3 uses the corresponding
1130
+ # encryption key to encrypt the target object copy.
1059
1131
  #
1060
1132
  # With server-side encryption, Amazon S3 encrypts your data as it writes
1061
1133
  # your data to disks in its data centers and decrypts the data when you
1062
1134
  # access it. For more information about server-side encryption, see
1063
1135
  # [Using Server-Side Encryption][1] in the *Amazon S3 User Guide*.
1064
1136
  #
1065
- # <note markdown="1"> For directory buckets, only server-side encryption with Amazon S3
1066
- # managed keys (SSE-S3) (`AES256`) is supported.
1067
- #
1068
- # </note>
1137
+ # <b>General purpose buckets </b>
1138
+ #
1139
+ # * For general purpose buckets, there are the following supported
1140
+ # options for server-side encryption: server-side encryption with Key
1141
+ # Management Service (KMS) keys (SSE-KMS), dual-layer server-side
1142
+ # encryption with Amazon Web Services KMS keys (DSSE-KMS), and
1143
+ # server-side encryption with customer-provided encryption keys
1144
+ # (SSE-C). Amazon S3 uses the corresponding KMS key, or a
1145
+ # customer-provided key to encrypt the target object copy.
1146
+ #
1147
+ # * When you perform a `CopyObject` operation, if you want to use a
1148
+ # different type of encryption setting for the target object, you can
1149
+ # specify appropriate encryption-related headers to encrypt the target
1150
+ # object with an Amazon S3 managed key, a KMS key, or a
1151
+ # customer-provided key. If the encryption setting in your request is
1152
+ # different from the default encryption configuration of the
1153
+ # destination bucket, the encryption setting in your request takes
1154
+ # precedence.
1155
+ #
1156
+ # <b>Directory buckets </b>
1157
+ #
1158
+ # * For directory buckets, there are only two supported options for
1159
+ # server-side encryption: server-side encryption with Amazon S3
1160
+ # managed keys (SSE-S3) (`AES256`) and server-side encryption with KMS
1161
+ # keys (SSE-KMS) (`aws:kms`). We recommend that the bucket's default
1162
+ # encryption uses the desired encryption configuration and you don't
1163
+ # override the bucket default encryption in your `CreateSession`
1164
+ # requests or `PUT` object requests. Then, new objects are
1165
+ # automatically encrypted with the desired encryption settings. For
1166
+ # more information, see [Protecting data with server-side
1167
+ # encryption][2] in the *Amazon S3 User Guide*. For more information
1168
+ # about the encryption overriding behaviors in directory buckets, see
1169
+ # [Specifying server-side encryption with KMS for new object
1170
+ # uploads][3].
1171
+ #
1172
+ # * To encrypt new object copies to a directory bucket with SSE-KMS, we
1173
+ # recommend you specify SSE-KMS as the directory bucket's default
1174
+ # encryption configuration with a KMS key (specifically, a [customer
1175
+ # managed key][4]). The [Amazon Web Services managed key][5]
1176
+ # (`aws/s3`) isn't supported. Your SSE-KMS configuration can only
1177
+ # support 1 [customer managed key][4] per directory bucket for the
1178
+ # lifetime of the bucket. After you specify a customer managed key for
1179
+ # SSE-KMS, you can't override the customer managed key for the
1180
+ # bucket's SSE-KMS configuration. Then, when you perform a
1181
+ # `CopyObject` operation and want to specify server-side encryption
1182
+ # settings for new object copies with SSE-KMS in the
1183
+ # encryption-related request headers, you must ensure the encryption
1184
+ # key is the same customer managed key that you specified for the
1185
+ # directory bucket's default encryption configuration.
1186
+ #
1187
+ # * <b>S3 access points for Amazon FSx </b> - When accessing data stored
1188
+ # in Amazon FSx file systems using S3 access points, the only valid
1189
+ # server side encryption option is `aws:fsx`. All Amazon FSx file
1190
+ # systems have encryption configured by default and are encrypted at
1191
+ # rest. Data is automatically encrypted before being written to the
1192
+ # file system, and automatically decrypted as it is read. These
1193
+ # processes are handled transparently by Amazon FSx.
1069
1194
  #
1070
1195
  #
1071
1196
  #
1072
1197
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html
1198
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html
1199
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html
1200
+ # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk
1201
+ # [5]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk
1073
1202
  # @option options [String] :storage_class
1074
1203
  # If the `x-amz-storage-class` header is not used, the copied object
1075
1204
  # will be stored in the `STANDARD` Storage Class by default. The
@@ -1077,10 +1206,12 @@ module Aws::S3
1077
1206
  # availability. Depending on performance needs, you can specify a
1078
1207
  # different Storage Class.
1079
1208
  #
1080
- # <note markdown="1"> * <b>Directory buckets </b> - For directory buckets, only the S3
1081
- # Express One Zone storage class is supported to store newly created
1082
- # objects. Unsupported storage class values won't write a destination
1083
- # object and will respond with the HTTP status code `400 Bad Request`.
1209
+ # <note markdown="1"> * <b>Directory buckets </b> - Directory buckets only support
1210
+ # `EXPRESS_ONEZONE` (the S3 Express One Zone storage class) in
1211
+ # Availability Zones and `ONEZONE_IA` (the S3 One Zone-Infrequent
1212
+ # Access storage class) in Dedicated Local Zones. Unsupported storage
1213
+ # class values won't write a destination object and will respond with
1214
+ # the HTTP status code `400 Bad Request`.
1084
1215
  #
1085
1216
  # * <b>Amazon S3 on Outposts </b> - S3 on Outposts only uses the
1086
1217
  # `OUTPOSTS` Storage Class.
@@ -1160,32 +1291,52 @@ module Aws::S3
1160
1291
  #
1161
1292
  # </note>
1162
1293
  # @option options [String] :ssekms_key_id
1163
- # Specifies the KMS ID (Key ID, Key ARN, or Key Alias) to use for object
1164
- # encryption. All GET and PUT requests for an object protected by KMS
1165
- # will fail if they're not made via SSL or using SigV4. For information
1166
- # about configuring any of the officially supported Amazon Web Services
1167
- # SDKs and Amazon Web Services CLI, see [Specifying the Signature
1168
- # Version in Request Authentication][1] in the *Amazon S3 User Guide*.
1169
- #
1170
- # <note markdown="1"> This functionality is not supported when the destination bucket is a
1171
- # directory bucket.
1172
- #
1173
- # </note>
1294
+ # Specifies the KMS key ID (Key ID, Key ARN, or Key Alias) to use for
1295
+ # object encryption. All GET and PUT requests for an object protected by
1296
+ # KMS will fail if they're not made via SSL or using SigV4. For
1297
+ # information about configuring any of the officially supported Amazon
1298
+ # Web Services SDKs and Amazon Web Services CLI, see [Specifying the
1299
+ # Signature Version in Request Authentication][1] in the *Amazon S3 User
1300
+ # Guide*.
1301
+ #
1302
+ # **Directory buckets** - To encrypt data using SSE-KMS, it's
1303
+ # recommended to specify the `x-amz-server-side-encryption` header to
1304
+ # `aws:kms`. Then, the `x-amz-server-side-encryption-aws-kms-key-id`
1305
+ # header implicitly uses the bucket's default KMS customer managed key
1306
+ # ID. If you want to explicitly set the `
1307
+ # x-amz-server-side-encryption-aws-kms-key-id` header, it must match the
1308
+ # bucket's default customer managed key (using key ID or ARN, not
1309
+ # alias). Your SSE-KMS configuration can only support 1 [customer
1310
+ # managed key][2] per directory bucket's lifetime. The [Amazon Web
1311
+ # Services managed key][3] (`aws/s3`) isn't supported. Incorrect key
1312
+ # specification results in an HTTP `400 Bad Request` error.
1174
1313
  #
1175
1314
  #
1176
1315
  #
1177
1316
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version
1317
+ # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk
1318
+ # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk
1178
1319
  # @option options [String] :ssekms_encryption_context
1179
- # Specifies the Amazon Web Services KMS Encryption Context to use for
1180
- # object encryption. The value of this header is a base64-encoded UTF-8
1181
- # string holding JSON with the encryption context key-value pairs. This
1182
- # value must be explicitly added to specify encryption context for
1183
- # `CopyObject` requests.
1320
+ # Specifies the Amazon Web Services KMS Encryption Context as an
1321
+ # additional encryption context to use for the destination object
1322
+ # encryption. The value of this header is a base64-encoded UTF-8 string
1323
+ # holding JSON with the encryption context key-value pairs.
1184
1324
  #
1185
- # <note markdown="1"> This functionality is not supported when the destination bucket is a
1186
- # directory bucket.
1325
+ # **General purpose buckets** - This value must be explicitly added to
1326
+ # specify encryption context for `CopyObject` requests if you want an
1327
+ # additional encryption context for your destination object. The
1328
+ # additional encryption context of the source object won't be copied to
1329
+ # the destination object. For more information, see [Encryption
1330
+ # context][1] in the *Amazon S3 User Guide*.
1187
1331
  #
1188
- # </note>
1332
+ # **Directory buckets** - You can optionally provide an explicit
1333
+ # encryption context value. The value must match the default encryption
1334
+ # context - the bucket Amazon Resource Name (ARN). An additional
1335
+ # encryption context value is not supported.
1336
+ #
1337
+ #
1338
+ #
1339
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html#encryption-context
1189
1340
  # @option options [Boolean] :bucket_key_enabled
1190
1341
  # Specifies whether Amazon S3 should use an S3 Bucket Key for object
1191
1342
  # encryption with server-side encryption using Key Management Service
@@ -1199,14 +1350,19 @@ module Aws::S3
1199
1350
  # For more information, see [Amazon S3 Bucket Keys][1] in the *Amazon S3
1200
1351
  # User Guide*.
1201
1352
  #
1202
- # <note markdown="1"> This functionality is not supported when the destination bucket is a
1203
- # directory bucket.
1353
+ # <note markdown="1"> **Directory buckets** - S3 Bucket Keys aren't supported, when you
1354
+ # copy SSE-KMS encrypted objects from general purpose buckets to
1355
+ # directory buckets, from directory buckets to general purpose buckets,
1356
+ # or between directory buckets, through [CopyObject][2]. In this case,
1357
+ # Amazon S3 makes a call to KMS every time a copy request is made for a
1358
+ # KMS-encrypted object.
1204
1359
  #
1205
1360
  # </note>
1206
1361
  #
1207
1362
  #
1208
1363
  #
1209
1364
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html
1365
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
1210
1366
  # @option options [String] :copy_source_sse_customer_algorithm
1211
1367
  # Specifies the algorithm to use when decrypting the source object (for
1212
1368
  # example, `AES256`).
@@ -1346,7 +1502,7 @@ module Aws::S3
1346
1502
  bucket: @bucket_name,
1347
1503
  key: @key
1348
1504
  )
1349
- resp = Aws::Plugins::UserAgent.feature('resource') do
1505
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
1350
1506
  @client.copy_object(options)
1351
1507
  end
1352
1508
  resp.data
@@ -1360,6 +1516,9 @@ module Aws::S3
1360
1516
  # request_payer: "requester", # accepts requester
1361
1517
  # bypass_governance_retention: false,
1362
1518
  # expected_bucket_owner: "AccountId",
1519
+ # if_match: "IfMatch",
1520
+ # if_match_last_modified_time: Time.now,
1521
+ # if_match_size: 1,
1363
1522
  # })
1364
1523
  # @param [Hash] options ({})
1365
1524
  # @option options [String] :mfa
@@ -1406,13 +1565,51 @@ module Aws::S3
1406
1565
  # The account ID of the expected bucket owner. If the account ID that
1407
1566
  # you provide does not match the actual owner of the bucket, the request
1408
1567
  # fails with the HTTP status code `403 Forbidden` (access denied).
1568
+ # @option options [String] :if_match
1569
+ # Deletes the object if the ETag (entity tag) value provided during the
1570
+ # delete operation matches the ETag of the object in S3. If the ETag
1571
+ # values do not match, the operation returns a `412 Precondition Failed`
1572
+ # error.
1573
+ #
1574
+ # Expects the ETag value as a string. `If-Match` does accept a string
1575
+ # value of an '*' (asterisk) character to denote a match of any ETag.
1576
+ #
1577
+ # For more information about conditional requests, see [RFC 7232][1].
1578
+ #
1579
+ #
1580
+ #
1581
+ # [1]: https://tools.ietf.org/html/rfc7232
1582
+ # @option options [Time,DateTime,Date,Integer,String] :if_match_last_modified_time
1583
+ # If present, the object is deleted only if its modification times
1584
+ # matches the provided `Timestamp`. If the `Timestamp` values do not
1585
+ # match, the operation returns a `412 Precondition Failed` error. If the
1586
+ # `Timestamp` matches or if the object doesn’t exist, the operation
1587
+ # returns a `204 Success (No Content)` response.
1588
+ #
1589
+ # <note markdown="1"> This functionality is only supported for directory buckets.
1590
+ #
1591
+ # </note>
1592
+ # @option options [Integer] :if_match_size
1593
+ # If present, the object is deleted only if its size matches the
1594
+ # provided size in bytes. If the `Size` value does not match, the
1595
+ # operation returns a `412 Precondition Failed` error. If the `Size`
1596
+ # matches or if the object doesn’t exist, the operation returns a `204
1597
+ # Success (No Content)` response.
1598
+ #
1599
+ # <note markdown="1"> This functionality is only supported for directory buckets.
1600
+ #
1601
+ # </note>
1602
+ #
1603
+ # You can use the `If-Match`, `x-amz-if-match-last-modified-time` and
1604
+ # `x-amz-if-match-size` conditional headers in conjunction with
1605
+ # each-other or individually.
1409
1606
  # @return [Types::DeleteObjectOutput]
1410
1607
  def delete(options = {})
1411
1608
  options = options.merge(
1412
1609
  bucket: @bucket_name,
1413
1610
  key: @key
1414
1611
  )
1415
- resp = Aws::Plugins::UserAgent.feature('resource') do
1612
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
1416
1613
  @client.delete_object(options)
1417
1614
  end
1418
1615
  resp.data
@@ -1668,7 +1865,7 @@ module Aws::S3
1668
1865
  bucket: @bucket_name,
1669
1866
  key: @key
1670
1867
  )
1671
- resp = Aws::Plugins::UserAgent.feature('resource') do
1868
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
1672
1869
  @client.get_object(options, &block)
1673
1870
  end
1674
1871
  resp.data
@@ -1691,8 +1888,8 @@ module Aws::S3
1691
1888
  # metadata: {
1692
1889
  # "MetadataKey" => "MetadataValue",
1693
1890
  # },
1694
- # server_side_encryption: "AES256", # accepts AES256, aws:kms, aws:kms:dsse
1695
- # storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE, OUTPOSTS, GLACIER_IR, SNOW, EXPRESS_ONEZONE
1891
+ # server_side_encryption: "AES256", # accepts AES256, aws:fsx, aws:kms, aws:kms:dsse
1892
+ # 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
1696
1893
  # website_redirect_location: "WebsiteRedirectLocation",
1697
1894
  # sse_customer_algorithm: "SSECustomerAlgorithm",
1698
1895
  # sse_customer_key: "SSECustomerKey",
@@ -1706,7 +1903,8 @@ module Aws::S3
1706
1903
  # object_lock_retain_until_date: Time.now,
1707
1904
  # object_lock_legal_hold_status: "ON", # accepts ON, OFF
1708
1905
  # expected_bucket_owner: "AccountId",
1709
- # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256
1906
+ # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256, CRC64NVME
1907
+ # checksum_type: "COMPOSITE", # accepts COMPOSITE, FULL_OBJECT
1710
1908
  # })
1711
1909
  # @param [Hash] options ({})
1712
1910
  # @option options [String] :acl
@@ -2008,12 +2206,62 @@ module Aws::S3
2008
2206
  # A map of metadata to store with the object in S3.
2009
2207
  # @option options [String] :server_side_encryption
2010
2208
  # The server-side encryption algorithm used when you store this object
2011
- # in Amazon S3 (for example, `AES256`, `aws:kms`).
2209
+ # in Amazon S3 or Amazon FSx.
2210
+ #
2211
+ # * <b>Directory buckets </b> - For directory buckets, there are only
2212
+ # two supported options for server-side encryption: server-side
2213
+ # encryption with Amazon S3 managed keys (SSE-S3) (`AES256`) and
2214
+ # server-side encryption with KMS keys (SSE-KMS) (`aws:kms`). We
2215
+ # recommend that the bucket's default encryption uses the desired
2216
+ # encryption configuration and you don't override the bucket default
2217
+ # encryption in your `CreateSession` requests or `PUT` object
2218
+ # requests. Then, new objects are automatically encrypted with the
2219
+ # desired encryption settings. For more information, see [Protecting
2220
+ # data with server-side encryption][1] in the *Amazon S3 User Guide*.
2221
+ # For more information about the encryption overriding behaviors in
2222
+ # directory buckets, see [Specifying server-side encryption with KMS
2223
+ # for new object uploads][2].
2224
+ #
2225
+ # In the Zonal endpoint API calls (except [CopyObject][3] and
2226
+ # [UploadPartCopy][4]) using the REST API, the encryption request
2227
+ # headers must match the encryption settings that are specified in the
2228
+ # `CreateSession` request. You can't override the values of the
2229
+ # encryption settings (`x-amz-server-side-encryption`,
2230
+ # `x-amz-server-side-encryption-aws-kms-key-id`,
2231
+ # `x-amz-server-side-encryption-context`, and
2232
+ # `x-amz-server-side-encryption-bucket-key-enabled`) that are
2233
+ # specified in the `CreateSession` request. You don't need to
2234
+ # explicitly specify these encryption settings values in Zonal
2235
+ # endpoint API calls, and Amazon S3 will use the encryption settings
2236
+ # values from the `CreateSession` request to protect new objects in
2237
+ # the directory bucket.
2238
+ #
2239
+ # <note markdown="1"> When you use the CLI or the Amazon Web Services SDKs, for
2240
+ # `CreateSession`, the session token refreshes automatically to avoid
2241
+ # service interruptions when a session expires. The CLI or the Amazon
2242
+ # Web Services SDKs use the bucket's default encryption configuration
2243
+ # for the `CreateSession` request. It's not supported to override the
2244
+ # encryption settings values in the `CreateSession` request. So in the
2245
+ # Zonal endpoint API calls (except [CopyObject][3] and
2246
+ # [UploadPartCopy][4]), the encryption request headers must match the
2247
+ # default encryption configuration of the directory bucket.
2012
2248
  #
2013
- # <note markdown="1"> For directory buckets, only server-side encryption with Amazon S3
2014
- # managed keys (SSE-S3) (`AES256`) is supported.
2249
+ # </note>
2015
2250
  #
2016
- # </note>
2251
+ # * <b>S3 access points for Amazon FSx </b> - When accessing data stored
2252
+ # in Amazon FSx file systems using S3 access points, the only valid
2253
+ # server side encryption option is `aws:fsx`. All Amazon FSx file
2254
+ # systems have encryption configured by default and are encrypted at
2255
+ # rest. Data is automatically encrypted before being written to the
2256
+ # file system, and automatically decrypted as it is read. These
2257
+ # processes are handled transparently by Amazon FSx.
2258
+ #
2259
+ #
2260
+ #
2261
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html
2262
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html
2263
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
2264
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
2017
2265
  # @option options [String] :storage_class
2018
2266
  # By default, Amazon S3 uses the STANDARD Storage Class to store newly
2019
2267
  # created objects. The STANDARD storage class provides high durability
@@ -2021,8 +2269,9 @@ module Aws::S3
2021
2269
  # a different Storage Class. For more information, see [Storage
2022
2270
  # Classes][1] in the *Amazon S3 User Guide*.
2023
2271
  #
2024
- # <note markdown="1"> * For directory buckets, only the S3 Express One Zone storage class is
2025
- # supported to store newly created objects.
2272
+ # <note markdown="1"> * Directory buckets only support `EXPRESS_ONEZONE` (the S3 Express One
2273
+ # Zone storage class) in Availability Zones and `ONEZONE_IA` (the S3
2274
+ # One Zone-Infrequent Access storage class) in Dedicated Local Zones.
2026
2275
  #
2027
2276
  # * Amazon S3 on Outposts only uses the OUTPOSTS Storage Class.
2028
2277
  #
@@ -2066,32 +2315,71 @@ module Aws::S3
2066
2315
  #
2067
2316
  # </note>
2068
2317
  # @option options [String] :ssekms_key_id
2069
- # Specifies the ID (Key ID, Key ARN, or Key Alias) of the symmetric
2070
- # encryption customer managed key to use for object encryption.
2071
- #
2072
- # <note markdown="1"> This functionality is not supported for directory buckets.
2073
- #
2074
- # </note>
2318
+ # Specifies the KMS key ID (Key ID, Key ARN, or Key Alias) to use for
2319
+ # object encryption. If the KMS key doesn't exist in the same account
2320
+ # that's issuing the command, you must use the full Key ARN not the Key
2321
+ # ID.
2322
+ #
2323
+ # **General purpose buckets** - If you specify
2324
+ # `x-amz-server-side-encryption` with `aws:kms` or `aws:kms:dsse`, this
2325
+ # header specifies the ID (Key ID, Key ARN, or Key Alias) of the KMS key
2326
+ # to use. If you specify `x-amz-server-side-encryption:aws:kms` or
2327
+ # `x-amz-server-side-encryption:aws:kms:dsse`, but do not provide
2328
+ # `x-amz-server-side-encryption-aws-kms-key-id`, Amazon S3 uses the
2329
+ # Amazon Web Services managed key (`aws/s3`) to protect the data.
2330
+ #
2331
+ # **Directory buckets** - To encrypt data using SSE-KMS, it's
2332
+ # recommended to specify the `x-amz-server-side-encryption` header to
2333
+ # `aws:kms`. Then, the `x-amz-server-side-encryption-aws-kms-key-id`
2334
+ # header implicitly uses the bucket's default KMS customer managed key
2335
+ # ID. If you want to explicitly set the `
2336
+ # x-amz-server-side-encryption-aws-kms-key-id` header, it must match the
2337
+ # bucket's default customer managed key (using key ID or ARN, not
2338
+ # alias). Your SSE-KMS configuration can only support 1 [customer
2339
+ # managed key][1] per directory bucket's lifetime. The [Amazon Web
2340
+ # Services managed key][2] (`aws/s3`) isn't supported. Incorrect key
2341
+ # specification results in an HTTP `400 Bad Request` error.
2342
+ #
2343
+ #
2344
+ #
2345
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk
2346
+ # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk
2075
2347
  # @option options [String] :ssekms_encryption_context
2076
2348
  # Specifies the Amazon Web Services KMS Encryption Context to use for
2077
- # object encryption. The value of this header is a base64-encoded UTF-8
2078
- # string holding JSON with the encryption context key-value pairs.
2079
- #
2080
- # <note markdown="1"> This functionality is not supported for directory buckets.
2081
- #
2082
- # </note>
2349
+ # object encryption. The value of this header is a Base64 encoded string
2350
+ # of a UTF-8 encoded JSON, which contains the encryption context as
2351
+ # key-value pairs.
2352
+ #
2353
+ # **Directory buckets** - You can optionally provide an explicit
2354
+ # encryption context value. The value must match the default encryption
2355
+ # context - the bucket Amazon Resource Name (ARN). An additional
2356
+ # encryption context value is not supported.
2083
2357
  # @option options [Boolean] :bucket_key_enabled
2084
2358
  # Specifies whether Amazon S3 should use an S3 Bucket Key for object
2085
2359
  # encryption with server-side encryption using Key Management Service
2086
- # (KMS) keys (SSE-KMS). Setting this header to `true` causes Amazon S3
2087
- # to use an S3 Bucket Key for object encryption with SSE-KMS.
2360
+ # (KMS) keys (SSE-KMS).
2088
2361
  #
2089
- # Specifying this header with an object action doesn’t affect
2362
+ # **General purpose buckets** - Setting this header to `true` causes
2363
+ # Amazon S3 to use an S3 Bucket Key for object encryption with SSE-KMS.
2364
+ # Also, specifying this header with a PUT action doesn't affect
2090
2365
  # bucket-level settings for S3 Bucket Key.
2091
2366
  #
2092
- # <note markdown="1"> This functionality is not supported for directory buckets.
2367
+ # **Directory buckets** - S3 Bucket Keys are always enabled for `GET`
2368
+ # and `PUT` operations in a directory bucket and can’t be disabled. S3
2369
+ # Bucket Keys aren't supported, when you copy SSE-KMS encrypted objects
2370
+ # from general purpose buckets to directory buckets, from directory
2371
+ # buckets to general purpose buckets, or between directory buckets,
2372
+ # through [CopyObject][1], [UploadPartCopy][2], [the Copy operation in
2373
+ # Batch Operations][3], or [the import jobs][4]. In this case, Amazon S3
2374
+ # makes a call to KMS every time a copy request is made for a
2375
+ # KMS-encrypted object.
2093
2376
  #
2094
- # </note>
2377
+ #
2378
+ #
2379
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
2380
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
2381
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-buckets-objects-Batch-Ops
2382
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-import-job
2095
2383
  # @option options [String] :request_payer
2096
2384
  # Confirms that the requester knows that they will be charged for the
2097
2385
  # request. Bucket owners need not specify this parameter in their
@@ -2147,13 +2435,21 @@ module Aws::S3
2147
2435
  #
2148
2436
  #
2149
2437
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
2438
+ # @option options [String] :checksum_type
2439
+ # Indicates the checksum type that you want Amazon S3 to use to
2440
+ # calculate the object’s checksum value. For more information, see
2441
+ # [Checking object integrity in the Amazon S3 User Guide][1].
2442
+ #
2443
+ #
2444
+ #
2445
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
2150
2446
  # @return [MultipartUpload]
2151
2447
  def initiate_multipart_upload(options = {})
2152
2448
  options = options.merge(
2153
2449
  bucket: @bucket_name,
2154
2450
  key: @key
2155
2451
  )
2156
- resp = Aws::Plugins::UserAgent.feature('resource') do
2452
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
2157
2453
  @client.create_multipart_upload(options)
2158
2454
  end
2159
2455
  MultipartUpload.new(
@@ -2176,21 +2472,25 @@ module Aws::S3
2176
2472
  # content_length: 1,
2177
2473
  # content_md5: "ContentMD5",
2178
2474
  # content_type: "ContentType",
2179
- # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256
2475
+ # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256, CRC64NVME
2180
2476
  # checksum_crc32: "ChecksumCRC32",
2181
2477
  # checksum_crc32c: "ChecksumCRC32C",
2478
+ # checksum_crc64nvme: "ChecksumCRC64NVME",
2182
2479
  # checksum_sha1: "ChecksumSHA1",
2183
2480
  # checksum_sha256: "ChecksumSHA256",
2184
2481
  # expires: Time.now,
2482
+ # if_match: "IfMatch",
2483
+ # if_none_match: "IfNoneMatch",
2185
2484
  # grant_full_control: "GrantFullControl",
2186
2485
  # grant_read: "GrantRead",
2187
2486
  # grant_read_acp: "GrantReadACP",
2188
2487
  # grant_write_acp: "GrantWriteACP",
2488
+ # write_offset_bytes: 1,
2189
2489
  # metadata: {
2190
2490
  # "MetadataKey" => "MetadataValue",
2191
2491
  # },
2192
- # server_side_encryption: "AES256", # accepts AES256, aws:kms, aws:kms:dsse
2193
- # storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE, OUTPOSTS, GLACIER_IR, SNOW, EXPRESS_ONEZONE
2492
+ # server_side_encryption: "AES256", # accepts AES256, aws:fsx, aws:kms, aws:kms:dsse
2493
+ # 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
2194
2494
  # website_redirect_location: "WebsiteRedirectLocation",
2195
2495
  # sse_customer_algorithm: "SSECustomerAlgorithm",
2196
2496
  # sse_customer_key: "SSECustomerKey",
@@ -2281,7 +2581,7 @@ module Aws::S3
2281
2581
  #
2282
2582
  # [1]: https://www.rfc-editor.org/rfc/rfc9110.html#name-content-length
2283
2583
  # @option options [String] :content_md5
2284
- # The base64-encoded 128-bit MD5 digest of the message (without the
2584
+ # The Base64 encoded 128-bit `MD5` digest of the message (without the
2285
2585
  # headers) according to RFC 1864. This header can be used as a message
2286
2586
  # integrity check to verify that the data is the same data that was
2287
2587
  # originally sent. Although it is optional, we recommend using the
@@ -2289,10 +2589,11 @@ module Aws::S3
2289
2589
  # information about REST request authentication, see [REST
2290
2590
  # Authentication][1].
2291
2591
  #
2292
- # <note markdown="1"> The `Content-MD5` header is required for any request to upload an
2293
- # object with a retention period configured using Amazon S3 Object Lock.
2294
- # For more information about Amazon S3 Object Lock, see [Amazon S3
2295
- # Object Lock Overview][2] in the *Amazon S3 User Guide*.
2592
+ # <note markdown="1"> The `Content-MD5` or `x-amz-sdk-checksum-algorithm` header is required
2593
+ # for any request to upload an object with a retention period configured
2594
+ # using Amazon S3 Object Lock. For more information, see [Uploading
2595
+ # objects to an Object Lock enabled bucket ][2] in the *Amazon S3 User
2596
+ # Guide*.
2296
2597
  #
2297
2598
  # </note>
2298
2599
  #
@@ -2303,7 +2604,7 @@ module Aws::S3
2303
2604
  #
2304
2605
  #
2305
2606
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html
2306
- # [2]: https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html
2607
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-managing.html#object-lock-put-object
2307
2608
  # @option options [String] :content_type
2308
2609
  # A standard MIME type describing the format of the contents. For more
2309
2610
  # information, see
@@ -2323,37 +2624,45 @@ module Aws::S3
2323
2624
  # For the `x-amz-checksum-algorithm ` header, replace ` algorithm ` with
2324
2625
  # the supported algorithm from the following list:
2325
2626
  #
2326
- # * CRC32
2627
+ # * `CRC32`
2327
2628
  #
2328
- # * CRC32C
2629
+ # * `CRC32C`
2329
2630
  #
2330
- # * SHA1
2631
+ # * `CRC64NVME`
2331
2632
  #
2332
- # * SHA256
2633
+ # * `SHA1`
2634
+ #
2635
+ # * `SHA256`
2333
2636
  #
2334
2637
  # For more information, see [Checking object integrity][1] in the
2335
2638
  # *Amazon S3 User Guide*.
2336
2639
  #
2337
2640
  # If the individual checksum value you provide through
2338
2641
  # `x-amz-checksum-algorithm ` doesn't match the checksum algorithm you
2339
- # set through `x-amz-sdk-checksum-algorithm`, Amazon S3 ignores any
2340
- # provided `ChecksumAlgorithm` parameter and uses the checksum algorithm
2341
- # that matches the provided value in `x-amz-checksum-algorithm `.
2642
+ # set through `x-amz-sdk-checksum-algorithm`, Amazon S3 fails the
2643
+ # request with a `BadDigest` error.
2342
2644
  #
2343
- # <note markdown="1"> For directory buckets, when you use Amazon Web Services SDKs, `CRC32`
2344
- # is the default checksum algorithm that's used for performance.
2645
+ # <note markdown="1"> The `Content-MD5` or `x-amz-sdk-checksum-algorithm` header is required
2646
+ # for any request to upload an object with a retention period configured
2647
+ # using Amazon S3 Object Lock. For more information, see [Uploading
2648
+ # objects to an Object Lock enabled bucket ][2] in the *Amazon S3 User
2649
+ # Guide*.
2345
2650
  #
2346
2651
  # </note>
2347
2652
  #
2653
+ # For directory buckets, when you use Amazon Web Services SDKs, `CRC32`
2654
+ # is the default checksum algorithm that's used for performance.
2655
+ #
2348
2656
  #
2349
2657
  #
2350
2658
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
2659
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-managing.html#object-lock-put-object
2351
2660
  # @option options [String] :checksum_crc32
2352
2661
  # This header can be used as a data integrity check to verify that the
2353
2662
  # data received is the same data that was originally sent. This header
2354
- # specifies the base64-encoded, 32-bit CRC32 checksum of the object. For
2355
- # more information, see [Checking object integrity][1] in the *Amazon S3
2356
- # User Guide*.
2663
+ # specifies the Base64 encoded, 32-bit `CRC32` checksum of the object.
2664
+ # For more information, see [Checking object integrity][1] in the
2665
+ # *Amazon S3 User Guide*.
2357
2666
  #
2358
2667
  #
2359
2668
  #
@@ -2361,17 +2670,28 @@ module Aws::S3
2361
2670
  # @option options [String] :checksum_crc32c
2362
2671
  # This header can be used as a data integrity check to verify that the
2363
2672
  # data received is the same data that was originally sent. This header
2364
- # specifies the base64-encoded, 32-bit CRC32C checksum of the object.
2673
+ # specifies the Base64 encoded, 32-bit `CRC32C` checksum of the object.
2365
2674
  # For more information, see [Checking object integrity][1] in the
2366
2675
  # *Amazon S3 User Guide*.
2367
2676
  #
2368
2677
  #
2369
2678
  #
2370
2679
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
2680
+ # @option options [String] :checksum_crc64nvme
2681
+ # This header can be used as a data integrity check to verify that the
2682
+ # data received is the same data that was originally sent. This header
2683
+ # specifies the Base64 encoded, 64-bit `CRC64NVME` checksum of the
2684
+ # object. The `CRC64NVME` checksum is always a full object checksum. For
2685
+ # more information, see [Checking object integrity in the Amazon S3 User
2686
+ # Guide][1].
2687
+ #
2688
+ #
2689
+ #
2690
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
2371
2691
  # @option options [String] :checksum_sha1
2372
2692
  # This header can be used as a data integrity check to verify that the
2373
2693
  # data received is the same data that was originally sent. This header
2374
- # specifies the base64-encoded, 160-bit SHA-1 digest of the object. For
2694
+ # specifies the Base64 encoded, 160-bit `SHA1` digest of the object. For
2375
2695
  # more information, see [Checking object integrity][1] in the *Amazon S3
2376
2696
  # User Guide*.
2377
2697
  #
@@ -2381,7 +2701,7 @@ module Aws::S3
2381
2701
  # @option options [String] :checksum_sha256
2382
2702
  # This header can be used as a data integrity check to verify that the
2383
2703
  # data received is the same data that was originally sent. This header
2384
- # specifies the base64-encoded, 256-bit SHA-256 digest of the object.
2704
+ # specifies the Base64 encoded, 256-bit `SHA256` digest of the object.
2385
2705
  # For more information, see [Checking object integrity][1] in the
2386
2706
  # *Amazon S3 User Guide*.
2387
2707
  #
@@ -2396,6 +2716,43 @@ module Aws::S3
2396
2716
  #
2397
2717
  #
2398
2718
  # [1]: https://www.rfc-editor.org/rfc/rfc7234#section-5.3
2719
+ # @option options [String] :if_match
2720
+ # Uploads the object only if the ETag (entity tag) value provided during
2721
+ # the WRITE operation matches the ETag of the object in S3. If the ETag
2722
+ # values do not match, the operation returns a `412 Precondition Failed`
2723
+ # error.
2724
+ #
2725
+ # If a conflicting operation occurs during the upload S3 returns a `409
2726
+ # ConditionalRequestConflict` response. On a 409 failure you should
2727
+ # fetch the object's ETag and retry the upload.
2728
+ #
2729
+ # Expects the ETag value as a string.
2730
+ #
2731
+ # For more information about conditional requests, see [RFC 7232][1], or
2732
+ # [Conditional requests][2] in the *Amazon S3 User Guide*.
2733
+ #
2734
+ #
2735
+ #
2736
+ # [1]: https://tools.ietf.org/html/rfc7232
2737
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/conditional-requests.html
2738
+ # @option options [String] :if_none_match
2739
+ # Uploads the object only if the object key name does not already exist
2740
+ # in the bucket specified. Otherwise, Amazon S3 returns a `412
2741
+ # Precondition Failed` error.
2742
+ #
2743
+ # If a conflicting operation occurs during the upload S3 returns a `409
2744
+ # ConditionalRequestConflict` response. On a 409 failure you should
2745
+ # retry the upload.
2746
+ #
2747
+ # Expects the '*' (asterisk) character.
2748
+ #
2749
+ # For more information about conditional requests, see [RFC 7232][1], or
2750
+ # [Conditional requests][2] in the *Amazon S3 User Guide*.
2751
+ #
2752
+ #
2753
+ #
2754
+ # [1]: https://tools.ietf.org/html/rfc7232
2755
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/conditional-requests.html
2399
2756
  # @option options [String] :grant_full_control
2400
2757
  # Gives the grantee READ, READ\_ACP, and WRITE\_ACP permissions on the
2401
2758
  # object.
@@ -2429,32 +2786,89 @@ module Aws::S3
2429
2786
  # * This functionality is not supported for Amazon S3 on Outposts.
2430
2787
  #
2431
2788
  # </note>
2789
+ # @option options [Integer] :write_offset_bytes
2790
+ # Specifies the offset for appending data to existing objects in bytes.
2791
+ # The offset must be equal to the size of the existing object being
2792
+ # appended to. If no object exists, setting this header to 0 will create
2793
+ # a new object.
2794
+ #
2795
+ # <note markdown="1"> This functionality is only supported for objects in the Amazon S3
2796
+ # Express One Zone storage class in directory buckets.
2797
+ #
2798
+ # </note>
2432
2799
  # @option options [Hash<String,String>] :metadata
2433
2800
  # A map of metadata to store with the object in S3.
2434
2801
  # @option options [String] :server_side_encryption
2435
2802
  # The server-side encryption algorithm that was used when you store this
2436
- # object in Amazon S3 (for example, `AES256`, `aws:kms`,
2437
- # `aws:kms:dsse`).
2438
- #
2439
- # <b>General purpose buckets </b> - You have four mutually exclusive
2440
- # options to protect data using server-side encryption in Amazon S3,
2441
- # depending on how you choose to manage the encryption keys.
2442
- # Specifically, the encryption key options are Amazon S3 managed keys
2443
- # (SSE-S3), Amazon Web Services KMS keys (SSE-KMS or DSSE-KMS), and
2444
- # customer-provided keys (SSE-C). Amazon S3 encrypts data with
2445
- # server-side encryption by using Amazon S3 managed keys (SSE-S3) by
2446
- # default. You can optionally tell Amazon S3 to encrypt data at rest by
2447
- # using server-side encryption with other key options. For more
2448
- # information, see [Using Server-Side Encryption][1] in the *Amazon S3
2449
- # User Guide*.
2803
+ # object in Amazon S3 or Amazon FSx.
2804
+ #
2805
+ # * <b>General purpose buckets </b> - You have four mutually exclusive
2806
+ # options to protect data using server-side encryption in Amazon S3,
2807
+ # depending on how you choose to manage the encryption keys.
2808
+ # Specifically, the encryption key options are Amazon S3 managed keys
2809
+ # (SSE-S3), Amazon Web Services KMS keys (SSE-KMS or DSSE-KMS), and
2810
+ # customer-provided keys (SSE-C). Amazon S3 encrypts data with
2811
+ # server-side encryption by using Amazon S3 managed keys (SSE-S3) by
2812
+ # default. You can optionally tell Amazon S3 to encrypt data at rest
2813
+ # by using server-side encryption with other key options. For more
2814
+ # information, see [Using Server-Side Encryption][1] in the *Amazon S3
2815
+ # User Guide*.
2816
+ #
2817
+ # * <b>Directory buckets </b> - For directory buckets, there are only
2818
+ # two supported options for server-side encryption: server-side
2819
+ # encryption with Amazon S3 managed keys (SSE-S3) (`AES256`) and
2820
+ # server-side encryption with KMS keys (SSE-KMS) (`aws:kms`). We
2821
+ # recommend that the bucket's default encryption uses the desired
2822
+ # encryption configuration and you don't override the bucket default
2823
+ # encryption in your `CreateSession` requests or `PUT` object
2824
+ # requests. Then, new objects are automatically encrypted with the
2825
+ # desired encryption settings. For more information, see [Protecting
2826
+ # data with server-side encryption][2] in the *Amazon S3 User Guide*.
2827
+ # For more information about the encryption overriding behaviors in
2828
+ # directory buckets, see [Specifying server-side encryption with KMS
2829
+ # for new object uploads][3].
2830
+ #
2831
+ # In the Zonal endpoint API calls (except [CopyObject][4] and
2832
+ # [UploadPartCopy][5]) using the REST API, the encryption request
2833
+ # headers must match the encryption settings that are specified in the
2834
+ # `CreateSession` request. You can't override the values of the
2835
+ # encryption settings (`x-amz-server-side-encryption`,
2836
+ # `x-amz-server-side-encryption-aws-kms-key-id`,
2837
+ # `x-amz-server-side-encryption-context`, and
2838
+ # `x-amz-server-side-encryption-bucket-key-enabled`) that are
2839
+ # specified in the `CreateSession` request. You don't need to
2840
+ # explicitly specify these encryption settings values in Zonal
2841
+ # endpoint API calls, and Amazon S3 will use the encryption settings
2842
+ # values from the `CreateSession` request to protect new objects in
2843
+ # the directory bucket.
2844
+ #
2845
+ # <note markdown="1"> When you use the CLI or the Amazon Web Services SDKs, for
2846
+ # `CreateSession`, the session token refreshes automatically to avoid
2847
+ # service interruptions when a session expires. The CLI or the Amazon
2848
+ # Web Services SDKs use the bucket's default encryption configuration
2849
+ # for the `CreateSession` request. It's not supported to override the
2850
+ # encryption settings values in the `CreateSession` request. So in the
2851
+ # Zonal endpoint API calls (except [CopyObject][4] and
2852
+ # [UploadPartCopy][5]), the encryption request headers must match the
2853
+ # default encryption configuration of the directory bucket.
2854
+ #
2855
+ # </note>
2450
2856
  #
2451
- # <b>Directory buckets </b> - For directory buckets, only the
2452
- # server-side encryption with Amazon S3 managed keys (SSE-S3) (`AES256`)
2453
- # value is supported.
2857
+ # * <b>S3 access points for Amazon FSx </b> - When accessing data stored
2858
+ # in Amazon FSx file systems using S3 access points, the only valid
2859
+ # server side encryption option is `aws:fsx`. All Amazon FSx file
2860
+ # systems have encryption configured by default and are encrypted at
2861
+ # rest. Data is automatically encrypted before being written to the
2862
+ # file system, and automatically decrypted as it is read. These
2863
+ # processes are handled transparently by Amazon FSx.
2454
2864
  #
2455
2865
  #
2456
2866
  #
2457
2867
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html
2868
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html
2869
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html
2870
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
2871
+ # [5]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
2458
2872
  # @option options [String] :storage_class
2459
2873
  # By default, Amazon S3 uses the STANDARD Storage Class to store newly
2460
2874
  # created objects. The STANDARD storage class provides high durability
@@ -2462,8 +2876,9 @@ module Aws::S3
2462
2876
  # a different Storage Class. For more information, see [Storage
2463
2877
  # Classes][1] in the *Amazon S3 User Guide*.
2464
2878
  #
2465
- # <note markdown="1"> * For directory buckets, only the S3 Express One Zone storage class is
2466
- # supported to store newly created objects.
2879
+ # <note markdown="1"> * Directory buckets only support `EXPRESS_ONEZONE` (the S3 Express One
2880
+ # Zone storage class) in Availability Zones and `ONEZONE_IA` (the S3
2881
+ # One Zone-Infrequent Access storage class) in Dedicated Local Zones.
2467
2882
  #
2468
2883
  # * Amazon S3 on Outposts only uses the OUTPOSTS Storage Class.
2469
2884
  #
@@ -2528,44 +2943,83 @@ module Aws::S3
2528
2943
  #
2529
2944
  # </note>
2530
2945
  # @option options [String] :ssekms_key_id
2531
- # If `x-amz-server-side-encryption` has a valid value of `aws:kms` or
2532
- # `aws:kms:dsse`, this header specifies the ID (Key ID, Key ARN, or Key
2533
- # Alias) of the Key Management Service (KMS) symmetric encryption
2534
- # customer managed key that was used for the object. If you specify
2535
- # `x-amz-server-side-encryption:aws:kms` or
2536
- # `x-amz-server-side-encryption:aws:kms:dsse`, but do not provide`
2537
- # x-amz-server-side-encryption-aws-kms-key-id`, Amazon S3 uses the
2538
- # Amazon Web Services managed key (`aws/s3`) to protect the data. If the
2539
- # KMS key does not exist in the same account that's issuing the
2540
- # command, you must use the full ARN and not just the ID.
2946
+ # Specifies the KMS key ID (Key ID, Key ARN, or Key Alias) to use for
2947
+ # object encryption. If the KMS key doesn't exist in the same account
2948
+ # that's issuing the command, you must use the full Key ARN not the Key
2949
+ # ID.
2950
+ #
2951
+ # **General purpose buckets** - If you specify
2952
+ # `x-amz-server-side-encryption` with `aws:kms` or `aws:kms:dsse`, this
2953
+ # header specifies the ID (Key ID, Key ARN, or Key Alias) of the KMS key
2954
+ # to use. If you specify `x-amz-server-side-encryption:aws:kms` or
2955
+ # `x-amz-server-side-encryption:aws:kms:dsse`, but do not provide
2956
+ # `x-amz-server-side-encryption-aws-kms-key-id`, Amazon S3 uses the
2957
+ # Amazon Web Services managed key (`aws/s3`) to protect the data.
2958
+ #
2959
+ # **Directory buckets** - To encrypt data using SSE-KMS, it's
2960
+ # recommended to specify the `x-amz-server-side-encryption` header to
2961
+ # `aws:kms`. Then, the `x-amz-server-side-encryption-aws-kms-key-id`
2962
+ # header implicitly uses the bucket's default KMS customer managed key
2963
+ # ID. If you want to explicitly set the `
2964
+ # x-amz-server-side-encryption-aws-kms-key-id` header, it must match the
2965
+ # bucket's default customer managed key (using key ID or ARN, not
2966
+ # alias). Your SSE-KMS configuration can only support 1 [customer
2967
+ # managed key][1] per directory bucket's lifetime. The [Amazon Web
2968
+ # Services managed key][2] (`aws/s3`) isn't supported. Incorrect key
2969
+ # specification results in an HTTP `400 Bad Request` error.
2970
+ #
2971
+ #
2972
+ #
2973
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk
2974
+ # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk
2975
+ # @option options [String] :ssekms_encryption_context
2976
+ # Specifies the Amazon Web Services KMS Encryption Context as an
2977
+ # additional encryption context to use for object encryption. The value
2978
+ # of this header is a Base64 encoded string of a UTF-8 encoded JSON,
2979
+ # which contains the encryption context as key-value pairs. This value
2980
+ # is stored as object metadata and automatically gets passed on to
2981
+ # Amazon Web Services KMS for future `GetObject` operations on this
2982
+ # object.
2541
2983
  #
2542
- # <note markdown="1"> This functionality is not supported for directory buckets.
2984
+ # **General purpose buckets** - This value must be explicitly added
2985
+ # during `CopyObject` operations if you want an additional encryption
2986
+ # context for your object. For more information, see [Encryption
2987
+ # context][1] in the *Amazon S3 User Guide*.
2543
2988
  #
2544
- # </note>
2545
- # @option options [String] :ssekms_encryption_context
2546
- # Specifies the Amazon Web Services KMS Encryption Context to use for
2547
- # object encryption. The value of this header is a base64-encoded UTF-8
2548
- # string holding JSON with the encryption context key-value pairs. This
2549
- # value is stored as object metadata and automatically gets passed on to
2550
- # Amazon Web Services KMS for future `GetObject` or `CopyObject`
2551
- # operations on this object. This value must be explicitly added during
2552
- # `CopyObject` operations.
2989
+ # **Directory buckets** - You can optionally provide an explicit
2990
+ # encryption context value. The value must match the default encryption
2991
+ # context - the bucket Amazon Resource Name (ARN). An additional
2992
+ # encryption context value is not supported.
2553
2993
  #
2554
- # <note markdown="1"> This functionality is not supported for directory buckets.
2555
2994
  #
2556
- # </note>
2995
+ #
2996
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html#encryption-context
2557
2997
  # @option options [Boolean] :bucket_key_enabled
2558
2998
  # Specifies whether Amazon S3 should use an S3 Bucket Key for object
2559
2999
  # encryption with server-side encryption using Key Management Service
2560
- # (KMS) keys (SSE-KMS). Setting this header to `true` causes Amazon S3
2561
- # to use an S3 Bucket Key for object encryption with SSE-KMS.
3000
+ # (KMS) keys (SSE-KMS).
3001
+ #
3002
+ # **General purpose buckets** - Setting this header to `true` causes
3003
+ # Amazon S3 to use an S3 Bucket Key for object encryption with SSE-KMS.
3004
+ # Also, specifying this header with a PUT action doesn't affect
3005
+ # bucket-level settings for S3 Bucket Key.
2562
3006
  #
2563
- # Specifying this header with a PUT action doesn’t affect bucket-level
2564
- # settings for S3 Bucket Key.
3007
+ # **Directory buckets** - S3 Bucket Keys are always enabled for `GET`
3008
+ # and `PUT` operations in a directory bucket and can’t be disabled. S3
3009
+ # Bucket Keys aren't supported, when you copy SSE-KMS encrypted objects
3010
+ # from general purpose buckets to directory buckets, from directory
3011
+ # buckets to general purpose buckets, or between directory buckets,
3012
+ # through [CopyObject][1], [UploadPartCopy][2], [the Copy operation in
3013
+ # Batch Operations][3], or [the import jobs][4]. In this case, Amazon S3
3014
+ # makes a call to KMS every time a copy request is made for a
3015
+ # KMS-encrypted object.
2565
3016
  #
2566
- # <note markdown="1"> This functionality is not supported for directory buckets.
2567
3017
  #
2568
- # </note>
3018
+ #
3019
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
3020
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
3021
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-buckets-objects-Batch-Ops
3022
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-import-job
2569
3023
  # @option options [String] :request_payer
2570
3024
  # Confirms that the requester knows that they will be charged for the
2571
3025
  # request. Bucket owners need not specify this parameter in their
@@ -2624,7 +3078,7 @@ module Aws::S3
2624
3078
  bucket: @bucket_name,
2625
3079
  key: @key
2626
3080
  )
2627
- resp = Aws::Plugins::UserAgent.feature('resource') do
3081
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
2628
3082
  @client.put_object(options)
2629
3083
  end
2630
3084
  resp.data
@@ -2680,7 +3134,7 @@ module Aws::S3
2680
3134
  # bucket_name: "BucketName", # required
2681
3135
  # prefix: "LocationPrefix", # required
2682
3136
  # encryption: {
2683
- # encryption_type: "AES256", # required, accepts AES256, aws:kms, aws:kms:dsse
3137
+ # encryption_type: "AES256", # required, accepts AES256, aws:fsx, aws:kms, aws:kms:dsse
2684
3138
  # kms_key_id: "SSEKMSKeyId",
2685
3139
  # kms_context: "KMSContext",
2686
3140
  # },
@@ -2711,12 +3165,12 @@ module Aws::S3
2711
3165
  # value: "MetadataValue",
2712
3166
  # },
2713
3167
  # ],
2714
- # storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE, OUTPOSTS, GLACIER_IR, SNOW, EXPRESS_ONEZONE
3168
+ # 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
2715
3169
  # },
2716
3170
  # },
2717
3171
  # },
2718
3172
  # request_payer: "requester", # accepts requester
2719
- # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256
3173
+ # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256, CRC64NVME
2720
3174
  # expected_bucket_owner: "AccountId",
2721
3175
  # })
2722
3176
  # @param [Hash] options ({})
@@ -2765,7 +3219,7 @@ module Aws::S3
2765
3219
  bucket: @bucket_name,
2766
3220
  key: @key
2767
3221
  )
2768
- resp = Aws::Plugins::UserAgent.feature('resource') do
3222
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
2769
3223
  @client.restore_object(options)
2770
3224
  end
2771
3225
  resp.data
@@ -2779,6 +3233,12 @@ module Aws::S3
2779
3233
  # if_none_match: "IfNoneMatch",
2780
3234
  # if_unmodified_since: Time.now,
2781
3235
  # range: "Range",
3236
+ # response_cache_control: "ResponseCacheControl",
3237
+ # response_content_disposition: "ResponseContentDisposition",
3238
+ # response_content_encoding: "ResponseContentEncoding",
3239
+ # response_content_language: "ResponseContentLanguage",
3240
+ # response_content_type: "ResponseContentType",
3241
+ # response_expires: Time.now,
2782
3242
  # version_id: "ObjectVersionId",
2783
3243
  # sse_customer_algorithm: "SSECustomerAlgorithm",
2784
3244
  # sse_customer_key: "SSECustomerKey",
@@ -2866,6 +3326,18 @@ module Aws::S3
2866
3326
  # satisfiable, only the `ContentLength` is affected in the response. If
2867
3327
  # the Range is not satisfiable, S3 returns a `416 - Requested Range Not
2868
3328
  # Satisfiable` error.
3329
+ # @option options [String] :response_cache_control
3330
+ # Sets the `Cache-Control` header of the response.
3331
+ # @option options [String] :response_content_disposition
3332
+ # Sets the `Content-Disposition` header of the response.
3333
+ # @option options [String] :response_content_encoding
3334
+ # Sets the `Content-Encoding` header of the response.
3335
+ # @option options [String] :response_content_language
3336
+ # Sets the `Content-Language` header of the response.
3337
+ # @option options [String] :response_content_type
3338
+ # Sets the `Content-Type` header of the response.
3339
+ # @option options [Time,DateTime,Date,Integer,String] :response_expires
3340
+ # Sets the `Expires` header of the response.
2869
3341
  # @option options [String] :version_id
2870
3342
  # Version ID used to reference a specific version of the object.
2871
3343
  #
@@ -2926,17 +3398,27 @@ module Aws::S3
2926
3398
  # @option options [String] :checksum_mode
2927
3399
  # To retrieve the checksum, this parameter must be enabled.
2928
3400
  #
2929
- # In addition, if you enable `ChecksumMode` and the object is encrypted
2930
- # with Amazon Web Services Key Management Service (Amazon Web Services
2931
- # KMS), you must have permission to use the `kms:Decrypt` action for the
2932
- # request to succeed.
3401
+ # **General purpose buckets** - If you enable checksum mode and the
3402
+ # object is uploaded with a [checksum][1] and encrypted with an Key
3403
+ # Management Service (KMS) key, you must have permission to use the
3404
+ # `kms:Decrypt` action to retrieve the checksum.
3405
+ #
3406
+ # **Directory buckets** - If you enable `ChecksumMode` and the object is
3407
+ # encrypted with Amazon Web Services Key Management Service (Amazon Web
3408
+ # Services KMS), you must also have the `kms:GenerateDataKey` and
3409
+ # `kms:Decrypt` permissions in IAM identity-based policies and KMS key
3410
+ # policies for the KMS key to retrieve the checksum of the object.
3411
+ #
3412
+ #
3413
+ #
3414
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_Checksum.html
2933
3415
  # @return [Types::HeadObjectOutput]
2934
3416
  def head(options = {})
2935
3417
  options = options.merge(
2936
3418
  bucket: @bucket_name,
2937
3419
  key: @key
2938
3420
  )
2939
- resp = Aws::Plugins::UserAgent.feature('resource') do
3421
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
2940
3422
  @client.head_object(options)
2941
3423
  end
2942
3424
  resp.data
@@ -3055,7 +3537,7 @@ module Aws::S3
3055
3537
  # request_payer: "requester", # accepts requester
3056
3538
  # bypass_governance_retention: false,
3057
3539
  # expected_bucket_owner: "AccountId",
3058
- # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256
3540
+ # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256, CRC64NVME
3059
3541
  # })
3060
3542
  # @param options ({})
3061
3543
  # @option options [String] :mfa
@@ -3119,22 +3601,23 @@ module Aws::S3
3119
3601
  # For the `x-amz-checksum-algorithm ` header, replace ` algorithm ` with
3120
3602
  # the supported algorithm from the following list:
3121
3603
  #
3122
- # * CRC32
3604
+ # * `CRC32`
3605
+ #
3606
+ # * `CRC32C`
3123
3607
  #
3124
- # * CRC32C
3608
+ # * `CRC64NVME`
3125
3609
  #
3126
- # * SHA1
3610
+ # * `SHA1`
3127
3611
  #
3128
- # * SHA256
3612
+ # * `SHA256`
3129
3613
  #
3130
3614
  # For more information, see [Checking object integrity][1] in the
3131
3615
  # *Amazon S3 User Guide*.
3132
3616
  #
3133
3617
  # If the individual checksum value you provide through
3134
3618
  # `x-amz-checksum-algorithm ` doesn't match the checksum algorithm you
3135
- # set through `x-amz-sdk-checksum-algorithm`, Amazon S3 ignores any
3136
- # provided `ChecksumAlgorithm` parameter and uses the checksum algorithm
3137
- # that matches the provided value in `x-amz-checksum-algorithm `.
3619
+ # set through `x-amz-sdk-checksum-algorithm`, Amazon S3 fails the
3620
+ # request with a `BadDigest` error.
3138
3621
  #
3139
3622
  # If you provide an individual checksum, Amazon S3 ignores any provided
3140
3623
  # `ChecksumAlgorithm` parameter.
@@ -3154,7 +3637,7 @@ module Aws::S3
3154
3637
  key: item.key
3155
3638
  }
3156
3639
  end
3157
- Aws::Plugins::UserAgent.feature('resource') do
3640
+ Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
3158
3641
  batch[0].client.delete_objects(params)
3159
3642
  end
3160
3643
  end
@@ -3166,3 +3649,6 @@ module Aws::S3
3166
3649
  end
3167
3650
  end
3168
3651
  end
3652
+
3653
+ # Load customizations if they exist
3654
+ require 'aws-sdk-s3/customizations/object'