aws-sdk-s3 1.167.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 (100) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +257 -0
  3. data/VERSION +1 -1
  4. data/lib/aws-sdk-s3/bucket.rb +145 -39
  5. data/lib/aws-sdk-s3/bucket_acl.rb +7 -6
  6. data/lib/aws-sdk-s3/bucket_cors.rb +6 -5
  7. data/lib/aws-sdk-s3/bucket_lifecycle.rb +7 -2
  8. data/lib/aws-sdk-s3/bucket_lifecycle_configuration.rb +22 -2
  9. data/lib/aws-sdk-s3/bucket_logging.rb +2 -2
  10. data/lib/aws-sdk-s3/bucket_policy.rb +6 -5
  11. data/lib/aws-sdk-s3/bucket_request_payment.rb +3 -3
  12. data/lib/aws-sdk-s3/bucket_tagging.rb +3 -3
  13. data/lib/aws-sdk-s3/bucket_versioning.rb +42 -9
  14. data/lib/aws-sdk-s3/bucket_website.rb +3 -3
  15. data/lib/aws-sdk-s3/client.rb +4313 -1871
  16. data/lib/aws-sdk-s3/client_api.rb +619 -160
  17. data/lib/aws-sdk-s3/customizations/object.rb +76 -86
  18. data/lib/aws-sdk-s3/customizations.rb +4 -1
  19. data/lib/aws-sdk-s3/default_executor.rb +103 -0
  20. data/lib/aws-sdk-s3/encryption/client.rb +2 -2
  21. data/lib/aws-sdk-s3/encryption/default_cipher_provider.rb +2 -0
  22. data/lib/aws-sdk-s3/encryption/encrypt_handler.rb +2 -0
  23. data/lib/aws-sdk-s3/encryption/kms_cipher_provider.rb +2 -0
  24. data/lib/aws-sdk-s3/encryptionV2/client.rb +98 -23
  25. data/lib/aws-sdk-s3/encryptionV2/decrypt_handler.rb +7 -162
  26. data/lib/aws-sdk-s3/encryptionV2/decryption.rb +205 -0
  27. data/lib/aws-sdk-s3/encryptionV2/default_cipher_provider.rb +17 -0
  28. data/lib/aws-sdk-s3/encryptionV2/encrypt_handler.rb +2 -0
  29. data/lib/aws-sdk-s3/encryptionV2/io_encrypter.rb +2 -0
  30. data/lib/aws-sdk-s3/encryptionV2/kms_cipher_provider.rb +8 -0
  31. data/lib/aws-sdk-s3/encryptionV2/utils.rb +5 -0
  32. data/lib/aws-sdk-s3/encryptionV3/client.rb +885 -0
  33. data/lib/aws-sdk-s3/encryptionV3/decrypt_handler.rb +98 -0
  34. data/lib/aws-sdk-s3/encryptionV3/decryption.rb +244 -0
  35. data/lib/aws-sdk-s3/encryptionV3/default_cipher_provider.rb +159 -0
  36. data/lib/aws-sdk-s3/encryptionV3/default_key_provider.rb +35 -0
  37. data/lib/aws-sdk-s3/encryptionV3/encrypt_handler.rb +98 -0
  38. data/lib/aws-sdk-s3/encryptionV3/errors.rb +47 -0
  39. data/lib/aws-sdk-s3/encryptionV3/io_auth_decrypter.rb +60 -0
  40. data/lib/aws-sdk-s3/encryptionV3/io_decrypter.rb +35 -0
  41. data/lib/aws-sdk-s3/encryptionV3/io_encrypter.rb +84 -0
  42. data/lib/aws-sdk-s3/encryptionV3/key_provider.rb +28 -0
  43. data/lib/aws-sdk-s3/encryptionV3/kms_cipher_provider.rb +159 -0
  44. data/lib/aws-sdk-s3/encryptionV3/materials.rb +58 -0
  45. data/lib/aws-sdk-s3/encryptionV3/utils.rb +321 -0
  46. data/lib/aws-sdk-s3/encryption_v2.rb +1 -0
  47. data/lib/aws-sdk-s3/encryption_v3.rb +24 -0
  48. data/lib/aws-sdk-s3/endpoint_parameters.rb +30 -35
  49. data/lib/aws-sdk-s3/endpoint_provider.rb +572 -278
  50. data/lib/aws-sdk-s3/endpoints.rb +555 -1403
  51. data/lib/aws-sdk-s3/errors.rb +55 -0
  52. data/lib/aws-sdk-s3/file_downloader.rb +189 -143
  53. data/lib/aws-sdk-s3/file_uploader.rb +9 -13
  54. data/lib/aws-sdk-s3/legacy_signer.rb +2 -1
  55. data/lib/aws-sdk-s3/multipart_download_error.rb +8 -0
  56. data/lib/aws-sdk-s3/multipart_file_uploader.rb +105 -102
  57. data/lib/aws-sdk-s3/multipart_stream_uploader.rb +96 -107
  58. data/lib/aws-sdk-s3/multipart_upload.rb +83 -6
  59. data/lib/aws-sdk-s3/multipart_upload_error.rb +3 -4
  60. data/lib/aws-sdk-s3/multipart_upload_part.rb +50 -34
  61. data/lib/aws-sdk-s3/object.rb +357 -131
  62. data/lib/aws-sdk-s3/object_acl.rb +12 -6
  63. data/lib/aws-sdk-s3/object_multipart_copier.rb +2 -1
  64. data/lib/aws-sdk-s3/object_summary.rb +269 -96
  65. data/lib/aws-sdk-s3/object_version.rb +58 -13
  66. data/lib/aws-sdk-s3/plugins/checksum_algorithm.rb +31 -0
  67. data/lib/aws-sdk-s3/plugins/endpoints.rb +2 -205
  68. data/lib/aws-sdk-s3/plugins/express_session_auth.rb +11 -20
  69. data/lib/aws-sdk-s3/plugins/http_200_errors.rb +3 -3
  70. data/lib/aws-sdk-s3/plugins/md5s.rb +10 -71
  71. data/lib/aws-sdk-s3/plugins/streaming_retry.rb +5 -7
  72. data/lib/aws-sdk-s3/plugins/url_encoded_keys.rb +2 -1
  73. data/lib/aws-sdk-s3/presigner.rb +5 -5
  74. data/lib/aws-sdk-s3/resource.rb +41 -10
  75. data/lib/aws-sdk-s3/transfer_manager.rb +303 -0
  76. data/lib/aws-sdk-s3/types.rb +3758 -1264
  77. data/lib/aws-sdk-s3.rb +1 -1
  78. data/sig/bucket.rbs +27 -9
  79. data/sig/bucket_acl.rbs +1 -1
  80. data/sig/bucket_cors.rbs +1 -1
  81. data/sig/bucket_lifecycle.rbs +1 -1
  82. data/sig/bucket_lifecycle_configuration.rbs +1 -1
  83. data/sig/bucket_logging.rbs +1 -1
  84. data/sig/bucket_policy.rbs +1 -1
  85. data/sig/bucket_request_payment.rbs +1 -1
  86. data/sig/bucket_tagging.rbs +1 -1
  87. data/sig/bucket_versioning.rbs +3 -3
  88. data/sig/bucket_website.rbs +1 -1
  89. data/sig/client.rbs +279 -70
  90. data/sig/errors.rbs +10 -0
  91. data/sig/multipart_upload.rbs +12 -3
  92. data/sig/multipart_upload_part.rbs +5 -1
  93. data/sig/object.rbs +37 -16
  94. data/sig/object_acl.rbs +1 -1
  95. data/sig/object_summary.rbs +28 -16
  96. data/sig/object_version.rbs +9 -3
  97. data/sig/resource.rbs +15 -4
  98. data/sig/types.rbs +373 -66
  99. metadata +26 -10
  100. 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 CRC-32 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 CRC-32C 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,7 +324,12 @@ 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.
