aws-sdk-s3 1.142.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 (118) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +417 -1
  3. data/VERSION +1 -1
  4. data/lib/aws-sdk-s3/access_grants_credentials.rb +57 -0
  5. data/lib/aws-sdk-s3/access_grants_credentials_provider.rb +250 -0
  6. data/lib/aws-sdk-s3/bucket.rb +358 -106
  7. data/lib/aws-sdk-s3/bucket_acl.rb +10 -9
  8. data/lib/aws-sdk-s3/bucket_cors.rb +10 -9
  9. data/lib/aws-sdk-s3/bucket_lifecycle.rb +11 -6
  10. data/lib/aws-sdk-s3/bucket_lifecycle_configuration.rb +64 -7
  11. data/lib/aws-sdk-s3/bucket_logging.rb +5 -5
  12. data/lib/aws-sdk-s3/bucket_notification.rb +3 -3
  13. data/lib/aws-sdk-s3/bucket_policy.rb +14 -13
  14. data/lib/aws-sdk-s3/bucket_region_cache.rb +9 -5
  15. data/lib/aws-sdk-s3/bucket_request_payment.rb +6 -6
  16. data/lib/aws-sdk-s3/bucket_tagging.rb +7 -7
  17. data/lib/aws-sdk-s3/bucket_versioning.rb +47 -14
  18. data/lib/aws-sdk-s3/bucket_website.rb +7 -7
  19. data/lib/aws-sdk-s3/client.rb +5671 -2195
  20. data/lib/aws-sdk-s3/client_api.rb +665 -166
  21. data/lib/aws-sdk-s3/customizations/bucket.rb +1 -1
  22. data/lib/aws-sdk-s3/customizations/errors.rb +15 -2
  23. data/lib/aws-sdk-s3/customizations/object.rb +87 -91
  24. data/lib/aws-sdk-s3/customizations/object_summary.rb +5 -0
  25. data/lib/aws-sdk-s3/customizations/object_version.rb +13 -0
  26. data/lib/aws-sdk-s3/customizations.rb +28 -36
  27. data/lib/aws-sdk-s3/default_executor.rb +103 -0
  28. data/lib/aws-sdk-s3/encryption/client.rb +4 -4
  29. data/lib/aws-sdk-s3/encryption/default_cipher_provider.rb +2 -0
  30. data/lib/aws-sdk-s3/encryption/encrypt_handler.rb +2 -0
  31. data/lib/aws-sdk-s3/encryption/kms_cipher_provider.rb +4 -2
  32. data/lib/aws-sdk-s3/encryptionV2/client.rb +100 -25
  33. data/lib/aws-sdk-s3/encryptionV2/decrypt_handler.rb +7 -162
  34. data/lib/aws-sdk-s3/encryptionV2/decryption.rb +205 -0
  35. data/lib/aws-sdk-s3/encryptionV2/default_cipher_provider.rb +17 -0
  36. data/lib/aws-sdk-s3/encryptionV2/encrypt_handler.rb +2 -0
  37. data/lib/aws-sdk-s3/encryptionV2/io_encrypter.rb +2 -0
  38. data/lib/aws-sdk-s3/encryptionV2/kms_cipher_provider.rb +10 -2
  39. data/lib/aws-sdk-s3/encryptionV2/utils.rb +5 -0
  40. data/lib/aws-sdk-s3/encryptionV3/client.rb +885 -0
  41. data/lib/aws-sdk-s3/encryptionV3/decrypt_handler.rb +98 -0
  42. data/lib/aws-sdk-s3/encryptionV3/decryption.rb +244 -0
  43. data/lib/aws-sdk-s3/encryptionV3/default_cipher_provider.rb +159 -0
  44. data/lib/aws-sdk-s3/encryptionV3/default_key_provider.rb +35 -0
  45. data/lib/aws-sdk-s3/encryptionV3/encrypt_handler.rb +98 -0
  46. data/lib/aws-sdk-s3/encryptionV3/errors.rb +47 -0
  47. data/lib/aws-sdk-s3/encryptionV3/io_auth_decrypter.rb +60 -0
  48. data/lib/aws-sdk-s3/encryptionV3/io_decrypter.rb +35 -0
  49. data/lib/aws-sdk-s3/encryptionV3/io_encrypter.rb +84 -0
  50. data/lib/aws-sdk-s3/encryptionV3/key_provider.rb +28 -0
  51. data/lib/aws-sdk-s3/encryptionV3/kms_cipher_provider.rb +159 -0
  52. data/lib/aws-sdk-s3/encryptionV3/materials.rb +58 -0
  53. data/lib/aws-sdk-s3/encryptionV3/utils.rb +321 -0
  54. data/lib/aws-sdk-s3/encryption_v2.rb +1 -0
  55. data/lib/aws-sdk-s3/encryption_v3.rb +24 -0
  56. data/lib/aws-sdk-s3/endpoint_parameters.rb +37 -34
  57. data/lib/aws-sdk-s3/endpoint_provider.rb +572 -277
  58. data/lib/aws-sdk-s3/endpoints.rb +566 -1612
  59. data/lib/aws-sdk-s3/errors.rb +58 -0
  60. data/lib/aws-sdk-s3/express_credentials_provider.rb +27 -4
  61. data/lib/aws-sdk-s3/file_downloader.rb +192 -146
  62. data/lib/aws-sdk-s3/file_uploader.rb +10 -14
  63. data/lib/aws-sdk-s3/legacy_signer.rb +2 -1
  64. data/lib/aws-sdk-s3/multipart_download_error.rb +8 -0
  65. data/lib/aws-sdk-s3/multipart_file_uploader.rb +106 -102
  66. data/lib/aws-sdk-s3/multipart_stream_uploader.rb +99 -108
  67. data/lib/aws-sdk-s3/multipart_upload.rb +112 -12
  68. data/lib/aws-sdk-s3/multipart_upload_error.rb +3 -4
  69. data/lib/aws-sdk-s3/multipart_upload_part.rb +55 -39
  70. data/lib/aws-sdk-s3/object.rb +713 -227
  71. data/lib/aws-sdk-s3/object_acl.rb +15 -9
  72. data/lib/aws-sdk-s3/object_copier.rb +1 -1
  73. data/lib/aws-sdk-s3/object_multipart_copier.rb +12 -9
  74. data/lib/aws-sdk-s3/object_summary.rb +592 -173
  75. data/lib/aws-sdk-s3/object_version.rb +102 -17
  76. data/lib/aws-sdk-s3/plugins/access_grants.rb +178 -0
  77. data/lib/aws-sdk-s3/plugins/checksum_algorithm.rb +31 -0
  78. data/lib/aws-sdk-s3/plugins/endpoints.rb +26 -213
  79. data/lib/aws-sdk-s3/plugins/express_session_auth.rb +19 -21
  80. data/lib/aws-sdk-s3/plugins/http_200_errors.rb +55 -18
  81. data/lib/aws-sdk-s3/plugins/md5s.rb +10 -71
  82. data/lib/aws-sdk-s3/plugins/s3_signer.rb +7 -2
  83. data/lib/aws-sdk-s3/plugins/streaming_retry.rb +5 -7
  84. data/lib/aws-sdk-s3/plugins/url_encoded_keys.rb +2 -1
  85. data/lib/aws-sdk-s3/presigner.rb +7 -5
  86. data/lib/aws-sdk-s3/resource.rb +53 -20
  87. data/lib/aws-sdk-s3/transfer_manager.rb +303 -0
  88. data/lib/aws-sdk-s3/types.rb +4738 -1542
  89. data/lib/aws-sdk-s3.rb +35 -31
  90. data/sig/bucket.rbs +231 -0
  91. data/sig/bucket_acl.rbs +78 -0
  92. data/sig/bucket_cors.rbs +69 -0
  93. data/sig/bucket_lifecycle.rbs +88 -0
  94. data/sig/bucket_lifecycle_configuration.rbs +115 -0
  95. data/sig/bucket_logging.rbs +76 -0
  96. data/sig/bucket_notification.rbs +114 -0
  97. data/sig/bucket_policy.rbs +59 -0
  98. data/sig/bucket_request_payment.rbs +54 -0
  99. data/sig/bucket_tagging.rbs +65 -0
  100. data/sig/bucket_versioning.rbs +77 -0
  101. data/sig/bucket_website.rbs +93 -0
  102. data/sig/client.rbs +2612 -0
  103. data/sig/customizations/bucket.rbs +19 -0
  104. data/sig/customizations/object.rbs +38 -0
  105. data/sig/customizations/object_summary.rbs +35 -0
  106. data/sig/errors.rbs +44 -0
  107. data/sig/multipart_upload.rbs +120 -0
  108. data/sig/multipart_upload_part.rbs +109 -0
  109. data/sig/object.rbs +464 -0
  110. data/sig/object_acl.rbs +86 -0
  111. data/sig/object_summary.rbs +347 -0
  112. data/sig/object_version.rbs +143 -0
  113. data/sig/resource.rbs +141 -0
  114. data/sig/types.rbs +2899 -0
  115. data/sig/waiters.rbs +95 -0
  116. metadata +58 -13
  117. data/lib/aws-sdk-s3/express_credentials_cache.rb +0 -30
  118. 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
  #
