aws-sdk-s3 1.167.0 → 1.208.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +257 -0
  3. data/VERSION +1 -1
  4. data/lib/aws-sdk-s3/bucket.rb +145 -39
  5. data/lib/aws-sdk-s3/bucket_acl.rb +7 -6
  6. data/lib/aws-sdk-s3/bucket_cors.rb +6 -5
  7. data/lib/aws-sdk-s3/bucket_lifecycle.rb +7 -2
  8. data/lib/aws-sdk-s3/bucket_lifecycle_configuration.rb +22 -2
  9. data/lib/aws-sdk-s3/bucket_logging.rb +2 -2
  10. data/lib/aws-sdk-s3/bucket_policy.rb +6 -5
  11. data/lib/aws-sdk-s3/bucket_request_payment.rb +3 -3
  12. data/lib/aws-sdk-s3/bucket_tagging.rb +3 -3
  13. data/lib/aws-sdk-s3/bucket_versioning.rb +42 -9
  14. data/lib/aws-sdk-s3/bucket_website.rb +3 -3
  15. data/lib/aws-sdk-s3/client.rb +4313 -1871
  16. data/lib/aws-sdk-s3/client_api.rb +619 -160
  17. data/lib/aws-sdk-s3/customizations/object.rb +76 -86
  18. data/lib/aws-sdk-s3/customizations.rb +4 -1
  19. data/lib/aws-sdk-s3/default_executor.rb +103 -0
  20. data/lib/aws-sdk-s3/encryption/client.rb +2 -2
  21. data/lib/aws-sdk-s3/encryption/default_cipher_provider.rb +2 -0
  22. data/lib/aws-sdk-s3/encryption/encrypt_handler.rb +2 -0
  23. data/lib/aws-sdk-s3/encryption/kms_cipher_provider.rb +2 -0
  24. data/lib/aws-sdk-s3/encryptionV2/client.rb +98 -23
  25. data/lib/aws-sdk-s3/encryptionV2/decrypt_handler.rb +7 -162
  26. data/lib/aws-sdk-s3/encryptionV2/decryption.rb +205 -0
  27. data/lib/aws-sdk-s3/encryptionV2/default_cipher_provider.rb +17 -0
  28. data/lib/aws-sdk-s3/encryptionV2/encrypt_handler.rb +2 -0
  29. data/lib/aws-sdk-s3/encryptionV2/io_encrypter.rb +2 -0
  30. data/lib/aws-sdk-s3/encryptionV2/kms_cipher_provider.rb +8 -0
  31. data/lib/aws-sdk-s3/encryptionV2/utils.rb +5 -0
  32. data/lib/aws-sdk-s3/encryptionV3/client.rb +885 -0
  33. data/lib/aws-sdk-s3/encryptionV3/decrypt_handler.rb +98 -0
  34. data/lib/aws-sdk-s3/encryptionV3/decryption.rb +244 -0
  35. data/lib/aws-sdk-s3/encryptionV3/default_cipher_provider.rb +159 -0
  36. data/lib/aws-sdk-s3/encryptionV3/default_key_provider.rb +35 -0
  37. data/lib/aws-sdk-s3/encryptionV3/encrypt_handler.rb +98 -0
  38. data/lib/aws-sdk-s3/encryptionV3/errors.rb +47 -0
  39. data/lib/aws-sdk-s3/encryptionV3/io_auth_decrypter.rb +60 -0
  40. data/lib/aws-sdk-s3/encryptionV3/io_decrypter.rb +35 -0
  41. data/lib/aws-sdk-s3/encryptionV3/io_encrypter.rb +84 -0
  42. data/lib/aws-sdk-s3/encryptionV3/key_provider.rb +28 -0
  43. data/lib/aws-sdk-s3/encryptionV3/kms_cipher_provider.rb +159 -0
  44. data/lib/aws-sdk-s3/encryptionV3/materials.rb +58 -0
  45. data/lib/aws-sdk-s3/encryptionV3/utils.rb +321 -0
  46. data/lib/aws-sdk-s3/encryption_v2.rb +1 -0
  47. data/lib/aws-sdk-s3/encryption_v3.rb +24 -0
  48. data/lib/aws-sdk-s3/endpoint_parameters.rb +30 -35
  49. data/lib/aws-sdk-s3/endpoint_provider.rb +572 -278
  50. data/lib/aws-sdk-s3/endpoints.rb +555 -1403
  51. data/lib/aws-sdk-s3/errors.rb +55 -0
  52. data/lib/aws-sdk-s3/file_downloader.rb +189 -143
  53. data/lib/aws-sdk-s3/file_uploader.rb +9 -13
  54. data/lib/aws-sdk-s3/legacy_signer.rb +2 -1
  55. data/lib/aws-sdk-s3/multipart_download_error.rb +8 -0
  56. data/lib/aws-sdk-s3/multipart_file_uploader.rb +105 -102
  57. data/lib/aws-sdk-s3/multipart_stream_uploader.rb +96 -107
  58. data/lib/aws-sdk-s3/multipart_upload.rb +83 -6
  59. data/lib/aws-sdk-s3/multipart_upload_error.rb +3 -4
  60. data/lib/aws-sdk-s3/multipart_upload_part.rb +50 -34
  61. data/lib/aws-sdk-s3/object.rb +357 -131
  62. data/lib/aws-sdk-s3/object_acl.rb +12 -6
  63. data/lib/aws-sdk-s3/object_multipart_copier.rb +2 -1
  64. data/lib/aws-sdk-s3/object_summary.rb +269 -96
  65. data/lib/aws-sdk-s3/object_version.rb +58 -13
  66. data/lib/aws-sdk-s3/plugins/checksum_algorithm.rb +31 -0
  67. data/lib/aws-sdk-s3/plugins/endpoints.rb +2 -205
  68. data/lib/aws-sdk-s3/plugins/express_session_auth.rb +11 -20
  69. data/lib/aws-sdk-s3/plugins/http_200_errors.rb +3 -3
  70. data/lib/aws-sdk-s3/plugins/md5s.rb +10 -71
  71. data/lib/aws-sdk-s3/plugins/streaming_retry.rb +5 -7
  72. data/lib/aws-sdk-s3/plugins/url_encoded_keys.rb +2 -1
  73. data/lib/aws-sdk-s3/presigner.rb +5 -5
  74. data/lib/aws-sdk-s3/resource.rb +41 -10
  75. data/lib/aws-sdk-s3/transfer_manager.rb +303 -0
  76. data/lib/aws-sdk-s3/types.rb +3758 -1264
  77. data/lib/aws-sdk-s3.rb +1 -1
  78. data/sig/bucket.rbs +27 -9
  79. data/sig/bucket_acl.rbs +1 -1
  80. data/sig/bucket_cors.rbs +1 -1
  81. data/sig/bucket_lifecycle.rbs +1 -1
  82. data/sig/bucket_lifecycle_configuration.rbs +1 -1
  83. data/sig/bucket_logging.rbs +1 -1
  84. data/sig/bucket_policy.rbs +1 -1
  85. data/sig/bucket_request_payment.rbs +1 -1
  86. data/sig/bucket_tagging.rbs +1 -1
  87. data/sig/bucket_versioning.rbs +3 -3
  88. data/sig/bucket_website.rbs +1 -1
  89. data/sig/client.rbs +279 -70
  90. data/sig/errors.rbs +10 -0
  91. data/sig/multipart_upload.rbs +12 -3
  92. data/sig/multipart_upload_part.rbs +5 -1
  93. data/sig/object.rbs +37 -16
  94. data/sig/object_acl.rbs +1 -1
  95. data/sig/object_summary.rbs +28 -16
  96. data/sig/object_version.rbs +9 -3
  97. data/sig/resource.rbs +15 -4
  98. data/sig/types.rbs +373 -66
  99. metadata +26 -10
  100. data/lib/aws-sdk-s3/plugins/skip_whole_multipart_get_checksums.rb +0 -31
