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
@@ -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",
@@ -667,9 +682,8 @@ module Aws::S3
667
682
  # </note>
668
683
  # @option options [String] :server_side_encryption
669
684
  # The server-side encryption algorithm used when storing this object in
670
- # Amazon S3 (for example, `AES256`, `aws:kms`, `aws:kms:dsse`).
671
- # Unrecognized or unsupported values won’t write a destination object
672
- # and will receive a `400 Bad Request` response.
685
+ # Amazon S3. Unrecognized or unsupported values won’t write a
686
+ # destination object and will receive a `400 Bad Request` response.
673
687
  #
674
688
  # Amazon S3 automatically encrypts all new objects that are copied to an
675
689
  # S3 bucket. When copying an object, if you don't specify encryption
@@ -677,35 +691,72 @@ module Aws::S3
677
691
  # object is set to the default encryption configuration of the
678
692
  # destination bucket. By default, all buckets have a base level of
679
693
  # encryption configuration that uses server-side encryption with Amazon
680
- # S3 managed keys (SSE-S3). If the destination bucket has a default
681
- # encryption configuration that uses server-side encryption with Key
682
- # Management Service (KMS) keys (SSE-KMS), dual-layer server-side
683
- # encryption with Amazon Web Services KMS keys (DSSE-KMS), or
684
- # server-side encryption with customer-provided encryption keys (SSE-C),
685
- # Amazon S3 uses the corresponding KMS key, or a customer-provided key
686
- # to encrypt the target object copy.
687
- #
688
- # When you perform a `CopyObject` operation, if you want to use a
689
- # different type of encryption setting for the target object, you can
690
- # specify appropriate encryption-related headers to encrypt the target
691
- # object with an Amazon S3 managed key, a KMS key, or a
692
- # customer-provided key. If the encryption setting in your request is
693
- # different from the default encryption configuration of the destination
694
- # bucket, the encryption setting in your request takes precedence.
694
+ # S3 managed keys (SSE-S3). If the destination bucket has a different
695
+ # default encryption configuration, Amazon S3 uses the corresponding
696
+ # encryption key to encrypt the target object copy.
695
697
  #
696
698
  # With server-side encryption, Amazon S3 encrypts your data as it writes
697
699
  # your data to disks in its data centers and decrypts the data when you
698
700
  # access it. For more information about server-side encryption, see
699
701
  # [Using Server-Side Encryption][1] in the *Amazon S3 User Guide*.
700
702
  #
701
- # <note markdown="1"> For directory buckets, only server-side encryption with Amazon S3
702
- # managed keys (SSE-S3) (`AES256`) is supported.
703
- #
704
- # </note>
703
+ # <b>General purpose buckets </b>
704
+ #
705
+ # * For general purpose buckets, there are the following supported
706
+ # options for server-side encryption: server-side encryption with Key
707
+ # Management Service (KMS) keys (SSE-KMS), dual-layer server-side
708
+ # encryption with Amazon Web Services KMS keys (DSSE-KMS), and
709
+ # server-side encryption with customer-provided encryption keys
710
+ # (SSE-C). Amazon S3 uses the corresponding KMS key, or a
711
+ # customer-provided key to encrypt the target object copy.
712
+ #
713
+ # * When you perform a `CopyObject` operation, if you want to use a
714
+ # different type of encryption setting for the target object, you can
715
+ # specify appropriate encryption-related headers to encrypt the target
716
+ # object with an Amazon S3 managed key, a KMS key, or a
717
+ # customer-provided key. If the encryption setting in your request is
718
+ # different from the default encryption configuration of the
719
+ # destination bucket, the encryption setting in your request takes
720
+ # precedence.
721
+ #
722
+ # <b>Directory buckets </b>
723
+ #
724
+ # * For directory buckets, there are only two supported options for
725
+ # server-side encryption: server-side encryption with Amazon S3
726
+ # managed keys (SSE-S3) (`AES256`) and server-side encryption with KMS
727
+ # keys (SSE-KMS) (`aws:kms`). We recommend that the bucket's default
728
+ # encryption uses the desired encryption configuration and you don't
729
+ # override the bucket default encryption in your `CreateSession`
730
+ # requests or `PUT` object requests. Then, new objects are
731
+ # automatically encrypted with the desired encryption settings. For
732
+ # more information, see [Protecting data with server-side
733
+ # encryption][2] in the *Amazon S3 User Guide*. For more information
734
+ # about the encryption overriding behaviors in directory buckets, see
735
+ # [Specifying server-side encryption with KMS for new object
736
+ # uploads][3].
737
+ #
738
+ # * To encrypt new object copies to a directory bucket with SSE-KMS, we
739
+ # recommend you specify SSE-KMS as the directory bucket's default
740
+ # encryption configuration with a KMS key (specifically, a [customer
741
+ # managed key][4]). The [Amazon Web Services managed key][5]
742
+ # (`aws/s3`) isn't supported. Your SSE-KMS configuration can only
743
+ # support 1 [customer managed key][4] per directory bucket for the
744
+ # lifetime of the bucket. After you specify a customer managed key for
745
+ # SSE-KMS, you can't override the customer managed key for the
746
+ # bucket's SSE-KMS configuration. Then, when you perform a
747
+ # `CopyObject` operation and want to specify server-side encryption
748
+ # settings for new object copies with SSE-KMS in the
749
+ # encryption-related request headers, you must ensure the encryption
750
+ # key is the same customer managed key that you specified for the
751
+ # directory bucket's default encryption configuration.
705
752
  #
706
753
  #
707
754
  #
708
755
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html
756
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html
757
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html
758
+ # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk
759
+ # [5]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk
709
760
  # @option options [String] :storage_class
710
761
  # If the `x-amz-storage-class` header is not used, the copied object
711
762
  # will be stored in the `STANDARD` Storage Class by default. The
@@ -713,10 +764,12 @@ module Aws::S3
713
764
  # availability. Depending on performance needs, you can specify a
714
765
  # different Storage Class.
715
766
  #
716
- # <note markdown="1"> * <b>Directory buckets </b> - For directory buckets, only the S3
717
- # Express One Zone storage class is supported to store newly created
718
- # objects. Unsupported storage class values won't write a destination
719
- # object and will respond with the HTTP status code `400 Bad Request`.
767
+ # <note markdown="1"> * <b>Directory buckets </b> - Directory buckets only support
768
+ # `EXPRESS_ONEZONE` (the S3 Express One Zone storage class) in
769
+ # Availability Zones and `ONEZONE_IA` (the S3 One Zone-Infrequent
770
+ # Access storage class) in Dedicated Local Zones. Unsupported storage
771
+ # class values won't write a destination object and will respond with
772
+ # the HTTP status code `400 Bad Request`.
720
773
  #