@@ -186,7 +201,7 @@ module Aws::S3
186
201
  options, params = separate_params_and_options(options)
187
202
  waiter = Waiters::ObjectExists.new(options)
188
203
  yield_waiter_and_warn(waiter, &block) if block_given?
189
- Aws::Plugins::UserAgent.feature('resource') do
204
+ Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
190
205
  waiter.wait(params.merge(bucket: @bucket_name,
191
206
  key: @key))
192
207
  end
@@ -207,7 +222,7 @@ module Aws::S3
207
222
  options, params = separate_params_and_options(options)
208
223
  waiter = Waiters::ObjectNotExists.new(options)
209
224
  yield_waiter_and_warn(waiter, &block) if block_given?
210
- Aws::Plugins::UserAgent.feature('resource') do
225
+ Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
211
226
  waiter.wait(params.merge(bucket: @bucket_name,
212
227
  key: @key))
213
228
  end
@@ -312,7 +327,7 @@ module Aws::S3
312
327
  :retry
313
328
  end
314
329
  end
315
- Aws::Plugins::UserAgent.feature('resource') do
330
+ Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
316
331
  Aws::Waiters::Waiter.new(options).wait({})
317
332
  end
318
333
  end
@@ -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
@@ -667,9 +713,8 @@ module Aws::S3
667
713
  # </note>
668
714
  # @option options [String] :server_side_encryption
669
715
  # 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.
716
+ # Amazon S3. Unrecognized or unsupported values won’t write a
717
+ # destination object and will receive a `400 Bad Request` response.
673
718
  #
674
719
  # Amazon S3 automatically encrypts all new objects that are copied to an
675
720
  # S3 bucket. When copying an object, if you don't specify encryption
@@ -677,35 +722,80 @@ module Aws::S3
677
722
  # object is set to the default encryption configuration of the
678
723
  # destination bucket. By default, all buckets have a base level of
679
724
  # 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.
725
+ # S3 managed keys (SSE-S3). If the destination bucket has a different
726
+ # default encryption configuration, Amazon S3 uses the corresponding
727
+ # encryption key to encrypt the target object copy.
695
728
  #
696
729
  # With server-side encryption, Amazon S3 encrypts your data as it writes
697
730
  # your data to disks in its data centers and decrypts the data when you
698
731
  # access it. For more information about server-side encryption, see
699
732
  # [Using Server-Side Encryption][1] in the *Amazon S3 User Guide*.