@@ -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
@@ -723,17 +769,25 @@ module Aws::S3
723
769
  # * To encrypt new object copies to a directory bucket with SSE-KMS, we
724
770
  # recommend you specify SSE-KMS as the directory bucket's default
725
771
  # encryption configuration with a KMS key (specifically, a [customer
726
- # managed key][4]). [Amazon Web Services managed key][5] (`aws/s3`)
727
- # isn't supported. Your SSE-KMS configuration can only support 1
728
- # [customer managed key][4] per directory bucket for the lifetime of
729
- # the bucket. After you specify a customer managed key for SSE-KMS,
730
- # you can't override the customer managed key for the bucket's
731
- # SSE-KMS configuration. Then, when you perform a `CopyObject`
732
- # operation and want to specify server-side encryption settings for
733
- # new object copies with SSE-KMS in the encryption-related request
734
- # headers, you must ensure the encryption key is the same customer
735
- # managed key that you specified for the directory bucket's default
736
- # encryption configuration.
772
+ # managed key][4]). The [Amazon Web Services managed key][5]
773
+ # (`aws/s3`) isn't supported. Your SSE-KMS configuration can only
774
+ # support 1 [customer managed key][4] per directory bucket for the
775
+ # lifetime of the bucket. After you specify a customer managed key for
776
+ # SSE-KMS, you can't override the customer managed key for the
777
+ # bucket's SSE-KMS configuration. Then, when you perform a
778
+ # `CopyObject` operation and want to specify server-side encryption
779
+ # settings for new object copies with SSE-KMS in the
780
+ # encryption-related request headers, you must ensure the encryption
781
+ # key is the same customer managed key that you specified for the
782
+ # directory bucket's default encryption configuration.
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.
737
791
  #