721
774
  # * <b>Amazon S3 on Outposts </b> - S3 on Outposts only uses the
722
775
  # `OUTPOSTS` Storage Class.
@@ -796,32 +849,52 @@ module Aws::S3
796
849
  #
797
850
  # </note>
798
851
  # @option options [String] :ssekms_key_id
799
- # Specifies the KMS ID (Key ID, Key ARN, or Key Alias) to use for object
800
- # encryption. All GET and PUT requests for an object protected by KMS
801
- # will fail if they're not made via SSL or using SigV4. For information
802
- # about configuring any of the officially supported Amazon Web Services
803
- # SDKs and Amazon Web Services CLI, see [Specifying the Signature
804
- # Version in Request Authentication][1] in the *Amazon S3 User Guide*.
805
- #
806
- # <note markdown="1"> This functionality is not supported when the destination bucket is a
807
- # directory bucket.
808
- #
809
- # </note>
852
+ # Specifies the KMS key ID (Key ID, Key ARN, or Key Alias) to use for
853
+ # object encryption. All GET and PUT requests for an object protected by
854
+ # KMS will fail if they're not made via SSL or using SigV4. For
855
+ # information about configuring any of the officially supported Amazon
856
+ # Web Services SDKs and Amazon Web Services CLI, see [Specifying the
857
+ # Signature Version in Request Authentication][1] in the *Amazon S3 User
858
+ # Guide*.
859
+ #
860
+ # **Directory buckets** - To encrypt data using SSE-KMS, it's
861
+ # recommended to specify the `x-amz-server-side-encryption` header to
862
+ # `aws:kms`. Then, the `x-amz-server-side-encryption-aws-kms-key-id`
863
+ # header implicitly uses the bucket's default KMS customer managed key
864
+ # ID. If you want to explicitly set the `
865
+ # x-amz-server-side-encryption-aws-kms-key-id` header, it must match the
866
+ # bucket's default customer managed key (using key ID or ARN, not
867
+ # alias). Your SSE-KMS configuration can only support 1 [customer
868
+ # managed key][2] per directory bucket's lifetime. The [Amazon Web
869
+ # Services managed key][3] (`aws/s3`) isn't supported. Incorrect key
870
+ # specification results in an HTTP `400 Bad Request` error.
810
871
  #
811
872
  #
812
873
  #
813
874
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version
875
+ # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk
876
+ # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk
814
877
  # @option options [String] :ssekms_encryption_context
815
- # Specifies the Amazon Web Services KMS Encryption Context to use for
816
- # object encryption. The value of this header is a base64-encoded UTF-8
817
- # string holding JSON with the encryption context key-value pairs. This
818
- # value must be explicitly added to specify encryption context for
819
- # `CopyObject` requests.
878
+ # Specifies the Amazon Web Services KMS Encryption Context as an
879
+ # additional encryption context to use for the destination object
880
+ # encryption. The value of this header is a base64-encoded UTF-8 string
881
+ # holding JSON with the encryption context key-value pairs.
820
882
  #
821
- # <note markdown="1"> This functionality is not supported when the destination bucket is a
822
- # directory bucket.
883
+ # **General purpose buckets** - This value must be explicitly added to
884
+ # specify encryption context for `CopyObject` requests if you want an
885
+ # additional encryption context for your destination object. The
886
+ # additional encryption context of the source object won't be copied to
887
+ # the destination object. For more information, see [Encryption
888
+ # context][1] in the *Amazon S3 User Guide*.
823
889
  #
824
- # </note>
890
+ # **Directory buckets** - You can optionally provide an explicit
891
+ # encryption context value. The value must match the default encryption
892
+ # context - the bucket Amazon Resource Name (ARN). An additional
893
+ # encryption context value is not supported.
894
+ #
895
+ #
896
+ #
897
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html#encryption-context
825
898
  # @option options [Boolean] :bucket_key_enabled
826
899
  # Specifies whether Amazon S3 should use an S3 Bucket Key for object
827
900
  # encryption with server-side encryption using Key Management Service
@@ -835,14 +908,19 @@ module Aws::S3
835
908
  # For more information, see [Amazon S3 Bucket Keys][1] in the *Amazon S3
836
909
  # User Guide*.
837
910
  #
838
- # <note markdown="1"> This functionality is not supported when the destination bucket is a
839
- # directory bucket.
911
+ # <note markdown="1"> **Directory buckets** - S3 Bucket Keys aren't supported, when you
912
+ # copy SSE-KMS encrypted objects from general purpose buckets to
913
+ # directory buckets, from directory buckets to general purpose buckets,
914
+ # or between directory buckets, through [CopyObject][2]. In this case,
915
+ # Amazon S3 makes a call to KMS every time a copy request is made for a
916
+ # KMS-encrypted object.
840
917
  #
841
918
  # </note>
842
919
  #
843
920
  #
844
921
  #
845
922
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html
923
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
846
924
  # @option options [String] :copy_source_sse_customer_algorithm
847
925
  # Specifies the algorithm to use when decrypting the source object (for
848
926
  # example, `AES256`).
@@ -996,6 +1074,9 @@ module Aws::S3
996
1074
  # request_payer: "requester", # accepts requester
997
1075
  # bypass_governance_retention: false,
998
1076
  # expected_bucket_owner: "AccountId",
1077
+ # if_match: "IfMatch",
1078
+ # if_match_last_modified_time: Time.now,
1079
+ # if_match_size: 1,
999
1080
  # })
1000
1081
  # @param [Hash] options ({})
1001
1082
  # @option options [String] :mfa
@@ -1042,6 +1123,46 @@ module Aws::S3
1042
1123
  # The account ID of the expected bucket owner. If the account ID that
1043
1124
  # you provide does not match the actual owner of the bucket, the request
1044
1125
  # fails with the HTTP status code `403 Forbidden` (access denied).
