aws-sdk-s3 1.176.1 → 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 (99) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +202 -0
  3. data/VERSION +1 -1
  4. data/lib/aws-sdk-s3/bucket.rb +86 -35
  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 +2 -2
  8. data/lib/aws-sdk-s3/bucket_lifecycle_configuration.rb +3 -3
  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 +3038 -1226
  16. data/lib/aws-sdk-s3/client_api.rb +492 -164
  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 +17 -17
  49. data/lib/aws-sdk-s3/endpoint_provider.rb +562 -304
  50. data/lib/aws-sdk-s3/endpoints.rb +110 -0
  51. data/lib/aws-sdk-s3/errors.rb +11 -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 +50 -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 +264 -137
  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 +179 -103
  65. data/lib/aws-sdk-s3/object_version.rb +25 -23
  66. data/lib/aws-sdk-s3/plugins/checksum_algorithm.rb +31 -0
  67. data/lib/aws-sdk-s3/plugins/endpoints.rb +1 -1
  68. data/lib/aws-sdk-s3/plugins/express_session_auth.rb +11 -20
  69. data/lib/aws-sdk-s3/plugins/md5s.rb +10 -71
  70. data/lib/aws-sdk-s3/plugins/streaming_retry.rb +5 -7
  71. data/lib/aws-sdk-s3/plugins/url_encoded_keys.rb +2 -1
  72. data/lib/aws-sdk-s3/presigner.rb +4 -5
  73. data/lib/aws-sdk-s3/resource.rb +7 -1
  74. data/lib/aws-sdk-s3/transfer_manager.rb +303 -0
  75. data/lib/aws-sdk-s3/types.rb +2907 -1059
  76. data/lib/aws-sdk-s3.rb +1 -1
  77. data/sig/bucket.rbs +16 -6
  78. data/sig/bucket_acl.rbs +1 -1
  79. data/sig/bucket_cors.rbs +1 -1
  80. data/sig/bucket_lifecycle.rbs +1 -1
  81. data/sig/bucket_lifecycle_configuration.rbs +1 -1
  82. data/sig/bucket_logging.rbs +1 -1
  83. data/sig/bucket_policy.rbs +1 -1
  84. data/sig/bucket_request_payment.rbs +1 -1
  85. data/sig/bucket_tagging.rbs +1 -1
  86. data/sig/bucket_versioning.rbs +3 -3
  87. data/sig/bucket_website.rbs +1 -1
  88. data/sig/client.rbs +226 -64
  89. data/sig/errors.rbs +2 -0
  90. data/sig/multipart_upload.rbs +9 -2
  91. data/sig/multipart_upload_part.rbs +5 -1
  92. data/sig/object.rbs +31 -15
  93. data/sig/object_acl.rbs +1 -1
  94. data/sig/object_summary.rbs +22 -15
  95. data/sig/object_version.rbs +5 -2
  96. data/sig/resource.rbs +11 -2
  97. data/sig/types.rbs +281 -64
  98. metadata +26 -10
  99. data/lib/aws-sdk-s3/plugins/skip_whole_multipart_get_checksums.rb +0 -31
@@ -42,7 +42,7 @@ module Aws::S3
42
42
  @object_key
43
43
  end
44
44
 
45
- # Container for the bucket owner's display name and ID.
45
+ # Container for the bucket owner's ID.
46
46
  # @return [Types::Owner]
47
47
  def owner
48
48
  data[:owner]
@@ -55,11 +55,17 @@ module Aws::S3
55
55
  end
56
56
 
57
57
  # If present, indicates that the requester was successfully charged for
58
- # the request.
58
+ # the request. For more information, see [Using Requester Pays buckets
59
+ # for storage transfers and usage][1] in the *Amazon Simple Storage
60
+ # Service user guide*.
59
61
  #
60
62
  # <note markdown="1"> This functionality is not supported for directory buckets.
61
63
  #
62
64
  # </note>
65
+ #
66
+ #
67
+ #
68
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/RequesterPaysBuckets.html
63
69
  # @return [String]
64
70
  def request_charged
65
71
  data[:request_charged]
@@ -229,7 +235,7 @@ module Aws::S3
229
235
  # },
230
236
  # },
231
237
  # content_md5: "ContentMD5",
232
- # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256
238
+ # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256, CRC64NVME
233
239
  # grant_full_control: "GrantFullControl",
234
240
  # grant_read: "GrantRead",
235
241
  # grant_read_acp: "GrantReadACP",
@@ -251,9 +257,9 @@ module Aws::S3
251
257
  # Contains the elements that set the ACL permissions for an object per
252
258
  # grantee.
253
259
  # @option options [String] :content_md5