738
792
  #
739
793
  #
@@ -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,15 +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`, you must specify the `
845
- # x-amz-server-side-encryption-aws-kms-key-id` header with the ID (Key
846
- # ID or Key ARN) of the KMS symmetric encryption customer managed key to
847
- # use. Otherwise, you get an HTTP `400 Bad Request` error. Only use the
848
- # key ID or key ARN. The key alias format of the KMS key isn't
849
- # supported. Your SSE-KMS configuration can only support 1 [customer
850
- # managed key][2] per directory bucket for the lifetime of the bucket.
851
- # [Amazon Web Services managed key][3] (`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.
852
910
  #
853
911
  #
854
912
  #
@@ -1055,6 +1113,9 @@ module Aws::S3
1055
1113
  # request_payer: "requester", # accepts requester
1056
1114
  # bypass_governance_retention: false,
1057
1115
  # expected_bucket_owner: "AccountId",
1116
+ # if_match: "IfMatch",
1117
+ # if_match_last_modified_time: Time.now,
1118
+ # if_match_size: 1,
1058
1119
  # })
1059
1120
  # @param [Hash] options ({})
1060
1121
  # @option options [String] :mfa
@@ -1101,6 +1162,44 @@ module Aws::S3
1101
1162
  # The account ID of the expected bucket owner. If the account ID that
1102
1163
  # you provide does not match the actual owner of the bucket, the request
1103
1164
  # fails with the HTTP status code `403 Forbidden` (access denied).