1126
+ # @option options [String] :if_match
1127
+ # The `If-Match` header field makes the request method conditional on
1128
+ # ETags. If the ETag value does not match, the operation returns a `412
1129
+ # Precondition Failed` error. If the ETag matches or if the object
1130
+ # doesn't exist, the operation will return a `204 Success (No Content)
1131
+ # response`.
1132
+ #
1133
+ # For more information about conditional requests, see [RFC 7232][1].
1134
+ #
1135
+ # <note markdown="1"> This functionality is only supported for directory buckets.
1136
+ #
1137
+ # </note>
1138
+ #
1139
+ #
1140
+ #
1141
+ # [1]: https://tools.ietf.org/html/rfc7232
1142
+ # @option options [Time,DateTime,Date,Integer,String] :if_match_last_modified_time
1143
+ # If present, the object is deleted only if its modification times
1144
+ # matches the provided `Timestamp`. If the `Timestamp` values do not
1145
+ # match, the operation returns a `412 Precondition Failed` error. If the
1146
+ # `Timestamp` matches or if the object doesn’t exist, the operation
1147
+ # returns a `204 Success (No Content)` response.
1148
+ #
1149
+ # <note markdown="1"> This functionality is only supported for directory buckets.
1150
+ #
1151
+ # </note>
1152
+ # @option options [Integer] :if_match_size
1153
+ # If present, the object is deleted only if its size matches the
1154
+ # provided size in bytes. If the `Size` value does not match, the
1155
+ # operation returns a `412 Precondition Failed` error. If the `Size`
1156
+ # matches or if the object doesn’t exist, the operation returns a `204
1157
+ # Success (No Content)` response.
1158
+ #
1159
+ # <note markdown="1"> This functionality is only supported for directory buckets.
1160
+ #
1161
+ # </note>
1162
+ #
1163
+ # You can use the `If-Match`, `x-amz-if-match-last-modified-time` and
1164
+ # `x-amz-if-match-size` conditional headers in conjunction with
1165
+ # each-other or individually.
1045
1166
  # @return [Types::DeleteObjectOutput]
1046
1167
  def delete(options = {})
