aws-sdk-s3 1.156.0 → 1.190.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 (70) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +193 -0
  3. data/VERSION +1 -1
  4. data/lib/aws-sdk-s3/access_grants_credentials_provider.rb +12 -3
  5. data/lib/aws-sdk-s3/bucket.rb +304 -94
  6. data/lib/aws-sdk-s3/bucket_acl.rb +6 -5
  7. data/lib/aws-sdk-s3/bucket_cors.rb +6 -5
  8. data/lib/aws-sdk-s3/bucket_lifecycle.rb +7 -2
  9. data/lib/aws-sdk-s3/bucket_lifecycle_configuration.rb +60 -3
  10. data/lib/aws-sdk-s3/bucket_logging.rb +2 -2
  11. data/lib/aws-sdk-s3/bucket_policy.rb +10 -9
  12. data/lib/aws-sdk-s3/bucket_request_payment.rb +3 -3
  13. data/lib/aws-sdk-s3/bucket_tagging.rb +3 -3
  14. data/lib/aws-sdk-s3/bucket_versioning.rb +9 -9
  15. data/lib/aws-sdk-s3/bucket_website.rb +3 -3
  16. data/lib/aws-sdk-s3/client.rb +4081 -1812
  17. data/lib/aws-sdk-s3/client_api.rb +404 -162
  18. data/lib/aws-sdk-s3/customizations/object.rb +6 -0
  19. data/lib/aws-sdk-s3/customizations/object_summary.rb +5 -0
  20. data/lib/aws-sdk-s3/customizations/object_version.rb +13 -0
  21. data/lib/aws-sdk-s3/customizations.rb +24 -38
  22. data/lib/aws-sdk-s3/endpoint_parameters.rb +13 -18
  23. data/lib/aws-sdk-s3/endpoint_provider.rb +400 -276
  24. data/lib/aws-sdk-s3/endpoints.rb +465 -1706
  25. data/lib/aws-sdk-s3/errors.rb +58 -0
  26. data/lib/aws-sdk-s3/file_downloader.rb +14 -31
  27. data/lib/aws-sdk-s3/legacy_signer.rb +2 -1
  28. data/lib/aws-sdk-s3/multipart_file_uploader.rb +31 -13
  29. data/lib/aws-sdk-s3/multipart_upload.rb +108 -8
  30. data/lib/aws-sdk-s3/multipart_upload_part.rb +52 -36
  31. data/lib/aws-sdk-s3/object.rb +614 -203
  32. data/lib/aws-sdk-s3/object_acl.rb +11 -5
  33. data/lib/aws-sdk-s3/object_multipart_copier.rb +2 -1
  34. data/lib/aws-sdk-s3/object_summary.rb +518 -151
  35. data/lib/aws-sdk-s3/object_version.rb +81 -12
  36. data/lib/aws-sdk-s3/plugins/access_grants.rb +68 -4
  37. data/lib/aws-sdk-s3/plugins/checksum_algorithm.rb +31 -0
  38. data/lib/aws-sdk-s3/plugins/endpoints.rb +24 -212
  39. data/lib/aws-sdk-s3/plugins/express_session_auth.rb +11 -20
  40. data/lib/aws-sdk-s3/plugins/http_200_errors.rb +3 -3
  41. data/lib/aws-sdk-s3/plugins/md5s.rb +10 -71
  42. data/lib/aws-sdk-s3/plugins/streaming_retry.rb +5 -7
  43. data/lib/aws-sdk-s3/plugins/url_encoded_keys.rb +2 -1
  44. data/lib/aws-sdk-s3/presigner.rb +5 -5
  45. data/lib/aws-sdk-s3/resource.rb +45 -18
  46. data/lib/aws-sdk-s3/types.rb +3462 -1337
  47. data/lib/aws-sdk-s3.rb +35 -31
  48. data/sig/bucket.rbs +16 -6
  49. data/sig/bucket_acl.rbs +1 -1
  50. data/sig/bucket_cors.rbs +1 -1
  51. data/sig/bucket_lifecycle.rbs +1 -1
  52. data/sig/bucket_lifecycle_configuration.rbs +8 -4
  53. data/sig/bucket_logging.rbs +1 -1
  54. data/sig/bucket_policy.rbs +1 -1
  55. data/sig/bucket_request_payment.rbs +1 -1
  56. data/sig/bucket_tagging.rbs +1 -1
  57. data/sig/bucket_versioning.rbs +3 -3
  58. data/sig/bucket_website.rbs +1 -1
  59. data/sig/client.rbs +162 -45
  60. data/sig/errors.rbs +10 -0
  61. data/sig/multipart_upload.rbs +12 -2
  62. data/sig/multipart_upload_part.rbs +5 -1
  63. data/sig/object.rbs +26 -6
  64. data/sig/object_acl.rbs +1 -1
  65. data/sig/object_summary.rbs +18 -7
  66. data/sig/object_version.rbs +9 -3
  67. data/sig/resource.rbs +11 -4
  68. data/sig/types.rbs +210 -38
  69. metadata +8 -10
  70. 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 be present if the checksum was uploaded with the
140
+ # object. When you use an API operation on an object that was uploaded
141
+ # using multipart uploads, this value may not be a direct checksum value
142
+ # of 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 will
185
+ # only be present if the object 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,12 +198,12 @@ 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
201
+ # The Base64 encoded, 256-bit `SHA256` digest of the object. This will
202
+ # only be present if the object was uploaded with the object. When you
203
+ # use an API operation on an object that was uploaded using multipart
204
+ # uploads, this value may not be a direct checksum value of the full
205
+ # object. Instead, it's a calculation based on the checksum values of
206
+ # each individual part. For more information about how checksums are
192
207
  # calculated with multipart uploads, see [ Checking object integrity][1]
193
208
  # in the *Amazon S3 User Guide*.
194
209
  #
@@ -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
@@ -288,11 +325,6 @@ module Aws::S3
288
325
 
289
326
  # The server-side encryption algorithm used when you store this object
290
327
  # in Amazon S3 (for example, `AES256`, `aws:kms`, `aws:kms:dsse`).
291
- #
292
- # <note markdown="1"> For directory buckets, only server-side encryption with Amazon S3
293
- # managed keys (SSE-S3) (`AES256`) is supported.
294
- #
295
- # </note>
296
328
  # @return [String]
297
329
  def server_side_encryption
298
330
  data[:server_side_encryption]
@@ -329,13 +361,8 @@ module Aws::S3
329
361
  data[:sse_customer_key_md5]
330
362
  end
331
363
 
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>
364
+ # If present, indicates the ID of the KMS key that was used for object
365
+ # encryption.
339
366
  # @return [String]
340
367
  def ssekms_key_id
341
368
  data[:ssekms_key_id]
@@ -343,10 +370,6 @@ module Aws::S3
343
370
 
344
371
  # Indicates whether the object uses an S3 Bucket Key for server-side
345
372
  # 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
373
  # @return [Boolean]