1165
+ # @option options [String] :if_match
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.
1170
+ #
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.
1173
+ #
1174
+ # For more information about conditional requests, see [RFC 7232][1].
1175
+ #
1176
+ #
1177
+ #
1178
+ # [1]: https://tools.ietf.org/html/rfc7232
1179
+ # @option options [Time,DateTime,Date,Integer,String] :if_match_last_modified_time
1180
+ # If present, the object is deleted only if its modification times
1181
+ # matches the provided `Timestamp`. If the `Timestamp` values do not
1182
+ # match, the operation returns a `412 Precondition Failed` error. If the
1183
+ # `Timestamp` matches or if the object doesn’t exist, the operation
1184
+ # returns a `204 Success (No Content)` response.
1185
+ #
1186
+ # <note markdown="1"> This functionality is only supported for directory buckets.
1187
+ #
1188
+ # </note>
1189
+ # @option options [Integer] :if_match_size
1190
+ # If present, the object is deleted only if its size matches the
1191
+ # provided size in bytes. If the `Size` value does not match, the
1192
+ # operation returns a `412 Precondition Failed` error. If the `Size`
1193
+ # matches or if the object doesn’t exist, the operation returns a `204
1194
+ # Success (No Content)` response.
1195
+ #
1196
+ # <note markdown="1"> This functionality is only supported for directory buckets.
1197
+ #
1198
+ # </note>
1199
+ #
1200
+ # You can use the `If-Match`, `x-amz-if-match-last-modified-time` and
1201
+ # `x-amz-if-match-size` conditional headers in conjunction with
1202
+ # each-other or individually.
1104
1203
  # @return [Types::DeleteObjectOutput]
1105
1204
  def delete(options = {})