700
733
  #
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>
734
+ # <b>General purpose buckets </b>
735
+ #
736
+ # * For general purpose buckets, there are the following supported
737
+ # options for server-side encryption: server-side encryption with Key
738
+ # Management Service (KMS) keys (SSE-KMS), dual-layer server-side
739
+ # encryption with Amazon Web Services KMS keys (DSSE-KMS), and
740
+ # server-side encryption with customer-provided encryption keys
741
+ # (SSE-C). Amazon S3 uses the corresponding KMS key, or a
742
+ # customer-provided key to encrypt the target object copy.
743
+ #
744
+ # * When you perform a `CopyObject` operation, if you want to use a
745
+ # different type of encryption setting for the target object, you can
746
+ # specify appropriate encryption-related headers to encrypt the target
747
+ # object with an Amazon S3 managed key, a KMS key, or a
748
+ # customer-provided key. If the encryption setting in your request is
749
+ # different from the default encryption configuration of the
750
+ # destination bucket, the encryption setting in your request takes
751
+ # precedence.
752
+ #
753
+ # <b>Directory buckets </b>
754
+ #
755
+ # * For directory buckets, there are only two supported options for
756
+ # server-side encryption: server-side encryption with Amazon S3
757
+ # managed keys (SSE-S3) (`AES256`) and server-side encryption with KMS
758
+ # keys (SSE-KMS) (`aws:kms`). We recommend that the bucket's default
759
+ # encryption uses the desired encryption configuration and you don't
760
+ # override the bucket default encryption in your `CreateSession`
761
+ # requests or `PUT` object requests. Then, new objects are
762
+ # automatically encrypted with the desired encryption settings. For
763
+ # more information, see [Protecting data with server-side
764
+ # encryption][2] in the *Amazon S3 User Guide*. For more information
765
+ # about the encryption overriding behaviors in directory buckets, see
766
+ # [Specifying server-side encryption with KMS for new object
767
+ # uploads][3].
768
+ #
769
+ # * To encrypt new object copies to a directory bucket with SSE-KMS, we
770
+ # recommend you specify SSE-KMS as the directory bucket's default
771
+ # encryption configuration with a KMS key (specifically, a [customer
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.
705
791
  #
706
792
  #
707
793
  #
708
794
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html
795
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html
796
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html
797
+ # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk
798
+ # [5]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk
709
799
  # @option options [String] :storage_class
710
800
  # If the `x-amz-storage-class` header is not used, the copied object
711
801
  # will be stored in the `STANDARD` Storage Class by default. The
@@ -713,10 +803,12 @@ module Aws::S3
713
803
  # availability. Depending on performance needs, you can specify a
714
804
  # different Storage Class.
715
805
  #
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`.
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`.
720
812
  #
721
813
  # * <b>Amazon S3 on Outposts </b> - S3 on Outposts only uses the
722
814
  # `OUTPOSTS` Storage Class.
@@ -796,32 +888,52 @@ module Aws::S3
796
888
  #
797
889
  # </note>
798
890
  # @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>
891
+ # Specifies the KMS key ID (Key ID, Key ARN, or Key Alias) to use for
892
+ # object encryption. All GET and PUT requests for an object protected by
893
+ # KMS will fail if they're not made via SSL or using SigV4. For
894
+ # information about configuring any of the officially supported Amazon
895
+ # Web Services SDKs and Amazon Web Services CLI, see [Specifying the
896
+ # Signature Version in Request Authentication][1] in the *Amazon S3 User
897
+ # Guide*.
898
+ #
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.
810
910
  #
811
911
  #
812
912
  #
813
913
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version
914
+ # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk
915
+ # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk
814
916
  # @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.
917
+ # Specifies the Amazon Web Services KMS Encryption Context as an
918
+ # additional encryption context to use for the destination object
919
+ # encryption. The value of this header is a base64-encoded UTF-8 string
920
+ # holding JSON with the encryption context key-value pairs.
820
921
  #
821
- # <note markdown="1"> This functionality is not supported when the destination bucket is a
822
- # directory bucket.
922
+ # **General purpose buckets** - This value must be explicitly added to
923
+ # specify encryption context for `CopyObject` requests if you want an
924
+ # additional encryption context for your destination object. The
925
+ # additional encryption context of the source object won't be copied to
926
+ # the destination object. For more information, see [Encryption
927
+ # context][1] in the *Amazon S3 User Guide*.
823
928
  #
824
- # </note>
929
+ # **Directory buckets** - You can optionally provide an explicit
930
+ # encryption context value. The value must match the default encryption
931
+ # context - the bucket Amazon Resource Name (ARN). An additional
932
+ # encryption context value is not supported.
933
+ #
934
+ #
935
+ #
936
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html#encryption-context
825
937
  # @option options [Boolean] :bucket_key_enabled
826
938
  # Specifies whether Amazon S3 should use an S3 Bucket Key for object
827
939
  # encryption with server-side encryption using Key Management Service
@@ -835,14 +947,19 @@ module Aws::S3
835
947
  # For more information, see [Amazon S3 Bucket Keys][1] in the *Amazon S3
836
948
  # User Guide*.
837
949
  #
838
- # <note markdown="1"> This functionality is not supported when the destination bucket is a
839
- # directory bucket.
950
+ # <note markdown="1"> **Directory buckets** - S3 Bucket Keys aren't supported, when you
951
+ # copy SSE-KMS encrypted objects from general purpose buckets to
952
+ # directory buckets, from directory buckets to general purpose buckets,
953
+ # or between directory buckets, through [CopyObject][2]. In this case,
954
+ # Amazon S3 makes a call to KMS every time a copy request is made for a
955
+ # KMS-encrypted object.
840
956
  #
841
957
  # </note>
842
958
  #
843
959
  #
844
960
  #
845
961
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html
962
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
846
963
  # @option options [String] :copy_source_sse_customer_algorithm
847
964
  # Specifies the algorithm to use when decrypting the source object (for
848
965
  # example, `AES256`).
@@ -982,7 +1099,7 @@ module Aws::S3
982
1099
  bucket: @bucket_name,
983
1100
  key: @key
984
1101
  )
985
- resp = Aws::Plugins::UserAgent.feature('resource') do
1102
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
986
1103
  @client.copy_object(options)
987
1104
  end
988
1105
  resp.data
@@ -996,6 +1113,9 @@ module Aws::S3
996
1113
  # request_payer: "requester", # accepts requester