328
+ #
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`.
331
+ #
332
+ # </note>
291
333
  # @return [String]
292
334
  def server_side_encryption
293
335
  data[:server_side_encryption]
@@ -344,8 +386,10 @@ module Aws::S3
344
386
  #
345
387
  # For more information, see [Storage Classes][1].
346
388
  #
347
- # <note markdown="1"> <b>Directory buckets </b> - Only the S3 Express One Zone storage class
348
- # 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.
349
393
  #
350
394
  # </note>
351
395
  #
@@ -358,11 +402,17 @@ module Aws::S3
358
402
  end
359
403
 
360
404
  # If present, indicates that the requester was successfully charged for
361
- # 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*.
362
408
  #
363
409
  # <note markdown="1"> This functionality is not supported for directory buckets.
364
410
  #
365
411
  # </note>
412
+ #
413
+ #
414
+ #
415
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/RequesterPaysBuckets.html
366
416
  # @return [String]
367
417
  def request_charged
368
418
  data[:request_charged]
@@ -425,6 +475,24 @@ module Aws::S3
425
475
  data[:parts_count]
426
476
  end
427
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
+
428
496
  # The Object Lock mode, if any, that's in effect for this object. This
429
497
  # header is only returned if the requester has the
430
498
  # `s3:GetObjectRetention` permission. For more information about S3
@@ -674,7 +742,7 @@ module Aws::S3
674
742
  # object.copy_from({
675
743
  # acl: "private", # accepts private, public-read, public-read-write, authenticated-read, aws-exec-read, bucket-owner-read, bucket-owner-full-control
676
744
  # cache_control: "CacheControl",
677
- # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256
745
+ # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256, CRC64NVME
678
746
  # content_disposition: "ContentDisposition",
679
747
  # content_encoding: "ContentEncoding",
680
748
  # content_language: "ContentLanguage",
@@ -689,13 +757,15 @@ module Aws::S3
689
757
  # grant_read: "GrantRead",
690
758
  # grant_read_acp: "GrantReadACP",
691
759
  # grant_write_acp: "GrantWriteACP",
760
+ # if_match: "IfMatch",
761
+ # if_none_match: "IfNoneMatch",
692
762
  # metadata: {
693
763
  # "MetadataKey" => "MetadataValue",
694
764
  # },
695
765
  # metadata_directive: "COPY", # accepts COPY, REPLACE
696
766
  # tagging_directive: "COPY", # accepts COPY, REPLACE
697
- # server_side_encryption: "AES256", # accepts AES256, aws:kms, aws:kms:dsse
698
- # 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
699
769
  # website_redirect_location: "WebsiteRedirectLocation",
700
770
  # sse_customer_algorithm: "SSECustomerAlgorithm",
701
771
  # sse_customer_key: "SSECustomerKey",
@@ -945,6 +1015,35 @@ module Aws::S3
945
1015
  # * This functionality is not supported for Amazon S3 on Outposts.
946
1016
  #
947
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
948
1047
  # @option options [Hash<String,String>] :metadata
949
1048
  # A map of metadata to store with the object in S3.
950
1049
  # @option options [String] :metadata_directive
@@ -1073,17 +1172,25 @@ module Aws::S3
1073
1172
  # * To encrypt new object copies to a directory bucket with SSE-KMS, we
1074
1173
  # recommend you specify SSE-KMS as the directory bucket's default
1075
1174
  # encryption configuration with a KMS key (specifically, a [customer
1076
- # managed key][4]). [Amazon Web Services managed key][5] (`aws/s3`)
1077
- # isn't supported. Your SSE-KMS configuration can only support 1
1078
- # [customer managed key][4] per directory bucket for the lifetime of
1079
- # the bucket. After you specify a customer managed key for SSE-KMS,
1080
- # you can't override the customer managed key for the bucket's
1081
- # SSE-KMS configuration. Then, when you perform a `CopyObject`
1082
- # operation and want to specify server-side encryption settings for
1083
- # new object copies with SSE-KMS in the encryption-related request
1084
- # headers, you must ensure the encryption key is the same customer
1085
- # managed key that you specified for the directory bucket's default
1086
- # encryption configuration.
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.
1087
1194
  #
1088
1195
  #
1089
1196
  #
@@ -1099,10 +1206,12 @@ module Aws::S3
1099
1206
  # availability. Depending on performance needs, you can specify a
1100
1207
  # different Storage Class.
1101
1208
  #
1102
- # <note markdown="1"> * <b>Directory buckets </b> - For directory buckets, only the S3
1103
- # Express One Zone storage class is supported to store newly created
1104
- # objects. Unsupported storage class values won't write a destination
1105
- # 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`.
1106
1215
  #