351
374
  def bucket_key_enabled
352
375
  data[:bucket_key_enabled]
@@ -358,8 +381,10 @@ module Aws::S3
358
381
  #
359
382
  # For more information, see [Storage Classes][1].
360
383
  #
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.
384
+ # <note markdown="1"> <b>Directory buckets </b> - Directory buckets only support
385
+ # `EXPRESS_ONEZONE` (the S3 Express One Zone storage class) in
386
+ # Availability Zones and `ONEZONE_IA` (the S3 One Zone-Infrequent Access
387
+ # storage class) in Dedicated Local Zones.
363
388
  #
364
389
  # </note>
365
390
  #
@@ -372,11 +397,17 @@ module Aws::S3
372
397
  end
373
398
 
374
399
  # If present, indicates that the requester was successfully charged for
375
- # the request.
400
+ # the request. For more information, see [Using Requester Pays buckets
401
+ # for storage transfers and usage][1] in the *Amazon Simple Storage
402
+ # Service user guide*.
376
403
  #
377
404
  # <note markdown="1"> This functionality is not supported for directory buckets.
378
405
  #
379
406
  # </note>
407
+ #
408
+ #
409
+ #
410
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/RequesterPaysBuckets.html
380
411
  # @return [String]
381
412
  def request_charged
382
413
  data[:request_charged]
@@ -439,6 +470,24 @@ module Aws::S3
439
470
  data[:parts_count]
440
471
  end
441
472
 
473
+ # The number of tags, if any, on the object, when you have the relevant
474
+ # permission to read object tags.
475
+ #
476
+ # You can use [GetObjectTagging][1] to retrieve the tag set associated
477
+ # with an object.
478
+ #
479
+ # <note markdown="1"> This functionality is not supported for directory buckets.
480
+ #
481
+ # </note>
482
+ #
483
+ #
484
+ #
485
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html
486
+ # @return [Integer]
487
+ def tag_count
488
+ data[:tag_count]
489
+ end
490
+
442
491
  # The Object Lock mode, if any, that's in effect for this object. This
443
492
  # header is only returned if the requester has the
444
493
  # `s3:GetObjectRetention` permission. For more information about S3
@@ -688,7 +737,7 @@ module Aws::S3
688
737
  # object.copy_from({
689
738
  # acl: "private", # accepts private, public-read, public-read-write, authenticated-read, aws-exec-read, bucket-owner-read, bucket-owner-full-control
690
739
  # cache_control: "CacheControl",
691
- # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256
740
+ # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256, CRC64NVME
692
741
  # content_disposition: "ContentDisposition",
693
742
  # content_encoding: "ContentEncoding",
694
743
  # content_language: "ContentLanguage",
@@ -1031,9 +1080,8 @@ module Aws::S3
1031
1080
  # </note>
1032
1081
  # @option options [String] :server_side_encryption
1033
1082
  # 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.
1083
+ # Amazon S3. Unrecognized or unsupported values won’t write a
1084
+ # destination object and will receive a `400 Bad Request` response.
1037
1085
  #
1038
1086
  # Amazon S3 automatically encrypts all new objects that are copied to an
1039
1087
  # S3 bucket. When copying an object, if you don't specify encryption
@@ -1041,35 +1089,72 @@ module Aws::S3
1041
1089
  # object is set to the default encryption configuration of the
1042
1090
  # destination bucket. By default, all buckets have a base level of
1043
1091
  # 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.
1092
+ # S3 managed keys (SSE-S3). If the destination bucket has a different
1093
+ # default encryption configuration, Amazon S3 uses the corresponding
1094
+ # encryption key to encrypt the target object copy.
1059
1095
  #
1060
1096
  # With server-side encryption, Amazon S3 encrypts your data as it writes
1061
1097
  # your data to disks in its data centers and decrypts the data when you
1062
1098
  # access it. For more information about server-side encryption, see
1063
1099
  # [Using Server-Side Encryption][1] in the *Amazon S3 User Guide*.
1064
1100
  #
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>
1101
+ # <b>General purpose buckets </b>
1102
+ #
1103
+ # * For general purpose buckets, there are the following supported
1104
+ # options for server-side encryption: server-side encryption with Key
1105
+ # Management Service (KMS) keys (SSE-KMS), dual-layer server-side
1106
+ # encryption with Amazon Web Services KMS keys (DSSE-KMS), and
1107
+ # server-side encryption with customer-provided encryption keys
1108
+ # (SSE-C). Amazon S3 uses the corresponding KMS key, or a
1109
+ # customer-provided key to encrypt the target object copy.
1110
+ #
1111
+ # * When you perform a `CopyObject` operation, if you want to use a
1112
+ # different type of encryption setting for the target object, you can
1113
+ # specify appropriate encryption-related headers to encrypt the target
1114
+ # object with an Amazon S3 managed key, a KMS key, or a
1115
+ # customer-provided key. If the encryption setting in your request is
1116
+ # different from the default encryption configuration of the
1117
+ # destination bucket, the encryption setting in your request takes
1118
+ # precedence.
1119
+ #
1120
+ # <b>Directory buckets </b>
1121
+ #
1122
+ # * For directory buckets, there are only two supported options for
1123
+ # server-side encryption: server-side encryption with Amazon S3
1124
+ # managed keys (SSE-S3) (`AES256`) and server-side encryption with KMS
1125
+ # keys (SSE-KMS) (`aws:kms`). We recommend that the bucket's default
1126
+ # encryption uses the desired encryption configuration and you don't
1127
+ # override the bucket default encryption in your `CreateSession`
1128
+ # requests or `PUT` object requests. Then, new objects are
1129
+ # automatically encrypted with the desired encryption settings. For
1130
+ # more information, see [Protecting data with server-side
1131
+ # encryption][2] in the *Amazon S3 User Guide*. For more information
1132
+ # about the encryption overriding behaviors in directory buckets, see
1133
+ # [Specifying server-side encryption with KMS for new object
1134
+ # uploads][3].
1135
+ #
1136
+ # * To encrypt new object copies to a directory bucket with SSE-KMS, we
1137
+ # recommend you specify SSE-KMS as the directory bucket's default
1138
+ # encryption configuration with a KMS key (specifically, a [customer
1139
+ # managed key][4]). The [Amazon Web Services managed key][5]
1140
+ # (`aws/s3`) isn't supported. Your SSE-KMS configuration can only
1141
+ # support 1 [customer managed key][4] per directory bucket for the
1142
+ # lifetime of the bucket. After you specify a customer managed key for
1143
+ # SSE-KMS, you can't override the customer managed key for the
1144
+ # bucket's SSE-KMS configuration. Then, when you perform a
1145
+ # `CopyObject` operation and want to specify server-side encryption
1146
+ # settings for new object copies with SSE-KMS in the
1147
+ # encryption-related request headers, you must ensure the encryption
1148
+ # key is the same customer managed key that you specified for the
1149
+ # directory bucket's default encryption configuration.
1069
1150
  #