1106
1205
  options = options.merge(
@@ -1357,15 +1456,6 @@ module Aws::S3
1357
1456
  # fails with the HTTP status code `403 Forbidden` (access denied).
1358
1457
  # @option options [String] :checksum_mode
1359
1458
  # To retrieve the checksum, this mode must be enabled.
1360
- #
1361
- # **General purpose buckets** - In addition, if you enable checksum mode
1362
- # and the object is uploaded with a [checksum][1] and encrypted with an
1363
- # Key Management Service (KMS) key, you must have permission to use the
1364
- # `kms:Decrypt` action to retrieve the checksum.
1365
- #
1366
- #
1367
- #
1368
- # [1]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_Checksum.html
1369
1459
  # @return [Types::GetObjectOutput]
1370
1460
  def get(options = {}, &block)
1371
1461
  options = options.merge(
@@ -1395,8 +1485,8 @@ module Aws::S3
1395
1485
  # metadata: {
1396
1486
  # "MetadataKey" => "MetadataValue",
1397
1487
  # },
1398
- # server_side_encryption: "AES256", # accepts AES256, aws:kms, aws:kms:dsse
1399
- # 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
1400
1490
  # website_redirect_location: "WebsiteRedirectLocation",
1401
1491
  # sse_customer_algorithm: "SSECustomerAlgorithm",
1402
1492
  # sse_customer_key: "SSECustomerKey",
@@ -1410,7 +1500,8 @@ module Aws::S3
1410
1500
  # object_lock_retain_until_date: Time.now,
1411
1501
  # object_lock_legal_hold_status: "ON", # accepts ON, OFF
1412
1502
  # expected_bucket_owner: "AccountId",
1413
- # 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
1414
1505
  # })
1415
1506
  # @param [Hash] options ({})
1416
1507
  # @option options [String] :acl
@@ -1712,7 +1803,7 @@ module Aws::S3
1712
1803
  # A map of metadata to store with the object in S3.
1713
1804
  # @option options [String] :server_side_encryption
1714
1805
  # The server-side encryption algorithm used when you store this object
1715
- # in Amazon S3 (for example, `AES256`, `aws:kms`).
1806
+ # in Amazon S3 or Amazon FSx.
1716
1807
  #
1717
1808
  # * <b>Directory buckets </b> - For directory buckets, there are only
1718
1809
  # two supported options for server-side encryption: server-side
@@ -1754,6 +1845,14 @@ module Aws::S3
1754
1845
  #
1755
1846
  # </note>
1756
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
+ #
1757
1856
  #
1758
1857
  #
1759
1858
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html
@@ -1767,8 +1866,9 @@ module Aws::S3
1767
1866
  # a different Storage Class. For more information, see [Storage
1768
1867
  # Classes][1] in the *Amazon S3 User Guide*.
1769
1868
  #
1770
- # <note markdown="1"> * For directory buckets, only the S3 Express One Zone storage class is
1771
- # 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.
1772
1872
  #
1773
1873
  # * Amazon S3 on Outposts only uses the OUTPOSTS Storage Class.
1774
1874
  #
@@ -1825,15 +1925,17 @@ module Aws::S3
1825
1925
  # `x-amz-server-side-encryption-aws-kms-key-id`, Amazon S3 uses the
1826
1926
  # Amazon Web Services managed key (`aws/s3`) to protect the data.
1827
1927
  #
1828
- # **Directory buckets** - If you specify `x-amz-server-side-encryption`
1829
- # with `aws:kms`, you must specify the `
1830
- # x-amz-server-side-encryption-aws-kms-key-id` header with the ID (Key
1831
- # ID or Key ARN) of the KMS symmetric encryption customer managed key to
1832
- # use. Otherwise, you get an HTTP `400 Bad Request` error. Only use the
1833
- # key ID or key ARN. The key alias format of the KMS key isn't
1834
- # supported. Your SSE-KMS configuration can only support 1 [customer
1835
- # managed key][1] per directory bucket for the lifetime of the bucket.
1836
- # [Amazon Web Services managed key][2] (`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.
1837
1939
  #
1838
1940
  #
1839
1941
  #
@@ -1841,7 +1943,7 @@ module Aws::S3
1841
1943
  # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk
1842
1944
  # @option options [String] :ssekms_encryption_context
1843
1945
  # Specifies the Amazon Web Services KMS Encryption Context to use for
1844
- # 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
1845
1947
  # of a UTF-8 encoded JSON, which contains the encryption context as
1846
1948
  # key-value pairs.
1847
1949
  #
@@ -1930,6 +2032,14 @@ module Aws::S3
1930
2032
  #
1931
2033
  #
1932
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
1933
2043
  # @return [MultipartUpload]
1934
2044
  def initiate_multipart_upload(options = {})
1935
2045
  options = options.merge(
@@ -1959,22 +2069,25 @@ module Aws::S3
1959
2069
  # content_length: 1,
1960
2070
  # content_md5: "ContentMD5",
1961
2071
  # content_type: "ContentType",
1962
- # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256
2072
+ # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256, CRC64NVME
1963
2073
  # checksum_crc32: "ChecksumCRC32",
1964
2074
  # checksum_crc32c: "ChecksumCRC32C",
2075
+ # checksum_crc64nvme: "ChecksumCRC64NVME",
1965
2076
  # checksum_sha1: "ChecksumSHA1",
1966
2077
  # checksum_sha256: "ChecksumSHA256",
1967
2078
  # expires: Time.now,
2079
+ # if_match: "IfMatch",
1968
2080
  # if_none_match: "IfNoneMatch",
1969
2081
  # grant_full_control: "GrantFullControl",
1970
2082
  # grant_read: "GrantRead",
1971
2083
  # grant_read_acp: "GrantReadACP",
1972
2084
  # grant_write_acp: "GrantWriteACP",
2085
+ # write_offset_bytes: 1,
1973
2086
  # metadata: {
1974
2087
  # "MetadataKey" => "MetadataValue",
1975
2088
  # },
1976
- # server_side_encryption: "AES256", # accepts AES256, aws:kms, aws:kms:dsse
1977
- # 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
1978
2091
  # website_redirect_location: "WebsiteRedirectLocation",
1979
2092
  # sse_customer_algorithm: "SSECustomerAlgorithm",
1980
2093
  # sse_customer_key: "SSECustomerKey",
@@ -2065,7 +2178,7 @@ module Aws::S3
2065
2178
  #
2066
2179
  # [1]: https://www.rfc-editor.org/rfc/rfc9110.html#name-content-length
2067
2180
  # @option options [String] :content_md5
2068
- # 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
2069
2182
  # headers) according to RFC 1864. This header can be used as a message
2070
2183
  # integrity check to verify that the data is the same data that was
2071
2184
  # originally sent. Although it is optional, we recommend using the
@@ -2073,10 +2186,11 @@ module Aws::S3
2073
2186
  # information about REST request authentication, see [REST
2074
2187
  # Authentication][1].
2075
2188
  #
2076
- # <note markdown="1"> The `Content-MD5` header is required for any request to upload an
2077
- # object with a retention period configured using Amazon S3 Object Lock.
2078
- # For more information about Amazon S3 Object Lock, see [Amazon S3
2079
- # Object Lock Overview][2] in the *Amazon S3 User Guide*.
2189
+ # <note markdown="1"> The `Content-MD5` or `x-amz-sdk-checksum-algorithm` header is required
2190
+ # for any request to upload an object with a retention period configured
2191
+ # using Amazon S3 Object Lock. For more information, see [Uploading
2192
+ # objects to an Object Lock enabled bucket ][2] in the *Amazon S3 User
2193
+ # Guide*.
2080
2194
  #
2081
2195
  # </note>
2082
2196
  #
@@ -2087,7 +2201,7 @@ module Aws::S3
2087
2201
  #
2088
2202
  #
2089
2203
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html
2090
- # [2]: https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html
2204
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-managing.html#object-lock-put-object
2091
2205
  # @option options [String] :content_type
2092
2206
  # A standard MIME type describing the format of the contents. For more
2093
2207
  # information, see
@@ -2111,6 +2225,8 @@ module Aws::S3
2111
2225
  #
2112
2226
  # * `CRC32C`
2113
2227
  #
2228
+ # * `CRC64NVME`
2229
+ #
2114
2230
  # * `SHA1`
2115
2231
  #
2116
2232
  # * `SHA256`
@@ -2120,22 +2236,28 @@ module Aws::S3
2120
2236
  #
2121
2237
  # If the individual checksum value you provide through
2122
2238
  # `x-amz-checksum-algorithm ` doesn't match the checksum algorithm you
2123
- # set through `x-amz-sdk-checksum-algorithm`, Amazon S3 ignores any
2124
- # provided `ChecksumAlgorithm` parameter and uses the checksum algorithm
2125
- # 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.
2126
2241
  #
2127
- # <note markdown="1"> For directory buckets, when you use Amazon Web Services SDKs, `CRC32`
2128
- # is the default checksum algorithm that's used for performance.
2242
+ # <note markdown="1"> The `Content-MD5` or `x-amz-sdk-checksum-algorithm` header is required
2243
+ # for any request to upload an object with a retention period configured
2244
+ # using Amazon S3 Object Lock. For more information, see [Uploading
2245
+ # objects to an Object Lock enabled bucket ][2] in the *Amazon S3 User
2246
+ # Guide*.
2129
2247
  #
2130
2248
  # </note>
2131
2249
  #
2250
+ # For directory buckets, when you use Amazon Web Services SDKs, `CRC32`
2251
+ # is the default checksum algorithm that's used for performance.
2252
+ #
2132
2253
  #
2133
2254
  #
2134
2255
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
2256
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-managing.html#object-lock-put-object
2135
2257
  # @option options [String] :checksum_crc32
2136
2258
  # This header can be used as a data integrity check to verify that the
2137
2259
  # data received is the same data that was originally sent. This header
2138
- # specifies the base64-encoded, 32-bit CRC-32 checksum of the object.
2260
+ # specifies the Base64 encoded, 32-bit `CRC32` checksum of the object.
2139
2261
  # For more information, see [Checking object integrity][1] in the
2140
2262
  # *Amazon S3 User Guide*.
2141
2263
  #
@@ -2145,17 +2267,28 @@ module Aws::S3
2145
2267
  # @option options [String] :checksum_crc32c
2146
2268
  # This header can be used as a data integrity check to verify that the
2147
2269
  # data received is the same data that was originally sent. This header
2148
- # specifies the base64-encoded, 32-bit CRC-32C checksum of the object.
2270
+ # specifies the Base64 encoded, 32-bit `CRC32C` checksum of the object.
2149
2271
  # For more information, see [Checking object integrity][1] in the
2150
2272
  # *Amazon S3 User Guide*.
2151
2273
  #
2152
2274
  #
2153
2275
  #
2154
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
2155
2288
  # @option options [String] :checksum_sha1
2156
2289
  # This header can be used as a data integrity check to verify that the
2157
2290
  # data received is the same data that was originally sent. This header
2158
- # 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
2159
2292
  # more information, see [Checking object integrity][1] in the *Amazon S3
2160
2293
  # User Guide*.
2161
2294
  #
@@ -2165,7 +2298,7 @@ module Aws::S3
2165
2298
  # @option options [String] :checksum_sha256
2166
2299
  # This header can be used as a data integrity check to verify that the
2167
2300
  # data received is the same data that was originally sent. This header
2168
- # specifies the base64-encoded, 256-bit SHA-256 digest of the object.
2301
+ # specifies the Base64 encoded, 256-bit `SHA256` digest of the object.
2169
2302
  # For more information, see [Checking object integrity][1] in the
2170
2303
  # *Amazon S3 User Guide*.
2171
2304
  #
@@ -2180,6 +2313,25 @@ module Aws::S3
2180
2313
  #
2181
2314
  #
2182
2315
  # [1]: https://www.rfc-editor.org/rfc/rfc7234#section-5.3
2316
+ # @option options [String] :if_match
2317
+ # Uploads the object only if the ETag (entity tag) value provided during
2318
+ # the WRITE operation matches the ETag of the object in S3. If the ETag
2319
+ # values do not match, the operation returns a `412 Precondition Failed`
2320
+ # error.
2321
+ #
2322
+ # If a conflicting operation occurs during the upload S3 returns a `409
2323
+ # ConditionalRequestConflict` response. On a 409 failure you should
2324
+ # fetch the object's ETag and retry the upload.
2325
+ #
2326
+ # Expects the ETag value as a string.
2327
+ #
2328
+ # For more information about conditional requests, see [RFC 7232][1], or
2329
+ # [Conditional requests][2] in the *Amazon S3 User Guide*.
2330
+ #
2331
+ #
2332
+ #
2333
+ # [1]: https://tools.ietf.org/html/rfc7232
2334
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/conditional-requests.html
2183
2335
  # @option options [String] :if_none_match
2184
2336
  # Uploads the object only if the object key name does not already exist
2185
2337
  # in the bucket specified. Otherwise, Amazon S3 returns a `412
@@ -2231,12 +2383,21 @@ module Aws::S3
2231
2383
  # * This functionality is not supported for Amazon S3 on Outposts.
2232
2384
  #
2233
2385
  # </note>
2386
+ # @option options [Integer] :write_offset_bytes
2387
+ # Specifies the offset for appending data to existing objects in bytes.
2388
+ # The offset must be equal to the size of the existing object being
2389
+ # appended to. If no object exists, setting this header to 0 will create
2390
+ # a new object.
2391
+ #
2392
+ # <note markdown="1"> This functionality is only supported for objects in the Amazon S3
2393
+ # Express One Zone storage class in directory buckets.
2394
+ #
2395
+ # </note>
2234
2396
  # @option options [Hash<String,String>] :metadata
2235
2397
  # A map of metadata to store with the object in S3.
2236
2398
  # @option options [String] :server_side_encryption
2237
2399
  # The server-side encryption algorithm that was used when you store this
2238
- # object in Amazon S3 (for example, `AES256`, `aws:kms`,
2239
- # `aws:kms:dsse`).
2400
+ # object in Amazon S3 or Amazon FSx.
2240
2401
  #
2241
2402
  # * <b>General purpose buckets </b> - You have four mutually exclusive
2242
2403
  # options to protect data using server-side encryption in Amazon S3,
@@ -2290,6 +2451,14 @@ module Aws::S3
2290
2451
  #
2291
2452
  # </note>
2292
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
+ #
2293
2462
  #
2294
2463
  #
2295
2464
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html
@@ -2304,8 +2473,9 @@ module Aws::S3
2304
2473
  # a different Storage Class. For more information, see [Storage
2305
2474
  # Classes][1] in the *Amazon S3 User Guide*.
2306
2475
  #
2307
- # <note markdown="1"> * For directory buckets, only the S3 Express One Zone storage class is
2308
- # 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.
2309
2479
  #
2310
2480
  # * Amazon S3 on Outposts only uses the OUTPOSTS Storage Class.
2311
2481
  #
@@ -2383,15 +2553,17 @@ module Aws::S3
2383
2553
  # `x-amz-server-side-encryption-aws-kms-key-id`, Amazon S3 uses the
2384
2554
  # Amazon Web Services managed key (`aws/s3`) to protect the data.
2385
2555
  #
2386
- # **Directory buckets** - If you specify `x-amz-server-side-encryption`
2387
- # with `aws:kms`, you must specify the `
2388
- # x-amz-server-side-encryption-aws-kms-key-id` header with the ID (Key
2389
- # ID or Key ARN) of the KMS symmetric encryption customer managed key to
2390
- # use. Otherwise, you get an HTTP `400 Bad Request` error. Only use the
2391
- # key ID or key ARN. The key alias format of the KMS key isn't
2392
- # supported. Your SSE-KMS configuration can only support 1 [customer
2393
- # managed key][1] per directory bucket for the lifetime of the bucket.
2394
- # [Amazon Web Services managed key][2] (`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.
2395
2567
  #
2396
2568
  #
2397
2569
  #
@@ -2400,7 +2572,7 @@ module Aws::S3
2400
2572
  # @option options [String] :ssekms_encryption_context
2401
2573
  # Specifies the Amazon Web Services KMS Encryption Context as an
2402
2574
  # additional encryption context to use for object encryption. The value
2403
- # 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,
2404
2576
  # which contains the encryption context as key-value pairs. This value
2405
2577
  # is stored as object metadata and automatically gets passed on to
2406
2578
  # Amazon Web Services KMS for future `GetObject` operations on this
@@ -2559,7 +2731,7 @@ module Aws::S3
2559
2731
  # bucket_name: "BucketName", # required
2560
2732
  # prefix: "LocationPrefix", # required
2561
2733
  # encryption: {
2562
- # 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
2563
2735
  # kms_key_id: "SSEKMSKeyId",
2564
2736
  # kms_context: "KMSContext",
2565
2737
  # },
@@ -2590,12 +2762,12 @@ module Aws::S3
2590
2762
  # value: "MetadataValue",
2591
2763
  # },
2592
2764
  # ],
2593
- # 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
2594
2766
  # },
2595
2767
  # },
2596
2768
  # },
2597
2769
  # request_payer: "requester", # accepts requester
2598
- # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256
2770
+ # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256, CRC64NVME
2599
2771
  # expected_bucket_owner: "AccountId",
2600
2772
  # })
2601
2773
  # @param [Hash] options ({})
@@ -2772,7 +2944,7 @@ module Aws::S3
2772
2944
  # request_payer: "requester", # accepts requester
2773
2945
  # bypass_governance_retention: false,
2774
2946
  # expected_bucket_owner: "AccountId",
2775
- # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256
2947
+ # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256, CRC64NVME
2776
2948
  # })
2777
2949
  # @param options ({})
2778
2950
  # @option options [String] :mfa
@@ -2840,6 +3012,8 @@ module Aws::S3
2840
3012
  #
2841
3013
  # * `CRC32C`
2842
3014
  #
3015
+ # * `CRC64NVME`
3016
+ #
2843
3017
  # * `SHA1`
2844
3018
  #
2845
3019
  # * `SHA256`
@@ -2849,9 +3023,8 @@ module Aws::S3
2849
3023
  #
2850
3024
  # If the individual checksum value you provide through
2851
3025
  # `x-amz-checksum-algorithm ` doesn't match the checksum algorithm you
2852
- # set through `x-amz-sdk-checksum-algorithm`, Amazon S3 ignores any
2853
- # provided `ChecksumAlgorithm` parameter and uses the checksum algorithm
2854
- # 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.
2855
3028
  #
2856
3029
  # If you provide an individual checksum, Amazon S3 ignores any provided
2857
3030
  # `ChecksumAlgorithm` parameter.