1107
1216
  # * <b>Amazon S3 on Outposts </b> - S3 on Outposts only uses the
1108
1217
  # `OUTPOSTS` Storage Class.
@@ -1190,15 +1299,17 @@ module Aws::S3
1190
1299
  # Signature Version in Request Authentication][1] in the *Amazon S3 User
1191
1300
  # Guide*.
1192
1301
  #
1193
- # **Directory buckets** - If you specify `x-amz-server-side-encryption`
1194
- # with `aws:kms`, you must specify the `
1195
- # x-amz-server-side-encryption-aws-kms-key-id` header with the ID (Key
1196
- # ID or Key ARN) of the KMS symmetric encryption customer managed key to
1197
- # use. Otherwise, you get an HTTP `400 Bad Request` error. Only use the
1198
- # key ID or key ARN. The key alias format of the KMS key isn't
1199
- # supported. Your SSE-KMS configuration can only support 1 [customer
1200
- # managed key][2] per directory bucket for the lifetime of the bucket.
1201
- # [Amazon Web Services managed key][3] (`aws/s3`) isn't supported.
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.
1202
1313
  #
1203
1314
  #
1204
1315
  #
@@ -1405,6 +1516,9 @@ module Aws::S3
1405
1516
  # request_payer: "requester", # accepts requester