1070
1151
  #
1071
1152
  #
1072
1153
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html
1154
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html
1155
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html
1156
+ # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk
1157
+ # [5]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk
1073
1158
  # @option options [String] :storage_class
1074
1159
  # If the `x-amz-storage-class` header is not used, the copied object
1075
1160
  # will be stored in the `STANDARD` Storage Class by default. The
@@ -1077,10 +1162,12 @@ module Aws::S3
1077
1162
  # availability. Depending on performance needs, you can specify a
1078
1163
  # different Storage Class.
1079
1164
  #
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`.
1165
+ # <note markdown="1"> * <b>Directory buckets </b> - Directory buckets only support
1166
+ # `EXPRESS_ONEZONE` (the S3 Express One Zone storage class) in
1167
+ # Availability Zones and `ONEZONE_IA` (the S3 One Zone-Infrequent
1168
+ # Access storage class) in Dedicated Local Zones. Unsupported storage
1169
+ # class values won't write a destination object and will respond with
1170
+ # the HTTP status code `400 Bad Request`.
1084
1171
  #
1085
1172
  # * <b>Amazon S3 on Outposts </b> - S3 on Outposts only uses the
1086
1173
  # `OUTPOSTS` Storage Class.
@@ -1160,32 +1247,52 @@ module Aws::S3
1160
1247
  #
1161
1248
  # </note>
1162
1249
  # @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>
1250
+ # Specifies the KMS key ID (Key ID, Key ARN, or Key Alias) to use for
1251
+ # object encryption. All GET and PUT requests for an object protected by
1252
+ # KMS will fail if they're not made via SSL or using SigV4. For
1253
+ # information about configuring any of the officially supported Amazon
1254
+ # Web Services SDKs and Amazon Web Services CLI, see [Specifying the
1255
+ # Signature Version in Request Authentication][1] in the *Amazon S3 User
1256
+ # Guide*.
1257
+ #
1258
+ # **Directory buckets** - To encrypt data using SSE-KMS, it's
1259
+ # recommended to specify the `x-amz-server-side-encryption` header to
1260
+ # `aws:kms`. Then, the `x-amz-server-side-encryption-aws-kms-key-id`
1261
+ # header implicitly uses the bucket's default KMS customer managed key
1262
+ # ID. If you want to explicitly set the `
1263
+ # x-amz-server-side-encryption-aws-kms-key-id` header, it must match the
1264
+ # bucket's default customer managed key (using key ID or ARN, not
1265
+ # alias). Your SSE-KMS configuration can only support 1 [customer
1266
+ # managed key][2] per directory bucket's lifetime. The [Amazon Web
1267
+ # Services managed key][3] (`aws/s3`) isn't supported. Incorrect key
1268
+ # specification results in an HTTP `400 Bad Request` error.
1174
1269
  #
1175
1270
  #
1176
1271
  #
1177
1272
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version
1273
+ # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk
1274
+ # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk
1178
1275
  # @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.
1276
+ # Specifies the Amazon Web Services KMS Encryption Context as an
1277
+ # additional encryption context to use for the destination object
1278
+ # encryption. The value of this header is a base64-encoded UTF-8 string
1279
+ # holding JSON with the encryption context key-value pairs.
1184
1280
  #
1185
- # <note markdown="1"> This functionality is not supported when the destination bucket is a
1186
- # directory bucket.
1281
+ # **General purpose buckets** - This value must be explicitly added to
1282
+ # specify encryption context for `CopyObject` requests if you want an
1283
+ # additional encryption context for your destination object. The
1284
+ # additional encryption context of the source object won't be copied to
1285
+ # the destination object. For more information, see [Encryption
1286
+ # context][1] in the *Amazon S3 User Guide*.
1187
1287
  #
1188
- # </note>
1288
+ # **Directory buckets** - You can optionally provide an explicit
1289
+ # encryption context value. The value must match the default encryption
1290
+ # context - the bucket Amazon Resource Name (ARN). An additional
1291
+ # encryption context value is not supported.
1292
+ #
1293
+ #
1294
+ #
1295
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html#encryption-context
1189
1296
  # @option options [Boolean] :bucket_key_enabled
1190
1297
  # Specifies whether Amazon S3 should use an S3 Bucket Key for object
1191
1298
  # encryption with server-side encryption using Key Management Service
@@ -1199,14 +1306,19 @@ module Aws::S3
1199
1306
  # For more information, see [Amazon S3 Bucket Keys][1] in the *Amazon S3
1200
1307
  # User Guide*.
1201
1308
  #
1202
- # <note markdown="1"> This functionality is not supported when the destination bucket is a
1203
- # directory bucket.
1309
+ # <note markdown="1"> **Directory buckets** - S3 Bucket Keys aren't supported, when you
1310
+ # copy SSE-KMS encrypted objects from general purpose buckets to
1311
+ # directory buckets, from directory buckets to general purpose buckets,
1312
+ # or between directory buckets, through [CopyObject][2]. In this case,
1313
+ # Amazon S3 makes a call to KMS every time a copy request is made for a
1314
+ # KMS-encrypted object.
1204
1315
  #
1205
1316
  # </note>
1206
1317
  #
1207
1318
  #
1208
1319
  #
1209
1320
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html
1321
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
1210
1322
  # @option options [String] :copy_source_sse_customer_algorithm
1211
1323
  # Specifies the algorithm to use when decrypting the source object (for
1212
1324
  # example, `AES256`).
@@ -1360,6 +1472,9 @@ module Aws::S3
1360
1472
  # request_payer: "requester", # accepts requester
1361
1473
  # bypass_governance_retention: false,
1362
1474
  # expected_bucket_owner: "AccountId",
1475
+ # if_match: "IfMatch",
1476
+ # if_match_last_modified_time: Time.now,
1477
+ # if_match_size: 1,
1363
1478
  # })
1364
1479
  # @param [Hash] options ({})
1365
1480
  # @option options [String] :mfa
@@ -1406,6 +1521,46 @@ module Aws::S3
1406
1521
  # The account ID of the expected bucket owner. If the account ID that
1407
1522
  # you provide does not match the actual owner of the bucket, the request
1408
1523
  # fails with the HTTP status code `403 Forbidden` (access denied).