1047
1168
  options = options.merge(
@@ -1342,7 +1463,8 @@ module Aws::S3
1342
1463
  # object_lock_retain_until_date: Time.now,
1343
1464
  # object_lock_legal_hold_status: "ON", # accepts ON, OFF
1344
1465
  # expected_bucket_owner: "AccountId",
1345
- # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256
1466
+ # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256, CRC64NVME
1467
+ # checksum_type: "COMPOSITE", # accepts COMPOSITE, FULL_OBJECT
1346
1468
  # })
1347
1469
  # @param [Hash] options ({})
1348
1470
  # @option options [String] :acl
@@ -1646,10 +1768,52 @@ module Aws::S3
1646
1768
  # The server-side encryption algorithm used when you store this object
1647
1769
  # in Amazon S3 (for example, `AES256`, `aws:kms`).
1648
1770
  #
1649
- # <note markdown="1"> For directory buckets, only server-side encryption with Amazon S3
1650
- # managed keys (SSE-S3) (`AES256`) is supported.
1771
+ # * <b>Directory buckets </b> - For directory buckets, there are only
1772
+ # two supported options for server-side encryption: server-side
1773
+ # encryption with Amazon S3 managed keys (SSE-S3) (`AES256`) and
1774
+ # server-side encryption with KMS keys (SSE-KMS) (`aws:kms`). We
1775
+ # recommend that the bucket's default encryption uses the desired
1776
+ # encryption configuration and you don't override the bucket default
1777
+ # encryption in your `CreateSession` requests or `PUT` object
1778
+ # requests. Then, new objects are automatically encrypted with the
1779
+ # desired encryption settings. For more information, see [Protecting
1780
+ # data with server-side encryption][1] in the *Amazon S3 User Guide*.
1781
+ # For more information about the encryption overriding behaviors in
1782
+ # directory buckets, see [Specifying server-side encryption with KMS
1783
+ # for new object uploads][2].
1784
+ #
1785
+ # In the Zonal endpoint API calls (except [CopyObject][3] and
1786
+ # [UploadPartCopy][4]) using the REST API, the encryption request
1787
+ # headers must match the encryption settings that are specified in the
1788
+ # `CreateSession` request. You can't override the values of the
1789
+ # encryption settings (`x-amz-server-side-encryption`,
1790
+ # `x-amz-server-side-encryption-aws-kms-key-id`,
1791
+ # `x-amz-server-side-encryption-context`, and
1792
+ # `x-amz-server-side-encryption-bucket-key-enabled`) that are
1793
+ # specified in the `CreateSession` request. You don't need to
1794
+ # explicitly specify these encryption settings values in Zonal
1795
+ # endpoint API calls, and Amazon S3 will use the encryption settings
1796
+ # values from the `CreateSession` request to protect new objects in
1797
+ # the directory bucket.
1798
+ #
1799
+ # <note markdown="1"> When you use the CLI or the Amazon Web Services SDKs, for
1800
+ # `CreateSession`, the session token refreshes automatically to avoid
1801
+ # service interruptions when a session expires. The CLI or the Amazon
1802
+ # Web Services SDKs use the bucket's default encryption configuration
1803
+ # for the `CreateSession` request. It's not supported to override the
1804
+ # encryption settings values in the `CreateSession` request. So in the
1805
+ # Zonal endpoint API calls (except [CopyObject][3] and
1806
+ # [UploadPartCopy][4]), the encryption request headers must match the
1807
+ # default encryption configuration of the directory bucket.
1651
1808
  #
1652
- # </note>
1809
+ # </note>
1810
+ #
1811
+ #
1812
+ #
1813
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html
1814
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html
1815
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
1816
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
1653
1817
  # @option options [String] :storage_class
1654
1818
  # By default, Amazon S3 uses the STANDARD Storage Class to store newly
1655
1819
  # created objects. The STANDARD storage class provides high durability
@@ -1657,8 +1821,9 @@ module Aws::S3
1657
1821
  # a different Storage Class. For more information, see [Storage
1658
1822
  # Classes][1] in the *Amazon S3 User Guide*.
1659
1823
  #
1660
- # <note markdown="1"> * For directory buckets, only the S3 Express One Zone storage class is
1661
- # supported to store newly created objects.
1824
+ # <note markdown="1"> * Directory buckets only support `EXPRESS_ONEZONE` (the S3 Express One
1825
+ # Zone storage class) in Availability Zones and `ONEZONE_IA` (the S3
1826
+ # One Zone-Infrequent Access storage class) in Dedicated Local Zones.
1662
1827
  #
1663
1828
  # * Amazon S3 on Outposts only uses the OUTPOSTS Storage Class.
1664
1829
  #
@@ -1702,32 +1867,71 @@ module Aws::S3
1702
1867
  #
1703
1868
  # </note>
1704
1869
  # @option options [String] :ssekms_key_id
1705
- # Specifies the ID (Key ID, Key ARN, or Key Alias) of the symmetric
1706
- # encryption customer managed key to use for object encryption.
1707
- #
1708
- # <note markdown="1"> This functionality is not supported for directory buckets.
1709
- #
1710
- # </note>
1870
+ # Specifies the KMS key ID (Key ID, Key ARN, or Key Alias) to use for
1871
+ # object encryption. If the KMS key doesn't exist in the same account
1872
+ # that's issuing the command, you must use the full Key ARN not the Key
1873
+ # ID.
1874
+ #
1875
+ # **General purpose buckets** - If you specify
1876
+ # `x-amz-server-side-encryption` with `aws:kms` or `aws:kms:dsse`, this
1877
+ # header specifies the ID (Key ID, Key ARN, or Key Alias) of the KMS key
1878
+ # to use. If you specify `x-amz-server-side-encryption:aws:kms` or
1879
+ # `x-amz-server-side-encryption:aws:kms:dsse`, but do not provide
1880
+ # `x-amz-server-side-encryption-aws-kms-key-id`, Amazon S3 uses the
1881
+ # Amazon Web Services managed key (`aws/s3`) to protect the data.
1882
+ #
1883
+ # **Directory buckets** - To encrypt data using SSE-KMS, it's
1884
+ # recommended to specify the `x-amz-server-side-encryption` header to
1885
+ # `aws:kms`. Then, the `x-amz-server-side-encryption-aws-kms-key-id`
1886
+ # header implicitly uses the bucket's default KMS customer managed key
1887
+ # ID. If you want to explicitly set the `
1888
+ # x-amz-server-side-encryption-aws-kms-key-id` header, it must match the
1889
+ # bucket's default customer managed key (using key ID or ARN, not
1890
+ # alias). Your SSE-KMS configuration can only support 1 [customer
1891
+ # managed key][1] per directory bucket's lifetime. The [Amazon Web
1892
+ # Services managed key][2] (`aws/s3`) isn't supported. Incorrect key
1893
+ # specification results in an HTTP `400 Bad Request` error.
1894
+ #
1895
+ #
1896
+ #
1897
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk
1898
+ # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk
1711
1899
  # @option options [String] :ssekms_encryption_context
1712
1900
  # Specifies the Amazon Web Services KMS Encryption Context to use for
1713
- # object encryption. The value of this header is a base64-encoded UTF-8
1714
- # string holding JSON with the encryption context key-value pairs.
1715
- #
1716
- # <note markdown="1"> This functionality is not supported for directory buckets.
1717
- #
1718
- # </note>
1901
+ # object encryption. The value of this header is a Base64 encoded string
1902
+ # of a UTF-8 encoded JSON, which contains the encryption context as
1903
+ # key-value pairs.
1904
+ #
1905
+ # **Directory buckets** - You can optionally provide an explicit
1906
+ # encryption context value. The value must match the default encryption
1907
+ # context - the bucket Amazon Resource Name (ARN). An additional
1908
+ # encryption context value is not supported.
1719
1909
  # @option options [Boolean] :bucket_key_enabled
1720
1910
  # Specifies whether Amazon S3 should use an S3 Bucket Key for object
1721
1911
  # encryption with server-side encryption using Key Management Service
1722
- # (KMS) keys (SSE-KMS). Setting this header to `true` causes Amazon S3
1723
- # to use an S3 Bucket Key for object encryption with SSE-KMS.
1912
+ # (KMS) keys (SSE-KMS).
1724
1913
  #
1725
- # Specifying this header with an object action doesn’t affect
1914
+ # **General purpose buckets** - Setting this header to `true` causes
1915
+ # Amazon S3 to use an S3 Bucket Key for object encryption with SSE-KMS.
1916
+ # Also, specifying this header with a PUT action doesn't affect
1726
1917
  # bucket-level settings for S3 Bucket Key.
1727
1918
  #
1728
- # <note markdown="1"> This functionality is not supported for directory buckets.
1919
+ # **Directory buckets** - S3 Bucket Keys are always enabled for `GET`
1920
+ # and `PUT` operations in a directory bucket and can’t be disabled. S3
1921
+ # Bucket Keys aren't supported, when you copy SSE-KMS encrypted objects
1922
+ # from general purpose buckets to directory buckets, from directory
1923
+ # buckets to general purpose buckets, or between directory buckets,
1924
+ # through [CopyObject][1], [UploadPartCopy][2], [the Copy operation in
1925
+ # Batch Operations][3], or [the import jobs][4]. In this case, Amazon S3
1926
+ # makes a call to KMS every time a copy request is made for a
1927
+ # KMS-encrypted object.
1729
1928
  #
1730
- # </note>
1929
+ #
1930
+ #
1931
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
1932
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
1933
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-buckets-objects-Batch-Ops
1934
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-import-job
1731
1935
  # @option options [String] :request_payer
1732
1936
  # Confirms that the requester knows that they will be charged for the
1733
1937
  # request. Bucket owners need not specify this parameter in their
@@ -1783,6 +1987,14 @@ module Aws::S3
1783
1987
  #
1784
1988
  #
1785
1989
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
1990
+ # @option options [String] :checksum_type
1991
+ # Indicates the checksum type that you want Amazon S3 to use to
1992
+ # calculate the object’s checksum value. For more information, see
1993
+ # [Checking object integrity in the Amazon S3 User Guide][1].
1994
+ #
1995
+ #
1996
+ #
1997
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
1786
1998
  # @return [MultipartUpload]
1787
1999
  def initiate_multipart_upload(options = {})
1788
2000
  options = options.merge(
@@ -1812,16 +2024,20 @@ module Aws::S3
1812
2024
  # content_length: 1,
1813
2025
  # content_md5: "ContentMD5",
1814
2026
  # content_type: "ContentType",
1815
- # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256
2027
+ # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256, CRC64NVME
1816
2028
  # checksum_crc32: "ChecksumCRC32",
1817
2029
  # checksum_crc32c: "ChecksumCRC32C",
2030
+ # checksum_crc64nvme: "ChecksumCRC64NVME",
1818
2031
  # checksum_sha1: "ChecksumSHA1",
1819
2032
  # checksum_sha256: "ChecksumSHA256",
1820
2033
  # expires: Time.now,
2034
+ # if_match: "IfMatch",
2035
+ # if_none_match: "IfNoneMatch",
1821
2036
  # grant_full_control: "GrantFullControl",
1822
2037
  # grant_read: "GrantRead",
1823
2038
  # grant_read_acp: "GrantReadACP",
1824
2039
  # grant_write_acp: "GrantWriteACP",
2040
+ # write_offset_bytes: 1,
1825
2041
  # metadata: {
1826
2042
  # "MetadataKey" => "MetadataValue",
1827
2043
  # },
@@ -1917,7 +2133,7 @@ module Aws::S3
1917
2133
  #
1918
2134
  # [1]: https://www.rfc-editor.org/rfc/rfc9110.html#name-content-length
1919
2135
  # @option options [String] :content_md5
1920
- # The base64-encoded 128-bit MD5 digest of the message (without the
2136
+ # The Base64 encoded 128-bit `MD5` digest of the message (without the
1921
2137
  # headers) according to RFC 1864. This header can be used as a message
1922
2138
  # integrity check to verify that the data is the same data that was
1923
2139
  # originally sent. Although it is optional, we recommend using the
@@ -1925,10 +2141,11 @@ module Aws::S3
1925
2141
  # information about REST request authentication, see [REST
1926
2142
  # Authentication][1].
1927
2143
  #
1928
- # <note markdown="1"> The `Content-MD5` header is required for any request to upload an
1929
- # object with a retention period configured using Amazon S3 Object Lock.
1930
- # For more information about Amazon S3 Object Lock, see [Amazon S3
1931
- # Object Lock Overview][2] in the *Amazon S3 User Guide*.
2144
+ # <note markdown="1"> The `Content-MD5` or `x-amz-sdk-checksum-algorithm` header is required
2145
+ # for any request to upload an object with a retention period configured
2146
+ # using Amazon S3 Object Lock. For more information, see [Uploading
2147
+ # objects to an Object Lock enabled bucket ][2] in the *Amazon S3 User
2148
+ # Guide*.
1932
2149
  #
1933
2150
  # </note>
1934
2151
  #
@@ -1939,7 +2156,7 @@ module Aws::S3
1939
2156
  #
1940
2157
  #
1941
2158
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html
1942
- # [2]: https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html
2159
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-managing.html#object-lock-put-object
1943
2160
  # @option options [String] :content_type
1944
2161
  # A standard MIME type describing the format of the contents. For more
1945
2162
  # information, see
@@ -1959,37 +2176,45 @@ module Aws::S3
1959
2176
  # For the `x-amz-checksum-algorithm ` header, replace ` algorithm ` with
1960
2177
  # the supported algorithm from the following list:
1961
2178
  #
1962
- # * CRC32
2179
+ # * `CRC32`
2180
+ #
2181
+ # * `CRC32C`
1963
2182
  #
1964
- # * CRC32C
2183
+ # * `CRC64NVME`
1965
2184
  #
1966
- # * SHA1
2185
+ # * `SHA1`
1967
2186
  #
1968
- # * SHA256
2187
+ # * `SHA256`
1969
2188
  #
1970
2189
  # For more information, see [Checking object integrity][1] in the
1971
2190
  # *Amazon S3 User Guide*.
1972
2191
  #
1973
2192
  # If the individual checksum value you provide through
1974
2193
  # `x-amz-checksum-algorithm ` doesn't match the checksum algorithm you
1975
- # set through `x-amz-sdk-checksum-algorithm`, Amazon S3 ignores any
1976
- # provided `ChecksumAlgorithm` parameter and uses the checksum algorithm
1977
- # that matches the provided value in `x-amz-checksum-algorithm `.
2194
+ # set through `x-amz-sdk-checksum-algorithm`, Amazon S3 fails the
2195
+ # request with a `BadDigest` error.
1978
2196
  #
1979
- # <note markdown="1"> For directory buckets, when you use Amazon Web Services SDKs, `CRC32`
1980
- # is the default checksum algorithm that's used for performance.
2197
+ # <note markdown="1"> The `Content-MD5` or `x-amz-sdk-checksum-algorithm` header is required
2198
+ # for any request to upload an object with a retention period configured
2199
+ # using Amazon S3 Object Lock. For more information, see [Uploading
2200
+ # objects to an Object Lock enabled bucket ][2] in the *Amazon S3 User
2201
+ # Guide*.
1981
2202
  #
1982
2203
  # </note>
1983
2204
  #
2205
+ # For directory buckets, when you use Amazon Web Services SDKs, `CRC32`
2206
+ # is the default checksum algorithm that's used for performance.
2207
+ #
1984
2208
  #
1985
2209
  #
1986
2210
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
2211
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-managing.html#object-lock-put-object
1987
2212
  # @option options [String] :checksum_crc32
1988
2213
  # This header can be used as a data integrity check to verify that the
1989
2214
  # data received is the same data that was originally sent. This header
1990
- # specifies the base64-encoded, 32-bit CRC32 checksum of the object. For
1991
- # more information, see [Checking object integrity][1] in the *Amazon S3
1992
- # User Guide*.
2215
+ # specifies the Base64 encoded, 32-bit `CRC32` checksum of the object.
2216
+ # For more information, see [Checking object integrity][1] in the
2217
+ # *Amazon S3 User Guide*.
1993
2218
  #
1994
2219
  #
1995
2220
  #
@@ -1997,17 +2222,28 @@ module Aws::S3
1997
2222
  # @option options [String] :checksum_crc32c
1998
2223
  # This header can be used as a data integrity check to verify that the
1999
2224
  # data received is the same data that was originally sent. This header
2000
- # specifies the base64-encoded, 32-bit CRC32C checksum of the object.
2225
+ # specifies the Base64 encoded, 32-bit `CRC32C` checksum of the object.
2001
2226
  # For more information, see [Checking object integrity][1] in the
2002
2227
  # *Amazon S3 User Guide*.
2003
2228
  #
2004
2229
  #
2005
2230
  #
2006
2231
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
2232
+ # @option options [String] :checksum_crc64nvme
2233
+ # This header can be used as a data integrity check to verify that the
2234
+ # data received is the same data that was originally sent. This header
2235
+ # specifies the Base64 encoded, 64-bit `CRC64NVME` checksum of the
2236
+ # object. The `CRC64NVME` checksum is always a full object checksum. For
2237
+ # more information, see [Checking object integrity in the Amazon S3 User
2238
+ # Guide][1].
2239
+ #
2240
+ #
2241
+ #
2242
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
2007
2243
  # @option options [String] :checksum_sha1
2008
2244
  # This header can be used as a data integrity check to verify that the
2009
2245
  # data received is the same data that was originally sent. This header
2010
- # specifies the base64-encoded, 160-bit SHA-1 digest of the object. For
2246
+ # specifies the Base64 encoded, 160-bit `SHA1` digest of the object. For
2011
2247
  # more information, see [Checking object integrity][1] in the *Amazon S3
2012
2248
  # User Guide*.
2013
2249
  #
@@ -2017,7 +2253,7 @@ module Aws::S3
2017
2253
  # @option options [String] :checksum_sha256
2018
2254
  # This header can be used as a data integrity check to verify that the
2019
2255
  # data received is the same data that was originally sent. This header
2020
- # specifies the base64-encoded, 256-bit SHA-256 digest of the object.
2256
+ # specifies the Base64 encoded, 256-bit `SHA256` digest of the object.
2021
2257
  # For more information, see [Checking object integrity][1] in the
2022
2258
  # *Amazon S3 User Guide*.
2023
2259
  #
@@ -2032,6 +2268,43 @@ module Aws::S3
2032
2268
  #
2033
2269
  #
2034
2270
  # [1]: https://www.rfc-editor.org/rfc/rfc7234#section-5.3
2271
+ # @option options [String] :if_match
2272
+ # Uploads the object only if the ETag (entity tag) value provided during
2273
+ # the WRITE operation matches the ETag of the object in S3. If the ETag
2274
+ # values do not match, the operation returns a `412 Precondition Failed`
2275
+ # error.
2276
+ #
2277
+ # If a conflicting operation occurs during the upload S3 returns a `409
2278
+ # ConditionalRequestConflict` response. On a 409 failure you should
2279
+ # fetch the object's ETag and retry the upload.
2280
+ #
2281
+ # Expects the ETag value as a string.
2282
+ #
2283
+ # For more information about conditional requests, see [RFC 7232][1], or
2284
+ # [Conditional requests][2] in the *Amazon S3 User Guide*.
2285
+ #
2286
+ #
2287
+ #
2288
+ # [1]: https://tools.ietf.org/html/rfc7232
2289
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/conditional-requests.html
2290
+ # @option options [String] :if_none_match
2291
+ # Uploads the object only if the object key name does not already exist
2292
+ # in the bucket specified. Otherwise, Amazon S3 returns a `412
2293
+ # Precondition Failed` error.
2294
+ #
2295
+ # If a conflicting operation occurs during the upload S3 returns a `409
2296
+ # ConditionalRequestConflict` response. On a 409 failure you should
2297
+ # retry the upload.
2298
+ #
2299
+ # Expects the '*' (asterisk) character.
2300
+ #
2301
+ # For more information about conditional requests, see [RFC 7232][1], or
2302
+ # [Conditional requests][2] in the *Amazon S3 User Guide*.
2303
+ #
2304
+ #
2305
+ #
2306
+ # [1]: https://tools.ietf.org/html/rfc7232
2307
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/conditional-requests.html
2035
2308
  # @option options [String] :grant_full_control
2036
2309
  # Gives the grantee READ, READ\_ACP, and WRITE\_ACP permissions on the
2037
2310
  # object.
@@ -2065,6 +2338,16 @@ module Aws::S3
2065
2338
  # * This functionality is not supported for Amazon S3 on Outposts.
2066
2339
  #
2067
2340
  # </note>
2341
+ # @option options [Integer] :write_offset_bytes
2342
+ # Specifies the offset for appending data to existing objects in bytes.
2343
+ # The offset must be equal to the size of the existing object being
2344
+ # appended to. If no object exists, setting this header to 0 will create
2345
+ # a new object.
2346
+ #
2347
+ # <note markdown="1"> This functionality is only supported for objects in the Amazon S3
2348
+ # Express One Zone storage class in directory buckets.
2349
+ #
2350
+ # </note>
2068
2351
  # @option options [Hash<String,String>] :metadata
2069
2352
  # A map of metadata to store with the object in S3.
2070
2353
  # @option options [String] :server_side_encryption
@@ -2072,25 +2355,65 @@ module Aws::S3
2072
2355
  # object in Amazon S3 (for example, `AES256`, `aws:kms`,
2073
2356
  # `aws:kms:dsse`).
2074
2357
  #
2075
- # <b>General purpose buckets </b> - You have four mutually exclusive
2076
- # options to protect data using server-side encryption in Amazon S3,
2077
- # depending on how you choose to manage the encryption keys.
2078
- # Specifically, the encryption key options are Amazon S3 managed keys
2079
- # (SSE-S3), Amazon Web Services KMS keys (SSE-KMS or DSSE-KMS), and
2080
- # customer-provided keys (SSE-C). Amazon S3 encrypts data with
2081
- # server-side encryption by using Amazon S3 managed keys (SSE-S3) by
2082
- # default. You can optionally tell Amazon S3 to encrypt data at rest by
2083
- # using server-side encryption with other key options. For more
2084
- # information, see [Using Server-Side Encryption][1] in the *Amazon S3
2085
- # User Guide*.
2358
+ # * <b>General purpose buckets </b> - You have four mutually exclusive
2359
+ # options to protect data using server-side encryption in Amazon S3,
2360
+ # depending on how you choose to manage the encryption keys.
2361
+ # Specifically, the encryption key options are Amazon S3 managed keys
2362
+ # (SSE-S3), Amazon Web Services KMS keys (SSE-KMS or DSSE-KMS), and
2363
+ # customer-provided keys (SSE-C). Amazon S3 encrypts data with
2364
+ # server-side encryption by using Amazon S3 managed keys (SSE-S3) by
2365
+ # default. You can optionally tell Amazon S3 to encrypt data at rest
2366
+ # by using server-side encryption with other key options. For more
2367
+ # information, see [Using Server-Side Encryption][1] in the *Amazon S3
2368
+ # User Guide*.
2369
+ #
2370
+ # * <b>Directory buckets </b> - For directory buckets, there are only
2371
+ # two supported options for server-side encryption: server-side
2372
+ # encryption with Amazon S3 managed keys (SSE-S3) (`AES256`) and
2373
+ # server-side encryption with KMS keys (SSE-KMS) (`aws:kms`). We
2374
+ # recommend that the bucket's default encryption uses the desired
2375
+ # encryption configuration and you don't override the bucket default
2376
+ # encryption in your `CreateSession` requests or `PUT` object
2377
+ # requests. Then, new objects are automatically encrypted with the
2378
+ # desired encryption settings. For more information, see [Protecting
2379
+ # data with server-side encryption][2] in the *Amazon S3 User Guide*.
2380
+ # For more information about the encryption overriding behaviors in
2381
+ # directory buckets, see [Specifying server-side encryption with KMS
2382
+ # for new object uploads][3].
2383
+ #
2384
+ # In the Zonal endpoint API calls (except [CopyObject][4] and
2385
+ # [UploadPartCopy][5]) using the REST API, the encryption request
2386
+ # headers must match the encryption settings that are specified in the
2387
+ # `CreateSession` request. You can't override the values of the
2388
+ # encryption settings (`x-amz-server-side-encryption`,
2389
+ # `x-amz-server-side-encryption-aws-kms-key-id`,
2390
+ # `x-amz-server-side-encryption-context`, and
2391
+ # `x-amz-server-side-encryption-bucket-key-enabled`) that are
2392
+ # specified in the `CreateSession` request. You don't need to
2393
+ # explicitly specify these encryption settings values in Zonal
2394
+ # endpoint API calls, and Amazon S3 will use the encryption settings
2395
+ # values from the `CreateSession` request to protect new objects in
2396
+ # the directory bucket.
2397
+ #
2398
+ # <note markdown="1"> When you use the CLI or the Amazon Web Services SDKs, for
2399
+ # `CreateSession`, the session token refreshes automatically to avoid
2400
+ # service interruptions when a session expires. The CLI or the Amazon
2401
+ # Web Services SDKs use the bucket's default encryption configuration
2402
+ # for the `CreateSession` request. It's not supported to override the
2403
+ # encryption settings values in the `CreateSession` request. So in the
2404
+ # Zonal endpoint API calls (except [CopyObject][4] and
2405
+ # [UploadPartCopy][5]), the encryption request headers must match the
2406
+ # default encryption configuration of the directory bucket.
2086
2407
  #
2087
- # <b>Directory buckets </b> - For directory buckets, only the
2088
- # server-side encryption with Amazon S3 managed keys (SSE-S3) (`AES256`)
2089
- # value is supported.
2408
+ # </note>
2090
2409
  #
2091
2410
  #
2092
2411
  #
2093
2412
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html
2413
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html
2414
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html
2415
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
2416
+ # [5]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
2094
2417
  # @option options [String] :storage_class
2095
2418
  # By default, Amazon S3 uses the STANDARD Storage Class to store newly
2096
2419
  # created objects. The STANDARD storage class provides high durability
@@ -2098,8 +2421,9 @@ module Aws::S3
2098
2421
  # a different Storage Class. For more information, see [Storage
2099
2422
  # Classes][1] in the *Amazon S3 User Guide*.
2100
2423
  #
2101
- # <note markdown="1"> * For directory buckets, only the S3 Express One Zone storage class is
2102
- # supported to store newly created objects.
2424
+ # <note markdown="1"> * Directory buckets only support `EXPRESS_ONEZONE` (the S3 Express One
2425
+ # Zone storage class) in Availability Zones and `ONEZONE_IA` (the S3
2426
+ # One Zone-Infrequent Access storage class) in Dedicated Local Zones.
2103
2427
  #
2104
2428
  # * Amazon S3 on Outposts only uses the OUTPOSTS Storage Class.
2105
2429
  #
@@ -2164,44 +2488,83 @@ module Aws::S3
2164
2488
  #
2165
2489
  # </note>
2166
2490
  # @option options [String] :ssekms_key_id
2167
- # If `x-amz-server-side-encryption` has a valid value of `aws:kms` or
2168
- # `aws:kms:dsse`, this header specifies the ID (Key ID, Key ARN, or Key
2169
- # Alias) of the Key Management Service (KMS) symmetric encryption
2170
- # customer managed key that was used for the object. If you specify
2171
- # `x-amz-server-side-encryption:aws:kms` or
2172
- # `x-amz-server-side-encryption:aws:kms:dsse`, but do not provide`
2173
- # x-amz-server-side-encryption-aws-kms-key-id`, Amazon S3 uses the
2174
- # Amazon Web Services managed key (`aws/s3`) to protect the data. If the
2175
- # KMS key does not exist in the same account that's issuing the
2176
- # command, you must use the full ARN and not just the ID.
2491
+ # Specifies the KMS key ID (Key ID, Key ARN, or Key Alias) to use for
2492
+ # object encryption. If the KMS key doesn't exist in the same account
2493
+ # that's issuing the command, you must use the full Key ARN not the Key
2494
+ # ID.
2495
+ #
2496
+ # **General purpose buckets** - If you specify
2497
+ # `x-amz-server-side-encryption` with `aws:kms` or `aws:kms:dsse`, this
2498
+ # header specifies the ID (Key ID, Key ARN, or Key Alias) of the KMS key
2499
+ # to use. If you specify `x-amz-server-side-encryption:aws:kms` or
2500
+ # `x-amz-server-side-encryption:aws:kms:dsse`, but do not provide
2501
+ # `x-amz-server-side-encryption-aws-kms-key-id`, Amazon S3 uses the
2502
+ # Amazon Web Services managed key (`aws/s3`) to protect the data.
2503
+ #
2504
+ # **Directory buckets** - To encrypt data using SSE-KMS, it's
2505
+ # recommended to specify the `x-amz-server-side-encryption` header to
2506
+ # `aws:kms`. Then, the `x-amz-server-side-encryption-aws-kms-key-id`
2507
+ # header implicitly uses the bucket's default KMS customer managed key
2508
+ # ID. If you want to explicitly set the `
2509
+ # x-amz-server-side-encryption-aws-kms-key-id` header, it must match the
2510
+ # bucket's default customer managed key (using key ID or ARN, not
2511
+ # alias). Your SSE-KMS configuration can only support 1 [customer
2512
+ # managed key][1] per directory bucket's lifetime. The [Amazon Web
2513
+ # Services managed key][2] (`aws/s3`) isn't supported. Incorrect key
2514
+ # specification results in an HTTP `400 Bad Request` error.
2515
+ #
2516
+ #
2517
+ #
2518
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk
2519
+ # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk
2520
+ # @option options [String] :ssekms_encryption_context
2521
+ # Specifies the Amazon Web Services KMS Encryption Context as an
2522
+ # additional encryption context to use for object encryption. The value
2523
+ # of this header is a Base64 encoded string of a UTF-8 encoded JSON,
2524
+ # which contains the encryption context as key-value pairs. This value
2525
+ # is stored as object metadata and automatically gets passed on to
2526
+ # Amazon Web Services KMS for future `GetObject` operations on this
2527
+ # object.
2177
2528
  #
2178
- # <note markdown="1"> This functionality is not supported for directory buckets.
2529
+ # **General purpose buckets** - This value must be explicitly added
2530
+ # during `CopyObject` operations if you want an additional encryption
2531
+ # context for your object. For more information, see [Encryption
2532
+ # context][1] in the *Amazon S3 User Guide*.
2179
2533
  #
2180
- # </note>
2181
- # @option options [String] :ssekms_encryption_context
2182
- # Specifies the Amazon Web Services KMS Encryption Context to use for
2183
- # object encryption. The value of this header is a base64-encoded UTF-8
2184
- # string holding JSON with the encryption context key-value pairs. This
2185
- # value is stored as object metadata and automatically gets passed on to
2186
- # Amazon Web Services KMS for future `GetObject` or `CopyObject`
2187
- # operations on this object. This value must be explicitly added during
2188
- # `CopyObject` operations.
2534
+ # **Directory buckets** - You can optionally provide an explicit
2535
+ # encryption context value. The value must match the default encryption
2536
+ # context - the bucket Amazon Resource Name (ARN). An additional
2537
+ # encryption context value is not supported.
2189
2538
  #
2190
- # <note markdown="1"> This functionality is not supported for directory buckets.
2191
2539
  #
2192
- # </note>
2540
+ #
2541
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html#encryption-context
2193
2542
  # @option options [Boolean] :bucket_key_enabled
2194
2543
  # Specifies whether Amazon S3 should use an S3 Bucket Key for object
2195
2544
  # encryption with server-side encryption using Key Management Service
2196
- # (KMS) keys (SSE-KMS). Setting this header to `true` causes Amazon S3
2197
- # to use an S3 Bucket Key for object encryption with SSE-KMS.
2545
+ # (KMS) keys (SSE-KMS).
2198
2546
  #
2199
- # Specifying this header with a PUT action doesn’t affect bucket-level
2200
- # settings for S3 Bucket Key.
2547
+ # **General purpose buckets** - Setting this header to `true` causes
2548
+ # Amazon S3 to use an S3 Bucket Key for object encryption with SSE-KMS.
2549
+ # Also, specifying this header with a PUT action doesn't affect
2550
+ # bucket-level settings for S3 Bucket Key.
2201
2551
  #
2202
- # <note markdown="1"> This functionality is not supported for directory buckets.
2552
+ # **Directory buckets** - S3 Bucket Keys are always enabled for `GET`
2553
+ # and `PUT` operations in a directory bucket and can’t be disabled. S3
2554
+ # Bucket Keys aren't supported, when you copy SSE-KMS encrypted objects
2555
+ # from general purpose buckets to directory buckets, from directory
2556
+ # buckets to general purpose buckets, or between directory buckets,
2557
+ # through [CopyObject][1], [UploadPartCopy][2], [the Copy operation in
2558
+ # Batch Operations][3], or [the import jobs][4]. In this case, Amazon S3
2559
+ # makes a call to KMS every time a copy request is made for a
2560
+ # KMS-encrypted object.
2203
2561
  #
2204
- # </note>
2562
+ #
2563
+ #
2564
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
2565
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
2566
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-buckets-objects-Batch-Ops
2567
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-import-job
2205
2568
  # @option options [String] :request_payer
2206
2569
  # Confirms that the requester knows that they will be charged for the
2207
2570
  # request. Bucket owners need not specify this parameter in their
@@ -2352,7 +2715,7 @@ module Aws::S3
2352
2715
  # },
2353
2716
  # },
2354
2717
  # request_payer: "requester", # accepts requester
2355
- # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256
2718
+ # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256, CRC64NVME
2356
2719
  # expected_bucket_owner: "AccountId",
2357
2720
  # })
2358
2721
  # @param [Hash] options ({})
@@ -2529,7 +2892,7 @@ module Aws::S3
2529
2892
  # request_payer: "requester", # accepts requester
2530
2893
  # bypass_governance_retention: false,
2531
2894
  # expected_bucket_owner: "AccountId",
2532
- # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256
2895
+ # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256, CRC64NVME
2533
2896
  # })
2534
2897
  # @param options ({})
2535
2898
  # @option options [String] :mfa
@@ -2593,22 +2956,23 @@ module Aws::S3
2593
2956
  # For the `x-amz-checksum-algorithm ` header, replace ` algorithm ` with
2594
2957
  # the supported algorithm from the following list:
2595
2958
  #
2596
- # * CRC32
2959
+ # * `CRC32`
2960
+ #
2961
+ # * `CRC32C`
2597
2962
  #
2598
- # * CRC32C
2963
+ # * `CRC64NVME`
2599
2964
  #
2600
- # * SHA1
2965
+ # * `SHA1`
2601
2966
  #
2602
- # * SHA256
2967
+ # * `SHA256`
2603
2968
  #
2604
2969
  # For more information, see [Checking object integrity][1] in the
2605
2970
  # *Amazon S3 User Guide*.
2606
2971
  #
2607
2972
  # If the individual checksum value you provide through
2608
2973
  # `x-amz-checksum-algorithm ` doesn't match the checksum algorithm you
2609
- # set through `x-amz-sdk-checksum-algorithm`, Amazon S3 ignores any
2610
- # provided `ChecksumAlgorithm` parameter and uses the checksum algorithm
2611
- # that matches the provided value in `x-amz-checksum-algorithm `.
2974
+ # set through `x-amz-sdk-checksum-algorithm`, Amazon S3 fails the
2975
+ # request with a `BadDigest` error.
2612
2976
  #
2613
2977
  # If you provide an individual checksum, Amazon S3 ignores any provided
2614
2978
  # `ChecksumAlgorithm` parameter.
@@ -2640,3 +3004,6 @@ module Aws::S3
2640
3004
  end
2641
3005
  end
2642
3006
  end
3007
+
3008
+ # Load customizations if they exist
3009
+ require 'aws-sdk-s3/customizations/object_summary'