997
1114
  # bypass_governance_retention: false,
998
1115
  # expected_bucket_owner: "AccountId",
1116
+ # if_match: "IfMatch",
1117
+ # if_match_last_modified_time: Time.now,
1118
+ # if_match_size: 1,
999
1119
  # })
1000
1120
  # @param [Hash] options ({})
1001
1121
  # @option options [String] :mfa
@@ -1042,13 +1162,51 @@ module Aws::S3
1042
1162
  # The account ID of the expected bucket owner. If the account ID that
1043
1163
  # you provide does not match the actual owner of the bucket, the request
1044
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.
1045
1203
  # @return [Types::DeleteObjectOutput]
1046
1204
  def delete(options = {})
1047
1205
  options = options.merge(
1048
1206
  bucket: @bucket_name,
1049
1207
  key: @key
1050
1208
  )
1051
- resp = Aws::Plugins::UserAgent.feature('resource') do
1209
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
1052
1210
  @client.delete_object(options)
1053
1211
  end
1054
1212
  resp.data
@@ -1304,7 +1462,7 @@ module Aws::S3
1304
1462
  bucket: @bucket_name,
1305
1463
  key: @key
1306
1464
  )
1307
- resp = Aws::Plugins::UserAgent.feature('resource') do
1465
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
1308
1466
  @client.get_object(options, &block)
1309
1467
  end
1310
1468
  resp.data
@@ -1327,8 +1485,8 @@ module Aws::S3
1327
1485
  # metadata: {
1328
1486
  # "MetadataKey" => "MetadataValue",
1329
1487
  # },
1330
- # server_side_encryption: "AES256", # accepts AES256, aws:kms, aws:kms:dsse
1331
- # 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
1332
1490
  # website_redirect_location: "WebsiteRedirectLocation",
1333
1491
  # sse_customer_algorithm: "SSECustomerAlgorithm",
1334
1492
  # sse_customer_key: "SSECustomerKey",
@@ -1342,7 +1500,8 @@ module Aws::S3
1342
1500
  # object_lock_retain_until_date: Time.now,
1343
1501
  # object_lock_legal_hold_status: "ON", # accepts ON, OFF
1344
1502
  # expected_bucket_owner: "AccountId",
1345
- # 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
1346
1505
  # })
1347
1506
  # @param [Hash] options ({})
1348
1507
  # @option options [String] :acl
@@ -1644,12 +1803,62 @@ module Aws::S3
1644
1803
  # A map of metadata to store with the object in S3.
1645
1804
  # @option options [String] :server_side_encryption
1646
1805
  # The server-side encryption algorithm used when you store this object
1647
- # in Amazon S3 (for example, `AES256`, `aws:kms`).
1806
+ # in Amazon S3 or Amazon FSx.
1807
+ #
1808
+ # * <b>Directory buckets </b> - For directory buckets, there are only
1809
+ # two supported options for server-side encryption: server-side
1810
+ # encryption with Amazon S3 managed keys (SSE-S3) (`AES256`) and
1811
+ # server-side encryption with KMS keys (SSE-KMS) (`aws:kms`). We
1812
+ # recommend that the bucket's default encryption uses the desired
1813
+ # encryption configuration and you don't override the bucket default
1814
+ # encryption in your `CreateSession` requests or `PUT` object
1815
+ # requests. Then, new objects are automatically encrypted with the
1816
+ # desired encryption settings. For more information, see [Protecting
1817
+ # data with server-side encryption][1] in the *Amazon S3 User Guide*.
1818
+ # For more information about the encryption overriding behaviors in
1819
+ # directory buckets, see [Specifying server-side encryption with KMS
1820
+ # for new object uploads][2].
1821
+ #
1822
+ # In the Zonal endpoint API calls (except [CopyObject][3] and
1823
+ # [UploadPartCopy][4]) using the REST API, the encryption request
1824
+ # headers must match the encryption settings that are specified in the
1825
+ # `CreateSession` request. You can't override the values of the
1826
+ # encryption settings (`x-amz-server-side-encryption`,
1827
+ # `x-amz-server-side-encryption-aws-kms-key-id`,
1828
+ # `x-amz-server-side-encryption-context`, and
1829
+ # `x-amz-server-side-encryption-bucket-key-enabled`) that are
1830
+ # specified in the `CreateSession` request. You don't need to
1831
+ # explicitly specify these encryption settings values in Zonal
1832
+ # endpoint API calls, and Amazon S3 will use the encryption settings
1833
+ # values from the `CreateSession` request to protect new objects in
1834
+ # the directory bucket.
1835
+ #
1836
+ # <note markdown="1"> When you use the CLI or the Amazon Web Services SDKs, for
1837
+ # `CreateSession`, the session token refreshes automatically to avoid
1838
+ # service interruptions when a session expires. The CLI or the Amazon
1839
+ # Web Services SDKs use the bucket's default encryption configuration
1840
+ # for the `CreateSession` request. It's not supported to override the
1841
+ # encryption settings values in the `CreateSession` request. So in the
1842
+ # Zonal endpoint API calls (except [CopyObject][3] and
1843
+ # [UploadPartCopy][4]), the encryption request headers must match the
1844
+ # default encryption configuration of the directory bucket.
1648
1845
  #
1649
- # <note markdown="1"> For directory buckets, only server-side encryption with Amazon S3
1650
- # managed keys (SSE-S3) (`AES256`) is supported.
1846
+ # </note>
1651
1847
  #
1652
- # </note>
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
+ #
1856
+ #
1857
+ #
1858
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html
1859
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html
1860
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
1861
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
1653
1862
  # @option options [String] :storage_class
1654
1863
  # By default, Amazon S3 uses the STANDARD Storage Class to store newly
1655
1864
  # created objects. The STANDARD storage class provides high durability
@@ -1657,8 +1866,9 @@ module Aws::S3
1657
1866
  # a different Storage Class. For more information, see [Storage
1658
1867
  # Classes][1] in the *Amazon S3 User Guide*.
1659
1868
  #