1524
+ # @option options [String] :if_match
1525
+ # The `If-Match` header field makes the request method conditional on
1526
+ # ETags. If the ETag value does not match, the operation returns a `412
1527
+ # Precondition Failed` error. If the ETag matches or if the object
1528
+ # doesn't exist, the operation will return a `204 Success (No Content)
1529
+ # response`.
1530
+ #
1531
+ # For more information about conditional requests, see [RFC 7232][1].
1532
+ #
1533
+ # <note markdown="1"> This functionality is only supported for directory buckets.
1534
+ #
1535
+ # </note>
1536
+ #
1537
+ #
1538
+ #
1539
+ # [1]: https://tools.ietf.org/html/rfc7232
1540
+ # @option options [Time,DateTime,Date,Integer,String] :if_match_last_modified_time
1541
+ # If present, the object is deleted only if its modification times
1542
+ # matches the provided `Timestamp`. If the `Timestamp` values do not
1543
+ # match, the operation returns a `412 Precondition Failed` error. If the
1544
+ # `Timestamp` matches or if the object doesn’t exist, the operation
1545
+ # returns a `204 Success (No Content)` response.
1546
+ #
1547
+ # <note markdown="1"> This functionality is only supported for directory buckets.
1548
+ #
1549
+ # </note>
1550
+ # @option options [Integer] :if_match_size
1551
+ # If present, the object is deleted only if its size matches the
1552
+ # provided size in bytes. If the `Size` value does not match, the
1553
+ # operation returns a `412 Precondition Failed` error. If the `Size`
1554
+ # matches or if the object doesn’t exist, the operation returns a `204
1555
+ # Success (No Content)` response.
1556
+ #
1557
+ # <note markdown="1"> This functionality is only supported for directory buckets.
1558
+ #
1559
+ # </note>
1560
+ #
1561
+ # You can use the `If-Match`, `x-amz-if-match-last-modified-time` and
1562
+ # `x-amz-if-match-size` conditional headers in conjunction with
1563
+ # each-other or individually.
1409
1564
  # @return [Types::DeleteObjectOutput]
1410
1565
  def delete(options = {})