254
- # The base64-encoded 128-bit MD5 digest of the data. This header must be
255
- # used as a message integrity check to verify that the request body was
256
- # not corrupted in transit. For more information, go to [RFC
260
+ # The Base64 encoded 128-bit `MD5` digest of the data. This header must
261
+ # be used as a message integrity check to verify that the request body
262
+ # was not corrupted in transit. For more information, go to [RFC
257
263
  # 1864.&gt;][1]
258
264
  #
259
265
  # For requests made using the Amazon Web Services Command Line Interface
@@ -1,7 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'thread'
4
- require 'cgi'
4
+ require "cgi/escape"
5
+ require "cgi/util" if RUBY_VERSION < "3.5"
5
6
 
6
7
  module Aws
7
8
  module S3
@@ -84,6 +84,18 @@ module Aws::S3
84
84
  data[:checksum_algorithm]
85
85
  end
86
86
 
87
+ # The checksum type that is used to calculate the object’s checksum
88
+ # value. For more information, see [Checking object integrity][1] in the
89
+ # *Amazon S3 User Guide*.
90
+ #
91
+ #
92
+ #
93
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
94
+ # @return [String]
95
+ def checksum_type
96
+ data[:checksum_type]
97
+ end
98
+
87
99
  # Size in bytes of the object
88
100
  # @return [Integer]
89
101
  def size
@@ -92,8 +104,10 @@ module Aws::S3
92
104
 
93
105
  # The class of storage used to store the object.
94
106
  #
95
- # <note markdown="1"> **Directory buckets** - Only the S3 Express One Zone storage class is
96
- # supported by directory buckets to store objects.
107
+ # <note markdown="1"> **Directory buckets** - Directory buckets only support
108
+ # `EXPRESS_ONEZONE` (the S3 Express One Zone storage class) in
109
+ # Availability Zones and `ONEZONE_IA` (the S3 One Zone-Infrequent Access
110
+ # storage class) in Dedicated Local Zones.
97
111
  #
98
112
  # </note>
99
113
  # @return [String]
@@ -118,9 +132,10 @@ module Aws::S3
118
132
  # archived objects, see [ Working with archived objects][1] in the
119
133
  # *Amazon S3 User Guide*.
120
134
  #
121
- # <note markdown="1"> This functionality is not supported for directory buckets. Only the S3
122
- # Express One Zone storage class is supported by directory buckets to
123
- # store objects.
135
+ # <note markdown="1"> This functionality is not supported for directory buckets. Directory
136
+ # buckets only support `EXPRESS_ONEZONE` (the S3 Express One Zone
137
+ # storage class) in Availability Zones and `ONEZONE_IA` (the S3 One
138
+ # Zone-Infrequent Access storage class) in Dedicated Local Zones.
124
139
  #
125
140
  # </note>
126
141
  #
@@ -324,7 +339,7 @@ module Aws::S3
324
339
  # object_summary.copy_from({
325
340
  # acl: "private", # accepts private, public-read, public-read-write, authenticated-read, aws-exec-read, bucket-owner-read, bucket-owner-full-control
326
341
  # cache_control: "CacheControl",
327
- # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256
342
+ # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256, CRC64NVME
328
343
  # content_disposition: "ContentDisposition",
329
344
  # content_encoding: "ContentEncoding",
330
345
  # content_language: "ContentLanguage",
@@ -339,13 +354,15 @@ module Aws::S3
339
354
  # grant_read: "GrantRead",
340
355
  # grant_read_acp: "GrantReadACP",
341
356
  # grant_write_acp: "GrantWriteACP",
357
+ # if_match: "IfMatch",
358
+ # if_none_match: "IfNoneMatch",
342
359
  # metadata: {
343
360
  # "MetadataKey" => "MetadataValue",
344
361
  # },
345
362
  # metadata_directive: "COPY", # accepts COPY, REPLACE
346
363
  # tagging_directive: "COPY", # accepts COPY, REPLACE
347
- # server_side_encryption: "AES256", # accepts AES256, aws:kms, aws:kms:dsse
348
- # storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE, OUTPOSTS, GLACIER_IR, SNOW, EXPRESS_ONEZONE
364
+ # server_side_encryption: "AES256", # accepts AES256, aws:fsx, aws:kms, aws:kms:dsse
365
+ # 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
349
366
  # website_redirect_location: "WebsiteRedirectLocation",
350
367
  # sse_customer_algorithm: "SSECustomerAlgorithm",
351
368
  # sse_customer_key: "SSECustomerKey",
@@ -595,6 +612,35 @@ module Aws::S3
595
612
  # * This functionality is not supported for Amazon S3 on Outposts.
596
613
  #
597
614
  # </note>