1660
- # <note markdown="1"> * For directory buckets, only the S3 Express One Zone storage class is
1661
- # 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.
1662
1872
  #
1663
1873
  # * Amazon S3 on Outposts only uses the OUTPOSTS Storage Class.
1664
1874
  #
@@ -1702,32 +1912,71 @@ module Aws::S3
1702
1912
  #
1703
1913
  # </note>
1704
1914
  # @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>
1915
+ # Specifies the KMS key ID (Key ID, Key ARN, or Key Alias) to use for
1916
+ # object encryption. If the KMS key doesn't exist in the same account
1917
+ # that's issuing the command, you must use the full Key ARN not the Key
1918
+ # ID.
1919
+ #
1920
+ # **General purpose buckets** - If you specify
1921
+ # `x-amz-server-side-encryption` with `aws:kms` or `aws:kms:dsse`, this
1922
+ # header specifies the ID (Key ID, Key ARN, or Key Alias) of the KMS key
1923
+ # to use. If you specify `x-amz-server-side-encryption:aws:kms` or
1924
+ # `x-amz-server-side-encryption:aws:kms:dsse`, but do not provide
1925
+ # `x-amz-server-side-encryption-aws-kms-key-id`, Amazon S3 uses the
1926
+ # Amazon Web Services managed key (`aws/s3`) to protect the data.
1927
+ #
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.
1939
+ #
1940
+ #
1941
+ #
1942
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk
1943
+ # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk
1711
1944
  # @option options [String] :ssekms_encryption_context
1712
1945
  # 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>
1946
+ # object encryption. The value of this header is a Base64 encoded string
1947
+ # of a UTF-8 encoded JSON, which contains the encryption context as
1948
+ # key-value pairs.
1949
+ #
1950
+ # **Directory buckets** - You can optionally provide an explicit
1951
+ # encryption context value. The value must match the default encryption
1952
+ # context - the bucket Amazon Resource Name (ARN). An additional
1953
+ # encryption context value is not supported.
1719
1954
  # @option options [Boolean] :bucket_key_enabled
1720
1955
  # Specifies whether Amazon S3 should use an S3 Bucket Key for object
1721
1956
  # 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.
1957
+ # (KMS) keys (SSE-KMS).
1724
1958
  #
1725
- # Specifying this header with an object action doesn’t affect
1959
+ # **General purpose buckets** - Setting this header to `true` causes
1960
+ # Amazon S3 to use an S3 Bucket Key for object encryption with SSE-KMS.
1961
+ # Also, specifying this header with a PUT action doesn't affect
1726
1962
  # bucket-level settings for S3 Bucket Key.
1727
1963
  #
1728
- # <note markdown="1"> This functionality is not supported for directory buckets.
1964
+ # **Directory buckets** - S3 Bucket Keys are always enabled for `GET`
1965
+ # and `PUT` operations in a directory bucket and can’t be disabled. S3
1966
+ # Bucket Keys aren't supported, when you copy SSE-KMS encrypted objects
1967
+ # from general purpose buckets to directory buckets, from directory
1968
+ # buckets to general purpose buckets, or between directory buckets,
1969
+ # through [CopyObject][1], [UploadPartCopy][2], [the Copy operation in
1970
+ # Batch Operations][3], or [the import jobs][4]. In this case, Amazon S3
1971
+ # makes a call to KMS every time a copy request is made for a
1972
+ # KMS-encrypted object.
1729
1973
  #
1730
- # </note>
1974
+ #
1975
+ #
1976
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
1977
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
1978
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-buckets-objects-Batch-Ops
1979
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-import-job
1731
1980
  # @option options [String] :request_payer
1732
1981
  # Confirms that the requester knows that they will be charged for the
1733
1982
  # request. Bucket owners need not specify this parameter in their
@@ -1783,13 +2032,21 @@ module Aws::S3
1783
2032
  #
1784
2033
  #
1785
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
1786
2043
  # @return [MultipartUpload]
1787
2044
  def initiate_multipart_upload(options = {})
1788
2045
  options = options.merge(
1789
2046
  bucket: @bucket_name,
1790
2047
  key: @key
1791
2048
  )
1792
- resp = Aws::Plugins::UserAgent.feature('resource') do
2049
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
1793
2050
  @client.create_multipart_upload(options)
1794
2051
  end