1411
1566
  options = options.merge(
@@ -1706,7 +1861,8 @@ module Aws::S3
1706
1861
  # object_lock_retain_until_date: Time.now,
1707
1862
  # object_lock_legal_hold_status: "ON", # accepts ON, OFF
1708
1863
  # expected_bucket_owner: "AccountId",
1709
- # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256
1864
+ # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256, CRC64NVME
1865
+ # checksum_type: "COMPOSITE", # accepts COMPOSITE, FULL_OBJECT
1710
1866
  # })
1711
1867
  # @param [Hash] options ({})
1712
1868
  # @option options [String] :acl
@@ -2010,10 +2166,52 @@ module Aws::S3
2010
2166
  # The server-side encryption algorithm used when you store this object
2011
2167
  # in Amazon S3 (for example, `AES256`, `aws:kms`).
2012
2168
  #
2013
- # <note markdown="1"> For directory buckets, only server-side encryption with Amazon S3
2014
- # managed keys (SSE-S3) (`AES256`) is supported.
2169
+ # * <b>Directory buckets </b> - For directory buckets, there are only
2170
+ # two supported options for server-side encryption: server-side
2171
+ # encryption with Amazon S3 managed keys (SSE-S3) (`AES256`) and
2172
+ # server-side encryption with KMS keys (SSE-KMS) (`aws:kms`). We
2173
+ # recommend that the bucket's default encryption uses the desired
2174
+ # encryption configuration and you don't override the bucket default
2175
+ # encryption in your `CreateSession` requests or `PUT` object
2176
+ # requests. Then, new objects are automatically encrypted with the
2177
+ # desired encryption settings. For more information, see [Protecting
2178
+ # data with server-side encryption][1] in the *Amazon S3 User Guide*.
2179
+ # For more information about the encryption overriding behaviors in
2180
+ # directory buckets, see [Specifying server-side encryption with KMS
2181
+ # for new object uploads][2].
2182
+ #
2183
+ # In the Zonal endpoint API calls (except [CopyObject][3] and
2184
+ # [UploadPartCopy][4]) using the REST API, the encryption request
2185
+ # headers must match the encryption settings that are specified in the
2186
+ # `CreateSession` request. You can't override the values of the
2187
+ # encryption settings (`x-amz-server-side-encryption`,
2188
+ # `x-amz-server-side-encryption-aws-kms-key-id`,
2189
+ # `x-amz-server-side-encryption-context`, and
2190
+ # `x-amz-server-side-encryption-bucket-key-enabled`) that are
2191
+ # specified in the `CreateSession` request. You don't need to
2192
+ # explicitly specify these encryption settings values in Zonal
2193
+ # endpoint API calls, and Amazon S3 will use the encryption settings
2194
+ # values from the `CreateSession` request to protect new objects in
2195
+ # the directory bucket.
2196
+ #
2197
+ # <note markdown="1"> When you use the CLI or the Amazon Web Services SDKs, for
2198
+ # `CreateSession`, the session token refreshes automatically to avoid
2199
+ # service interruptions when a session expires. The CLI or the Amazon
2200
+ # Web Services SDKs use the bucket's default encryption configuration
2201
+ # for the `CreateSession` request. It's not supported to override the
2202
+ # encryption settings values in the `CreateSession` request. So in the
2203
+ # Zonal endpoint API calls (except [CopyObject][3] and
2204
+ # [UploadPartCopy][4]), the encryption request headers must match the
2205
+ # default encryption configuration of the directory bucket.
2015
2206
  #
2016
- # </note>
2207
+ # </note>
2208
+ #
2209
+ #
2210
+ #
2211
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html
2212
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html
2213
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
2214
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
2017
2215
  # @option options [String] :storage_class
2018
2216
  # By default, Amazon S3 uses the STANDARD Storage Class to store newly
2019
2217
  # created objects. The STANDARD storage class provides high durability
@@ -2021,8 +2219,9 @@ module Aws::S3
2021
2219
  # a different Storage Class. For more information, see [Storage
2022
2220
  # Classes][1] in the *Amazon S3 User Guide*.
2023
2221
  #
2024
- # <note markdown="1"> * For directory buckets, only the S3 Express One Zone storage class is
2025
- # supported to store newly created objects.
2222
+ # <note markdown="1"> * Directory buckets only support `EXPRESS_ONEZONE` (the S3 Express One
2223
+ # Zone storage class) in Availability Zones and `ONEZONE_IA` (the S3
2224
+ # One Zone-Infrequent Access storage class) in Dedicated Local Zones.
2026
2225
  #
2027
2226
  # * Amazon S3 on Outposts only uses the OUTPOSTS Storage Class.
2028
2227
  #
@@ -2066,32 +2265,71 @@ module Aws::S3
2066
2265
  #
2067
2266
  # </note>
2068
2267
  # @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>
2268
+ # Specifies the KMS key ID (Key ID, Key ARN, or Key Alias) to use for
2269
+ # object encryption. If the KMS key doesn't exist in the same account
2270
+ # that's issuing the command, you must use the full Key ARN not the Key
2271
+ # ID.
2272
+ #
2273
+ # **General purpose buckets** - If you specify
2274
+ # `x-amz-server-side-encryption` with `aws:kms` or `aws:kms:dsse`, this
2275
+ # header specifies the ID (Key ID, Key ARN, or Key Alias) of the KMS key
2276
+ # to use. If you specify `x-amz-server-side-encryption:aws:kms` or
2277
+ # `x-amz-server-side-encryption:aws:kms:dsse`, but do not provide
2278
+ # `x-amz-server-side-encryption-aws-kms-key-id`, Amazon S3 uses the
2279
+ # Amazon Web Services managed key (`aws/s3`) to protect the data.
2280
+ #
2281
+ # **Directory buckets** - To encrypt data using SSE-KMS, it's
2282
+ # recommended to specify the `x-amz-server-side-encryption` header to
2283
+ # `aws:kms`. Then, the `x-amz-server-side-encryption-aws-kms-key-id`
2284
+ # header implicitly uses the bucket's default KMS customer managed key
2285
+ # ID. If you want to explicitly set the `
2286
+ # x-amz-server-side-encryption-aws-kms-key-id` header, it must match the
2287
+ # bucket's default customer managed key (using key ID or ARN, not
2288
+ # alias). Your SSE-KMS configuration can only support 1 [customer
2289
+ # managed key][1] per directory bucket's lifetime. The [Amazon Web
2290
+ # Services managed key][2] (`aws/s3`) isn't supported. Incorrect key
2291
+ # specification results in an HTTP `400 Bad Request` error.
2292
+ #
2293
+ #
2294
+ #
2295
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk
2296
+ # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk
2075
2297
  # @option options [String] :ssekms_encryption_context
2076
2298
  # 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>
2299
+ # object encryption. The value of this header is a Base64 encoded string
2300
+ # of a UTF-8 encoded JSON, which contains the encryption context as
2301
+ # key-value pairs.
2302
+ #
2303
+ # **Directory buckets** - You can optionally provide an explicit
2304
+ # encryption context value. The value must match the default encryption
2305
+ # context - the bucket Amazon Resource Name (ARN). An additional
2306
+ # encryption context value is not supported.
2083
2307
  # @option options [Boolean] :bucket_key_enabled
2084
2308
  # Specifies whether Amazon S3 should use an S3 Bucket Key for object
2085
2309
  # 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.
2310
+ # (KMS) keys (SSE-KMS).
2088
2311
  #
2089
- # Specifying this header with an object action doesn’t affect
2312
+ # **General purpose buckets** - Setting this header to `true` causes
2313
+ # Amazon S3 to use an S3 Bucket Key for object encryption with SSE-KMS.
2314
+ # Also, specifying this header with a PUT action doesn't affect
2090
2315
  # bucket-level settings for S3 Bucket Key.
2091
2316
  #
2092
- # <note markdown="1"> This functionality is not supported for directory buckets.
2317
+ # **Directory buckets** - S3 Bucket Keys are always enabled for `GET`
2318
+ # and `PUT` operations in a directory bucket and can’t be disabled. S3
2319
+ # Bucket Keys aren't supported, when you copy SSE-KMS encrypted objects
2320
+ # from general purpose buckets to directory buckets, from directory
2321
+ # buckets to general purpose buckets, or between directory buckets,
2322
+ # through [CopyObject][1], [UploadPartCopy][2], [the Copy operation in
2323
+ # Batch Operations][3], or [the import jobs][4]. In this case, Amazon S3
2324
+ # makes a call to KMS every time a copy request is made for a
2325
+ # KMS-encrypted object.
2093
2326
  #
2094
- # </note>
2327
+ #
2328
+ #
2329
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
2330
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
2331
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-buckets-objects-Batch-Ops
2332
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-import-job
2095
2333
  # @option options [String] :request_payer
2096
2334
  # Confirms that the requester knows that they will be charged for the
2097
2335
  # request. Bucket owners need not specify this parameter in their
@@ -2147,6 +2385,14 @@ module Aws::S3
2147
2385
  #
2148
2386
  #
2149
2387
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
2388
+ # @option options [String] :checksum_type
2389
+ # Indicates the checksum type that you want Amazon S3 to use to
2390
+ # calculate the object’s checksum value. For more information, see
2391
+ # [Checking object integrity in the Amazon S3 User Guide][1].
2392
+ #
2393
+ #
2394
+ #
2395
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
2150
2396
  # @return [MultipartUpload]
2151
2397
  def initiate_multipart_upload(options = {})
2152
2398
  options = options.merge(
@@ -2176,16 +2422,20 @@ module Aws::S3
2176
2422
  # content_length: 1,
2177
2423
  # content_md5: "ContentMD5",
2178
2424
  # content_type: "ContentType",
2179
- # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256
2425
+ # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256, CRC64NVME
2180
2426
  # checksum_crc32: "ChecksumCRC32",
2181
2427
  # checksum_crc32c: "ChecksumCRC32C",
2428
+ # checksum_crc64nvme: "ChecksumCRC64NVME",
2182
2429
  # checksum_sha1: "ChecksumSHA1",
2183
2430
  # checksum_sha256: "ChecksumSHA256",
2184
2431
  # expires: Time.now,
2432
+ # if_match: "IfMatch",
2433
+ # if_none_match: "IfNoneMatch",
2185
2434
  # grant_full_control: "GrantFullControl",
2186
2435
  # grant_read: "GrantRead",
2187
2436
  # grant_read_acp: "GrantReadACP",
2188
2437
  # grant_write_acp: "GrantWriteACP",
2438
+ # write_offset_bytes: 1,
2189
2439
  # metadata: {
2190
2440
  # "MetadataKey" => "MetadataValue",
2191
2441
  # },
@@ -2281,7 +2531,7 @@ module Aws::S3
2281
2531
  #
2282
2532
  # [1]: https://www.rfc-editor.org/rfc/rfc9110.html#name-content-length
2283
2533
  # @option options [String] :content_md5
2284
- # The base64-encoded 128-bit MD5 digest of the message (without the
2534
+ # The Base64 encoded 128-bit `MD5` digest of the message (without the
2285
2535
  # headers) according to RFC 1864. This header can be used as a message
2286
2536
  # integrity check to verify that the data is the same data that was
2287
2537
  # originally sent. Although it is optional, we recommend using the
@@ -2289,10 +2539,11 @@ module Aws::S3
2289
2539
  # information about REST request authentication, see [REST
2290
2540
  # Authentication][1].
2291
2541
  #
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*.
2542
+ # <note markdown="1"> The `Content-MD5` or `x-amz-sdk-checksum-algorithm` header is required
2543
+ # for any request to upload an object with a retention period configured
2544
+ # using Amazon S3 Object Lock. For more information, see [Uploading
2545
+ # objects to an Object Lock enabled bucket ][2] in the *Amazon S3 User
2546
+ # Guide*.
2296
2547
  #
2297
2548
  # </note>
2298
2549
  #
@@ -2303,7 +2554,7 @@ module Aws::S3
2303
2554
  #
2304
2555
  #
2305
2556
  # [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
2557
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-managing.html#object-lock-put-object
2307
2558
  # @option options [String] :content_type
2308
2559
  # A standard MIME type describing the format of the contents. For more
2309
2560
  # information, see
@@ -2323,37 +2574,45 @@ module Aws::S3
2323
2574
  # For the `x-amz-checksum-algorithm ` header, replace ` algorithm ` with
2324
2575
  # the supported algorithm from the following list:
2325
2576
  #
2326
- # * CRC32
2577
+ # * `CRC32`
2327
2578
  #
2328
- # * CRC32C
2579
+ # * `CRC32C`
2329
2580
  #
2330
- # * SHA1
2581
+ # * `CRC64NVME`
2331
2582
  #
2332
- # * SHA256
2583
+ # * `SHA1`
2584
+ #
2585
+ # * `SHA256`
2333
2586
  #
2334
2587
  # For more information, see [Checking object integrity][1] in the
2335
2588
  # *Amazon S3 User Guide*.
2336
2589
  #
2337
2590
  # If the individual checksum value you provide through
2338
2591
  # `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 `.
2592
+ # set through `x-amz-sdk-checksum-algorithm`, Amazon S3 fails the
2593
+ # request with a `BadDigest` error.
2342
2594
  #
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.
2595
+ # <note markdown="1"> The `Content-MD5` or `x-amz-sdk-checksum-algorithm` header is required
2596
+ # for any request to upload an object with a retention period configured
2597
+ # using Amazon S3 Object Lock. For more information, see [Uploading
2598
+ # objects to an Object Lock enabled bucket ][2] in the *Amazon S3 User
2599
+ # Guide*.
2345
2600
  #
2346
2601
  # </note>
2347
2602
  #
2603
+ # For directory buckets, when you use Amazon Web Services SDKs, `CRC32`
2604
+ # is the default checksum algorithm that's used for performance.
2605
+ #
2348
2606
  #
2349
2607
  #
2350
2608
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
2609
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-managing.html#object-lock-put-object
2351
2610
  # @option options [String] :checksum_crc32
2352
2611
  # This header can be used as a data integrity check to verify that the
2353
2612
  # 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*.
2613
+ # specifies the Base64 encoded, 32-bit `CRC32` checksum of the object.
2614
+ # For more information, see [Checking object integrity][1] in the
2615
+ # *Amazon S3 User Guide*.
2357
2616
  #
2358
2617
  #
2359
2618
  #
@@ -2361,17 +2620,28 @@ module Aws::S3
2361
2620
  # @option options [String] :checksum_crc32c
2362
2621
  # This header can be used as a data integrity check to verify that the
2363
2622
  # data received is the same data that was originally sent. This header
2364
- # specifies the base64-encoded, 32-bit CRC32C checksum of the object.
2623
+ # specifies the Base64 encoded, 32-bit `CRC32C` checksum of the object.
2365
2624
  # For more information, see [Checking object integrity][1] in the
2366
2625
  # *Amazon S3 User Guide*.
2367
2626
  #
2368
2627
  #
2369
2628
  #
2370
2629
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
2630
+ # @option options [String] :checksum_crc64nvme
2631
+ # This header can be used as a data integrity check to verify that the
2632
+ # data received is the same data that was originally sent. This header
2633
+ # specifies the Base64 encoded, 64-bit `CRC64NVME` checksum of the
2634
+ # object. The `CRC64NVME` checksum is always a full object checksum. For
2635
+ # more information, see [Checking object integrity in the Amazon S3 User
2636
+ # Guide][1].
2637
+ #
2638
+ #
2639
+ #
2640
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
2371
2641
  # @option options [String] :checksum_sha1
2372
2642
  # This header can be used as a data integrity check to verify that the
2373
2643
  # 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
2644
+ # specifies the Base64 encoded, 160-bit `SHA1` digest of the object. For
2375
2645
  # more information, see [Checking object integrity][1] in the *Amazon S3
2376
2646
  # User Guide*.
2377
2647
  #
@@ -2381,7 +2651,7 @@ module Aws::S3
2381
2651
  # @option options [String] :checksum_sha256
2382
2652
  # This header can be used as a data integrity check to verify that the
2383
2653
  # 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.
2654
+ # specifies the Base64 encoded, 256-bit `SHA256` digest of the object.
2385
2655
  # For more information, see [Checking object integrity][1] in the
2386
2656
  # *Amazon S3 User Guide*.
2387
2657
  #
@@ -2396,6 +2666,43 @@ module Aws::S3
2396
2666
  #
2397
2667
  #
2398
2668
  # [1]: https://www.rfc-editor.org/rfc/rfc7234#section-5.3
2669
+ # @option options [String] :if_match
2670
+ # Uploads the object only if the ETag (entity tag) value provided during
2671
+ # the WRITE operation matches the ETag of the object in S3. If the ETag
2672
+ # values do not match, the operation returns a `412 Precondition Failed`
2673
+ # error.
2674
+ #
2675
+ # If a conflicting operation occurs during the upload S3 returns a `409
2676
+ # ConditionalRequestConflict` response. On a 409 failure you should
2677
+ # fetch the object's ETag and retry the upload.
2678
+ #
2679
+ # Expects the ETag value as a string.
2680
+ #
2681
+ # For more information about conditional requests, see [RFC 7232][1], or
2682
+ # [Conditional requests][2] in the *Amazon S3 User Guide*.
2683
+ #
2684
+ #
2685
+ #
2686
+ # [1]: https://tools.ietf.org/html/rfc7232
2687
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/conditional-requests.html
2688
+ # @option options [String] :if_none_match
2689
+ # Uploads the object only if the object key name does not already exist
2690
+ # in the bucket specified. Otherwise, Amazon S3 returns a `412
2691
+ # Precondition Failed` error.
2692
+ #
2693
+ # If a conflicting operation occurs during the upload S3 returns a `409
2694
+ # ConditionalRequestConflict` response. On a 409 failure you should
2695
+ # retry the upload.
2696
+ #
2697
+ # Expects the '*' (asterisk) character.
2698
+ #
2699
+ # For more information about conditional requests, see [RFC 7232][1], or
2700
+ # [Conditional requests][2] in the *Amazon S3 User Guide*.
2701
+ #
2702
+ #
2703
+ #
2704
+ # [1]: https://tools.ietf.org/html/rfc7232
2705
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/conditional-requests.html
2399
2706
  # @option options [String] :grant_full_control
2400
2707
  # Gives the grantee READ, READ\_ACP, and WRITE\_ACP permissions on the
2401
2708
  # object.
@@ -2429,6 +2736,16 @@ module Aws::S3
2429
2736
  # * This functionality is not supported for Amazon S3 on Outposts.
2430
2737
  #
2431
2738
  # </note>
2739
+ # @option options [Integer] :write_offset_bytes
2740
+ # Specifies the offset for appending data to existing objects in bytes.
2741
+ # The offset must be equal to the size of the existing object being
2742
+ # appended to. If no object exists, setting this header to 0 will create
2743
+ # a new object.
2744
+ #
2745
+ # <note markdown="1"> This functionality is only supported for objects in the Amazon S3
2746
+ # Express One Zone storage class in directory buckets.
2747
+ #
2748
+ # </note>
2432
2749
  # @option options [Hash<String,String>] :metadata
2433
2750
  # A map of metadata to store with the object in S3.
2434
2751
  # @option options [String] :server_side_encryption
@@ -2436,25 +2753,65 @@ module Aws::S3
2436
2753
  # object in Amazon S3 (for example, `AES256`, `aws:kms`,
2437
2754
  # `aws:kms:dsse`).
2438
2755
  #
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*.
2756
+ # * <b>General purpose buckets </b> - You have four mutually exclusive
2757
+ # options to protect data using server-side encryption in Amazon S3,
2758
+ # depending on how you choose to manage the encryption keys.
2759
+ # Specifically, the encryption key options are Amazon S3 managed keys
2760
+ # (SSE-S3), Amazon Web Services KMS keys (SSE-KMS or DSSE-KMS), and
2761
+ # customer-provided keys (SSE-C). Amazon S3 encrypts data with
2762
+ # server-side encryption by using Amazon S3 managed keys (SSE-S3) by
2763
+ # default. You can optionally tell Amazon S3 to encrypt data at rest
2764
+ # by using server-side encryption with other key options. For more
2765
+ # information, see [Using Server-Side Encryption][1] in the *Amazon S3
2766
+ # User Guide*.
2767
+ #
2768
+ # * <b>Directory buckets </b> - For directory buckets, there are only
2769
+ # two supported options for server-side encryption: server-side
2770
+ # encryption with Amazon S3 managed keys (SSE-S3) (`AES256`) and
2771
+ # server-side encryption with KMS keys (SSE-KMS) (`aws:kms`). We
2772
+ # recommend that the bucket's default encryption uses the desired
2773
+ # encryption configuration and you don't override the bucket default
2774
+ # encryption in your `CreateSession` requests or `PUT` object
2775
+ # requests. Then, new objects are automatically encrypted with the
2776
+ # desired encryption settings. For more information, see [Protecting
2777
+ # data with server-side encryption][2] in the *Amazon S3 User Guide*.
2778
+ # For more information about the encryption overriding behaviors in
2779
+ # directory buckets, see [Specifying server-side encryption with KMS
2780
+ # for new object uploads][3].
2781
+ #
2782
+ # In the Zonal endpoint API calls (except [CopyObject][4] and
2783
+ # [UploadPartCopy][5]) using the REST API, the encryption request
2784
+ # headers must match the encryption settings that are specified in the
2785
+ # `CreateSession` request. You can't override the values of the
2786
+ # encryption settings (`x-amz-server-side-encryption`,
2787
+ # `x-amz-server-side-encryption-aws-kms-key-id`,
2788
+ # `x-amz-server-side-encryption-context`, and
2789
+ # `x-amz-server-side-encryption-bucket-key-enabled`) that are
2790
+ # specified in the `CreateSession` request. You don't need to
2791
+ # explicitly specify these encryption settings values in Zonal
2792
+ # endpoint API calls, and Amazon S3 will use the encryption settings
2793
+ # values from the `CreateSession` request to protect new objects in
2794
+ # the directory bucket.
2795
+ #
2796
+ # <note markdown="1"> When you use the CLI or the Amazon Web Services SDKs, for
2797
+ # `CreateSession`, the session token refreshes automatically to avoid
2798
+ # service interruptions when a session expires. The CLI or the Amazon
2799
+ # Web Services SDKs use the bucket's default encryption configuration
2800
+ # for the `CreateSession` request. It's not supported to override the
2801
+ # encryption settings values in the `CreateSession` request. So in the
2802
+ # Zonal endpoint API calls (except [CopyObject][4] and
2803
+ # [UploadPartCopy][5]), the encryption request headers must match the
2804
+ # default encryption configuration of the directory bucket.
2450
2805
  #
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.
2806
+ # </note>
2454
2807
  #
2455
2808
  #
2456
2809
  #
2457
2810
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html
2811
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html
2812
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html
2813
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
2814
+ # [5]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
2458
2815
  # @option options [String] :storage_class
2459
2816
  # By default, Amazon S3 uses the STANDARD Storage Class to store newly
2460
2817
  # created objects. The STANDARD storage class provides high durability
@@ -2462,8 +2819,9 @@ module Aws::S3
2462
2819
  # a different Storage Class. For more information, see [Storage
2463
2820
  # Classes][1] in the *Amazon S3 User Guide*.
2464
2821
  #
2465
- # <note markdown="1"> * For directory buckets, only the S3 Express One Zone storage class is
2466
- # supported to store newly created objects.
2822
+ # <note markdown="1"> * Directory buckets only support `EXPRESS_ONEZONE` (the S3 Express One
2823
+ # Zone storage class) in Availability Zones and `ONEZONE_IA` (the S3
2824
+ # One Zone-Infrequent Access storage class) in Dedicated Local Zones.
2467
2825
  #
2468
2826
  # * Amazon S3 on Outposts only uses the OUTPOSTS Storage Class.
2469
2827
  #
@@ -2528,44 +2886,83 @@ module Aws::S3
2528
2886
  #
2529
2887
  # </note>
2530
2888
  # @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.
2889
+ # Specifies the KMS key ID (Key ID, Key ARN, or Key Alias) to use for
2890
+ # object encryption. If the KMS key doesn't exist in the same account
2891
+ # that's issuing the command, you must use the full Key ARN not the Key
2892
+ # ID.
2893
+ #
2894
+ # **General purpose buckets** - If you specify
2895
+ # `x-amz-server-side-encryption` with `aws:kms` or `aws:kms:dsse`, this
2896
+ # header specifies the ID (Key ID, Key ARN, or Key Alias) of the KMS key
2897
+ # to use. If you specify `x-amz-server-side-encryption:aws:kms` or
2898
+ # `x-amz-server-side-encryption:aws:kms:dsse`, but do not provide
2899
+ # `x-amz-server-side-encryption-aws-kms-key-id`, Amazon S3 uses the
2900
+ # Amazon Web Services managed key (`aws/s3`) to protect the data.
2901
+ #
2902
+ # **Directory buckets** - To encrypt data using SSE-KMS, it's
2903
+ # recommended to specify the `x-amz-server-side-encryption` header to
2904
+ # `aws:kms`. Then, the `x-amz-server-side-encryption-aws-kms-key-id`
2905
+ # header implicitly uses the bucket's default KMS customer managed key
2906
+ # ID. If you want to explicitly set the `
2907
+ # x-amz-server-side-encryption-aws-kms-key-id` header, it must match the
2908
+ # bucket's default customer managed key (using key ID or ARN, not
2909
+ # alias). Your SSE-KMS configuration can only support 1 [customer
2910
+ # managed key][1] per directory bucket's lifetime. The [Amazon Web
2911
+ # Services managed key][2] (`aws/s3`) isn't supported. Incorrect key
2912
+ # specification results in an HTTP `400 Bad Request` error.
2913
+ #
2914
+ #
2915
+ #
2916
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk
2917
+ # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk
2918
+ # @option options [String] :ssekms_encryption_context
2919
+ # Specifies the Amazon Web Services KMS Encryption Context as an
2920
+ # additional encryption context to use for object encryption. The value
2921
+ # of this header is a Base64 encoded string of a UTF-8 encoded JSON,
2922
+ # which contains the encryption context as key-value pairs. This value
2923
+ # is stored as object metadata and automatically gets passed on to
2924
+ # Amazon Web Services KMS for future `GetObject` operations on this
2925
+ # object.
2541
2926
  #
2542
- # <note markdown="1"> This functionality is not supported for directory buckets.
2927
+ # **General purpose buckets** - This value must be explicitly added
2928
+ # during `CopyObject` operations if you want an additional encryption
2929
+ # context for your object. For more information, see [Encryption
2930
+ # context][1] in the *Amazon S3 User Guide*.
2543
2931
  #
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.
2932
+ # **Directory buckets** - You can optionally provide an explicit
2933
+ # encryption context value. The value must match the default encryption
2934
+ # context - the bucket Amazon Resource Name (ARN). An additional
2935
+ # encryption context value is not supported.
2553
2936
  #
2554
- # <note markdown="1"> This functionality is not supported for directory buckets.
2555
2937
  #
2556
- # </note>
2938
+ #
2939
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html#encryption-context
2557
2940
  # @option options [Boolean] :bucket_key_enabled
2558
2941
  # Specifies whether Amazon S3 should use an S3 Bucket Key for object
2559
2942
  # 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.
2943
+ # (KMS) keys (SSE-KMS).
2562
2944
  #
2563
- # Specifying this header with a PUT action doesn’t affect bucket-level
2564
- # settings for S3 Bucket Key.
2945
+ # **General purpose buckets** - Setting this header to `true` causes
2946
+ # Amazon S3 to use an S3 Bucket Key for object encryption with SSE-KMS.
2947
+ # Also, specifying this header with a PUT action doesn't affect
2948
+ # bucket-level settings for S3 Bucket Key.
2565
2949
  #
2566
- # <note markdown="1"> This functionality is not supported for directory buckets.
2950
+ # **Directory buckets** - S3 Bucket Keys are always enabled for `GET`
2951
+ # and `PUT` operations in a directory bucket and can’t be disabled. S3
2952
+ # Bucket Keys aren't supported, when you copy SSE-KMS encrypted objects
2953
+ # from general purpose buckets to directory buckets, from directory
2954
+ # buckets to general purpose buckets, or between directory buckets,
2955
+ # through [CopyObject][1], [UploadPartCopy][2], [the Copy operation in
2956
+ # Batch Operations][3], or [the import jobs][4]. In this case, Amazon S3
2957
+ # makes a call to KMS every time a copy request is made for a
2958
+ # KMS-encrypted object.
2567
2959
  #
2568
- # </note>
2960
+ #
2961
+ #
2962
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
2963
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
2964
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-buckets-objects-Batch-Ops
2965
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-import-job
2569
2966
  # @option options [String] :request_payer
2570
2967
  # Confirms that the requester knows that they will be charged for the
2571
2968
  # request. Bucket owners need not specify this parameter in their
@@ -2716,7 +3113,7 @@ module Aws::S3
2716
3113
  # },
2717
3114
  # },
2718
3115
  # request_payer: "requester", # accepts requester
2719
- # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256
3116
+ # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256, CRC64NVME
2720
3117
  # expected_bucket_owner: "AccountId",
2721
3118
  # })
2722
3119
  # @param [Hash] options ({})
@@ -2944,10 +3341,20 @@ module Aws::S3
2944
3341
  # @option options [String] :checksum_mode
2945
3342
  # To retrieve the checksum, this parameter must be enabled.
2946
3343
  #
2947
- # In addition, if you enable `ChecksumMode` and the object is encrypted
2948
- # with Amazon Web Services Key Management Service (Amazon Web Services
2949
- # KMS), you must have permission to use the `kms:Decrypt` action for the
2950
- # request to succeed.
3344
+ # **General purpose buckets** - If you enable checksum mode and the
3345
+ # object is uploaded with a [checksum][1] and encrypted with an Key
3346
+ # Management Service (KMS) key, you must have permission to use the
3347
+ # `kms:Decrypt` action to retrieve the checksum.
3348
+ #
3349
+ # **Directory buckets** - If you enable `ChecksumMode` and the object is
3350
+ # encrypted with Amazon Web Services Key Management Service (Amazon Web
3351
+ # Services KMS), you must also have the `kms:GenerateDataKey` and
3352
+ # `kms:Decrypt` permissions in IAM identity-based policies and KMS key
3353
+ # policies for the KMS key to retrieve the checksum of the object.
3354
+ #
3355
+ #
3356
+ #
3357
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_Checksum.html
2951
3358
  # @return [Types::HeadObjectOutput]
2952
3359
  def head(options = {})
2953
3360
  options = options.merge(
@@ -3073,7 +3480,7 @@ module Aws::S3
3073
3480
  # request_payer: "requester", # accepts requester
3074
3481
  # bypass_governance_retention: false,
3075
3482
  # expected_bucket_owner: "AccountId",
3076
- # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256
3483
+ # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256, CRC64NVME
3077
3484
  # })
3078
3485
  # @param options ({})
3079
3486
  # @option options [String] :mfa
@@ -3137,22 +3544,23 @@ module Aws::S3
3137
3544
  # For the `x-amz-checksum-algorithm ` header, replace ` algorithm ` with
3138
3545
  # the supported algorithm from the following list:
3139
3546
  #
3140
- # * CRC32
3547
+ # * `CRC32`
3141
3548
  #
3142
- # * CRC32C
3549
+ # * `CRC32C`
3143
3550
  #
3144
- # * SHA1
3551
+ # * `CRC64NVME`
3145
3552
  #
3146
- # * SHA256
3553
+ # * `SHA1`
3554
+ #
3555
+ # * `SHA256`
3147
3556
  #
3148
3557
  # For more information, see [Checking object integrity][1] in the
3149
3558
  # *Amazon S3 User Guide*.
3150
3559
  #
3151
3560
  # If the individual checksum value you provide through
3152
3561
  # `x-amz-checksum-algorithm ` doesn't match the checksum algorithm you
3153
- # set through `x-amz-sdk-checksum-algorithm`, Amazon S3 ignores any
3154
- # provided `ChecksumAlgorithm` parameter and uses the checksum algorithm
3155
- # that matches the provided value in `x-amz-checksum-algorithm `.
3562
+ # set through `x-amz-sdk-checksum-algorithm`, Amazon S3 fails the
3563
+ # request with a `BadDigest` error.
3156
3564
  #
3157
3565
  # If you provide an individual checksum, Amazon S3 ignores any provided
3158
3566
  # `ChecksumAlgorithm` parameter.
@@ -3184,3 +3592,6 @@ module Aws::S3
3184
3592
  end
3185
3593
  end
3186
3594
  end
3595
+
3596
+ # Load customizations if they exist
3597
+ require 'aws-sdk-s3/customizations/object'