1406
1517
  # bypass_governance_retention: false,
1407
1518
  # expected_bucket_owner: "AccountId",
1519
+ # if_match: "IfMatch",
1520
+ # if_match_last_modified_time: Time.now,
1521
+ # if_match_size: 1,
1408
1522
  # })
1409
1523
  # @param [Hash] options ({})
1410
1524
  # @option options [String] :mfa
@@ -1451,6 +1565,44 @@ module Aws::S3
1451
1565
  # The account ID of the expected bucket owner. If the account ID that
1452
1566
  # you provide does not match the actual owner of the bucket, the request
1453
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.
1454
1606
  # @return [Types::DeleteObjectOutput]
1455
1607
  def delete(options = {})
1456
1608
  options = options.merge(
@@ -1707,15 +1859,6 @@ module Aws::S3
1707
1859
  # fails with the HTTP status code `403 Forbidden` (access denied).
1708
1860
  # @option options [String] :checksum_mode
1709
1861
  # To retrieve the checksum, this mode must be enabled.
1710
- #
1711
- # **General purpose buckets** - In addition, if you enable checksum mode
1712
- # and the object is uploaded with a [checksum][1] and encrypted with an
1713
- # Key Management Service (KMS) key, you must have permission to use the
1714
- # `kms:Decrypt` action to retrieve the checksum.
1715
- #
1716
- #
1717
- #
1718
- # [1]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_Checksum.html
1719
1862
  # @return [Types::GetObjectOutput]
1720
1863
  def get(options = {}, &block)
1721
1864
  options = options.merge(
@@ -1745,8 +1888,8 @@ module Aws::S3
1745
1888
  # metadata: {
1746
1889
  # "MetadataKey" => "MetadataValue",
1747
1890
  # },
1748
- # server_side_encryption: "AES256", # accepts AES256, aws:kms, aws:kms:dsse
1749
- # 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
1750
1893
  # website_redirect_location: "WebsiteRedirectLocation",
1751
1894
  # sse_customer_algorithm: "SSECustomerAlgorithm",
1752
1895
  # sse_customer_key: "SSECustomerKey",
@@ -1760,7 +1903,8 @@ module Aws::S3
1760
1903
  # object_lock_retain_until_date: Time.now,
1761
1904
  # object_lock_legal_hold_status: "ON", # accepts ON, OFF
1762
1905
  # expected_bucket_owner: "AccountId",
1763
- # 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
1764
1908
  # })
1765
1909
  # @param [Hash] options ({})
1766
1910
  # @option options [String] :acl
@@ -2062,7 +2206,7 @@ module Aws::S3
2062
2206
  # A map of metadata to store with the object in S3.
2063
2207
  # @option options [String] :server_side_encryption
2064
2208
  # The server-side encryption algorithm used when you store this object
2065
- # in Amazon S3 (for example, `AES256`, `aws:kms`).
2209
+ # in Amazon S3 or Amazon FSx.
2066
2210
  #
2067
2211
  # * <b>Directory buckets </b> - For directory buckets, there are only
2068
2212
  # two supported options for server-side encryption: server-side
@@ -2104,6 +2248,14 @@ module Aws::S3
2104
2248
  #
2105
2249
  # </note>
2106
2250
  #
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
+ #
2107
2259
  #
2108
2260
  #
2109
2261
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html
@@ -2117,8 +2269,9 @@ module Aws::S3
2117
2269
  # a different Storage Class. For more information, see [Storage
2118
2270
  # Classes][1] in the *Amazon S3 User Guide*.
2119
2271
  #
2120
- # <note markdown="1"> * For directory buckets, only the S3 Express One Zone storage class is
2121
- # 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.
2122
2275
  #
2123
2276
  # * Amazon S3 on Outposts only uses the OUTPOSTS Storage Class.
2124
2277
  #
@@ -2175,15 +2328,17 @@ module Aws::S3
2175
2328
  # `x-amz-server-side-encryption-aws-kms-key-id`, Amazon S3 uses the
2176
2329
  # Amazon Web Services managed key (`aws/s3`) to protect the data.
2177
2330
  #
2178
- # **Directory buckets** - If you specify `x-amz-server-side-encryption`
2179
- # with `aws:kms`, you must specify the `
2180
- # x-amz-server-side-encryption-aws-kms-key-id` header with the ID (Key
2181
- # ID or Key ARN) of the KMS symmetric encryption customer managed key to
2182
- # use. Otherwise, you get an HTTP `400 Bad Request` error. Only use the
2183
- # key ID or key ARN. The key alias format of the KMS key isn't
2184
- # supported. Your SSE-KMS configuration can only support 1 [customer
2185
- # managed key][1] per directory bucket for the lifetime of the bucket.
2186
- # [Amazon Web Services managed key][2] (`aws/s3`) isn't supported.
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.
2187
2342
  #
2188
2343
  #
2189
2344
  #
@@ -2191,7 +2346,7 @@ module Aws::S3
2191
2346
  # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk
2192
2347
  # @option options [String] :ssekms_encryption_context
2193
2348
  # Specifies the Amazon Web Services KMS Encryption Context to use for
2194
- # object encryption. The value of this header is a Base64-encoded string
2349
+ # object encryption. The value of this header is a Base64 encoded string
2195
2350
  # of a UTF-8 encoded JSON, which contains the encryption context as
2196
2351
  # key-value pairs.
2197
2352
  #
@@ -2280,6 +2435,14 @@ module Aws::S3
2280
2435
  #
2281
2436
  #
2282
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
2283
2446
  # @return [MultipartUpload]
2284
2447
  def initiate_multipart_upload(options = {})
2285
2448
  options = options.merge(
@@ -2309,22 +2472,25 @@ module Aws::S3
2309
2472
  # content_length: 1,
2310
2473
  # content_md5: "ContentMD5",
2311
2474
  # content_type: "ContentType",
2312
- # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256
2475
+ # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256, CRC64NVME
2313
2476
  # checksum_crc32: "ChecksumCRC32",
2314
2477
  # checksum_crc32c: "ChecksumCRC32C",
2478
+ # checksum_crc64nvme: "ChecksumCRC64NVME",
2315
2479
  # checksum_sha1: "ChecksumSHA1",
2316
2480
  # checksum_sha256: "ChecksumSHA256",
2317
2481
  # expires: Time.now,
2482
+ # if_match: "IfMatch",
2318
2483
  # if_none_match: "IfNoneMatch",
2319
2484
  # grant_full_control: "GrantFullControl",
2320
2485
  # grant_read: "GrantRead",
2321
2486
  # grant_read_acp: "GrantReadACP",
2322
2487
  # grant_write_acp: "GrantWriteACP",
2488
+ # write_offset_bytes: 1,
2323
2489
  # metadata: {
2324
2490
  # "MetadataKey" => "MetadataValue",
2325
2491
  # },
2326
- # server_side_encryption: "AES256", # accepts AES256, aws:kms, aws:kms:dsse
2327
- # 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
2328
2494
  # website_redirect_location: "WebsiteRedirectLocation",
2329
2495
  # sse_customer_algorithm: "SSECustomerAlgorithm",
2330
2496
  # sse_customer_key: "SSECustomerKey",
@@ -2415,7 +2581,7 @@ module Aws::S3
2415
2581
  #
2416
2582
  # [1]: https://www.rfc-editor.org/rfc/rfc9110.html#name-content-length
2417
2583
  # @option options [String] :content_md5
2418
- # 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
2419
2585
  # headers) according to RFC 1864. This header can be used as a message
2420
2586
  # integrity check to verify that the data is the same data that was
2421
2587
  # originally sent. Although it is optional, we recommend using the
@@ -2423,10 +2589,11 @@ module Aws::S3
2423
2589
  # information about REST request authentication, see [REST
2424
2590
  # Authentication][1].
2425
2591
  #
2426
- # <note markdown="1"> The `Content-MD5` header is required for any request to upload an
2427
- # object with a retention period configured using Amazon S3 Object Lock.
2428
- # For more information about Amazon S3 Object Lock, see [Amazon S3
2429
- # 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*.
2430
2597
  #
2431
2598
  # </note>
2432
2599
  #
@@ -2437,7 +2604,7 @@ module Aws::S3
2437
2604
  #
2438
2605
  #
2439
2606
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html
2440
- # [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
2441
2608
  # @option options [String] :content_type
2442
2609
  # A standard MIME type describing the format of the contents. For more
2443
2610
  # information, see
@@ -2461,6 +2628,8 @@ module Aws::S3
2461
2628
  #
2462
2629
  # * `CRC32C`
2463
2630
  #
2631
+ # * `CRC64NVME`
2632
+ #
2464
2633
  # * `SHA1`
2465
2634
  #
2466
2635
  # * `SHA256`
@@ -2470,22 +2639,28 @@ module Aws::S3
2470
2639
  #
2471
2640
  # If the individual checksum value you provide through
2472
2641
  # `x-amz-checksum-algorithm ` doesn't match the checksum algorithm you
2473
- # set through `x-amz-sdk-checksum-algorithm`, Amazon S3 ignores any
2474
- # provided `ChecksumAlgorithm` parameter and uses the checksum algorithm
2475
- # 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.
2476
2644
  #
2477
- # <note markdown="1"> For directory buckets, when you use Amazon Web Services SDKs, `CRC32`
2478
- # 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*.
2479
2650
  #
2480
2651
  # </note>
2481
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
+ #
2482
2656
  #
2483
2657
  #
2484
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
2485
2660
  # @option options [String] :checksum_crc32
2486
2661
  # This header can be used as a data integrity check to verify that the
2487
2662
  # data received is the same data that was originally sent. This header
2488
- # specifies the base64-encoded, 32-bit CRC-32 checksum of the object.
2663
+ # specifies the Base64 encoded, 32-bit `CRC32` checksum of the object.
2489
2664
  # For more information, see [Checking object integrity][1] in the
2490
2665
  # *Amazon S3 User Guide*.
2491
2666
  #
@@ -2495,17 +2670,28 @@ module Aws::S3
2495
2670
  # @option options [String] :checksum_crc32c
2496
2671
  # This header can be used as a data integrity check to verify that the
2497
2672
  # data received is the same data that was originally sent. This header
2498
- # specifies the base64-encoded, 32-bit CRC-32C checksum of the object.
2673
+ # specifies the Base64 encoded, 32-bit `CRC32C` checksum of the object.
2499
2674
  # For more information, see [Checking object integrity][1] in the
2500
2675
  # *Amazon S3 User Guide*.
2501
2676
  #
2502
2677
  #
2503
2678
  #
2504
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
2505
2691
  # @option options [String] :checksum_sha1
2506
2692
  # This header can be used as a data integrity check to verify that the
2507
2693
  # data received is the same data that was originally sent. This header
2508
- # 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
2509
2695
  # more information, see [Checking object integrity][1] in the *Amazon S3
2510
2696
  # User Guide*.
2511
2697
  #
@@ -2515,7 +2701,7 @@ module Aws::S3
2515
2701
  # @option options [String] :checksum_sha256
2516
2702
  # This header can be used as a data integrity check to verify that the
2517
2703
  # data received is the same data that was originally sent. This header
2518
- # specifies the base64-encoded, 256-bit SHA-256 digest of the object.
2704
+ # specifies the Base64 encoded, 256-bit `SHA256` digest of the object.
2519
2705
  # For more information, see [Checking object integrity][1] in the
2520
2706
  # *Amazon S3 User Guide*.
2521
2707
  #
@@ -2530,6 +2716,25 @@ module Aws::S3
2530
2716
  #
2531
2717
  #
2532
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
2533
2738
  # @option options [String] :if_none_match
2534
2739
  # Uploads the object only if the object key name does not already exist
2535
2740
  # in the bucket specified. Otherwise, Amazon S3 returns a `412
@@ -2581,12 +2786,21 @@ module Aws::S3
2581
2786
  # * This functionality is not supported for Amazon S3 on Outposts.
2582
2787
  #
2583
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>
2584
2799
  # @option options [Hash<String,String>] :metadata
2585
2800
  # A map of metadata to store with the object in S3.
2586
2801
  # @option options [String] :server_side_encryption
2587
2802
  # The server-side encryption algorithm that was used when you store this
2588
- # object in Amazon S3 (for example, `AES256`, `aws:kms`,
2589
- # `aws:kms:dsse`).
2803
+ # object in Amazon S3 or Amazon FSx.
2590
2804
  #
2591
2805
  # * <b>General purpose buckets </b> - You have four mutually exclusive
2592
2806
  # options to protect data using server-side encryption in Amazon S3,
@@ -2640,6 +2854,14 @@ module Aws::S3
2640
2854
  #
2641
2855
  # </note>
2642
2856
  #
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.
2864
+ #
2643
2865
  #
2644
2866
  #
2645
2867
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html
@@ -2654,8 +2876,9 @@ module Aws::S3
2654
2876
  # a different Storage Class. For more information, see [Storage
2655
2877
  # Classes][1] in the *Amazon S3 User Guide*.
2656
2878
  #
2657
- # <note markdown="1"> * For directory buckets, only the S3 Express One Zone storage class is
2658
- # 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.
2659
2882
  #
2660
2883
  # * Amazon S3 on Outposts only uses the OUTPOSTS Storage Class.
2661
2884
  #
@@ -2733,15 +2956,17 @@ module Aws::S3
2733
2956
  # `x-amz-server-side-encryption-aws-kms-key-id`, Amazon S3 uses the
2734
2957
  # Amazon Web Services managed key (`aws/s3`) to protect the data.
2735
2958
  #
2736
- # **Directory buckets** - If you specify `x-amz-server-side-encryption`
2737
- # with `aws:kms`, you must specify the `
2738
- # x-amz-server-side-encryption-aws-kms-key-id` header with the ID (Key
2739
- # ID or Key ARN) of the KMS symmetric encryption customer managed key to
2740
- # use. Otherwise, you get an HTTP `400 Bad Request` error. Only use the
2741
- # key ID or key ARN. The key alias format of the KMS key isn't
2742
- # supported. Your SSE-KMS configuration can only support 1 [customer
2743
- # managed key][1] per directory bucket for the lifetime of the bucket.
2744
- # [Amazon Web Services managed key][2] (`aws/s3`) isn't supported.
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.
2745
2970
  #
2746
2971
  #
2747
2972
  #
@@ -2750,7 +2975,7 @@ module Aws::S3
2750
2975
  # @option options [String] :ssekms_encryption_context
2751
2976
  # Specifies the Amazon Web Services KMS Encryption Context as an
2752
2977
  # additional encryption context to use for object encryption. The value
2753
- # of this header is a Base64-encoded string of a UTF-8 encoded JSON,
2978
+ # of this header is a Base64 encoded string of a UTF-8 encoded JSON,
2754
2979
  # which contains the encryption context as key-value pairs. This value
2755
2980
  # is stored as object metadata and automatically gets passed on to
2756
2981
  # Amazon Web Services KMS for future `GetObject` operations on this
@@ -2909,7 +3134,7 @@ module Aws::S3
2909
3134
  # bucket_name: "BucketName", # required
2910
3135
  # prefix: "LocationPrefix", # required
2911
3136
  # encryption: {
2912
- # 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
2913
3138
  # kms_key_id: "SSEKMSKeyId",
2914
3139
  # kms_context: "KMSContext",
2915
3140
  # },
@@ -2940,12 +3165,12 @@ module Aws::S3
2940
3165
  # value: "MetadataValue",
2941
3166
  # },
2942
3167
  # ],
2943
- # 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
2944
3169
  # },
2945
3170
  # },
2946
3171
  # },
2947
3172
  # request_payer: "requester", # accepts requester
2948
- # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256
3173
+ # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256, CRC64NVME
2949
3174
  # expected_bucket_owner: "AccountId",
2950
3175
  # })
2951
3176
  # @param [Hash] options ({})
@@ -3312,7 +3537,7 @@ module Aws::S3
3312
3537
  # request_payer: "requester", # accepts requester
3313
3538
  # bypass_governance_retention: false,
3314
3539
  # expected_bucket_owner: "AccountId",
3315
- # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256
3540
+ # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256, CRC64NVME
3316
3541
  # })
3317
3542
  # @param options ({})
3318
3543
  # @option options [String] :mfa
@@ -3380,6 +3605,8 @@ module Aws::S3
3380
3605
  #
3381
3606
  # * `CRC32C`
3382
3607
  #
3608
+ # * `CRC64NVME`
3609
+ #
3383
3610
  # * `SHA1`
3384
3611
  #
3385
3612
  # * `SHA256`
@@ -3389,9 +3616,8 @@ module Aws::S3
3389
3616
  #
3390
3617
  # If the individual checksum value you provide through
3391
3618
  # `x-amz-checksum-algorithm ` doesn't match the checksum algorithm you
3392
- # set through `x-amz-sdk-checksum-algorithm`, Amazon S3 ignores any
3393
- # provided `ChecksumAlgorithm` parameter and uses the checksum algorithm
3394
- # 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.
3395
3621
  #
3396
3622
  # If you provide an individual checksum, Amazon S3 ignores any provided
3397
3623
  # `ChecksumAlgorithm` parameter.