1795
2052
  MultipartUpload.new(
@@ -1812,21 +2069,25 @@ module Aws::S3
1812
2069
  # content_length: 1,
1813
2070
  # content_md5: "ContentMD5",
1814
2071
  # content_type: "ContentType",
1815
- # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256
2072
+ # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256, CRC64NVME
1816
2073
  # checksum_crc32: "ChecksumCRC32",
1817
2074
  # checksum_crc32c: "ChecksumCRC32C",
2075
+ # checksum_crc64nvme: "ChecksumCRC64NVME",
1818
2076
  # checksum_sha1: "ChecksumSHA1",
1819
2077
  # checksum_sha256: "ChecksumSHA256",
1820
2078
  # expires: Time.now,
2079
+ # if_match: "IfMatch",
2080
+ # if_none_match: "IfNoneMatch",
1821
2081
  # grant_full_control: "GrantFullControl",
1822
2082
  # grant_read: "GrantRead",
1823
2083
  # grant_read_acp: "GrantReadACP",
1824
2084
  # grant_write_acp: "GrantWriteACP",
2085
+ # write_offset_bytes: 1,
1825
2086
  # metadata: {
1826
2087
  # "MetadataKey" => "MetadataValue",
1827
2088
  # },
1828
- # server_side_encryption: "AES256", # accepts AES256, aws:kms, aws:kms:dsse
1829
- # 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
1830
2091
  # website_redirect_location: "WebsiteRedirectLocation",
1831
2092
  # sse_customer_algorithm: "SSECustomerAlgorithm",
1832
2093
  # sse_customer_key: "SSECustomerKey",
@@ -1917,7 +2178,7 @@ module Aws::S3
1917
2178
  #
1918
2179
  # [1]: https://www.rfc-editor.org/rfc/rfc9110.html#name-content-length
1919
2180
  # @option options [String] :content_md5
1920
- # 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
1921
2182
  # headers) according to RFC 1864. This header can be used as a message
1922
2183
  # integrity check to verify that the data is the same data that was
1923
2184
  # originally sent. Although it is optional, we recommend using the
@@ -1925,10 +2186,11 @@ module Aws::S3
1925
2186
  # information about REST request authentication, see [REST
1926
2187
  # Authentication][1].
1927
2188
  #
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*.
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*.
1932
2194
  #
1933
2195
  # </note>
1934
2196
  #
@@ -1939,7 +2201,7 @@ module Aws::S3
1939
2201
  #
1940
2202
  #
1941
2203
  # [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
2204
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-managing.html#object-lock-put-object
1943
2205
  # @option options [String] :content_type
1944
2206
  # A standard MIME type describing the format of the contents. For more
1945
2207
  # information, see
@@ -1959,37 +2221,45 @@ module Aws::S3
1959
2221
  # For the `x-amz-checksum-algorithm ` header, replace ` algorithm ` with
1960
2222
  # the supported algorithm from the following list:
1961
2223
  #
1962
- # * CRC32
2224
+ # * `CRC32`
2225
+ #
2226
+ # * `CRC32C`
1963
2227
  #
1964
- # * CRC32C
2228
+ # * `CRC64NVME`
1965
2229
  #
1966
- # * SHA1
2230
+ # * `SHA1`
1967
2231
  #
1968
- # * SHA256
2232
+ # * `SHA256`
1969
2233
  #
1970
2234
  # For more information, see [Checking object integrity][1] in the
1971
2235
  # *Amazon S3 User Guide*.
1972
2236
  #
1973
2237
  # If the individual checksum value you provide through
1974
2238
  # `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 `.
2239
+ # set through `x-amz-sdk-checksum-algorithm`, Amazon S3 fails the
2240
+ # request with a `BadDigest` error.
1978
2241
  #
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.
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*.
1981
2247
  #
1982
2248
  # </note>
1983
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
+ #
1984
2253
  #
1985
2254
  #
1986
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
1987
2257
  # @option options [String] :checksum_crc32
1988
2258
  # This header can be used as a data integrity check to verify that the
1989
2259
  # 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*.
2260
+ # specifies the Base64 encoded, 32-bit `CRC32` checksum of the object.
2261
+ # For more information, see [Checking object integrity][1] in the
2262
+ # *Amazon S3 User Guide*.
1993
2263
  #
1994
2264
  #
1995
2265
  #
@@ -1997,17 +2267,28 @@ module Aws::S3
1997
2267
  # @option options [String] :checksum_crc32c
1998
2268
  # This header can be used as a data integrity check to verify that the
1999
2269
  # data received is the same data that was originally sent. This header
2000
- # specifies the base64-encoded, 32-bit CRC32C checksum of the object.
2270
+ # specifies the Base64 encoded, 32-bit `CRC32C` checksum of the object.
2001
2271
  # For more information, see [Checking object integrity][1] in the
2002
2272
  # *Amazon S3 User Guide*.
2003
2273
  #
2004
2274
  #
2005
2275
  #
2006
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
2007
2288
  # @option options [String] :checksum_sha1
2008
2289
  # This header can be used as a data integrity check to verify that the
2009
2290
  # 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
2291
+ # specifies the Base64 encoded, 160-bit `SHA1` digest of the object. For
2011
2292
  # more information, see [Checking object integrity][1] in the *Amazon S3
2012
2293
  # User Guide*.
2013
2294
  #
@@ -2017,7 +2298,7 @@ module Aws::S3
2017
2298
  # @option options [String] :checksum_sha256
2018
2299
  # This header can be used as a data integrity check to verify that the
2019
2300
  # 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.
2301
+ # specifies the Base64 encoded, 256-bit `SHA256` digest of the object.
2021
2302
  # For more information, see [Checking object integrity][1] in the
2022
2303
  # *Amazon S3 User Guide*.
2023
2304
  #
@@ -2032,6 +2313,43 @@ module Aws::S3
2032
2313
  #
2033
2314
  #
2034
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
2335
+ # @option options [String] :if_none_match
2336
+ # Uploads the object only if the object key name does not already exist
2337
+ # in the bucket specified. Otherwise, Amazon S3 returns a `412
2338
+ # Precondition Failed` error.
2339
+ #
2340
+ # If a conflicting operation occurs during the upload S3 returns a `409
2341
+ # ConditionalRequestConflict` response. On a 409 failure you should
2342
+ # retry the upload.
2343
+ #
2344
+ # Expects the '*' (asterisk) character.
2345
+ #
2346
+ # For more information about conditional requests, see [RFC 7232][1], or
2347
+ # [Conditional requests][2] in the *Amazon S3 User Guide*.
2348
+ #
2349
+ #
2350
+ #
2351
+ # [1]: https://tools.ietf.org/html/rfc7232
2352
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/conditional-requests.html
2035
2353
  # @option options [String] :grant_full_control
2036
2354
  # Gives the grantee READ, READ\_ACP, and WRITE\_ACP permissions on the
2037
2355
  # object.
@@ -2065,32 +2383,89 @@ module Aws::S3
2065
2383
  # * This functionality is not supported for Amazon S3 on Outposts.
2066
2384
  #
2067
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>
2068
2396
  # @option options [Hash<String,String>] :metadata
2069
2397
  # A map of metadata to store with the object in S3.
2070
2398
  # @option options [String] :server_side_encryption
2071
2399
  # The server-side encryption algorithm that was used when you store this
2072
- # object in Amazon S3 (for example, `AES256`, `aws:kms`,
2073
- # `aws:kms:dsse`).
2074
- #
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*.
2400
+ # object in Amazon S3 or Amazon FSx.
2401
+ #
2402
+ # * <b>General purpose buckets </b> - You have four mutually exclusive
2403
+ # options to protect data using server-side encryption in Amazon S3,
2404
+ # depending on how you choose to manage the encryption keys.
2405
+ # Specifically, the encryption key options are Amazon S3 managed keys
2406
+ # (SSE-S3), Amazon Web Services KMS keys (SSE-KMS or DSSE-KMS), and
2407
+ # customer-provided keys (SSE-C). Amazon S3 encrypts data with
2408
+ # server-side encryption by using Amazon S3 managed keys (SSE-S3) by
2409
+ # default. You can optionally tell Amazon S3 to encrypt data at rest
2410
+ # by using server-side encryption with other key options. For more
2411
+ # information, see [Using Server-Side Encryption][1] in the *Amazon S3
2412
+ # User Guide*.
2413
+ #
2414
+ # * <b>Directory buckets </b> - For directory buckets, there are only
2415
+ # two supported options for server-side encryption: server-side
2416
+ # encryption with Amazon S3 managed keys (SSE-S3) (`AES256`) and
2417
+ # server-side encryption with KMS keys (SSE-KMS) (`aws:kms`). We
2418
+ # recommend that the bucket's default encryption uses the desired
2419
+ # encryption configuration and you don't override the bucket default
2420
+ # encryption in your `CreateSession` requests or `PUT` object
2421
+ # requests. Then, new objects are automatically encrypted with the
2422
+ # desired encryption settings. For more information, see [Protecting
2423
+ # data with server-side encryption][2] in the *Amazon S3 User Guide*.
2424
+ # For more information about the encryption overriding behaviors in
2425
+ # directory buckets, see [Specifying server-side encryption with KMS
2426
+ # for new object uploads][3].
2427
+ #
2428
+ # In the Zonal endpoint API calls (except [CopyObject][4] and
2429
+ # [UploadPartCopy][5]) using the REST API, the encryption request
2430
+ # headers must match the encryption settings that are specified in the
2431
+ # `CreateSession` request. You can't override the values of the
2432
+ # encryption settings (`x-amz-server-side-encryption`,
2433
+ # `x-amz-server-side-encryption-aws-kms-key-id`,
2434
+ # `x-amz-server-side-encryption-context`, and
2435
+ # `x-amz-server-side-encryption-bucket-key-enabled`) that are
2436
+ # specified in the `CreateSession` request. You don't need to
2437
+ # explicitly specify these encryption settings values in Zonal
2438
+ # endpoint API calls, and Amazon S3 will use the encryption settings
2439
+ # values from the `CreateSession` request to protect new objects in
2440
+ # the directory bucket.
2441
+ #
2442
+ # <note markdown="1"> When you use the CLI or the Amazon Web Services SDKs, for
2443
+ # `CreateSession`, the session token refreshes automatically to avoid
2444
+ # service interruptions when a session expires. The CLI or the Amazon
2445
+ # Web Services SDKs use the bucket's default encryption configuration
2446
+ # for the `CreateSession` request. It's not supported to override the
2447
+ # encryption settings values in the `CreateSession` request. So in the
2448
+ # Zonal endpoint API calls (except [CopyObject][4] and
2449
+ # [UploadPartCopy][5]), the encryption request headers must match the
2450
+ # default encryption configuration of the directory bucket.
2086
2451
  #
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.
2452
+ # </note>
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.
2090
2461
  #
2091
2462
  #
2092
2463
  #
2093
2464
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html
2465
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html
2466
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html
2467
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
2468
+ # [5]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
2094
2469
  # @option options [String] :storage_class
2095
2470
  # By default, Amazon S3 uses the STANDARD Storage Class to store newly
2096
2471
  # created objects. The STANDARD storage class provides high durability
@@ -2098,8 +2473,9 @@ module Aws::S3
2098
2473
  # a different Storage Class. For more information, see [Storage
2099
2474
  # Classes][1] in the *Amazon S3 User Guide*.
2100
2475
  #
2101
- # <note markdown="1"> * For directory buckets, only the S3 Express One Zone storage class is
2102
- # 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.
2103
2479
  #
2104
2480
  # * Amazon S3 on Outposts only uses the OUTPOSTS Storage Class.
2105
2481
  #
@@ -2164,44 +2540,83 @@ module Aws::S3
2164
2540
  #
2165
2541
  # </note>
2166
2542
  # @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.
2543
+ # Specifies the KMS key ID (Key ID, Key ARN, or Key Alias) to use for
2544
+ # object encryption. If the KMS key doesn't exist in the same account
2545
+ # that's issuing the command, you must use the full Key ARN not the Key
2546
+ # ID.
2547
+ #
2548
+ # **General purpose buckets** - If you specify
2549
+ # `x-amz-server-side-encryption` with `aws:kms` or `aws:kms:dsse`, this
2550
+ # header specifies the ID (Key ID, Key ARN, or Key Alias) of the KMS key
2551
+ # to use. If you specify `x-amz-server-side-encryption:aws:kms` or
2552
+ # `x-amz-server-side-encryption:aws:kms:dsse`, but do not provide
2553
+ # `x-amz-server-side-encryption-aws-kms-key-id`, Amazon S3 uses the
2554
+ # Amazon Web Services managed key (`aws/s3`) to protect the data.
2555
+ #
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.
2567
+ #
2568
+ #
2569
+ #
2570
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk
2571
+ # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk
2572
+ # @option options [String] :ssekms_encryption_context
2573
+ # Specifies the Amazon Web Services KMS Encryption Context as an
2574
+ # additional encryption context to use for object encryption. The value
2575
+ # of this header is a Base64 encoded string of a UTF-8 encoded JSON,
2576
+ # which contains the encryption context as key-value pairs. This value
2577
+ # is stored as object metadata and automatically gets passed on to
2578
+ # Amazon Web Services KMS for future `GetObject` operations on this
2579
+ # object.
2177
2580
  #
2178
- # <note markdown="1"> This functionality is not supported for directory buckets.
2581
+ # **General purpose buckets** - This value must be explicitly added
2582
+ # during `CopyObject` operations if you want an additional encryption
2583
+ # context for your object. For more information, see [Encryption
2584
+ # context][1] in the *Amazon S3 User Guide*.
2179
2585
  #
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.
2586
+ # **Directory buckets** - You can optionally provide an explicit
2587
+ # encryption context value. The value must match the default encryption
2588
+ # context - the bucket Amazon Resource Name (ARN). An additional
2589
+ # encryption context value is not supported.
2189
2590
  #
2190
- # <note markdown="1"> This functionality is not supported for directory buckets.
2191
2591
  #
2192
- # </note>
2592
+ #
2593
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html#encryption-context
2193
2594
  # @option options [Boolean] :bucket_key_enabled
2194
2595
  # Specifies whether Amazon S3 should use an S3 Bucket Key for object
2195
2596
  # 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.
2597
+ # (KMS) keys (SSE-KMS).
2198
2598
  #
2199
- # Specifying this header with a PUT action doesn’t affect bucket-level
2200
- # settings for S3 Bucket Key.
2599
+ # **General purpose buckets** - Setting this header to `true` causes
2600
+ # Amazon S3 to use an S3 Bucket Key for object encryption with SSE-KMS.
2601
+ # Also, specifying this header with a PUT action doesn't affect
2602
+ # bucket-level settings for S3 Bucket Key.
2201
2603
  #
2202
- # <note markdown="1"> This functionality is not supported for directory buckets.
2604
+ # **Directory buckets** - S3 Bucket Keys are always enabled for `GET`
2605
+ # and `PUT` operations in a directory bucket and can’t be disabled. S3
2606
+ # Bucket Keys aren't supported, when you copy SSE-KMS encrypted objects
2607
+ # from general purpose buckets to directory buckets, from directory
2608
+ # buckets to general purpose buckets, or between directory buckets,
2609
+ # through [CopyObject][1], [UploadPartCopy][2], [the Copy operation in
2610
+ # Batch Operations][3], or [the import jobs][4]. In this case, Amazon S3
2611
+ # makes a call to KMS every time a copy request is made for a
2612
+ # KMS-encrypted object.
2203
2613
  #
2204
- # </note>
2614
+ #
2615
+ #
2616
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
2617
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
2618
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-buckets-objects-Batch-Ops
2619
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-import-job
2205
2620
  # @option options [String] :request_payer
2206
2621
  # Confirms that the requester knows that they will be charged for the
2207
2622
  # request. Bucket owners need not specify this parameter in their
@@ -2260,7 +2675,7 @@ module Aws::S3
2260
2675
  bucket: @bucket_name,
2261
2676
  key: @key
2262
2677
  )