615
+ # @option options [String] :if_match
616
+ # Copies the object if the entity tag (ETag) of the destination object
617
+ # matches the specified tag. If the ETag values do not match, the
618
+ # operation returns a `412 Precondition Failed` error. If a concurrent
619
+ # operation occurs during the upload S3 returns a `409
620
+ # ConditionalRequestConflict` response. On a 409 failure you should
621
+ # fetch the object's ETag and retry the upload.
622
+ #
623
+ # Expects the ETag value as a string.
624
+ #
625
+ # For more information about conditional requests, see [RFC 7232][1].
626
+ #
627
+ #
628
+ #
629
+ # [1]: https://tools.ietf.org/html/rfc7232
630
+ # @option options [String] :if_none_match
631
+ # Copies the object only if the object key name at the destination does
632
+ # not already exist in the bucket specified. Otherwise, Amazon S3
633
+ # returns a `412 Precondition Failed` error. If a concurrent operation
634
+ # occurs during the upload S3 returns a `409 ConditionalRequestConflict`
635
+ # response. On a 409 failure you should retry the upload.
636
+ #
637
+ # Expects the '*' (asterisk) character.
638
+ #
639
+ # For more information about conditional requests, see [RFC 7232][1].
640
+ #
641
+ #
642
+ #
643
+ # [1]: https://tools.ietf.org/html/rfc7232
598
644
  # @option options [Hash<String,String>] :metadata
599
645
  # A map of metadata to store with the object in S3.
600
646
  # @option options [String] :metadata_directive
@@ -735,6 +781,14 @@ module Aws::S3
735
781
  # key is the same customer managed key that you specified for the
736
782
  # directory bucket's default encryption configuration.
737
783
  #
784
+ # * <b>S3 access points for Amazon FSx </b> - When accessing data stored
785
+ # in Amazon FSx file systems using S3 access points, the only valid
786
+ # server side encryption option is `aws:fsx`. All Amazon FSx file
787
+ # systems have encryption configured by default and are encrypted at
788
+ # rest. Data is automatically encrypted before being written to the
789
+ # file system, and automatically decrypted as it is read. These
790
+ # processes are handled transparently by Amazon FSx.
791
+ #
738
792
  #
739
793
  #
740
794
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html
@@ -749,10 +803,12 @@ module Aws::S3
749
803
  # availability. Depending on performance needs, you can specify a
750
804
  # different Storage Class.
751
805
  #
752
- # <note markdown="1"> * <b>Directory buckets </b> - For directory buckets, only the S3
753
- # Express One Zone storage class is supported to store newly created
754
- # objects. Unsupported storage class values won't write a destination
755
- # object and will respond with the HTTP status code `400 Bad Request`.
806
+ # <note markdown="1"> * <b>Directory buckets </b> - Directory buckets only support
807
+ # `EXPRESS_ONEZONE` (the S3 Express One Zone storage class) in
808
+ # Availability Zones and `ONEZONE_IA` (the S3 One Zone-Infrequent
809
+ # Access storage class) in Dedicated Local Zones. Unsupported storage
810
+ # class values won't write a destination object and will respond with
811
+ # the HTTP status code `400 Bad Request`.
756
812
  #
757
813
  # * <b>Amazon S3 on Outposts </b> - S3 on Outposts only uses the
758
814
  # `OUTPOSTS` Storage Class.
@@ -840,20 +896,17 @@ module Aws::S3
840
896
  # Signature Version in Request Authentication][1] in the *Amazon S3 User
841
897
  # Guide*.
842
898
  #
843
- # **Directory buckets** - If you specify `x-amz-server-side-encryption`
844
- # with `aws:kms`, the ` x-amz-server-side-encryption-aws-kms-key-id`
845
- # header is implicitly assigned the ID of the KMS symmetric encryption
846
- # customer managed key that's configured for your directory bucket's
847
- # default encryption setting. If you want to specify the `
848
- # x-amz-server-side-encryption-aws-kms-key-id` header explicitly, you
849
- # can only specify it with the ID (Key ID or Key ARN) of the KMS
850
- # customer managed key that's configured for your directory bucket's
851
- # default encryption setting. Otherwise, you get an HTTP `400 Bad
852
- # Request` error. Only use the key ID or key ARN. The key alias format
853
- # of the KMS key isn't supported. Your SSE-KMS configuration can only
854
- # support 1 [customer managed key][2] per directory bucket for the
855
- # lifetime of the bucket. The [Amazon Web Services managed key][3]
856
- # (`aws/s3`) isn't supported.
899
+ # **Directory buckets** - To encrypt data using SSE-KMS, it's
900
+ # recommended to specify the `x-amz-server-side-encryption` header to
901
+ # `aws:kms`. Then, the `x-amz-server-side-encryption-aws-kms-key-id`
902
+ # header implicitly uses the bucket's default KMS customer managed key
903
+ # ID. If you want to explicitly set the `
904
+ # x-amz-server-side-encryption-aws-kms-key-id` header, it must match the
905
+ # bucket's default customer managed key (using key ID or ARN, not
906
+ # alias). Your SSE-KMS configuration can only support 1 [customer
907
+ # managed key][2] per directory bucket's lifetime. The [Amazon Web
908
+ # Services managed key][3] (`aws/s3`) isn't supported. Incorrect key
909
+ # specification results in an HTTP `400 Bad Request` error.
857
910
  #