2263
- resp = Aws::Plugins::UserAgent.feature('resource') do
2678
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
2264
2679
  @client.put_object(options)
2265
2680
  end
2266
2681
  resp.data
@@ -2316,7 +2731,7 @@ module Aws::S3
2316
2731
  # bucket_name: "BucketName", # required
2317
2732
  # prefix: "LocationPrefix", # required
2318
2733
  # encryption: {
2319
- # 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
2320
2735
  # kms_key_id: "SSEKMSKeyId",
2321
2736
  # kms_context: "KMSContext",
2322
2737
  # },
@@ -2347,12 +2762,12 @@ module Aws::S3
2347
2762
  # value: "MetadataValue",
2348
2763
  # },
2349
2764
  # ],
2350
- # 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
2351
2766
  # },
2352
2767
  # },
2353
2768
  # },
2354
2769
  # request_payer: "requester", # accepts requester
2355
- # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256
2770
+ # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256, CRC64NVME
2356
2771
  # expected_bucket_owner: "AccountId",
2357
2772
  # })
2358
2773
  # @param [Hash] options ({})
@@ -2401,7 +2816,7 @@ module Aws::S3
2401
2816
  bucket: @bucket_name,
2402
2817
  key: @key
2403
2818
  )
2404
- resp = Aws::Plugins::UserAgent.feature('resource') do
2819
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
2405
2820
  @client.restore_object(options)
2406
2821
  end
2407
2822
  resp.data
@@ -2529,7 +2944,7 @@ module Aws::S3
2529
2944
  # request_payer: "requester", # accepts requester
2530
2945
  # bypass_governance_retention: false,
2531
2946
  # expected_bucket_owner: "AccountId",
2532
- # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256
2947
+ # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256, CRC64NVME
2533
2948
  # })
2534
2949
  # @param options ({})
2535
2950
  # @option options [String] :mfa
@@ -2593,22 +3008,23 @@ module Aws::S3
2593
3008
  # For the `x-amz-checksum-algorithm ` header, replace ` algorithm ` with
2594
3009
  # the supported algorithm from the following list:
2595
3010
  #
2596
- # * CRC32
3011
+ # * `CRC32`
2597
3012
  #
2598
- # * CRC32C
3013
+ # * `CRC32C`
2599
3014
  #
2600
- # * SHA1
3015
+ # * `CRC64NVME`
2601
3016
  #
2602
- # * SHA256
3017
+ # * `SHA1`
3018
+ #
3019
+ # * `SHA256`
2603
3020
  #
2604
3021
  # For more information, see [Checking object integrity][1] in the
2605
3022
  # *Amazon S3 User Guide*.
2606
3023
  #
2607
3024
  # If the individual checksum value you provide through
2608
3025
  # `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 `.
3026
+ # set through `x-amz-sdk-checksum-algorithm`, Amazon S3 fails the
3027
+ # request with a `BadDigest` error.
2612
3028
  #
2613
3029
  # If you provide an individual checksum, Amazon S3 ignores any provided
2614
3030
  # `ChecksumAlgorithm` parameter.
@@ -2628,7 +3044,7 @@ module Aws::S3
2628
3044
  key: item.key
2629
3045
  }
2630
3046
  end
2631
- Aws::Plugins::UserAgent.feature('resource') do
3047
+ Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
2632
3048
  batch[0].client.delete_objects(params)
2633
3049
  end
2634
3050
  end
@@ -2640,3 +3056,6 @@ module Aws::S3
2640
3056
  end
2641
3057
  end
2642
3058
  end
3059
+
3060
+ # Load customizations if they exist
3061
+ require 'aws-sdk-s3/customizations/object_summary'