858
911
  #
859
912
  #
@@ -1110,21 +1163,19 @@ module Aws::S3
1110
1163
  # you provide does not match the actual owner of the bucket, the request
1111
1164
  # fails with the HTTP status code `403 Forbidden` (access denied).
1112
1165
  # @option options [String] :if_match
1113
- # The `If-Match` header field makes the request method conditional on
1114
- # ETags. If the ETag value does not match, the operation returns a `412
1115
- # Precondition Failed` error. If the ETag matches or if the object
1116
- # doesn't exist, the operation will return a `204 Success (No Content)
1117
- # response`.
1118
- #
1119
- # For more information about conditional requests, see [RFC 7232][1].
1166
+ # Deletes the object if the ETag (entity tag) value provided during the
1167
+ # delete operation matches the ETag of the object in S3. If the ETag
1168
+ # values do not match, the operation returns a `412 Precondition Failed`
1169
+ # error.
1120
1170
  #
1121
- # <note markdown="1"> This functionality is only supported for directory buckets.
1171
+ # Expects the ETag value as a string. `If-Match` does accept a string
1172
+ # value of an '*' (asterisk) character to denote a match of any ETag.
1122
1173
  #
1123
- # </note>
1174
+ # For more information about conditional requests, see [RFC 7232][1].
1124
1175
  #
1125
1176
  #
1126
1177
  #
1127
- # [1]: https://docs.aws.amazon.com/https:/tools.ietf.org/html/rfc7232
1178
+ # [1]: https://tools.ietf.org/html/rfc7232
1128
1179
  # @option options [Time,DateTime,Date,Integer,String] :if_match_last_modified_time
1129
1180
  # If present, the object is deleted only if its modification times
1130
1181
  # matches the provided `Timestamp`. If the `Timestamp` values do not
@@ -1405,15 +1456,6 @@ module Aws::S3
1405
1456
  # fails with the HTTP status code `403 Forbidden` (access denied).
1406
1457
  # @option options [String] :checksum_mode
1407
1458
  # To retrieve the checksum, this mode must be enabled.
1408
- #
1409
- # **General purpose buckets** - In addition, if you enable checksum mode
1410
- # and the object is uploaded with a [checksum][1] and encrypted with an
1411
- # Key Management Service (KMS) key, you must have permission to use the
1412
- # `kms:Decrypt` action to retrieve the checksum.
1413
- #
1414
- #
1415
- #
1416
- # [1]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_Checksum.html
1417
1459
  # @return [Types::GetObjectOutput]
1418
1460
  def get(options = {}, &block)
1419
1461
  options = options.merge(
@@ -1443,8 +1485,8 @@ module Aws::S3
1443
1485
  # metadata: {
1444
1486
  # "MetadataKey" => "MetadataValue",
1445
1487
  # },
1446
- # server_side_encryption: "AES256", # accepts AES256, aws:kms, aws:kms:dsse
1447
- # storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE, OUTPOSTS, GLACIER_IR, SNOW, EXPRESS_ONEZONE
1488
+ # server_side_encryption: "AES256", # accepts AES256, aws:fsx, aws:kms, aws:kms:dsse
1489
+ # 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
1448
1490
  # website_redirect_location: "WebsiteRedirectLocation",
1449
1491
  # sse_customer_algorithm: "SSECustomerAlgorithm",
1450
1492
  # sse_customer_key: "SSECustomerKey",
@@ -1458,7 +1500,8 @@ module Aws::S3
1458
1500
  # object_lock_retain_until_date: Time.now,
1459
1501
  # object_lock_legal_hold_status: "ON", # accepts ON, OFF
1460
1502
  # expected_bucket_owner: "AccountId",
1461
- # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256
1503
+ # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256, CRC64NVME
1504
+ # checksum_type: "COMPOSITE", # accepts COMPOSITE, FULL_OBJECT
1462
1505
  # })
1463
1506
  # @param [Hash] options ({})
1464
1507
  # @option options [String] :acl
@@ -1760,7 +1803,7 @@ module Aws::S3
1760
1803
  # A map of metadata to store with the object in S3.
1761
1804
  # @option options [String] :server_side_encryption
1762
1805
  # The server-side encryption algorithm used when you store this object
1763
- # in Amazon S3 (for example, `AES256`, `aws:kms`).
1806
+ # in Amazon S3 or Amazon FSx.
1764
1807
  #
1765
1808
  # * <b>Directory buckets </b> - For directory buckets, there are only
1766
1809
  # two supported options for server-side encryption: server-side
@@ -1802,6 +1845,14 @@ module Aws::S3
1802
1845
  #
1803
1846
  # </note>
1804
1847
  #
1848
+ # * <b>S3 access points for Amazon FSx </b> - When accessing data stored
1849
+ # in Amazon FSx file systems using S3 access points, the only valid
1850
+ # server side encryption option is `aws:fsx`. All Amazon FSx file
1851
+ # systems have encryption configured by default and are encrypted at
1852
+ # rest. Data is automatically encrypted before being written to the
1853
+ # file system, and automatically decrypted as it is read. These
1854
+ # processes are handled transparently by Amazon FSx.
1855
+ #
1805
1856
  #
1806
1857
  #
1807
1858
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html
@@ -1815,8 +1866,9 @@ module Aws::S3
1815
1866
  # a different Storage Class. For more information, see [Storage
1816
1867
  # Classes][1] in the *Amazon S3 User Guide*.
1817
1868
  #
1818
- # <note markdown="1"> * For directory buckets, only the S3 Express One Zone storage class is
1819
- # supported to store newly created objects.
1869
+ # <note markdown="1"> * Directory buckets only support `EXPRESS_ONEZONE` (the S3 Express One
1870
+ # Zone storage class) in Availability Zones and `ONEZONE_IA` (the S3
1871
+ # One Zone-Infrequent Access storage class) in Dedicated Local Zones.
1820
1872
  #
1821
1873
  # * Amazon S3 on Outposts only uses the OUTPOSTS Storage Class.
1822
1874
  #
@@ -1873,20 +1925,17 @@ module Aws::S3
1873
1925
  # `x-amz-server-side-encryption-aws-kms-key-id`, Amazon S3 uses the
1874
1926
  # Amazon Web Services managed key (`aws/s3`) to protect the data.
1875
1927
  #
1876
- # **Directory buckets** - If you specify `x-amz-server-side-encryption`
1877
- # with `aws:kms`, the ` x-amz-server-side-encryption-aws-kms-key-id`
1878
- # header is implicitly assigned the ID of the KMS symmetric encryption
1879
- # customer managed key that's configured for your directory bucket's
1880
- # default encryption setting. If you want to specify the `
1881
- # x-amz-server-side-encryption-aws-kms-key-id` header explicitly, you
1882
- # can only specify it with the ID (Key ID or Key ARN) of the KMS
1883
- # customer managed key that's configured for your directory bucket's
1884
- # default encryption setting. Otherwise, you get an HTTP `400 Bad
1885
- # Request` error. Only use the key ID or key ARN. The key alias format
1886
- # of the KMS key isn't supported. Your SSE-KMS configuration can only
1887
- # support 1 [customer managed key][1] per directory bucket for the
1888
- # lifetime of the bucket. The [Amazon Web Services managed key][2]
1889
- # (`aws/s3`) isn't supported.
1928
+ # **Directory buckets** - To encrypt data using SSE-KMS, it's
1929
+ # recommended to specify the `x-amz-server-side-encryption` header to
1930
+ # `aws:kms`. Then, the `x-amz-server-side-encryption-aws-kms-key-id`
1931
+ # header implicitly uses the bucket's default KMS customer managed key
1932
+ # ID. If you want to explicitly set the `
1933
+ # x-amz-server-side-encryption-aws-kms-key-id` header, it must match the
1934
+ # bucket's default customer managed key (using key ID or ARN, not
1935
+ # alias). Your SSE-KMS configuration can only support 1 [customer
1936
+ # managed key][1] per directory bucket's lifetime. The [Amazon Web
1937
+ # Services managed key][2] (`aws/s3`) isn't supported. Incorrect key
1938
+ # specification results in an HTTP `400 Bad Request` error.
1890
1939
  #
1891
1940
  #
1892
1941
  #
@@ -1894,7 +1943,7 @@ module Aws::S3
1894
1943
  # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk
1895
1944
  # @option options [String] :ssekms_encryption_context
1896
1945
  # Specifies the Amazon Web Services KMS Encryption Context to use for
1897
- # object encryption. The value of this header is a Base64-encoded string
1946
+ # object encryption. The value of this header is a Base64 encoded string
1898
1947
  # of a UTF-8 encoded JSON, which contains the encryption context as
1899
1948
  # key-value pairs.
1900
1949
  #
@@ -1983,6 +2032,14 @@ module Aws::S3
1983
2032
  #
1984
2033
  #
1985
2034
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
2035
+ # @option options [String] :checksum_type
2036
+ # Indicates the checksum type that you want Amazon S3 to use to
2037
+ # calculate the object’s checksum value. For more information, see
2038
+ # [Checking object integrity in the Amazon S3 User Guide][1].
2039
+ #
2040
+ #
2041
+ #
2042
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
1986
2043
  # @return [MultipartUpload]
1987
2044
  def initiate_multipart_upload(options = {})
1988
2045
  options = options.merge(
@@ -2012,9 +2069,10 @@ module Aws::S3
2012
2069
  # content_length: 1,
2013
2070
  # content_md5: "ContentMD5",
2014
2071
  # content_type: "ContentType",
2015
- # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256
2072
+ # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256, CRC64NVME
2016
2073
  # checksum_crc32: "ChecksumCRC32",
2017
2074
  # checksum_crc32c: "ChecksumCRC32C",
2075
+ # checksum_crc64nvme: "ChecksumCRC64NVME",
2018
2076
  # checksum_sha1: "ChecksumSHA1",
2019
2077
  # checksum_sha256: "ChecksumSHA256",
2020
2078
  # expires: Time.now,
@@ -2028,8 +2086,8 @@ module Aws::S3
2028
2086
  # metadata: {
2029
2087
  # "MetadataKey" => "MetadataValue",
2030
2088
  # },
2031
- # server_side_encryption: "AES256", # accepts AES256, aws:kms, aws:kms:dsse
2032
- # storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE, OUTPOSTS, GLACIER_IR, SNOW, EXPRESS_ONEZONE
2089
+ # server_side_encryption: "AES256", # accepts AES256, aws:fsx, aws:kms, aws:kms:dsse
2090
+ # 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
2033
2091
  # website_redirect_location: "WebsiteRedirectLocation",
2034
2092
  # sse_customer_algorithm: "SSECustomerAlgorithm",
2035
2093
  # sse_customer_key: "SSECustomerKey",
@@ -2120,7 +2178,7 @@ module Aws::S3
2120
2178
  #
2121
2179
  # [1]: https://www.rfc-editor.org/rfc/rfc9110.html#name-content-length
2122
2180
  # @option options [String] :content_md5
2123
- # The base64-encoded 128-bit MD5 digest of the message (without the
2181
+ # The Base64 encoded 128-bit `MD5` digest of the message (without the
2124
2182
  # headers) according to RFC 1864. This header can be used as a message
2125
2183
  # integrity check to verify that the data is the same data that was
2126
2184
  # originally sent. Although it is optional, we recommend using the
@@ -2167,6 +2225,8 @@ module Aws::S3
2167
2225
  #
2168
2226
  # * `CRC32C`
2169
2227
  #
2228
+ # * `CRC64NVME`
2229
+ #
2170
2230
  # * `SHA1`
2171
2231
  #
2172
2232
  # * `SHA256`
@@ -2176,9 +2236,8 @@ module Aws::S3
2176
2236
  #
2177
2237
  # If the individual checksum value you provide through
2178
2238
  # `x-amz-checksum-algorithm ` doesn't match the checksum algorithm you
2179
- # set through `x-amz-sdk-checksum-algorithm`, Amazon S3 ignores any
2180
- # provided `ChecksumAlgorithm` parameter and uses the checksum algorithm
2181
- # that matches the provided value in `x-amz-checksum-algorithm `.
2239
+ # set through `x-amz-sdk-checksum-algorithm`, Amazon S3 fails the
2240
+ # request with a `BadDigest` error.
2182
2241
  #
2183
2242
  # <note markdown="1"> The `Content-MD5` or `x-amz-sdk-checksum-algorithm` header is required
2184
2243
  # for any request to upload an object with a retention period configured
@@ -2198,7 +2257,7 @@ module Aws::S3
2198
2257
  # @option options [String] :checksum_crc32
2199
2258
  # This header can be used as a data integrity check to verify that the
2200
2259
  # data received is the same data that was originally sent. This header
2201
- # specifies the base64-encoded, 32-bit CRC-32 checksum of the object.
2260
+ # specifies the Base64 encoded, 32-bit `CRC32` checksum of the object.
2202
2261
  # For more information, see [Checking object integrity][1] in the
2203
2262
  # *Amazon S3 User Guide*.
2204
2263
  #
@@ -2208,17 +2267,28 @@ module Aws::S3
2208
2267
  # @option options [String] :checksum_crc32c
2209
2268
  # This header can be used as a data integrity check to verify that the
2210
2269
  # data received is the same data that was originally sent. This header
2211
- # specifies the base64-encoded, 32-bit CRC-32C checksum of the object.
2270
+ # specifies the Base64 encoded, 32-bit `CRC32C` checksum of the object.
2212
2271
  # For more information, see [Checking object integrity][1] in the
2213
2272
  # *Amazon S3 User Guide*.
2214
2273
  #
2215
2274
  #
2216
2275
  #
2217
2276
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
2277
+ # @option options [String] :checksum_crc64nvme
2278
+ # This header can be used as a data integrity check to verify that the
2279
+ # data received is the same data that was originally sent. This header
2280
+ # specifies the Base64 encoded, 64-bit `CRC64NVME` checksum of the
2281
+ # object. The `CRC64NVME` checksum is always a full object checksum. For
2282
+ # more information, see [Checking object integrity in the Amazon S3 User
2283
+ # Guide][1].
2284
+ #
2285
+ #
2286
+ #
2287
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
2218
2288
  # @option options [String] :checksum_sha1
2219
2289
  # This header can be used as a data integrity check to verify that the
2220
2290
  # data received is the same data that was originally sent. This header
2221
- # specifies the base64-encoded, 160-bit SHA-1 digest of the object. For
2291
+ # specifies the Base64 encoded, 160-bit `SHA1` digest of the object. For
2222
2292
  # more information, see [Checking object integrity][1] in the *Amazon S3
2223
2293
  # User Guide*.
2224
2294
  #
@@ -2228,7 +2298,7 @@ module Aws::S3
2228
2298
  # @option options [String] :checksum_sha256
2229
2299
  # This header can be used as a data integrity check to verify that the
2230
2300
  # data received is the same data that was originally sent. This header
2231
- # specifies the base64-encoded, 256-bit SHA-256 digest of the object.
2301
+ # specifies the Base64 encoded, 256-bit `SHA256` digest of the object.
2232
2302
  # For more information, see [Checking object integrity][1] in the
2233
2303
  # *Amazon S3 User Guide*.
2234
2304
  #
@@ -2327,8 +2397,7 @@ module Aws::S3
2327
2397
  # A map of metadata to store with the object in S3.
2328
2398
  # @option options [String] :server_side_encryption
2329
2399
  # The server-side encryption algorithm that was used when you store this
2330
- # object in Amazon S3 (for example, `AES256`, `aws:kms`,
2331
- # `aws:kms:dsse`).
2400
+ # object in Amazon S3 or Amazon FSx.
2332
2401
  #
2333
2402
  # * <b>General purpose buckets </b> - You have four mutually exclusive
2334
2403
  # options to protect data using server-side encryption in Amazon S3,
@@ -2382,6 +2451,14 @@ module Aws::S3
2382
2451
  #
2383
2452
  # </note>
2384
2453
  #
2454
+ # * <b>S3 access points for Amazon FSx </b> - When accessing data stored
2455
+ # in Amazon FSx file systems using S3 access points, the only valid
2456
+ # server side encryption option is `aws:fsx`. All Amazon FSx file
2457
+ # systems have encryption configured by default and are encrypted at
2458
+ # rest. Data is automatically encrypted before being written to the
2459
+ # file system, and automatically decrypted as it is read. These
2460
+ # processes are handled transparently by Amazon FSx.
2461
+ #
2385
2462
  #
2386
2463
  #
2387
2464
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html
@@ -2396,8 +2473,9 @@ module Aws::S3
2396
2473
  # a different Storage Class. For more information, see [Storage
2397
2474
  # Classes][1] in the *Amazon S3 User Guide*.
2398
2475
  #
2399
- # <note markdown="1"> * For directory buckets, only the S3 Express One Zone storage class is
2400
- # supported to store newly created objects.
2476
+ # <note markdown="1"> * Directory buckets only support `EXPRESS_ONEZONE` (the S3 Express One
2477
+ # Zone storage class) in Availability Zones and `ONEZONE_IA` (the S3
2478
+ # One Zone-Infrequent Access storage class) in Dedicated Local Zones.
2401
2479
  #
2402
2480
  # * Amazon S3 on Outposts only uses the OUTPOSTS Storage Class.
2403
2481
  #
@@ -2475,20 +2553,17 @@ module Aws::S3
2475
2553
  # `x-amz-server-side-encryption-aws-kms-key-id`, Amazon S3 uses the
2476
2554
  # Amazon Web Services managed key (`aws/s3`) to protect the data.
2477
2555
  #
2478
- # **Directory buckets** - If you specify `x-amz-server-side-encryption`
2479
- # with `aws:kms`, the ` x-amz-server-side-encryption-aws-kms-key-id`
2480
- # header is implicitly assigned the ID of the KMS symmetric encryption
2481
- # customer managed key that's configured for your directory bucket's
2482
- # default encryption setting. If you want to specify the `
2483
- # x-amz-server-side-encryption-aws-kms-key-id` header explicitly, you
2484
- # can only specify it with the ID (Key ID or Key ARN) of the KMS
2485
- # customer managed key that's configured for your directory bucket's
2486
- # default encryption setting. Otherwise, you get an HTTP `400 Bad
2487
- # Request` error. Only use the key ID or key ARN. The key alias format
2488
- # of the KMS key isn't supported. Your SSE-KMS configuration can only
2489
- # support 1 [customer managed key][1] per directory bucket for the
2490
- # lifetime of the bucket. The [Amazon Web Services managed key][2]
2491
- # (`aws/s3`) isn't supported.
2556
+ # **Directory buckets** - To encrypt data using SSE-KMS, it's
2557
+ # recommended to specify the `x-amz-server-side-encryption` header to
2558
+ # `aws:kms`. Then, the `x-amz-server-side-encryption-aws-kms-key-id`
2559
+ # header implicitly uses the bucket's default KMS customer managed key
2560
+ # ID. If you want to explicitly set the `
2561
+ # x-amz-server-side-encryption-aws-kms-key-id` header, it must match the
2562
+ # bucket's default customer managed key (using key ID or ARN, not
2563
+ # alias). Your SSE-KMS configuration can only support 1 [customer
2564
+ # managed key][1] per directory bucket's lifetime. The [Amazon Web
2565
+ # Services managed key][2] (`aws/s3`) isn't supported. Incorrect key
2566
+ # specification results in an HTTP `400 Bad Request` error.
2492
2567
  #
2493
2568
  #
2494
2569
  #
@@ -2497,7 +2572,7 @@ module Aws::S3
2497
2572
  # @option options [String] :ssekms_encryption_context
2498
2573
  # Specifies the Amazon Web Services KMS Encryption Context as an
2499
2574
  # additional encryption context to use for object encryption. The value
2500
- # of this header is a Base64-encoded string of a UTF-8 encoded JSON,
2575
+ # of this header is a Base64 encoded string of a UTF-8 encoded JSON,
2501
2576
  # which contains the encryption context as key-value pairs. This value
2502
2577
  # is stored as object metadata and automatically gets passed on to
2503
2578
  # Amazon Web Services KMS for future `GetObject` operations on this
@@ -2656,7 +2731,7 @@ module Aws::S3
2656
2731
  # bucket_name: "BucketName", # required
2657
2732
  # prefix: "LocationPrefix", # required
2658
2733
  # encryption: {
2659
- # encryption_type: "AES256", # required, accepts AES256, aws:kms, aws:kms:dsse
2734
+ # encryption_type: "AES256", # required, accepts AES256, aws:fsx, aws:kms, aws:kms:dsse
2660
2735
  # kms_key_id: "SSEKMSKeyId",
2661
2736
  # kms_context: "KMSContext",
2662
2737
  # },
@@ -2687,12 +2762,12 @@ module Aws::S3
2687
2762
  # value: "MetadataValue",
2688
2763
  # },
2689
2764
  # ],
2690
- # storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE, OUTPOSTS, GLACIER_IR, SNOW, EXPRESS_ONEZONE
2765
+ # 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
2691
2766
  # },
2692
2767
  # },
2693
2768
  # },
2694
2769
  # request_payer: "requester", # accepts requester
2695
- # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256
2770
+ # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256, CRC64NVME
2696
2771
  # expected_bucket_owner: "AccountId",
2697
2772
  # })
2698
2773
  # @param [Hash] options ({})
@@ -2869,7 +2944,7 @@ module Aws::S3
2869
2944
  # request_payer: "requester", # accepts requester
2870
2945
  # bypass_governance_retention: false,
2871
2946
  # expected_bucket_owner: "AccountId",
2872
- # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256
2947
+ # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256, CRC64NVME
2873
2948
  # })
2874
2949
  # @param options ({})
2875
2950
  # @option options [String] :mfa
@@ -2937,6 +3012,8 @@ module Aws::S3
2937
3012
  #
2938
3013
  # * `CRC32C`
2939
3014
  #
3015
+ # * `CRC64NVME`
3016
+ #
2940
3017
  # * `SHA1`
2941
3018
  #
2942
3019
  # * `SHA256`
@@ -2946,9 +3023,8 @@ module Aws::S3
2946
3023
  #
2947
3024
  # If the individual checksum value you provide through
2948
3025
  # `x-amz-checksum-algorithm ` doesn't match the checksum algorithm you
2949
- # set through `x-amz-sdk-checksum-algorithm`, Amazon S3 ignores any
2950
- # provided `ChecksumAlgorithm` parameter and uses the checksum algorithm
2951
- # that matches the provided value in `x-amz-checksum-algorithm `.
3026
+ # set through `x-amz-sdk-checksum-algorithm`, Amazon S3 fails the
3027
+ # request with a `BadDigest` error.
2952
3028
  #
2953
3029
  # If you provide an individual checksum, Amazon S3 ignores any provided
2954
3030
  # `ChecksumAlgorithm` parameter.