aws-sdk-s3 1.150.0 → 1.169.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +110 -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 +252 -88
  6. data/lib/aws-sdk-s3/bucket_acl.rb +3 -3
  7. data/lib/aws-sdk-s3/bucket_cors.rb +4 -4
  8. data/lib/aws-sdk-s3/bucket_lifecycle.rb +4 -4
  9. data/lib/aws-sdk-s3/bucket_lifecycle_configuration.rb +42 -5
  10. data/lib/aws-sdk-s3/bucket_logging.rb +3 -3
  11. data/lib/aws-sdk-s3/bucket_notification.rb +3 -3
  12. data/lib/aws-sdk-s3/bucket_policy.rb +8 -8
  13. data/lib/aws-sdk-s3/bucket_request_payment.rb +3 -3
  14. data/lib/aws-sdk-s3/bucket_tagging.rb +4 -4
  15. data/lib/aws-sdk-s3/bucket_versioning.rb +5 -5
  16. data/lib/aws-sdk-s3/bucket_website.rb +4 -4
  17. data/lib/aws-sdk-s3/client.rb +1685 -668
  18. data/lib/aws-sdk-s3/client_api.rb +49 -4
  19. data/lib/aws-sdk-s3/customizations/bucket.rb +1 -1
  20. data/lib/aws-sdk-s3/customizations/object.rb +11 -5
  21. data/lib/aws-sdk-s3/customizations/object_summary.rb +5 -0
  22. data/lib/aws-sdk-s3/customizations/object_version.rb +13 -0
  23. data/lib/aws-sdk-s3/customizations.rb +24 -38
  24. data/lib/aws-sdk-s3/encryption/client.rb +2 -2
  25. data/lib/aws-sdk-s3/encryption/kms_cipher_provider.rb +2 -2
  26. data/lib/aws-sdk-s3/encryptionV2/client.rb +2 -2
  27. data/lib/aws-sdk-s3/encryptionV2/kms_cipher_provider.rb +2 -2
  28. data/lib/aws-sdk-s3/endpoint_parameters.rb +21 -18
  29. data/lib/aws-sdk-s3/endpoint_provider.rb +1 -0
  30. data/lib/aws-sdk-s3/endpoints.rb +416 -1614
  31. data/lib/aws-sdk-s3/errors.rb +3 -0
  32. data/lib/aws-sdk-s3/file_downloader.rb +1 -1
  33. data/lib/aws-sdk-s3/file_uploader.rb +1 -1
  34. data/lib/aws-sdk-s3/multipart_stream_uploader.rb +1 -1
  35. data/lib/aws-sdk-s3/multipart_upload.rb +31 -8
  36. data/lib/aws-sdk-s3/multipart_upload_part.rb +11 -11
  37. data/lib/aws-sdk-s3/object.rb +441 -158
  38. data/lib/aws-sdk-s3/object_acl.rb +3 -3
  39. data/lib/aws-sdk-s3/object_copier.rb +1 -1
  40. data/lib/aws-sdk-s3/object_summary.rb +403 -134
  41. data/lib/aws-sdk-s3/object_version.rb +53 -13
  42. data/lib/aws-sdk-s3/plugins/access_grants.rb +75 -5
  43. data/lib/aws-sdk-s3/plugins/endpoints.rb +24 -212
  44. data/lib/aws-sdk-s3/plugins/express_session_auth.rb +7 -1
  45. data/lib/aws-sdk-s3/plugins/http_200_errors.rb +53 -16
  46. data/lib/aws-sdk-s3/resource.rb +37 -11
  47. data/lib/aws-sdk-s3/types.rb +1106 -401
  48. data/lib/aws-sdk-s3.rb +35 -31
  49. data/sig/bucket.rbs +4 -0
  50. data/sig/bucket_lifecycle_configuration.rbs +7 -3
  51. data/sig/client.rbs +49 -5
  52. data/sig/multipart_upload.rbs +1 -0
  53. data/sig/object.rbs +7 -0
  54. data/sig/object_summary.rbs +1 -0
  55. data/sig/object_version.rbs +6 -0
  56. data/sig/resource.rbs +7 -1
  57. data/sig/types.rbs +36 -2
  58. data/sig/waiters.rbs +12 -0
  59. metadata +7 -6
@@ -32,6 +32,7 @@ require 'aws-sdk-core/plugins/checksum_algorithm.rb'
32
32
  require 'aws-sdk-core/plugins/request_compression.rb'
33
33
  require 'aws-sdk-core/plugins/defaults_mode.rb'
34
34
  require 'aws-sdk-core/plugins/recursion_detection.rb'
35
+ require 'aws-sdk-core/plugins/telemetry.rb'
35
36
  require 'aws-sdk-core/plugins/sign.rb'
36
37
  require 'aws-sdk-core/plugins/protocols/rest_xml.rb'
37
38
  require 'aws-sdk-s3/plugins/accelerate.rb'
@@ -56,8 +57,6 @@ require 'aws-sdk-s3/plugins/streaming_retry.rb'
56
57
  require 'aws-sdk-s3/plugins/url_encoded_keys.rb'
57
58
  require 'aws-sdk-core/plugins/event_stream_configuration.rb'
58
59
 
59
- Aws::Plugins::GlobalConfiguration.add_identifier(:s3)
60
-
61
60
  module Aws::S3
62
61
  # An API client for S3. To construct a client, you need to configure a `:region` and `:credentials`.
63
62
  #
@@ -104,6 +103,7 @@ module Aws::S3
104
103
  add_plugin(Aws::Plugins::RequestCompression)
105
104
  add_plugin(Aws::Plugins::DefaultsMode)
106
105
  add_plugin(Aws::Plugins::RecursionDetection)
106
+ add_plugin(Aws::Plugins::Telemetry)
107
107
  add_plugin(Aws::Plugins::Sign)
108
108
  add_plugin(Aws::Plugins::Protocols::RestXml)
109
109
  add_plugin(Aws::S3::Plugins::Accelerate)
@@ -131,6 +131,11 @@ module Aws::S3
131
131
 
132
132
  # @overload initialize(options)
133
133
  # @param [Hash] options
134
+ #
135
+ # @option options [Array<Seahorse::Client::Plugin>] :plugins ([]])
136
+ # A list of plugins to apply to the client. Each plugin is either a
137
+ # class name or an instance of a plugin class.
138
+ #
134
139
  # @option options [required, Aws::CredentialProvider] :credentials
135
140
  # Your AWS credentials. This can be an instance of any one of the
136
141
  # following classes:
@@ -165,13 +170,15 @@ module Aws::S3
165
170
  # locations will be searched for credentials:
166
171
  #
167
172
  # * `Aws.config[:credentials]`
168
- # * The `:access_key_id`, `:secret_access_key`, and `:session_token` options.
169
- # * ENV['AWS_ACCESS_KEY_ID'], ENV['AWS_SECRET_ACCESS_KEY']
173
+ # * The `:access_key_id`, `:secret_access_key`, `:session_token`, and
174
+ # `:account_id` options.
175
+ # * ENV['AWS_ACCESS_KEY_ID'], ENV['AWS_SECRET_ACCESS_KEY'],
176
+ # ENV['AWS_SESSION_TOKEN'], and ENV['AWS_ACCOUNT_ID']
170
177
  # * `~/.aws/credentials`
171
178
  # * `~/.aws/config`
172
179
  # * EC2/ECS IMDS instance profile - When used by default, the timeouts
173
180
  # are very aggressive. Construct and pass an instance of
174
- # `Aws::InstanceProfileCredentails` or `Aws::ECSCredentials` to
181
+ # `Aws::InstanceProfileCredentials` or `Aws::ECSCredentials` to
175
182
  # enable retries and extended timeouts. Instance profile credential
176
183
  # fetching can be disabled by setting ENV['AWS_EC2_METADATA_DISABLED']
177
184
  # to true.
@@ -200,6 +207,8 @@ module Aws::S3
200
207
  #
201
208
  # @option options [String] :access_key_id
202
209
  #
210
+ # @option options [String] :account_id
211
+ #
203
212
  # @option options [Boolean] :active_endpoint_cache (false)
204
213
  # When set to `true`, a thread polling for endpoints will be running in
205
214
  # the background every 60 secs (default). Defaults to `false`.
@@ -271,7 +280,6 @@ module Aws::S3
271
280
  # 'https://example.com'
272
281
  # 'http://example.com:123'
273
282
  #
274
- #
275
283
  # @option options [Integer] :endpoint_cache_max_entries (1000)
276
284
  # Used for the maximum size limit of the LRU cache storing endpoints data
277
285
  # for endpoint discovery enabled operations. Defaults to 1000.
@@ -386,7 +394,6 @@ module Aws::S3
386
394
  # throttling. This is a provisional mode that may change behavior
387
395
  # in the future.
388
396
  #
389
- #
390
397
  # @option options [Boolean] :s3_disable_multiregion_access_points (false)
391
398
  # When set to `false` this will option will raise errors when multi-region
392
399
  # access point ARNs are used. Multi-region access points can potentially
@@ -411,6 +418,15 @@ module Aws::S3
411
418
  #
412
419
  # @option options [String] :session_token
413
420
  #
421
+ # @option options [Array] :sigv4a_signing_region_set
422
+ # A list of regions that should be signed with SigV4a signing. When
423
+ # not passed, a default `:sigv4a_signing_region_set` is searched for
424
+ # in the following locations:
425
+ #
426
+ # * `Aws.config[:sigv4a_signing_region_set]`
427
+ # * `ENV['AWS_SIGV4A_SIGNING_REGION_SET']`
428
+ # * `~/.aws/config`
429
+ #
414
430
  # @option options [Boolean] :stub_responses (false)
415
431
  # Causes the client to return stubbed responses. By default
416
432
  # fake responses are generated and returned. You can specify
@@ -420,6 +436,16 @@ module Aws::S3
420
436
  # ** Please note ** When response stubbing is enabled, no HTTP
421
437
  # requests are made, and retries are disabled.
422
438
  #
439
+ # @option options [Aws::Telemetry::TelemetryProviderBase] :telemetry_provider (Aws::Telemetry::NoOpTelemetryProvider)
440
+ # Allows you to provide a telemetry provider, which is used to
441
+ # emit telemetry data. By default, uses `NoOpTelemetryProvider` which
442
+ # will not record or emit any telemetry data. The SDK supports the
443
+ # following telemetry providers:
444
+ #
445
+ # * OpenTelemetry (OTel) - To use the OTel provider, install and require the
446
+ # `opentelemetry-sdk` gem and then, pass in an instance of a
447
+ # `Aws::Telemetry::OTelProvider` for telemetry provider.
448
+ #
423
449
  # @option options [Aws::TokenProvider] :token_provider
424
450
  # A Bearer Token Provider. This can be an instance of any one of the
425
451
  # following classes:
@@ -452,7 +478,9 @@ module Aws::S3
452
478
  # sending the request.
453
479
  #
454
480
  # @option options [Aws::S3::EndpointProvider] :endpoint_provider
455
- # The endpoint provider used to resolve endpoints. Any object that responds to `#resolve_endpoint(parameters)` where `parameters` is a Struct similar to `Aws::S3::EndpointParameters`
481
+ # The endpoint provider used to resolve endpoints. Any object that responds to
482
+ # `#resolve_endpoint(parameters)` where `parameters` is a Struct similar to
483
+ # `Aws::S3::EndpointParameters`.
456
484
  #
457
485
  # @option options [Float] :http_continue_timeout (1)
458
486
  # The number of seconds to wait for a 100-continue response before sending the
@@ -508,6 +536,12 @@ module Aws::S3
508
536
  # @option options [String] :ssl_ca_store
509
537
  # Sets the X509::Store to verify peer certificate.
510
538
  #
539
+ # @option options [OpenSSL::X509::Certificate] :ssl_cert
540
+ # Sets a client certificate when creating http connections.
541
+ #
542
+ # @option options [OpenSSL::PKey] :ssl_key
543
+ # Sets a client key when creating http connections.
544
+ #
511
545
  # @option options [Float] :ssl_timeout
512
546
  # Sets the SSL timeout in seconds
513
547
  #
@@ -532,12 +566,20 @@ module Aws::S3
532
566
  # for the part storage, you should call the [ListParts][1] API operation
533
567
  # and ensure that the parts list is empty.
534
568
  #
535
- # <note markdown="1"> **Directory buckets** - For directory buckets, you must make requests
536
- # for this API operation to the Zonal endpoint. These endpoints support
537
- # virtual-hosted-style requests in the format
538
- # `https://bucket_name.s3express-az_id.region.amazonaws.com/key-name `.
539
- # Path-style requests are not supported. For more information, see
540
- # [Regional and Zonal endpoints][2] in the *Amazon S3 User Guide*.
569
+ # <note markdown="1"> * **Directory buckets** - If multipart uploads in a directory bucket
570
+ # are in progress, you can't delete the bucket until all the
571
+ # in-progress multipart uploads are aborted or completed. To delete
572
+ # these in-progress multipart uploads, use the `ListMultipartUploads`
573
+ # operation to list the in-progress multipart uploads in the bucket
574
+ # and use the `AbortMultupartUpload` operation to abort all the
575
+ # in-progress multipart uploads.
576
+ #
577
+ # * **Directory buckets** - For directory buckets, you must make
578
+ # requests for this API operation to the Zonal endpoint. These
579
+ # endpoints support virtual-hosted-style requests in the format
580
+ # `https://bucket_name.s3express-az_id.region.amazonaws.com/key-name
581
+ # `. Path-style requests are not supported. For more information, see
582
+ # [Regional and Zonal endpoints][2] in the *Amazon S3 User Guide*.
541
583
  #
542
584
  # </note>
543
585
  #
@@ -762,9 +804,15 @@ module Aws::S3
762
804
  # [Multipart Upload and Permissions][6] in the *Amazon S3 User
763
805
  # Guide*.
764
806
  #
807
+ # If you provide an [additional checksum value][7] in your
808
+ # `MultipartUpload` requests and the object is encrypted with Key
809
+ # Management Service, you must have permission to use the
810
+ # `kms:Decrypt` action for the `CompleteMultipartUpload` request to
811
+ # succeed.
812
+ #
765
813
  # * **Directory bucket permissions** - To grant access to this API
766
814
  # operation on a directory bucket, we recommend that you use the [
767
- # `CreateSession` ][7] API operation for session-based
815
+ # `CreateSession` ][8] API operation for session-based
768
816
  # authorization. Specifically, you grant the
769
817
  # `s3express:CreateSession` permission to the directory bucket in a
770
818
  # bucket policy or an IAM identity-based policy. Then, you make the
@@ -775,7 +823,11 @@ module Aws::S3
775
823
  # token for use. Amazon Web Services CLI or SDKs create session and
776
824
  # refresh the session token automatically to avoid service
777
825
  # interruptions when a session expires. For more information about
778
- # authorization, see [ `CreateSession` ][7].
826
+ # authorization, see [ `CreateSession` ][8].
827
+ #
828
+ # If the object is encrypted with SSE-KMS, you must also have the
829
+ # `kms:GenerateDataKey` and `kms:Decrypt` permissions in IAM
830
+ # identity-based policies and KMS key policies for the KMS key.
779
831
  #
780
832
  # Special errors
781
833
  # : * Error Code: `EntityTooSmall`
@@ -816,15 +868,15 @@ module Aws::S3
816
868
  #
817
869
  # The following operations are related to `CompleteMultipartUpload`:
818
870
  #
819
- # * [CreateMultipartUpload][8]
871
+ # * [CreateMultipartUpload][9]
820
872
  #
821
873
  # * [UploadPart][1]
822
874
  #
823
- # * [AbortMultipartUpload][9]
875
+ # * [AbortMultipartUpload][10]
824
876
  #
825
- # * [ListParts][10]
877
+ # * [ListParts][11]
826
878
  #
827
- # * [ListMultipartUploads][11]
879
+ # * [ListMultipartUploads][12]
828
880
  #
829
881
  #
830
882
  #
@@ -834,11 +886,12 @@ module Aws::S3
834
886
  # [4]: https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html
835
887
  # [5]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-Regions-and-Zones.html
836
888
  # [6]: https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html
837
- # [7]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html
838
- # [8]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html
839
- # [9]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html
840
- # [10]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html
841
- # [11]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html
889
+ # [7]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_Checksum.html
890
+ # [8]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html
891
+ # [9]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html
892
+ # [10]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html
893
+ # [11]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html
894
+ # [12]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html
842
895
  #
843
896
  # @option params [required, String] :bucket
844
897
  # Name of the bucket to which the multipart upload was initiated.
@@ -896,9 +949,9 @@ module Aws::S3
896
949
  # @option params [String] :checksum_crc32
897
950
  # This header can be used as a data integrity check to verify that the
898
951
  # data received is the same data that was originally sent. This header
899
- # specifies the base64-encoded, 32-bit CRC32 checksum of the object. For
900
- # more information, see [Checking object integrity][1] in the *Amazon S3
901
- # User Guide*.
952
+ # specifies the base64-encoded, 32-bit CRC-32 checksum of the object.
953
+ # For more information, see [Checking object integrity][1] in the
954
+ # *Amazon S3 User Guide*.
902
955
  #
903
956
  #
904
957
  #
@@ -907,7 +960,7 @@ module Aws::S3
907
960
  # @option params [String] :checksum_crc32c
908
961
  # This header can be used as a data integrity check to verify that the
909
962
  # data received is the same data that was originally sent. This header
910
- # specifies the base64-encoded, 32-bit CRC32C checksum of the object.
963
+ # specifies the base64-encoded, 32-bit CRC-32C checksum of the object.
911
964
  # For more information, see [Checking object integrity][1] in the
912
965
  # *Amazon S3 User Guide*.
913
966
  #
@@ -959,6 +1012,26 @@ module Aws::S3
959
1012
  # you provide does not match the actual owner of the bucket, the request
960
1013
  # fails with the HTTP status code `403 Forbidden` (access denied).
961
1014
  #
1015
+ # @option params [String] :if_none_match
1016
+ # Uploads the object only if the object key name does not already exist
1017
+ # in the bucket specified. Otherwise, Amazon S3 returns a `412
1018
+ # Precondition Failed` error.
1019
+ #
1020
+ # If a conflicting operation occurs during the upload S3 returns a `409
1021
+ # ConditionalRequestConflict` response. On a 409 failure you should
1022
+ # re-initiate the multipart upload with `CreateMultipartUpload` and
1023
+ # re-upload each part.
1024
+ #
1025
+ # Expects the '*' (asterisk) character.
1026
+ #
1027
+ # For more information about conditional requests, see [RFC 7232][1], or
1028
+ # [Conditional requests][2] in the *Amazon S3 User Guide*.
1029
+ #
1030
+ #
1031
+ #
1032
+ # [1]: https://tools.ietf.org/html/rfc7232
1033
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/conditional-requests.html
1034
+ #
962
1035
  # @option params [String] :sse_customer_algorithm
963
1036
  # The server-side encryption (SSE) algorithm used to encrypt the object.
964
1037
  # This parameter is required only when the object was created using a
@@ -1074,6 +1147,7 @@ module Aws::S3
1074
1147
  # checksum_sha256: "ChecksumSHA256",
1075
1148
  # request_payer: "requester", # accepts requester
1076
1149
  # expected_bucket_owner: "AccountId",
1150
+ # if_none_match: "IfNoneMatch",
1077
1151
  # sse_customer_algorithm: "SSECustomerAlgorithm",
1078
1152
  # sse_customer_key: "SSECustomerKey",
1079
1153
  # sse_customer_key_md5: "SSECustomerKeyMD5",
@@ -1120,12 +1194,20 @@ module Aws::S3
1120
1194
  # between directory buckets, and between general purpose buckets and
1121
1195
  # directory buckets.
1122
1196
  #
1123
- # <note markdown="1"> <b>Directory buckets </b> - For directory buckets, you must make
1124
- # requests for this API operation to the Zonal endpoint. These endpoints
1125
- # support virtual-hosted-style requests in the format
1126
- # `https://bucket_name.s3express-az_id.region.amazonaws.com/key-name `.
1127
- # Path-style requests are not supported. For more information, see
1128
- # [Regional and Zonal endpoints][2] in the *Amazon S3 User Guide*.
1197
+ # <note markdown="1"> * Amazon S3 supports copy operations using Multi-Region Access Points
1198
+ # only as a destination when using the Multi-Region Access Point ARN.
1199
+ #
1200
+ # * <b>Directory buckets </b> - For directory buckets, you must make
1201
+ # requests for this API operation to the Zonal endpoint. These
1202
+ # endpoints support virtual-hosted-style requests in the format
1203
+ # `https://bucket_name.s3express-az_id.region.amazonaws.com/key-name
1204
+ # `. Path-style requests are not supported. For more information, see
1205
+ # [Regional and Zonal endpoints][2] in the *Amazon S3 User Guide*.
1206
+ #
1207
+ # * VPC endpoints don't support cross-Region requests (including
1208
+ # copies). If you're using VPC endpoints, your source and destination
1209
+ # buckets should be in the same Amazon Web Services Region as your VPC
1210
+ # endpoint.
1129
1211
  #
1130
1212
  # </note>
1131
1213
  #
@@ -1191,6 +1273,10 @@ module Aws::S3
1191
1273
  # destination. The `s3express:SessionMode` condition key can't be
1192
1274
  # set to `ReadOnly` on the copy destination bucket.
1193
1275
  #
1276
+ # If the object is encrypted with SSE-KMS, you must also have the
1277
+ # `kms:GenerateDataKey` and `kms:Decrypt` permissions in IAM
1278
+ # identity-based policies and KMS key policies for the KMS key.
1279
+ #
1194
1280
  # For example policies, see [Example bucket policies for S3 Express
1195
1281
  # One Zone][6] and [Amazon Web Services Identity and Access
1196
1282
  # Management (IAM) identity-based policies for S3 Express One
@@ -1201,8 +1287,7 @@ module Aws::S3
1201
1287
  # : When the request is an HTTP 1.1 request, the response is chunk
1202
1288
  # encoded. When the request is not an HTTP 1.1 request, the response
1203
1289
  # would not contain the `Content-Length`. You always need to read the
1204
- # entire response body to check if the copy succeeds. to keep the
1205
- # connection alive while we copy the data.
1290
+ # entire response body to check if the copy succeeds.
1206
1291
  #
1207
1292
  # * If the copy is successful, you receive a response with information
1208
1293
  # about the copied object.
@@ -1638,9 +1723,8 @@ module Aws::S3
1638
1723
  #
1639
1724
  # @option params [String] :server_side_encryption
1640
1725
  # The server-side encryption algorithm used when storing this object in
1641
- # Amazon S3 (for example, `AES256`, `aws:kms`, `aws:kms:dsse`).
1642
- # Unrecognized or unsupported values won’t write a destination object
1643
- # and will receive a `400 Bad Request` response.
1726
+ # Amazon S3. Unrecognized or unsupported values won’t write a
1727
+ # destination object and will receive a `400 Bad Request` response.
1644
1728
  #
1645
1729
  # Amazon S3 automatically encrypts all new objects that are copied to an
1646
1730
  # S3 bucket. When copying an object, if you don't specify encryption
@@ -1648,35 +1732,72 @@ module Aws::S3
1648
1732
  # object is set to the default encryption configuration of the
1649
1733
  # destination bucket. By default, all buckets have a base level of
1650
1734
  # encryption configuration that uses server-side encryption with Amazon
1651
- # S3 managed keys (SSE-S3). If the destination bucket has a default
1652
- # encryption configuration that uses server-side encryption with Key
1653
- # Management Service (KMS) keys (SSE-KMS), dual-layer server-side
1654
- # encryption with Amazon Web Services KMS keys (DSSE-KMS), or
1655
- # server-side encryption with customer-provided encryption keys (SSE-C),
1656
- # Amazon S3 uses the corresponding KMS key, or a customer-provided key
1657
- # to encrypt the target object copy.
1658
- #
1659
- # When you perform a `CopyObject` operation, if you want to use a
1660
- # different type of encryption setting for the target object, you can
1661
- # specify appropriate encryption-related headers to encrypt the target
1662
- # object with an Amazon S3 managed key, a KMS key, or a
1663
- # customer-provided key. If the encryption setting in your request is
1664
- # different from the default encryption configuration of the destination
1665
- # bucket, the encryption setting in your request takes precedence.
1735
+ # S3 managed keys (SSE-S3). If the destination bucket has a different
1736
+ # default encryption configuration, Amazon S3 uses the corresponding
1737
+ # encryption key to encrypt the target object copy.
1666
1738
  #
1667
1739
  # With server-side encryption, Amazon S3 encrypts your data as it writes
1668
1740
  # your data to disks in its data centers and decrypts the data when you
1669
1741
  # access it. For more information about server-side encryption, see
1670
1742
  # [Using Server-Side Encryption][1] in the *Amazon S3 User Guide*.
1671
1743
  #
1672
- # <note markdown="1"> For directory buckets, only server-side encryption with Amazon S3
1673
- # managed keys (SSE-S3) (`AES256`) is supported.
1674
- #
1675
- # </note>
1744
+ # <b>General purpose buckets </b>
1745
+ #
1746
+ # * For general purpose buckets, there are the following supported
1747
+ # options for server-side encryption: server-side encryption with Key
1748
+ # Management Service (KMS) keys (SSE-KMS), dual-layer server-side
1749
+ # encryption with Amazon Web Services KMS keys (DSSE-KMS), and
1750
+ # server-side encryption with customer-provided encryption keys
1751
+ # (SSE-C). Amazon S3 uses the corresponding KMS key, or a
1752
+ # customer-provided key to encrypt the target object copy.
1753
+ #
1754
+ # * When you perform a `CopyObject` operation, if you want to use a
1755
+ # different type of encryption setting for the target object, you can
1756
+ # specify appropriate encryption-related headers to encrypt the target
1757
+ # object with an Amazon S3 managed key, a KMS key, or a
1758
+ # customer-provided key. If the encryption setting in your request is
1759
+ # different from the default encryption configuration of the
1760
+ # destination bucket, the encryption setting in your request takes
1761
+ # precedence.
1762
+ #
1763
+ # <b>Directory buckets </b>
1764
+ #
1765
+ # * For directory buckets, there are only two supported options for
1766
+ # server-side encryption: server-side encryption with Amazon S3
1767
+ # managed keys (SSE-S3) (`AES256`) and server-side encryption with KMS
1768
+ # keys (SSE-KMS) (`aws:kms`). We recommend that the bucket's default
1769
+ # encryption uses the desired encryption configuration and you don't
1770
+ # override the bucket default encryption in your `CreateSession`
1771
+ # requests or `PUT` object requests. Then, new objects are
1772
+ # automatically encrypted with the desired encryption settings. For
1773
+ # more information, see [Protecting data with server-side
1774
+ # encryption][2] in the *Amazon S3 User Guide*. For more information
1775
+ # about the encryption overriding behaviors in directory buckets, see
1776
+ # [Specifying server-side encryption with KMS for new object
1777
+ # uploads][3].
1778
+ #
1779
+ # * To encrypt new object copies to a directory bucket with SSE-KMS, we
1780
+ # recommend you specify SSE-KMS as the directory bucket's default
1781
+ # encryption configuration with a KMS key (specifically, a [customer
1782
+ # managed key][4]). The [Amazon Web Services managed key][5]
1783
+ # (`aws/s3`) isn't supported. Your SSE-KMS configuration can only
1784
+ # support 1 [customer managed key][4] per directory bucket for the
1785
+ # lifetime of the bucket. After you specify a customer managed key for
1786
+ # SSE-KMS, you can't override the customer managed key for the
1787
+ # bucket's SSE-KMS configuration. Then, when you perform a
1788
+ # `CopyObject` operation and want to specify server-side encryption
1789
+ # settings for new object copies with SSE-KMS in the
1790
+ # encryption-related request headers, you must ensure the encryption
1791
+ # key is the same customer managed key that you specified for the
1792
+ # directory bucket's default encryption configuration.
1676
1793
  #
1677
1794
  #
1678
1795
  #
1679
1796
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html
1797
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html
1798
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html
1799
+ # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk
1800
+ # [5]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk
1680
1801
  #
1681
1802
  # @option params [String] :storage_class
1682
1803
  # If the `x-amz-storage-class` header is not used, the copied object
@@ -1773,33 +1894,56 @@ module Aws::S3
1773
1894
  # </note>
1774
1895
  #
1775
1896
  # @option params [String] :ssekms_key_id
1776
- # Specifies the KMS ID (Key ID, Key ARN, or Key Alias) to use for object
1777
- # encryption. All GET and PUT requests for an object protected by KMS
1778
- # will fail if they're not made via SSL or using SigV4. For information
1779
- # about configuring any of the officially supported Amazon Web Services
1780
- # SDKs and Amazon Web Services CLI, see [Specifying the Signature
1781
- # Version in Request Authentication][1] in the *Amazon S3 User Guide*.
1782
- #
1783
- # <note markdown="1"> This functionality is not supported when the destination bucket is a
1784
- # directory bucket.
1897
+ # Specifies the KMS key ID (Key ID, Key ARN, or Key Alias) to use for
1898
+ # object encryption. All GET and PUT requests for an object protected by
1899
+ # KMS will fail if they're not made via SSL or using SigV4. For
1900
+ # information about configuring any of the officially supported Amazon
1901
+ # Web Services SDKs and Amazon Web Services CLI, see [Specifying the
1902
+ # Signature Version in Request Authentication][1] in the *Amazon S3 User
1903
+ # Guide*.
1785
1904
  #
1786
- # </note>
1905
+ # **Directory buckets** - If you specify `x-amz-server-side-encryption`
1906
+ # with `aws:kms`, the ` x-amz-server-side-encryption-aws-kms-key-id`
1907
+ # header is implicitly assigned the ID of the KMS symmetric encryption
1908
+ # customer managed key that's configured for your directory bucket's
1909
+ # default encryption setting. If you want to specify the `
1910
+ # x-amz-server-side-encryption-aws-kms-key-id` header explicitly, you
1911
+ # can only specify it with the ID (Key ID or Key ARN) of the KMS
1912
+ # customer managed key that's configured for your directory bucket's
1913
+ # default encryption setting. Otherwise, you get an HTTP `400 Bad
1914
+ # Request` error. Only use the key ID or key ARN. The key alias format
1915
+ # of the KMS key isn't supported. Your SSE-KMS configuration can only
1916
+ # support 1 [customer managed key][2] per directory bucket for the
1917
+ # lifetime of the bucket. The [Amazon Web Services managed key][3]
1918
+ # (`aws/s3`) isn't supported.
1787
1919
  #
1788
1920
  #
1789
1921
  #
1790
1922
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version
1923
+ # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk
1924
+ # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk
1791
1925
  #
1792
1926
  # @option params [String] :ssekms_encryption_context
1793
- # Specifies the Amazon Web Services KMS Encryption Context to use for
1794
- # object encryption. The value of this header is a base64-encoded UTF-8
1795
- # string holding JSON with the encryption context key-value pairs. This
1796
- # value must be explicitly added to specify encryption context for
1797
- # `CopyObject` requests.
1927
+ # Specifies the Amazon Web Services KMS Encryption Context as an
1928
+ # additional encryption context to use for the destination object
1929
+ # encryption. The value of this header is a base64-encoded UTF-8 string
1930
+ # holding JSON with the encryption context key-value pairs.
1798
1931
  #
1799
- # <note markdown="1"> This functionality is not supported when the destination bucket is a
1800
- # directory bucket.
1932
+ # **General purpose buckets** - This value must be explicitly added to
1933
+ # specify encryption context for `CopyObject` requests if you want an
1934
+ # additional encryption context for your destination object. The
1935
+ # additional encryption context of the source object won't be copied to
1936
+ # the destination object. For more information, see [Encryption
1937
+ # context][1] in the *Amazon S3 User Guide*.
1801
1938
  #
1802
- # </note>
1939
+ # **Directory buckets** - You can optionally provide an explicit
1940
+ # encryption context value. The value must match the default encryption
1941
+ # context - the bucket Amazon Resource Name (ARN). An additional
1942
+ # encryption context value is not supported.
1943
+ #
1944
+ #
1945
+ #
1946
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html#encryption-context
1803
1947
  #
1804
1948
  # @option params [Boolean] :bucket_key_enabled
1805
1949
  # Specifies whether Amazon S3 should use an S3 Bucket Key for object
@@ -1814,14 +1958,19 @@ module Aws::S3
1814
1958
  # For more information, see [Amazon S3 Bucket Keys][1] in the *Amazon S3
1815
1959
  # User Guide*.
1816
1960
  #
1817
- # <note markdown="1"> This functionality is not supported when the destination bucket is a
1818
- # directory bucket.
1961
+ # <note markdown="1"> **Directory buckets** - S3 Bucket Keys aren't supported, when you
1962
+ # copy SSE-KMS encrypted objects from general purpose buckets to
1963
+ # directory buckets, from directory buckets to general purpose buckets,
1964
+ # or between directory buckets, through [CopyObject][2]. In this case,
1965
+ # Amazon S3 makes a call to KMS every time a copy request is made for a
1966
+ # KMS-encrypted object.
1819
1967
  #
1820
1968
  # </note>
1821
1969
  #
1822
1970
  #
1823
1971
  #
1824
1972
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html
1973
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
1825
1974
  #
1826
1975
  # @option params [String] :copy_source_sse_customer_algorithm
1827
1976
  # Specifies the algorithm to use when decrypting the source object (for
@@ -2328,33 +2477,33 @@ module Aws::S3
2328
2477
  # * {Types::CreateBucketOutput#location #location} => String
2329
2478
  #
2330
2479
  #
2331
- # @example Example: To create a bucket
2480
+ # @example Example: To create a bucket in a specific region
2332
2481
  #
2333
- # # The following example creates a bucket.
2482
+ # # The following example creates a bucket. The request specifies an AWS region where to create the bucket.
2334
2483
  #
2335
2484
  # resp = client.create_bucket({
2336
2485
  # bucket: "examplebucket",
2486
+ # create_bucket_configuration: {
2487
+ # location_constraint: "eu-west-1",
2488
+ # },
2337
2489
  # })
2338
2490
  #
2339
2491
  # resp.to_h outputs the following:
2340
2492
  # {
2341
- # location: "/examplebucket",
2493
+ # location: "http://examplebucket.<Region>.s3.amazonaws.com/",
2342
2494
  # }
2343
2495
  #
2344
- # @example Example: To create a bucket in a specific region
2496
+ # @example Example: To create a bucket
2345
2497
  #
2346
- # # The following example creates a bucket. The request specifies an AWS region where to create the bucket.
2498
+ # # The following example creates a bucket.
2347
2499
  #
2348
2500
  # resp = client.create_bucket({
2349
2501
  # bucket: "examplebucket",
2350
- # create_bucket_configuration: {
2351
- # location_constraint: "eu-west-1",
2352
- # },
2353
2502
  # })
2354
2503
  #
2355
2504
  # resp.to_h outputs the following:
2356
2505
  # {
2357
- # location: "http://examplebucket.<Region>.s3.amazonaws.com/",
2506
+ # location: "/examplebucket",
2358
2507
  # }
2359
2508
  #
2360
2509
  # @example Request syntax with placeholder values
@@ -2443,24 +2592,23 @@ module Aws::S3
2443
2592
  # Version 4)][5] in the *Amazon S3 User Guide*.
2444
2593
  #
2445
2594
  # Permissions
2446
- # : * **General purpose bucket permissions** - For information about the
2447
- # permissions required to use the multipart upload API, see
2448
- # [Multipart upload and permissions][6] in the *Amazon S3 User
2449
- # Guide*.
2450
- #
2451
- # To perform a multipart upload with encryption by using an Amazon
2452
- # Web Services KMS key, the requester must have permission to the
2453
- # `kms:Decrypt` and `kms:GenerateDataKey*` actions on the key. These
2454
- # permissions are required because Amazon S3 must decrypt and read
2455
- # data from the encrypted file parts before it completes the
2456
- # multipart upload. For more information, see [Multipart upload API
2457
- # and permissions][7] and [Protecting data using server-side
2458
- # encryption with Amazon Web Services KMS][8] in the *Amazon S3 User
2459
- # Guide*.
2595
+ # : * **General purpose bucket permissions** - To perform a multipart
2596
+ # upload with encryption using an Key Management Service (KMS) KMS
2597
+ # key, the requester must have permission to the `kms:Decrypt` and
2598
+ # `kms:GenerateDataKey` actions on the key. The requester must also
2599
+ # have permissions for the `kms:GenerateDataKey` action for the
2600
+ # `CreateMultipartUpload` API. Then, the requester needs permissions
2601
+ # for the `kms:Decrypt` action on the `UploadPart` and
2602
+ # `UploadPartCopy` APIs. These permissions are required because
2603
+ # Amazon S3 must decrypt and read data from the encrypted file parts
2604
+ # before it completes the multipart upload. For more information,
2605
+ # see [Multipart upload API and permissions][6] and [Protecting data
2606
+ # using server-side encryption with Amazon Web Services KMS][7] in
2607
+ # the *Amazon S3 User Guide*.
2460
2608
  #
2461
2609
  # * **Directory bucket permissions** - To grant access to this API
2462
2610
  # operation on a directory bucket, we recommend that you use the [
2463
- # `CreateSession` ][9] API operation for session-based
2611
+ # `CreateSession` ][8] API operation for session-based
2464
2612
  # authorization. Specifically, you grant the
2465
2613
  # `s3express:CreateSession` permission to the directory bucket in a
2466
2614
  # bucket policy or an IAM identity-based policy. Then, you make the
@@ -2471,7 +2619,7 @@ module Aws::S3
2471
2619
  # token for use. Amazon Web Services CLI or SDKs create session and
2472
2620
  # refresh the session token automatically to avoid service
2473
2621
  # interruptions when a session expires. For more information about
2474
- # authorization, see [ `CreateSession` ][9].
2622
+ # authorization, see [ `CreateSession` ][8].
2475
2623
  #
2476
2624
  # Encryption
2477
2625
  # : * **General purpose buckets** - Server-side encryption is for data
@@ -2498,7 +2646,7 @@ module Aws::S3
2498
2646
  # the destination bucket, the encryption setting in your request
2499
2647
  # takes precedence. If you choose to provide your own encryption
2500
2648
  # key, the request headers you provide in [UploadPart][1] and
2501
- # [UploadPartCopy][10] requests must match the headers you used in
2649
+ # [UploadPartCopy][9] requests must match the headers you used in
2502
2650
  # the `CreateMultipartUpload` request.
2503
2651
  #
2504
2652
  # * Use KMS keys (SSE-KMS) that include the Amazon Web Services
@@ -2524,9 +2672,9 @@ module Aws::S3
2524
2672
  # actions on the key. These permissions are required because
2525
2673
  # Amazon S3 must decrypt and read data from the encrypted file
2526
2674
  # parts before it completes the multipart upload. For more
2527
- # information, see [Multipart upload API and permissions][7] and
2675
+ # information, see [Multipart upload API and permissions][6] and
2528
2676
  # [Protecting data using server-side encryption with Amazon Web
2529
- # Services KMS][8] in the *Amazon S3 User Guide*.
2677
+ # Services KMS][7] in the *Amazon S3 User Guide*.
2530
2678
  #
2531
2679
  # * If your Identity and Access Management (IAM) user or role is
2532
2680
  # in the same Amazon Web Services account as the KMS key, then
@@ -2541,13 +2689,13 @@ module Aws::S3
2541
2689
  # For information about configuring any of the officially
2542
2690
  # supported Amazon Web Services SDKs and Amazon Web Services
2543
2691
  # CLI, see [Specifying the Signature Version in Request
2544
- # Authentication][11] in the *Amazon S3 User Guide*.
2692
+ # Authentication][10] in the *Amazon S3 User Guide*.
2545
2693
  #
2546
2694
  # </note>
2547
2695
  #
2548
2696
  # For more information about server-side encryption with KMS keys
2549
2697
  # (SSE-KMS), see [Protecting Data Using Server-Side Encryption
2550
- # with KMS keys][8] in the *Amazon S3 User Guide*.
2698
+ # with KMS keys][7] in the *Amazon S3 User Guide*.
2551
2699
  #
2552
2700
  # * Use customer-provided encryption keys (SSE-C) – If you want to
2553
2701
  # manage your own encryption keys, provide all the following
@@ -2562,11 +2710,55 @@ module Aws::S3
2562
2710
  # For more information about server-side encryption with
2563
2711
  # customer-provided encryption keys (SSE-C), see [ Protecting data
2564
2712
  # using server-side encryption with customer-provided encryption
2565
- # keys (SSE-C)][12] in the *Amazon S3 User Guide*.
2713
+ # keys (SSE-C)][11] in the *Amazon S3 User Guide*.
2714
+ #
2715
+ # * **Directory buckets** - For directory buckets, there are only two
2716
+ # supported options for server-side encryption: server-side
2717
+ # encryption with Amazon S3 managed keys (SSE-S3) (`AES256`) and
2718
+ # server-side encryption with KMS keys (SSE-KMS) (`aws:kms`). We
2719
+ # recommend that the bucket's default encryption uses the desired
2720
+ # encryption configuration and you don't override the bucket
2721
+ # default encryption in your `CreateSession` requests or `PUT`
2722
+ # object requests. Then, new objects are automatically encrypted
2723
+ # with the desired encryption settings. For more information, see
2724
+ # [Protecting data with server-side encryption][12] in the *Amazon
2725
+ # S3 User Guide*. For more information about the encryption
2726
+ # overriding behaviors in directory buckets, see [Specifying
2727
+ # server-side encryption with KMS for new object uploads][13].
2728
+ #
2729
+ # In the Zonal endpoint API calls (except [CopyObject][14] and
2730
+ # [UploadPartCopy][9]) using the REST API, the encryption request
2731
+ # headers must match the encryption settings that are specified in
2732
+ # the `CreateSession` request. You can't override the values of the
2733
+ # encryption settings (`x-amz-server-side-encryption`,
2734
+ # `x-amz-server-side-encryption-aws-kms-key-id`,
2735
+ # `x-amz-server-side-encryption-context`, and
2736
+ # `x-amz-server-side-encryption-bucket-key-enabled`) that are
2737
+ # specified in the `CreateSession` request. You don't need to
2738
+ # explicitly specify these encryption settings values in Zonal
2739
+ # endpoint API calls, and Amazon S3 will use the encryption settings
2740
+ # values from the `CreateSession` request to protect new objects in
2741
+ # the directory bucket.
2742
+ #
2743
+ # <note markdown="1"> When you use the CLI or the Amazon Web Services SDKs, for
2744
+ # `CreateSession`, the session token refreshes automatically to
2745
+ # avoid service interruptions when a session expires. The CLI or the
2746
+ # Amazon Web Services SDKs use the bucket's default encryption
2747
+ # configuration for the `CreateSession` request. It's not supported
2748
+ # to override the encryption settings values in the `CreateSession`
2749
+ # request. So in the Zonal endpoint API calls (except
2750
+ # [CopyObject][14] and [UploadPartCopy][9]), the encryption request
2751
+ # headers must match the default encryption configuration of the
2752
+ # directory bucket.
2753
+ #
2754
+ # </note>
2755
+ #
2756
+ # <note markdown="1"> For directory buckets, when you perform a `CreateMultipartUpload`
2757
+ # operation and an `UploadPartCopy` operation, the request headers
2758
+ # you provide in the `CreateMultipartUpload` request must match the
2759
+ # default encryption configuration of the destination bucket.
2566
2760
  #
2567
- # * **Directory buckets** -For directory buckets, only server-side
2568
- # encryption with Amazon S3 managed keys (SSE-S3) (`AES256`) is
2569
- # supported.
2761
+ # </note>
2570
2762
  #
2571
2763
  # HTTP Host header syntax
2572
2764
  #
@@ -2577,13 +2769,13 @@ module Aws::S3
2577
2769
  #
2578
2770
  # * [UploadPart][1]
2579
2771
  #
2580
- # * [CompleteMultipartUpload][13]
2772
+ # * [CompleteMultipartUpload][15]
2581
2773
  #
2582
- # * [AbortMultipartUpload][14]
2774
+ # * [AbortMultipartUpload][16]
2583
2775
  #
2584
- # * [ListParts][15]
2776
+ # * [ListParts][17]
2585
2777
  #
2586
- # * [ListMultipartUploads][16]
2778
+ # * [ListMultipartUploads][18]
2587
2779
  #
2588
2780
  #
2589
2781
  #
@@ -2592,17 +2784,19 @@ module Aws::S3
2592
2784
  # [3]: https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config
2593
2785
  # [4]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-Regions-and-Zones.html
2594
2786
  # [5]: https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html
2595
- # [6]: https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html
2596
- # [7]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html#mpuAndPermissions
2597
- # [8]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html
2598
- # [9]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html
2599
- # [10]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
2600
- # [11]: https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version
2601
- # [12]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/ServerSideEncryptionCustomerKeys.html
2602
- # [13]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html
2603
- # [14]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html
2604
- # [15]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html
2605
- # [16]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html
2787
+ # [6]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html#mpuAndPermissions
2788
+ # [7]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html
2789
+ # [8]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html
2790
+ # [9]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
2791
+ # [10]: https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version
2792
+ # [11]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/ServerSideEncryptionCustomerKeys.html
2793
+ # [12]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html
2794
+ # [13]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html
2795
+ # [14]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
2796
+ # [15]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html
2797
+ # [16]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html
2798
+ # [17]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html
2799
+ # [18]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html
2606
2800
  #
2607
2801
  # @option params [String] :acl
2608
2802
  # The canned ACL to apply to the object. Amazon S3 supports a set of
@@ -2965,10 +3159,52 @@ module Aws::S3
2965
3159
  # The server-side encryption algorithm used when you store this object
2966
3160
  # in Amazon S3 (for example, `AES256`, `aws:kms`).
2967
3161
  #
2968
- # <note markdown="1"> For directory buckets, only server-side encryption with Amazon S3
2969
- # managed keys (SSE-S3) (`AES256`) is supported.
3162
+ # * <b>Directory buckets </b> - For directory buckets, there are only
3163
+ # two supported options for server-side encryption: server-side
3164
+ # encryption with Amazon S3 managed keys (SSE-S3) (`AES256`) and
3165
+ # server-side encryption with KMS keys (SSE-KMS) (`aws:kms`). We
3166
+ # recommend that the bucket's default encryption uses the desired
3167
+ # encryption configuration and you don't override the bucket default
3168
+ # encryption in your `CreateSession` requests or `PUT` object
3169
+ # requests. Then, new objects are automatically encrypted with the
3170
+ # desired encryption settings. For more information, see [Protecting
3171
+ # data with server-side encryption][1] in the *Amazon S3 User Guide*.
3172
+ # For more information about the encryption overriding behaviors in
3173
+ # directory buckets, see [Specifying server-side encryption with KMS
3174
+ # for new object uploads][2].
3175
+ #
3176
+ # In the Zonal endpoint API calls (except [CopyObject][3] and
3177
+ # [UploadPartCopy][4]) using the REST API, the encryption request
3178
+ # headers must match the encryption settings that are specified in the
3179
+ # `CreateSession` request. You can't override the values of the
3180
+ # encryption settings (`x-amz-server-side-encryption`,
3181
+ # `x-amz-server-side-encryption-aws-kms-key-id`,
3182
+ # `x-amz-server-side-encryption-context`, and
3183
+ # `x-amz-server-side-encryption-bucket-key-enabled`) that are
3184
+ # specified in the `CreateSession` request. You don't need to
3185
+ # explicitly specify these encryption settings values in Zonal
3186
+ # endpoint API calls, and Amazon S3 will use the encryption settings
3187
+ # values from the `CreateSession` request to protect new objects in
3188
+ # the directory bucket.
3189
+ #
3190
+ # <note markdown="1"> When you use the CLI or the Amazon Web Services SDKs, for
3191
+ # `CreateSession`, the session token refreshes automatically to avoid
3192
+ # service interruptions when a session expires. The CLI or the Amazon
3193
+ # Web Services SDKs use the bucket's default encryption configuration
3194
+ # for the `CreateSession` request. It's not supported to override the
3195
+ # encryption settings values in the `CreateSession` request. So in the
3196
+ # Zonal endpoint API calls (except [CopyObject][3] and
3197
+ # [UploadPartCopy][4]), the encryption request headers must match the
3198
+ # default encryption configuration of the directory bucket.
3199
+ #
3200
+ # </note>
2970
3201
  #
2971
- # </note>
3202
+ #
3203
+ #
3204
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html
3205
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html
3206
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
3207
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
2972
3208
  #
2973
3209
  # @option params [String] :storage_class
2974
3210
  # By default, Amazon S3 uses the STANDARD Storage Class to store newly
@@ -3027,34 +3263,76 @@ module Aws::S3
3027
3263
  # </note>
3028
3264
  #
3029
3265
  # @option params [String] :ssekms_key_id
3030
- # Specifies the ID (Key ID, Key ARN, or Key Alias) of the symmetric
3031
- # encryption customer managed key to use for object encryption.
3032
- #
3033
- # <note markdown="1"> This functionality is not supported for directory buckets.
3034
- #
3035
- # </note>
3266
+ # Specifies the KMS key ID (Key ID, Key ARN, or Key Alias) to use for
3267
+ # object encryption. If the KMS key doesn't exist in the same account
3268
+ # that's issuing the command, you must use the full Key ARN not the Key
3269
+ # ID.
3270
+ #
3271
+ # **General purpose buckets** - If you specify
3272
+ # `x-amz-server-side-encryption` with `aws:kms` or `aws:kms:dsse`, this
3273
+ # header specifies the ID (Key ID, Key ARN, or Key Alias) of the KMS key
3274
+ # to use. If you specify `x-amz-server-side-encryption:aws:kms` or
3275
+ # `x-amz-server-side-encryption:aws:kms:dsse`, but do not provide
3276
+ # `x-amz-server-side-encryption-aws-kms-key-id`, Amazon S3 uses the
3277
+ # Amazon Web Services managed key (`aws/s3`) to protect the data.
3278
+ #
3279
+ # **Directory buckets** - If you specify `x-amz-server-side-encryption`
3280
+ # with `aws:kms`, the ` x-amz-server-side-encryption-aws-kms-key-id`
3281
+ # header is implicitly assigned the ID of the KMS symmetric encryption
3282
+ # customer managed key that's configured for your directory bucket's
3283
+ # default encryption setting. If you want to specify the `
3284
+ # x-amz-server-side-encryption-aws-kms-key-id` header explicitly, you
3285
+ # can only specify it with the ID (Key ID or Key ARN) of the KMS
3286
+ # customer managed key that's configured for your directory bucket's
3287
+ # default encryption setting. Otherwise, you get an HTTP `400 Bad
3288
+ # Request` error. Only use the key ID or key ARN. The key alias format
3289
+ # of the KMS key isn't supported. Your SSE-KMS configuration can only
3290
+ # support 1 [customer managed key][1] per directory bucket for the
3291
+ # lifetime of the bucket. The [Amazon Web Services managed key][2]
3292
+ # (`aws/s3`) isn't supported.
3293
+ #
3294
+ #
3295
+ #
3296
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk
3297
+ # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk
3036
3298
  #
3037
3299
  # @option params [String] :ssekms_encryption_context
3038
3300
  # Specifies the Amazon Web Services KMS Encryption Context to use for
3039
- # object encryption. The value of this header is a base64-encoded UTF-8
3040
- # string holding JSON with the encryption context key-value pairs.
3301
+ # object encryption. The value of this header is a Base64-encoded string
3302
+ # of a UTF-8 encoded JSON, which contains the encryption context as
3303
+ # key-value pairs.
3041
3304
  #
3042
- # <note markdown="1"> This functionality is not supported for directory buckets.
3043
- #
3044
- # </note>
3305
+ # **Directory buckets** - You can optionally provide an explicit
3306
+ # encryption context value. The value must match the default encryption
3307
+ # context - the bucket Amazon Resource Name (ARN). An additional
3308
+ # encryption context value is not supported.
3045
3309
  #
3046
3310
  # @option params [Boolean] :bucket_key_enabled
3047
3311
  # Specifies whether Amazon S3 should use an S3 Bucket Key for object
3048
3312
  # encryption with server-side encryption using Key Management Service
3049
- # (KMS) keys (SSE-KMS). Setting this header to `true` causes Amazon S3
3050
- # to use an S3 Bucket Key for object encryption with SSE-KMS.
3313
+ # (KMS) keys (SSE-KMS).
3051
3314
  #
3052
- # Specifying this header with an object action doesn’t affect
3315
+ # **General purpose buckets** - Setting this header to `true` causes
3316
+ # Amazon S3 to use an S3 Bucket Key for object encryption with SSE-KMS.
3317
+ # Also, specifying this header with a PUT action doesn't affect
3053
3318
  # bucket-level settings for S3 Bucket Key.
3054
3319
  #
3055
- # <note markdown="1"> This functionality is not supported for directory buckets.
3320
+ # **Directory buckets** - S3 Bucket Keys are always enabled for `GET`
3321
+ # and `PUT` operations in a directory bucket and can’t be disabled. S3
3322
+ # Bucket Keys aren't supported, when you copy SSE-KMS encrypted objects
3323
+ # from general purpose buckets to directory buckets, from directory
3324
+ # buckets to general purpose buckets, or between directory buckets,
3325
+ # through [CopyObject][1], [UploadPartCopy][2], [the Copy operation in
3326
+ # Batch Operations][3], or [the import jobs][4]. In this case, Amazon S3
3327
+ # makes a call to KMS every time a copy request is made for a
3328
+ # KMS-encrypted object.
3056
3329
  #
3057
- # </note>
3330
+ #
3331
+ #
3332
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
3333
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
3334
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-buckets-objects-Batch-Ops
3335
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-import-job
3058
3336
  #
3059
3337
  # @option params [String] :request_payer
3060
3338
  # Confirms that the requester knows that they will be charged for the
@@ -3215,9 +3493,10 @@ module Aws::S3
3215
3493
 
3216
3494
  # Creates a session that establishes temporary security credentials to
3217
3495
  # support fast authentication and authorization for the Zonal endpoint
3218
- # APIs on directory buckets. For more information about Zonal endpoint
3219
- # APIs that include the Availability Zone in the request endpoint, see
3220
- # [S3 Express One Zone APIs][1] in the *Amazon S3 User Guide*.
3496
+ # API operations on directory buckets. For more information about Zonal
3497
+ # endpoint API operations that include the Availability Zone in the
3498
+ # request endpoint, see [S3 Express One Zone APIs][1] in the *Amazon S3
3499
+ # User Guide*.
3221
3500
  #
3222
3501
  # To make Zonal endpoint API requests on a directory bucket, use the
3223
3502
  # `CreateSession` API operation. Specifically, you grant
@@ -3226,13 +3505,13 @@ module Aws::S3
3226
3505
  # the `CreateSession` API request on the bucket, which returns temporary
3227
3506
  # security credentials that include the access key ID, secret access
3228
3507
  # key, session token, and expiration. These credentials have associated
3229
- # permissions to access the Zonal endpoint APIs. After the session is
3230
- # created, you don’t need to use other policies to grant permissions to
3231
- # each Zonal endpoint API individually. Instead, in your Zonal endpoint
3232
- # API requests, you sign your requests by applying the temporary
3233
- # security credentials of the session to the request headers and
3234
- # following the SigV4 protocol for authentication. You also apply the
3235
- # session token to the `x-amz-s3session-token` request header for
3508
+ # permissions to access the Zonal endpoint API operations. After the
3509
+ # session is created, you don’t need to use other policies to grant
3510
+ # permissions to each Zonal endpoint API individually. Instead, in your
3511
+ # Zonal endpoint API requests, you sign your requests by applying the
3512
+ # temporary security credentials of the session to the request headers
3513
+ # and following the SigV4 protocol for authentication. You also apply
3514
+ # the session token to the `x-amz-s3session-token` request header for
3236
3515
  # authorization. Temporary security credentials are scoped to the bucket
3237
3516
  # and expire after 5 minutes. After the expiration time, any calls that
3238
3517
  # you make with those credentials will fail. You must use IAM
@@ -3255,16 +3534,16 @@ module Aws::S3
3255
3534
  # [Regional and Zonal endpoints][3] in the *Amazon S3 User Guide*.
3256
3535
  #
3257
3536
  # * <b> <code>CopyObject</code> API operation</b> - Unlike other Zonal
3258
- # endpoint APIs, the `CopyObject` API operation doesn't use the
3259
- # temporary security credentials returned from the `CreateSession` API
3260
- # operation for authentication and authorization. For information
3537
+ # endpoint API operations, the `CopyObject` API operation doesn't use
3538
+ # the temporary security credentials returned from the `CreateSession`
3539
+ # API operation for authentication and authorization. For information
3261
3540
  # about authentication and authorization of the `CopyObject` API
3262
3541
  # operation on directory buckets, see [CopyObject][4].
3263
3542
  #
3264
3543
  # * <b> <code>HeadBucket</code> API operation</b> - Unlike other Zonal
3265
- # endpoint APIs, the `HeadBucket` API operation doesn't use the
3266
- # temporary security credentials returned from the `CreateSession` API
3267
- # operation for authentication and authorization. For information
3544
+ # endpoint API operations, the `HeadBucket` API operation doesn't use
3545
+ # the temporary security credentials returned from the `CreateSession`
3546
+ # API operation for authentication and authorization. For information
3268
3547
  # about authentication and authorization of the `HeadBucket` API
3269
3548
  # operation on directory buckets, see [HeadBucket][5].
3270
3549
  #
@@ -3283,9 +3562,71 @@ module Aws::S3
3283
3562
  # Identity and Access Management (IAM) identity-based policies for S3
3284
3563
  # Express One Zone][8] in the *Amazon S3 User Guide*.
3285
3564
  #
3286
- # To grant cross-account access to Zonal endpoint APIs, the bucket
3287
- # policy should also grant both accounts the `s3express:CreateSession`
3288
- # permission.
3565
+ # To grant cross-account access to Zonal endpoint API operations, the
3566
+ # bucket policy should also grant both accounts the
3567
+ # `s3express:CreateSession` permission.
3568
+ #
3569
+ # If you want to encrypt objects with SSE-KMS, you must also have the
3570
+ # `kms:GenerateDataKey` and the `kms:Decrypt` permissions in IAM
3571
+ # identity-based policies and KMS key policies for the target KMS key.
3572
+ #
3573
+ # Encryption
3574
+ #
3575
+ # : For directory buckets, there are only two supported options for
3576
+ # server-side encryption: server-side encryption with Amazon S3
3577
+ # managed keys (SSE-S3) (`AES256`) and server-side encryption with KMS
3578
+ # keys (SSE-KMS) (`aws:kms`). We recommend that the bucket's default
3579
+ # encryption uses the desired encryption configuration and you don't
3580
+ # override the bucket default encryption in your `CreateSession`
3581
+ # requests or `PUT` object requests. Then, new objects are
3582
+ # automatically encrypted with the desired encryption settings. For
3583
+ # more information, see [Protecting data with server-side
3584
+ # encryption][9] in the *Amazon S3 User Guide*. For more information
3585
+ # about the encryption overriding behaviors in directory buckets, see
3586
+ # [Specifying server-side encryption with KMS for new object
3587
+ # uploads][10].
3588
+ #
3589
+ # For [Zonal endpoint (object-level) API operations][11] except
3590
+ # [CopyObject][4] and [UploadPartCopy][12], you authenticate and
3591
+ # authorize requests through [CreateSession][13] for low latency. To
3592
+ # encrypt new objects in a directory bucket with SSE-KMS, you must
3593
+ # specify SSE-KMS as the directory bucket's default encryption
3594
+ # configuration with a KMS key (specifically, a [customer managed
3595
+ # key][14]). Then, when a session is created for Zonal endpoint API
3596
+ # operations, new objects are automatically encrypted and decrypted
3597
+ # with SSE-KMS and S3 Bucket Keys during the session.
3598
+ #
3599
+ # <note markdown="1"> Only 1 [customer managed key][14] is supported per directory bucket
3600
+ # for the lifetime of the bucket. The [Amazon Web Services managed
3601
+ # key][15] (`aws/s3`) isn't supported. After you specify SSE-KMS as
3602
+ # your bucket's default encryption configuration with a customer
3603
+ # managed key, you can't change the customer managed key for the
3604
+ # bucket's SSE-KMS configuration.
3605
+ #
3606
+ # </note>
3607
+ #
3608
+ # In the Zonal endpoint API calls (except [CopyObject][4] and
3609
+ # [UploadPartCopy][12]) using the REST API, you can't override the
3610
+ # values of the encryption settings (`x-amz-server-side-encryption`,
3611
+ # `x-amz-server-side-encryption-aws-kms-key-id`,
3612
+ # `x-amz-server-side-encryption-context`, and
3613
+ # `x-amz-server-side-encryption-bucket-key-enabled`) from the
3614
+ # `CreateSession` request. You don't need to explicitly specify these
3615
+ # encryption settings values in Zonal endpoint API calls, and Amazon
3616
+ # S3 will use the encryption settings values from the `CreateSession`
3617
+ # request to protect new objects in the directory bucket.
3618
+ #
3619
+ # <note markdown="1"> When you use the CLI or the Amazon Web Services SDKs, for
3620
+ # `CreateSession`, the session token refreshes automatically to avoid
3621
+ # service interruptions when a session expires. The CLI or the Amazon
3622
+ # Web Services SDKs use the bucket's default encryption configuration
3623
+ # for the `CreateSession` request. It's not supported to override the
3624
+ # encryption settings values in the `CreateSession` request. Also, in
3625
+ # the Zonal endpoint API calls (except [CopyObject][4] and
3626
+ # [UploadPartCopy][12]), it's not supported to override the values of
3627
+ # the encryption settings from the `CreateSession` request.
3628
+ #
3629
+ # </note>
3289
3630
  #
3290
3631
  # HTTP Host header syntax
3291
3632
  #
@@ -3302,21 +3643,110 @@ module Aws::S3
3302
3643
  # [6]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html#API_CreateSession_RequestParameters
3303
3644
  # [7]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam-example-bucket-policies.html
3304
3645
  # [8]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam-identity-policies.html
3646
+ # [9]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html
3647
+ # [10]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html
3648
+ # [11]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-differences.html#s3-express-differences-api-operations
3649
+ # [12]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
3650
+ # [13]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html
3651
+ # [14]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk
3652
+ # [15]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk
3305
3653
  #
3306
3654
  # @option params [String] :session_mode
3307
3655
  # Specifies the mode of the session that will be created, either
3308
3656
  # `ReadWrite` or `ReadOnly`. By default, a `ReadWrite` session is
3309
3657
  # created. A `ReadWrite` session is capable of executing all the Zonal
3310
- # endpoint APIs on a directory bucket. A `ReadOnly` session is
3311
- # constrained to execute the following Zonal endpoint APIs: `GetObject`,
3312
- # `HeadObject`, `ListObjectsV2`, `GetObjectAttributes`, `ListParts`, and
3313
- # `ListMultipartUploads`.
3658
+ # endpoint API operations on a directory bucket. A `ReadOnly` session is
3659
+ # constrained to execute the following Zonal endpoint API operations:
3660
+ # `GetObject`, `HeadObject`, `ListObjectsV2`, `GetObjectAttributes`,
3661
+ # `ListParts`, and `ListMultipartUploads`.
3314
3662
  #
3315
3663
  # @option params [required, String] :bucket
3316
3664
  # The name of the bucket that you create a session for.
3317
3665
  #
3666
+ # @option params [String] :server_side_encryption
3667
+ # The server-side encryption algorithm to use when you store objects in
3668
+ # the directory bucket.
3669
+ #
3670
+ # For directory buckets, there are only two supported options for
3671
+ # server-side encryption: server-side encryption with Amazon S3 managed
3672
+ # keys (SSE-S3) (`AES256`) and server-side encryption with KMS keys
3673
+ # (SSE-KMS) (`aws:kms`). By default, Amazon S3 encrypts data with
3674
+ # SSE-S3. For more information, see [Protecting data with server-side
3675
+ # encryption][1] in the *Amazon S3 User Guide*.
3676
+ #
3677
+ #
3678
+ #
3679
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html
3680
+ #
3681
+ # @option params [String] :ssekms_key_id
3682
+ # If you specify `x-amz-server-side-encryption` with `aws:kms`, you must
3683
+ # specify the ` x-amz-server-side-encryption-aws-kms-key-id` header with
3684
+ # the ID (Key ID or Key ARN) of the KMS symmetric encryption customer
3685
+ # managed key to use. Otherwise, you get an HTTP `400 Bad Request`
3686
+ # error. Only use the key ID or key ARN. The key alias format of the KMS
3687
+ # key isn't supported. Also, if the KMS key doesn't exist in the same
3688
+ # account that't issuing the command, you must use the full Key ARN not
3689
+ # the Key ID.
3690
+ #
3691
+ # Your SSE-KMS configuration can only support 1 [customer managed
3692
+ # key][1] per directory bucket for the lifetime of the bucket. The
3693
+ # [Amazon Web Services managed key][2] (`aws/s3`) isn't supported.
3694
+ #
3695
+ #
3696
+ #
3697
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk
3698
+ # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk
3699
+ #
3700
+ # @option params [String] :ssekms_encryption_context
3701
+ # Specifies the Amazon Web Services KMS Encryption Context as an
3702
+ # additional encryption context to use for object encryption. The value
3703
+ # of this header is a Base64-encoded string of a UTF-8 encoded JSON,
3704
+ # which contains the encryption context as key-value pairs. This value
3705
+ # is stored as object metadata and automatically gets passed on to
3706
+ # Amazon Web Services KMS for future `GetObject` operations on this
3707
+ # object.
3708
+ #
3709
+ # **General purpose buckets** - This value must be explicitly added
3710
+ # during `CopyObject` operations if you want an additional encryption
3711
+ # context for your object. For more information, see [Encryption
3712
+ # context][1] in the *Amazon S3 User Guide*.
3713
+ #
3714
+ # **Directory buckets** - You can optionally provide an explicit
3715
+ # encryption context value. The value must match the default encryption
3716
+ # context - the bucket Amazon Resource Name (ARN). An additional
3717
+ # encryption context value is not supported.
3718
+ #
3719
+ #
3720
+ #
3721
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html#encryption-context
3722
+ #
3723
+ # @option params [Boolean] :bucket_key_enabled
3724
+ # Specifies whether Amazon S3 should use an S3 Bucket Key for object
3725
+ # encryption with server-side encryption using KMS keys (SSE-KMS).
3726
+ #
3727
+ # S3 Bucket Keys are always enabled for `GET` and `PUT` operations in a
3728
+ # directory bucket and can’t be disabled. S3 Bucket Keys aren't
3729
+ # supported, when you copy SSE-KMS encrypted objects from general
3730
+ # purpose buckets to directory buckets, from directory buckets to
3731
+ # general purpose buckets, or between directory buckets, through
3732
+ # [CopyObject][1], [UploadPartCopy][2], [the Copy operation in Batch
3733
+ # Operations][3], or [the import jobs][4]. In this case, Amazon S3 makes
3734
+ # a call to KMS every time a copy request is made for a KMS-encrypted
3735
+ # object.
3736
+ #
3737
+ #
3738
+ #
3739
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
3740
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
3741
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-buckets-objects-Batch-Ops
3742
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-import-job
3743
+ #
3318
3744
  # @return [Types::CreateSessionOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
3319
3745
  #
3746
+ # * {Types::CreateSessionOutput#server_side_encryption #server_side_encryption} => String
3747
+ # * {Types::CreateSessionOutput#ssekms_key_id #ssekms_key_id} => String
3748
+ # * {Types::CreateSessionOutput#ssekms_encryption_context #ssekms_encryption_context} => String
3749
+ # * {Types::CreateSessionOutput#bucket_key_enabled #bucket_key_enabled} => Boolean
3320
3750
  # * {Types::CreateSessionOutput#credentials #credentials} => Types::SessionCredentials
3321
3751
  #
3322
3752
  # @example Request syntax with placeholder values
@@ -3324,10 +3754,18 @@ module Aws::S3
3324
3754
  # resp = client.create_session({
3325
3755
  # session_mode: "ReadOnly", # accepts ReadOnly, ReadWrite
3326
3756
  # bucket: "BucketName", # required
3757
+ # server_side_encryption: "AES256", # accepts AES256, aws:kms, aws:kms:dsse
3758
+ # ssekms_key_id: "SSEKMSKeyId",
3759
+ # ssekms_encryption_context: "SSEKMSEncryptionContext",
3760
+ # bucket_key_enabled: false,
3327
3761
  # })
3328
3762
  #
3329
3763
  # @example Response structure
3330
3764
  #
3765
+ # resp.server_side_encryption #=> String, one of "AES256", "aws:kms", "aws:kms:dsse"
3766
+ # resp.ssekms_key_id #=> String
3767
+ # resp.ssekms_encryption_context #=> String
3768
+ # resp.bucket_key_enabled #=> Boolean
3331
3769
  # resp.credentials.access_key_id #=> String
3332
3770
  # resp.credentials.secret_access_key #=> String
3333
3771
  # resp.credentials.session_token #=> String
@@ -3573,47 +4011,92 @@ module Aws::S3
3573
4011
  req.send_request(options)
3574
4012
  end
3575
4013
 
3576
- # <note markdown="1"> This operation is not supported by directory buckets.
4014
+ # This implementation of the DELETE action resets the default encryption
4015
+ # for the bucket as server-side encryption with Amazon S3 managed keys
4016
+ # (SSE-S3).
4017
+ #
4018
+ # <note markdown="1"> * **General purpose buckets** - For information about the bucket
4019
+ # default encryption feature, see [Amazon S3 Bucket Default
4020
+ # Encryption][1] in the *Amazon S3 User Guide*.
4021
+ #
4022
+ # * **Directory buckets** - For directory buckets, there are only two
4023
+ # supported options for server-side encryption: SSE-S3 and SSE-KMS.
4024
+ # For information about the default encryption configuration in
4025
+ # directory buckets, see [Setting default server-side encryption
4026
+ # behavior for directory buckets][2].
3577
4027
  #
3578
4028
  # </note>
3579
4029
  #
3580
- # This implementation of the DELETE action resets the default encryption
3581
- # for the bucket as server-side encryption with Amazon S3 managed keys
3582
- # (SSE-S3). For information about the bucket default encryption feature,
3583
- # see [Amazon S3 Bucket Default Encryption][1] in the *Amazon S3 User
3584
- # Guide*.
4030
+ # Permissions
4031
+ # : * **General purpose bucket permissions** - The
4032
+ # `s3:PutEncryptionConfiguration` permission is required in a
4033
+ # policy. The bucket owner has this permission by default. The
4034
+ # bucket owner can grant this permission to others. For more
4035
+ # information about permissions, see [Permissions Related to Bucket
4036
+ # Operations][3] and [Managing Access Permissions to Your Amazon S3
4037
+ # Resources][4].
3585
4038
  #
3586
- # To use this operation, you must have permissions to perform the
3587
- # `s3:PutEncryptionConfiguration` action. The bucket owner has this
3588
- # permission by default. The bucket owner can grant this permission to
3589
- # others. For more information about permissions, see [Permissions
3590
- # Related to Bucket Subresource Operations][2] and [Managing Access
3591
- # Permissions to your Amazon S3 Resources][3] in the *Amazon S3 User
3592
- # Guide*.
4039
+ # * **Directory bucket permissions** - To grant access to this API
4040
+ # operation, you must have the
4041
+ # `s3express:PutEncryptionConfiguration` permission in an IAM
4042
+ # identity-based policy instead of a bucket policy. Cross-account
4043
+ # access to this API operation isn't supported. This operation can
4044
+ # only be performed by the Amazon Web Services account that owns the
4045
+ # resource. For more information about directory bucket policies and
4046
+ # permissions, see [Amazon Web Services Identity and Access
4047
+ # Management (IAM) for S3 Express One Zone][5] in the *Amazon S3
4048
+ # User Guide*.
4049
+ #
4050
+ # HTTP Host header syntax
4051
+ #
4052
+ # : <b>Directory buckets </b> - The HTTP Host header syntax is
4053
+ # `s3express-control.region.amazonaws.com`.
3593
4054
  #
3594
4055
  # The following operations are related to `DeleteBucketEncryption`:
3595
4056
  #
3596
- # * [PutBucketEncryption][4]
4057
+ # * [PutBucketEncryption][6]
3597
4058
  #
3598
- # * [GetBucketEncryption][5]
4059
+ # * [GetBucketEncryption][7]
3599
4060
  #
3600
4061
  #
3601
4062
  #
3602
4063
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html
3603
- # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources
3604
- # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html
3605
- # [4]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html
3606
- # [5]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html
4064
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-bucket-encryption.html
4065
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources
4066
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html
4067
+ # [5]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam.html
4068
+ # [6]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html
4069
+ # [7]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html
3607
4070
  #
3608
4071
  # @option params [required, String] :bucket
3609
4072
  # The name of the bucket containing the server-side encryption
3610
4073
  # configuration to delete.
3611
4074
  #
4075
+ # <b>Directory buckets </b> - When you use this operation with a
4076
+ # directory bucket, you must use path-style requests in the format
4077
+ # `https://s3express-control.region_code.amazonaws.com/bucket-name `.
4078
+ # Virtual-hosted-style requests aren't supported. Directory bucket
4079
+ # names must be unique in the chosen Availability Zone. Bucket names
4080
+ # must also follow the format ` bucket_base_name--az_id--x-s3` (for
4081
+ # example, ` DOC-EXAMPLE-BUCKET--usw2-az1--x-s3`). For information about
4082
+ # bucket naming restrictions, see [Directory bucket naming rules][1] in
4083
+ # the *Amazon S3 User Guide*
4084
+ #
4085
+ #
4086
+ #
4087
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-bucket-naming-rules.html
4088
+ #
3612
4089
  # @option params [String] :expected_bucket_owner
3613
4090
  # The account ID of the expected bucket owner. If the account ID that
3614
4091
  # you provide does not match the actual owner of the bucket, the request
3615
4092
  # fails with the HTTP status code `403 Forbidden` (access denied).
3616
4093
  #
4094
+ # <note markdown="1"> For directory buckets, this header is not supported in this API
4095
+ # operation. If you specify this header, the request fails with the HTTP
4096
+ # status code `501 Not Implemented`.
4097
+ #
4098
+ # </note>
4099
+ #
3617
4100
  # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
3618
4101
  #
3619
4102
  # @example Request syntax with placeholder values
@@ -4271,67 +4754,33 @@ module Aws::S3
4271
4754
  end
4272
4755
 
4273
4756
  # Removes an object from a bucket. The behavior depends on the bucket's
4274
- # versioning state:
4275
- #
4276
- # * If bucket versioning is not enabled, the operation permanently
4277
- # deletes the object.
4278
- #
4279
- # * If bucket versioning is enabled, the operation inserts a delete
4280
- # marker, which becomes the current version of the object. To
4281
- # permanently delete an object in a versioned bucket, you must include
4282
- # the object’s `versionId` in the request. For more information about
4283
- # versioning-enabled buckets, see [Deleting object versions from a
4284
- # versioning-enabled bucket][1].
4285
- #
4286
- # * If bucket versioning is suspended, the operation removes the object
4287
- # that has a null `versionId`, if there is one, and inserts a delete
4288
- # marker that becomes the current version of the object. If there
4289
- # isn't an object with a null `versionId`, and all versions of the
4290
- # object have a `versionId`, Amazon S3 does not remove the object and
4291
- # only inserts a delete marker. To permanently delete an object that
4292
- # has a `versionId`, you must include the object’s `versionId` in the
4293
- # request. For more information about versioning-suspended buckets,
4294
- # see [Deleting objects from versioning-suspended buckets][2].
4295
- #
4296
- # <note markdown="1"> * **Directory buckets** - S3 Versioning isn't enabled and supported
4297
- # for directory buckets. For this API operation, only the `null` value
4298
- # of the version ID is supported by directory buckets. You can only
4299
- # specify `null` to the `versionId` query parameter in the request.
4300
- #
4301
- # * **Directory buckets** - For directory buckets, you must make
4302
- # requests for this API operation to the Zonal endpoint. These
4303
- # endpoints support virtual-hosted-style requests in the format
4304
- # `https://bucket_name.s3express-az_id.region.amazonaws.com/key-name
4305
- # `. Path-style requests are not supported. For more information, see
4306
- # [Regional and Zonal endpoints][3] in the *Amazon S3 User Guide*.
4307
- #
4308
- # </note>
4757
+ # versioning state. For more information, see [Best practices to
4758
+ # consider before deleting an object][1].
4309
4759
  #
4310
4760
  # To remove a specific version, you must use the `versionId` query
4311
4761
  # parameter. Using this query parameter permanently deletes the version.
4312
4762
  # If the object deleted is a delete marker, Amazon S3 sets the response
4313
- # header `x-amz-delete-marker` to true.
4314
- #
4315
- # If the object you want to delete is in a bucket where the bucket
4316
- # versioning configuration is MFA Delete enabled, you must include the
4317
- # `x-amz-mfa` request header in the DELETE `versionId` request. Requests
4318
- # that include `x-amz-mfa` must use HTTPS. For more information about
4319
- # MFA Delete, see [Using MFA Delete][4] in the *Amazon S3 User Guide*.
4320
- # To see sample requests that use versioning, see [Sample Request][5].
4321
- #
4322
- # <note markdown="1"> **Directory buckets** - MFA delete is not supported by directory
4323
- # buckets.
4763
+ # header `x-amz-delete-marker` to true. If the object you want to delete
4764
+ # is in a bucket where the bucket versioning configuration is MFA delete
4765
+ # enabled, you must include the `x-amz-mfa` request header in the DELETE
4766
+ # `versionId` request. Requests that include `x-amz-mfa` must use HTTPS.
4767
+ # For more information about MFA delete and to see example requests, see
4768
+ # [Using MFA delete][2] and [Sample request][3] in the *Amazon S3 User
4769
+ # Guide*.
4324
4770
  #
4325
- # </note>
4771
+ # <note markdown="1"> * S3 Versioning isn't enabled and supported for directory buckets.
4772
+ # For this API operation, only the `null` value of the version ID is
4773
+ # supported by directory buckets. You can only specify `null` to the
4774
+ # `versionId` query parameter in the request.
4326
4775
  #
4327
- # You can delete objects by explicitly calling DELETE Object or calling
4328
- # ([PutBucketLifecycle][6]) to enable Amazon S3 to remove them for you.
4329
- # If you want to block users or accounts from removing or deleting
4330
- # objects from your bucket, you must deny them the `s3:DeleteObject`,
4331
- # `s3:DeleteObjectVersion`, and `s3:PutLifeCycleConfiguration` actions.
4776
+ # * For directory buckets, you must make requests for this API operation
4777
+ # to the Zonal endpoint. These endpoints support virtual-hosted-style
4778
+ # requests in the format
4779
+ # `https://bucket_name.s3express-az_id.region.amazonaws.com/key-name
4780
+ # `. Path-style requests are not supported. For more information, see
4781
+ # [Regional and Zonal endpoints][4] in the *Amazon S3 User Guide*.
4332
4782
  #
4333
- # <note markdown="1"> **Directory buckets** - S3 Lifecycle is not supported by directory
4334
- # buckets.
4783
+ # * MFA delete is not supported by directory buckets.
4335
4784
  #
4336
4785
  # </note>
4337
4786
  #
@@ -4343,24 +4792,23 @@ module Aws::S3
4343
4792
  # * <b> <code>s3:DeleteObject</code> </b> - To delete an object from
4344
4793
  # a bucket, you must always have the `s3:DeleteObject` permission.
4345
4794
  #
4795
+ # <note markdown="1"> You can also use PutBucketLifecycle to delete objects in Amazon
4796
+ # S3.
4797
+ #
4798
+ # </note>
4799
+ #
4346
4800
  # * <b> <code>s3:DeleteObjectVersion</code> </b> - To delete a
4347
4801
  # specific version of an object from a versioning-enabled bucket,
4348
4802
  # you must have the `s3:DeleteObjectVersion` permission.
4349
4803
  #
4350
- # * **Directory bucket permissions** - To grant access to this API
4351
- # operation on a directory bucket, we recommend that you use the [
4352
- # `CreateSession` ][7] API operation for session-based
4353
- # authorization. Specifically, you grant the
4354
- # `s3express:CreateSession` permission to the directory bucket in a
4355
- # bucket policy or an IAM identity-based policy. Then, you make the
4356
- # `CreateSession` API call on the bucket to obtain a session token.
4357
- # With the session token in your request header, you can make API
4358
- # requests to this operation. After the session token expires, you
4359
- # make another `CreateSession` API call to generate a new session
4360
- # token for use. Amazon Web Services CLI or SDKs create session and
4361
- # refresh the session token automatically to avoid service
4362
- # interruptions when a session expires. For more information about
4363
- # authorization, see [ `CreateSession` ][7].
4804
+ # * If you want to block users or accounts from removing or deleting
4805
+ # objects from your bucket, you must deny them the
4806
+ # `s3:DeleteObject`, `s3:DeleteObjectVersion`, and
4807
+ # `s3:PutLifeCycleConfiguration` permissions.
4808
+ #
4809
+ # * **Directory buckets permissions** - To grant access to this API
4810
+ # operation on a directory bucket, we recommend that you use the
4811
+ # CreateSession API operation for session-based authorization.
4364
4812
  #
4365
4813
  # HTTP Host header syntax
4366
4814
  #
@@ -4369,20 +4817,17 @@ module Aws::S3
4369
4817
  #
4370
4818
  # The following action is related to `DeleteObject`:
4371
4819
  #
4372
- # * [PutObject][8]
4820
+ # * [PutObject][5]
4373
4821
  #
4374
4822
  # ^
4375
4823
  #
4376
4824
  #
4377
4825
  #
4378
- # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/DeletingObjectVersions.html
4379
- # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/DeletingObjectsfromVersioningSuspendedBuckets.html
4380
- # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-Regions-and-Zones.html
4381
- # [4]: https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMFADelete.html
4382
- # [5]: https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectDELETE.html#ExampleVersionObjectDelete
4383
- # [6]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycle.html
4384
- # [7]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html
4385
- # [8]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html
4826
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/DeletingObjects.html#DeletingObjects-best-practices
4827
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMFADelete.html
4828
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectDELETE.html#ExampleVersionObjectDelete
4829
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-Regions-and-Zones.html
4830
+ # [5]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html
4386
4831
  #
4387
4832
  # @option params [required, String] :bucket
4388
4833
  # The bucket name of the bucket containing the object.
@@ -4487,6 +4932,15 @@ module Aws::S3
4487
4932
  # * {Types::DeleteObjectOutput#request_charged #request_charged} => String
4488
4933
  #
4489
4934
  #
4935
+ # @example Example: To delete an object (from a non-versioned bucket)
4936
+ #
4937
+ # # The following example deletes an object from a non-versioned bucket.
4938
+ #
4939
+ # resp = client.delete_object({
4940
+ # bucket: "ExampleBucket",
4941
+ # key: "HappyFace.jpg",
4942
+ # })
4943
+ #
4490
4944
  # @example Example: To delete an object
4491
4945
  #
4492
4946
  # # The following example deletes an object from an S3 bucket.
@@ -4500,15 +4954,6 @@ module Aws::S3
4500
4954
  # {
4501
4955
  # }
4502
4956
  #
4503
- # @example Example: To delete an object (from a non-versioned bucket)
4504
- #
4505
- # # The following example deletes an object from a non-versioned bucket.
4506
- #
4507
- # resp = client.delete_object({
4508
- # bucket: "ExampleBucket",
4509
- # key: "HappyFace.jpg",
4510
- # })
4511
- #
4512
4957
  # @example Request syntax with placeholder values
4513
4958
  #
4514
4959
  # resp = client.delete_object({
@@ -4607,35 +5052,35 @@ module Aws::S3
4607
5052
  # * {Types::DeleteObjectTaggingOutput#version_id #version_id} => String
4608
5053
  #
4609
5054
  #
4610
- # @example Example: To remove tag set from an object version
5055
+ # @example Example: To remove tag set from an object
4611
5056
  #
4612
- # # The following example removes tag set associated with the specified object version. The request specifies both the
4613
- # # object key and object version.
5057
+ # # The following example removes tag set associated with the specified object. If the bucket is versioning enabled, the
5058
+ # # operation removes tag set from the latest object version.
4614
5059
  #
4615
5060
  # resp = client.delete_object_tagging({
4616
5061
  # bucket: "examplebucket",
4617
5062
  # key: "HappyFace.jpg",
4618
- # version_id: "ydlaNkwWm0SfKJR.T1b1fIdPRbldTYRI",
4619
5063
  # })
4620
5064
  #
4621
5065
  # resp.to_h outputs the following:
4622
5066
  # {
4623
- # version_id: "ydlaNkwWm0SfKJR.T1b1fIdPRbldTYRI",
5067
+ # version_id: "null",
4624
5068
  # }
4625
5069
  #
4626
- # @example Example: To remove tag set from an object
5070
+ # @example Example: To remove tag set from an object version
4627
5071
  #
4628
- # # The following example removes tag set associated with the specified object. If the bucket is versioning enabled, the
4629
- # # operation removes tag set from the latest object version.
5072
+ # # The following example removes tag set associated with the specified object version. The request specifies both the
5073
+ # # object key and object version.
4630
5074
  #
4631
5075
  # resp = client.delete_object_tagging({
4632
5076
  # bucket: "examplebucket",
4633
5077
  # key: "HappyFace.jpg",
5078
+ # version_id: "ydlaNkwWm0SfKJR.T1b1fIdPRbldTYRI",
4634
5079
  # })
4635
5080
  #
4636
5081
  # resp.to_h outputs the following:
4637
5082
  # {
4638
- # version_id: "null",
5083
+ # version_id: "ydlaNkwWm0SfKJR.T1b1fIdPRbldTYRI",
4639
5084
  # }
4640
5085
  #
4641
5086
  # @example Request syntax with placeholder values
@@ -4717,7 +5162,7 @@ module Aws::S3
4717
5162
  # permission.
4718
5163
  #
4719
5164
  # * <b> <code>s3:DeleteObjectVersion</code> </b> - To delete a
4720
- # specific version of an object from a versiong-enabled bucket,
5165
+ # specific version of an object from a versioning-enabled bucket,
4721
5166
  # you must specify the `s3:DeleteObjectVersion` permission.
4722
5167
  #
4723
5168
  # * **Directory bucket permissions** - To grant access to this API
@@ -4887,13 +5332,13 @@ module Aws::S3
4887
5332
  # For the `x-amz-checksum-algorithm ` header, replace ` algorithm ` with
4888
5333
  # the supported algorithm from the following list:
4889
5334
  #
4890
- # * CRC32
5335
+ # * `CRC32`
4891
5336
  #
4892
- # * CRC32C
5337
+ # * `CRC32C`
4893
5338
  #
4894
- # * SHA1
5339
+ # * `SHA1`
4895
5340
  #
4896
- # * SHA256
5341
+ # * `SHA256`
4897
5342
  #
4898
5343
  # For more information, see [Checking object integrity][1] in the
4899
5344
  # *Amazon S3 User Guide*.
@@ -4918,22 +5363,20 @@ module Aws::S3
4918
5363
  # * {Types::DeleteObjectsOutput#errors #errors} => Array&lt;Types::Error&gt;
4919
5364
  #
4920
5365
  #
4921
- # @example Example: To delete multiple object versions from a versioned bucket
5366
+ # @example Example: To delete multiple objects from a versioned bucket
4922
5367
  #
4923
- # # The following example deletes objects from a bucket. The request specifies object versions. S3 deletes specific object
4924
- # # versions and returns the key and versions of deleted objects in the response.
5368
+ # # The following example deletes objects from a bucket. The bucket is versioned, and the request does not specify the
5369
+ # # object version to delete. In this case, all versions remain in the bucket and S3 adds a delete marker.
4925
5370
  #
4926
5371
  # resp = client.delete_objects({
4927
5372
  # bucket: "examplebucket",
4928
5373
  # delete: {
4929
5374
  # objects: [
4930
5375
  # {
4931
- # key: "HappyFace.jpg",
4932
- # version_id: "2LWg7lQLnY41.maGB5Z6SWW.dcq0vx7b",
5376
+ # key: "objectkey1",
4933
5377
  # },
4934
5378
  # {
4935
- # key: "HappyFace.jpg",
4936
- # version_id: "yoz3HB.ZhCS_tKVEmIOr7qYyyAaZSKVd",
5379
+ # key: "objectkey2",
4937
5380
  # },
4938
5381
  # ],
4939
5382
  # quiet: false,
@@ -4944,30 +5387,34 @@ module Aws::S3
4944
5387
  # {
4945
5388
  # deleted: [
4946
5389
  # {
4947
- # key: "HappyFace.jpg",
4948
- # version_id: "yoz3HB.ZhCS_tKVEmIOr7qYyyAaZSKVd",
5390
+ # delete_marker: true,
5391
+ # delete_marker_version_id: "A._w1z6EFiCF5uhtQMDal9JDkID9tQ7F",
5392
+ # key: "objectkey1",
4949
5393
  # },
4950
5394
  # {
4951
- # key: "HappyFace.jpg",
4952
- # version_id: "2LWg7lQLnY41.maGB5Z6SWW.dcq0vx7b",
5395
+ # delete_marker: true,
5396
+ # delete_marker_version_id: "iOd_ORxhkKe_e8G8_oSGxt2PjsCZKlkt",
5397
+ # key: "objectkey2",
4953
5398
  # },
4954
5399
  # ],
4955
5400
  # }
4956
5401
  #
4957
- # @example Example: To delete multiple objects from a versioned bucket
5402
+ # @example Example: To delete multiple object versions from a versioned bucket
4958
5403
  #
4959
- # # The following example deletes objects from a bucket. The bucket is versioned, and the request does not specify the
4960
- # # object version to delete. In this case, all versions remain in the bucket and S3 adds a delete marker.
5404
+ # # The following example deletes objects from a bucket. The request specifies object versions. S3 deletes specific object
5405
+ # # versions and returns the key and versions of deleted objects in the response.
4961
5406
  #
4962
5407
  # resp = client.delete_objects({
4963
5408
  # bucket: "examplebucket",
4964
5409
  # delete: {
4965
5410
  # objects: [
4966
5411
  # {
4967
- # key: "objectkey1",
5412
+ # key: "HappyFace.jpg",
5413
+ # version_id: "2LWg7lQLnY41.maGB5Z6SWW.dcq0vx7b",
4968
5414
  # },
4969
5415
  # {
4970
- # key: "objectkey2",
5416
+ # key: "HappyFace.jpg",
5417
+ # version_id: "yoz3HB.ZhCS_tKVEmIOr7qYyyAaZSKVd",
4971
5418
  # },
4972
5419
  # ],
4973
5420
  # quiet: false,
@@ -4978,14 +5425,12 @@ module Aws::S3
4978
5425
  # {
4979
5426
  # deleted: [
4980
5427
  # {
4981
- # delete_marker: true,
4982
- # delete_marker_version_id: "A._w1z6EFiCF5uhtQMDal9JDkID9tQ7F",
4983
- # key: "objectkey1",
5428
+ # key: "HappyFace.jpg",
5429
+ # version_id: "yoz3HB.ZhCS_tKVEmIOr7qYyyAaZSKVd",
4984
5430
  # },
4985
5431
  # {
4986
- # delete_marker: true,
4987
- # delete_marker_version_id: "iOd_ORxhkKe_e8G8_oSGxt2PjsCZKlkt",
4988
- # key: "objectkey2",
5432
+ # key: "HappyFace.jpg",
5433
+ # version_id: "2LWg7lQLnY41.maGB5Z6SWW.dcq0vx7b",
4989
5434
  # },
4990
5435
  # ],
4991
5436
  # }
@@ -5488,46 +5933,92 @@ module Aws::S3
5488
5933
  req.send_request(options)
5489
5934
  end
5490
5935
 
5491
- # <note markdown="1"> This operation is not supported by directory buckets.
5936
+ # Returns the default encryption configuration for an Amazon S3 bucket.
5937
+ # By default, all buckets have a default encryption configuration that
5938
+ # uses server-side encryption with Amazon S3 managed keys (SSE-S3).
5939
+ #
5940
+ # <note markdown="1"> * **General purpose buckets** - For information about the bucket
5941
+ # default encryption feature, see [Amazon S3 Bucket Default
5942
+ # Encryption][1] in the *Amazon S3 User Guide*.
5943
+ #
5944
+ # * **Directory buckets** - For directory buckets, there are only two
5945
+ # supported options for server-side encryption: SSE-S3 and SSE-KMS.
5946
+ # For information about the default encryption configuration in
5947
+ # directory buckets, see [Setting default server-side encryption
5948
+ # behavior for directory buckets][2].
5492
5949
  #
5493
5950
  # </note>
5494
5951
  #
5495
- # Returns the default encryption configuration for an Amazon S3 bucket.
5496
- # By default, all buckets have a default encryption configuration that
5497
- # uses server-side encryption with Amazon S3 managed keys (SSE-S3). For
5498
- # information about the bucket default encryption feature, see [Amazon
5499
- # S3 Bucket Default Encryption][1] in the *Amazon S3 User Guide*.
5952
+ # Permissions
5953
+ # : * **General purpose bucket permissions** - The
5954
+ # `s3:GetEncryptionConfiguration` permission is required in a
5955
+ # policy. The bucket owner has this permission by default. The
5956
+ # bucket owner can grant this permission to others. For more
5957
+ # information about permissions, see [Permissions Related to Bucket
5958
+ # Operations][3] and [Managing Access Permissions to Your Amazon S3
5959
+ # Resources][4].
5500
5960
  #
5501
- # To use this operation, you must have permission to perform the
5502
- # `s3:GetEncryptionConfiguration` action. The bucket owner has this
5503
- # permission by default. The bucket owner can grant this permission to
5504
- # others. For more information about permissions, see [Permissions
5505
- # Related to Bucket Subresource Operations][2] and [Managing Access
5506
- # Permissions to Your Amazon S3 Resources][3].
5961
+ # * **Directory bucket permissions** - To grant access to this API
5962
+ # operation, you must have the
5963
+ # `s3express:GetEncryptionConfiguration` permission in an IAM
5964
+ # identity-based policy instead of a bucket policy. Cross-account
5965
+ # access to this API operation isn't supported. This operation can
5966
+ # only be performed by the Amazon Web Services account that owns the
5967
+ # resource. For more information about directory bucket policies and
5968
+ # permissions, see [Amazon Web Services Identity and Access
5969
+ # Management (IAM) for S3 Express One Zone][5] in the *Amazon S3
5970
+ # User Guide*.
5971
+ #
5972
+ # HTTP Host header syntax
5973
+ #
5974
+ # : <b>Directory buckets </b> - The HTTP Host header syntax is
5975
+ # `s3express-control.region.amazonaws.com`.
5507
5976
  #
5508
5977
  # The following operations are related to `GetBucketEncryption`:
5509
5978
  #
5510
- # * [PutBucketEncryption][4]
5979
+ # * [PutBucketEncryption][6]
5511
5980
  #
5512
- # * [DeleteBucketEncryption][5]
5981
+ # * [DeleteBucketEncryption][7]
5513
5982
  #
5514
5983
  #
5515
5984
  #
5516
5985
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html
5517
- # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources
5518
- # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html
5519
- # [4]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html
5520
- # [5]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketEncryption.html
5986
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-bucket-encryption.html
5987
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources
5988
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html
5989
+ # [5]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam.html
5990
+ # [6]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html
5991
+ # [7]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketEncryption.html
5521
5992
  #
5522
5993
  # @option params [required, String] :bucket
5523
5994
  # The name of the bucket from which the server-side encryption
5524
5995
  # configuration is retrieved.
5525
5996
  #
5997
+ # <b>Directory buckets </b> - When you use this operation with a
5998
+ # directory bucket, you must use path-style requests in the format
5999
+ # `https://s3express-control.region_code.amazonaws.com/bucket-name `.
6000
+ # Virtual-hosted-style requests aren't supported. Directory bucket
6001
+ # names must be unique in the chosen Availability Zone. Bucket names
6002
+ # must also follow the format ` bucket_base_name--az_id--x-s3` (for
6003
+ # example, ` DOC-EXAMPLE-BUCKET--usw2-az1--x-s3`). For information about
6004
+ # bucket naming restrictions, see [Directory bucket naming rules][1] in
6005
+ # the *Amazon S3 User Guide*
6006
+ #
6007
+ #
6008
+ #
6009
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-bucket-naming-rules.html
6010
+ #
5526
6011
  # @option params [String] :expected_bucket_owner
5527
6012
  # The account ID of the expected bucket owner. If the account ID that
5528
6013
  # you provide does not match the actual owner of the bucket, the request
5529
6014
  # fails with the HTTP status code `403 Forbidden` (access denied).
5530
6015
  #
6016
+ # <note markdown="1"> For directory buckets, this header is not supported in this API
6017
+ # operation. If you specify this header, the request fails with the HTTP
6018
+ # status code `501 Not Implemented`.
6019
+ #
6020
+ # </note>
6021
+ #
5531
6022
  # @return [Types::GetBucketEncryptionOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
5532
6023
  #
5533
6024
  # * {Types::GetBucketEncryptionOutput#server_side_encryption_configuration #server_side_encryption_configuration} => Types::ServerSideEncryptionConfiguration
@@ -5908,6 +6399,7 @@ module Aws::S3
5908
6399
  # @return [Types::GetBucketLifecycleConfigurationOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
5909
6400
  #
5910
6401
  # * {Types::GetBucketLifecycleConfigurationOutput#rules #rules} => Array&lt;Types::LifecycleRule&gt;
6402
+ # * {Types::GetBucketLifecycleConfigurationOutput#transition_default_minimum_object_size #transition_default_minimum_object_size} => String
5911
6403
  #
5912
6404
  #
5913
6405
  # @example Example: To get lifecycle configuration on a bucket
@@ -5973,6 +6465,7 @@ module Aws::S3
5973
6465
  # resp.rules[0].noncurrent_version_expiration.noncurrent_days #=> Integer
5974
6466
  # resp.rules[0].noncurrent_version_expiration.newer_noncurrent_versions #=> Integer
5975
6467
  # resp.rules[0].abort_incomplete_multipart_upload.days_after_initiation #=> Integer
6468
+ # resp.transition_default_minimum_object_size #=> String, one of "varies_by_storage_class", "all_storage_classes_128K"
5976
6469
  #
5977
6470
  # @see http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLifecycleConfiguration AWS API Documentation
5978
6471
  #
@@ -7267,6 +7760,10 @@ module Aws::S3
7267
7760
  # interruptions when a session expires. For more information about
7268
7761
  # authorization, see [ `CreateSession` ][4].
7269
7762
  #
7763
+ # If the object is encrypted using SSE-KMS, you must also have the
7764
+ # `kms:GenerateDataKey` and `kms:Decrypt` permissions in IAM
7765
+ # identity-based policies and KMS key policies for the KMS key.
7766
+ #
7270
7767
  # Storage classes
7271
7768
  #
7272
7769
  # : If the object you are retrieving is stored in the S3 Glacier
@@ -7295,6 +7792,11 @@ module Aws::S3
7295
7792
  # `GetObject` requests for the object that uses these types of keys,
7296
7793
  # you’ll get an HTTP `400 Bad Request` error.
7297
7794
  #
7795
+ # **Directory buckets** - For directory buckets, there are only two
7796
+ # supported options for server-side encryption: SSE-S3 and SSE-KMS.
7797
+ # SSE-C isn't supported. For more information, see [Protecting data
7798
+ # with server-side encryption][7] in the *Amazon S3 User Guide*.
7799
+ #
7298
7800
  # Overriding response header values through the request
7299
7801
  #
7300
7802
  # : There are times when you want to override certain response header
@@ -7342,9 +7844,9 @@ module Aws::S3
7342
7844
  #
7343
7845
  # The following operations are related to `GetObject`:
7344
7846
  #
7345
- # * [ListBuckets][7]
7847
+ # * [ListBuckets][8]
7346
7848
  #
7347
- # * [GetObjectAcl][8]
7849
+ # * [GetObjectAcl][9]
7348
7850
  #
7349
7851
  #
7350
7852
  #
@@ -7354,8 +7856,9 @@ module Aws::S3
7354
7856
  # [4]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html
7355
7857
  # [5]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html
7356
7858
  # [6]: https://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html
7357
- # [7]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBuckets.html
7358
- # [8]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAcl.html
7859
+ # [7]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html
7860
+ # [8]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBuckets.html
7861
+ # [9]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAcl.html
7359
7862
  #
7360
7863
  # @option params [String, IO] :response_target
7361
7864
  # Where to write response data, file path, or IO object.
@@ -7652,6 +8155,15 @@ module Aws::S3
7652
8155
  # @option params [String] :checksum_mode
7653
8156
  # To retrieve the checksum, this mode must be enabled.
7654
8157
  #
8158
+ # **General purpose buckets** - In addition, if you enable checksum mode
8159
+ # and the object is uploaded with a [checksum][1] and encrypted with an
8160
+ # Key Management Service (KMS) key, you must have permission to use the
8161
+ # `kms:Decrypt` action to retrieve the checksum.
8162
+ #
8163
+ #
8164
+ #
8165
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_Checksum.html
8166
+ #
7655
8167
  # @return [Types::GetObjectOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
7656
8168
  #
7657
8169
  # * {Types::GetObjectOutput#body #body} => IO
@@ -8048,7 +8560,7 @@ module Aws::S3
8048
8560
  # Permissions
8049
8561
  # : * **General purpose bucket permissions** - To use
8050
8562
  # `GetObjectAttributes`, you must have READ access to the object.
8051
- # The permissions that you need to use this operation with depend on
8563
+ # The permissions that you need to use this operation depend on
8052
8564
  # whether the bucket is versioned. If the bucket is versioned, you
8053
8565
  # need both the `s3:GetObjectVersion` and
8054
8566
  # `s3:GetObjectVersionAttributes` permissions for this operation. If
@@ -8082,6 +8594,10 @@ module Aws::S3
8082
8594
  # interruptions when a session expires. For more information about
8083
8595
  # authorization, see [ `CreateSession` ][3].
8084
8596
  #
8597
+ # If the object is encrypted with SSE-KMS, you must also have the
8598
+ # `kms:GenerateDataKey` and `kms:Decrypt` permissions in IAM
8599
+ # identity-based policies and KMS key policies for the KMS key.
8600
+ #
8085
8601
  # Encryption
8086
8602
  # : <note markdown="1"> Encryption request headers, like `x-amz-server-side-encryption`,
8087
8603
  # should not be sent for `HEAD` requests if your object uses
@@ -8115,9 +8631,19 @@ module Aws::S3
8115
8631
  # Customer-Provided Encryption Keys)][4] in the *Amazon S3 User
8116
8632
  # Guide*.
8117
8633
  #
8118
- # <note markdown="1"> **Directory bucket permissions** - For directory buckets, only
8119
- # server-side encryption with Amazon S3 managed keys (SSE-S3)
8120
- # (`AES256`) is supported.
8634
+ # <note markdown="1"> **Directory bucket permissions** - For directory buckets, there are
8635
+ # only two supported options for server-side encryption: server-side
8636
+ # encryption with Amazon S3 managed keys (SSE-S3) (`AES256`) and
8637
+ # server-side encryption with KMS keys (SSE-KMS) (`aws:kms`). We
8638
+ # recommend that the bucket's default encryption uses the desired
8639
+ # encryption configuration and you don't override the bucket default
8640
+ # encryption in your `CreateSession` requests or `PUT` object
8641
+ # requests. Then, new objects are automatically encrypted with the
8642
+ # desired encryption settings. For more information, see [Protecting
8643
+ # data with server-side encryption][5] in the *Amazon S3 User Guide*.
8644
+ # For more information about the encryption overriding behaviors in
8645
+ # directory buckets, see [Specifying server-side encryption with KMS
8646
+ # for new object uploads][6].
8121
8647
  #
8122
8648
  # </note>
8123
8649
  #
@@ -8141,7 +8667,7 @@ module Aws::S3
8141
8667
  # * `If-Unmodified-Since` condition evaluates to `false`.
8142
8668
  #
8143
8669
  # For more information about conditional requests, see [RFC
8144
- # 7232][5].
8670
+ # 7232][7].
8145
8671
  #
8146
8672
  # * If both of the `If-None-Match` and `If-Modified-Since` headers are
8147
8673
  # present in the request as follows, then Amazon S3 returns the HTTP
@@ -8152,7 +8678,7 @@ module Aws::S3
8152
8678
  # * `If-Modified-Since` condition evaluates to `true`.
8153
8679
  #
8154
8680
  # For more information about conditional requests, see [RFC
8155
- # 7232][5].
8681
+ # 7232][7].
8156
8682
  #
8157
8683
  # HTTP Host header syntax
8158
8684
  #
@@ -8161,21 +8687,21 @@ module Aws::S3
8161
8687
  #
8162
8688
  # The following actions are related to `GetObjectAttributes`:
8163
8689
  #
8164
- # * [GetObject][6]
8690
+ # * [GetObject][8]
8165
8691
  #
8166
- # * [GetObjectAcl][7]
8692
+ # * [GetObjectAcl][9]
8167
8693
  #
8168
- # * [GetObjectLegalHold][8]
8694
+ # * [GetObjectLegalHold][10]
8169
8695
  #
8170
- # * [GetObjectLockConfiguration][9]
8696
+ # * [GetObjectLockConfiguration][11]
8171
8697
  #
8172
- # * [GetObjectRetention][10]
8698
+ # * [GetObjectRetention][12]
8173
8699
  #
8174
- # * [GetObjectTagging][11]
8700
+ # * [GetObjectTagging][13]
8175
8701
  #
8176
- # * [HeadObject][12]
8702
+ # * [HeadObject][14]
8177
8703
  #
8178
- # * [ListParts][13]
8704
+ # * [ListParts][15]
8179
8705
  #
8180
8706
  #
8181
8707
  #
@@ -8183,15 +8709,17 @@ module Aws::S3
8183
8709
  # [2]: https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html
8184
8710
  # [3]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html
8185
8711
  # [4]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html
8186
- # [5]: https://tools.ietf.org/html/rfc7232
8187
- # [6]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html
8188
- # [7]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAcl.html
8189
- # [8]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectLegalHold.html
8190
- # [9]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectLockConfiguration.html
8191
- # [10]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectRetention.html
8192
- # [11]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html
8193
- # [12]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html
8194
- # [13]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html
8712
+ # [5]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html
8713
+ # [6]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html
8714
+ # [7]: https://tools.ietf.org/html/rfc7232
8715
+ # [8]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html
8716
+ # [9]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAcl.html
8717
+ # [10]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectLegalHold.html
8718
+ # [11]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectLockConfiguration.html
8719
+ # [12]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectRetention.html
8720
+ # [13]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html
8721
+ # [14]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html
8722
+ # [15]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html
8195
8723
  #
8196
8724
  # @option params [required, String] :bucket
8197
8725
  # The name of the bucket that contains the object.
@@ -8986,29 +9514,24 @@ module Aws::S3
8986
9514
  # have permission to access it. The action returns a `200 OK` if the
8987
9515
  # bucket exists and you have permission to access it.
8988
9516
  #
8989
- # If the bucket does not exist or you do not have permission to access
9517
+ # <note markdown="1"> If the bucket does not exist or you do not have permission to access
8990
9518
  # it, the `HEAD` request returns a generic `400 Bad Request`, `403
8991
9519
  # Forbidden` or `404 Not Found` code. A message body is not included, so
8992
9520
  # you cannot determine the exception beyond these HTTP response codes.
8993
9521
  #
8994
- # <note markdown="1"> <b>Directory buckets </b> - You must make requests for this API
8995
- # operation to the Zonal endpoint. These endpoints support
8996
- # virtual-hosted-style requests in the format
8997
- # `https://bucket_name.s3express-az_id.region.amazonaws.com`. Path-style
8998
- # requests are not supported. For more information, see [Regional and
8999
- # Zonal endpoints][1] in the *Amazon S3 User Guide*.
9000
- #
9001
9522
  # </note>
9002
9523
  #
9003
9524
  # Authentication and authorization
9004
9525
  #
9005
- # : All `HeadBucket` requests must be authenticated and signed by using
9006
- # IAM credentials (access key ID and secret access key for the IAM
9007
- # identities). All headers with the `x-amz-` prefix, including
9526
+ # : **General purpose buckets** - Request to public buckets that grant
9527
+ # the s3:ListBucket permission publicly do not need to be signed. All
9528
+ # other `HeadBucket` requests must be authenticated and signed by
9529
+ # using IAM credentials (access key ID and secret access key for the
9530
+ # IAM identities). All headers with the `x-amz-` prefix, including
9008
9531
  # `x-amz-copy-source`, must be signed. For more information, see [REST
9009
- # Authentication][2].
9532
+ # Authentication][1].
9010
9533
  #
9011
- # **Directory bucket** - You must use IAM credentials to authenticate
9534
+ # **Directory buckets** - You must use IAM credentials to authenticate
9012
9535
  # and authorize your access to the `HeadBucket` API operation, instead
9013
9536
  # of using the temporary security credentials through the
9014
9537
  # `CreateSession` API operation.
@@ -9024,7 +9547,7 @@ module Aws::S3
9024
9547
  # you must have permissions to perform the `s3:ListBucket` action.
9025
9548
  # The bucket owner has this permission by default and can grant this
9026
9549
  # permission to others. For more information about permissions, see
9027
- # [Managing access permissions to your Amazon S3 resources][3] in
9550
+ # [Managing access permissions to your Amazon S3 resources][2] in
9028
9551
  # the *Amazon S3 User Guide*.
9029
9552
  #
9030
9553
  # * **Directory bucket permissions** - You must have the <b>
@@ -9035,9 +9558,9 @@ module Aws::S3
9035
9558
  # `ReadOnly` on the bucket.
9036
9559
  #
9037
9560
  # For more information about example bucket policies, see [Example
9038
- # bucket policies for S3 Express One Zone][4] and [Amazon Web
9561
+ # bucket policies for S3 Express One Zone][3] and [Amazon Web
9039
9562
  # Services Identity and Access Management (IAM) identity-based
9040
- # policies for S3 Express One Zone][5] in the *Amazon S3 User
9563
+ # policies for S3 Express One Zone][4] in the *Amazon S3 User
9041
9564
  # Guide*.
9042
9565
  #
9043
9566
  # HTTP Host header syntax
@@ -9045,13 +9568,21 @@ module Aws::S3
9045
9568
  # : <b>Directory buckets </b> - The HTTP Host header syntax is `
9046
9569
  # Bucket_name.s3express-az_id.region.amazonaws.com`.
9047
9570
  #
9571
+ # <note markdown="1"> You must make requests for this API operation to the Zonal endpoint.
9572
+ # These endpoints support virtual-hosted-style requests in the format
9573
+ # `https://bucket_name.s3express-az_id.region.amazonaws.com`.
9574
+ # Path-style requests are not supported. For more information, see
9575
+ # [Regional and Zonal endpoints][5] in the *Amazon S3 User Guide*.
9576
+ #
9577
+ # </note>
9048
9578
  #
9049
9579
  #
9050
- # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-Regions-and-Zones.html
9051
- # [2]: https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html
9052
- # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html
9053
- # [4]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam-example-bucket-policies.html
9054
- # [5]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam-identity-policies.html
9580
+ #
9581
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html
9582
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html
9583
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam-example-bucket-policies.html
9584
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam-identity-policies.html
9585
+ # [5]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-Regions-and-Zones.html
9055
9586
  #
9056
9587
  # @option params [required, String] :bucket
9057
9588
  # The bucket name.
@@ -9159,7 +9690,7 @@ module Aws::S3
9159
9690
  # returning the object itself. This operation is useful if you're
9160
9691
  # interested only in an object's metadata.
9161
9692
  #
9162
- # A `HEAD` request has the same options as a `GET` operation on an
9693
+ # <note markdown="1"> A `HEAD` request has the same options as a `GET` operation on an
9163
9694
  # object. The response is identical to the `GET` response except that
9164
9695
  # there is no response body. Because of this, if the `HEAD` request
9165
9696
  # generates an error, it returns a generic code, such as `400 Bad
@@ -9167,18 +9698,11 @@ module Aws::S3
9167
9698
  # `412 Precondition Failed`, or `304 Not Modified`. It's not possible
9168
9699
  # to retrieve the exact exception of these error codes.
9169
9700
  #
9701
+ # </note>
9702
+ #
9170
9703
  # Request headers are limited to 8 KB in size. For more information, see
9171
9704
  # [Common Request Headers][1].
9172
9705
  #
9173
- # <note markdown="1"> **Directory buckets** - For directory buckets, you must make requests
9174
- # for this API operation to the Zonal endpoint. These endpoints support
9175
- # virtual-hosted-style requests in the format
9176
- # `https://bucket_name.s3express-az_id.region.amazonaws.com/key-name `.
9177
- # Path-style requests are not supported. For more information, see
9178
- # [Regional and Zonal endpoints][2] in the *Amazon S3 User Guide*.
9179
- #
9180
- # </note>
9181
- #
9182
9706
  # Permissions
9183
9707
  #
9184
9708
  # :
@@ -9187,7 +9711,11 @@ module Aws::S3
9187
9711
  # have the `s3:GetObject` permission. You need the relevant read
9188
9712
  # object (or version) permission for this operation. For more
9189
9713
  # information, see [Actions, resources, and condition keys for
9190
- # Amazon S3][3] in the *Amazon S3 User Guide*.
9714
+ # Amazon S3][2] in the *Amazon S3 User Guide*. For more information
9715
+ # about the permissions to S3 API operations by S3 resource types,
9716
+ # see [Required permissions for Amazon S3 API
9717
+ # operations](/AmazonS3/latest/userguide/using-with-s3-policy-actions.html)
9718
+ # in the *Amazon S3 User Guide*.
9191
9719
  #
9192
9720
  # If the object you request doesn't exist, the error that Amazon S3
9193
9721
  # returns depends on whether you also have the `s3:ListBucket`
@@ -9201,7 +9729,7 @@ module Aws::S3
9201
9729
  #
9202
9730
  # * **Directory bucket permissions** - To grant access to this API
9203
9731
  # operation on a directory bucket, we recommend that you use the [
9204
- # `CreateSession` ][4] API operation for session-based
9732
+ # `CreateSession` ][3] API operation for session-based
9205
9733
  # authorization. Specifically, you grant the
9206
9734
  # `s3express:CreateSession` permission to the directory bucket in a
9207
9735
  # bucket policy or an IAM identity-based policy. Then, you make the
@@ -9212,7 +9740,14 @@ module Aws::S3
9212
9740
  # token for use. Amazon Web Services CLI or SDKs create session and
9213
9741
  # refresh the session token automatically to avoid service
9214
9742
  # interruptions when a session expires. For more information about
9215
- # authorization, see [ `CreateSession` ][4].
9743
+ # authorization, see [ `CreateSession` ][3].
9744
+ #
9745
+ # If you enable `x-amz-checksum-mode` in the request and the object
9746
+ # is encrypted with Amazon Web Services Key Management Service
9747
+ # (Amazon Web Services KMS), you must also have the
9748
+ # `kms:GenerateDataKey` and `kms:Decrypt` permissions in IAM
9749
+ # identity-based policies and KMS key policies for the KMS key to
9750
+ # retrieve the checksum of the object.
9216
9751
  #
9217
9752
  # Encryption
9218
9753
  # : <note markdown="1"> Encryption request headers, like `x-amz-server-side-encryption`,
@@ -9244,12 +9779,13 @@ module Aws::S3
9244
9779
  # * `x-amz-server-side-encryption-customer-key-MD5`
9245
9780
  #
9246
9781
  # For more information about SSE-C, see [Server-Side Encryption (Using
9247
- # Customer-Provided Encryption Keys)][5] in the *Amazon S3 User
9782
+ # Customer-Provided Encryption Keys)][4] in the *Amazon S3 User
9248
9783
  # Guide*.
9249
9784
  #
9250
- # <note markdown="1"> **Directory bucket permissions** - For directory buckets, only
9251
- # server-side encryption with Amazon S3 managed keys (SSE-S3)
9252
- # (`AES256`) is supported.
9785
+ # <note markdown="1"> <b>Directory bucket </b> - For directory buckets, there are only two
9786
+ # supported options for server-side encryption: SSE-S3 and SSE-KMS.
9787
+ # SSE-C isn't supported. For more information, see [Protecting data
9788
+ # with server-side encryption][5] in the *Amazon S3 User Guide*.
9253
9789
  #
9254
9790
  # </note>
9255
9791
  #
@@ -9278,21 +9814,31 @@ module Aws::S3
9278
9814
  # : <b>Directory buckets </b> - The HTTP Host header syntax is `
9279
9815
  # Bucket_name.s3express-az_id.region.amazonaws.com`.
9280
9816
  #
9817
+ # <note markdown="1"> For directory buckets, you must make requests for this API operation
9818
+ # to the Zonal endpoint. These endpoints support virtual-hosted-style
9819
+ # requests in the format
9820
+ # `https://bucket_name.s3express-az_id.region.amazonaws.com/key-name
9821
+ # `. Path-style requests are not supported. For more information, see
9822
+ # [Regional and Zonal endpoints][6] in the *Amazon S3 User Guide*.
9823
+ #
9824
+ # </note>
9825
+ #
9281
9826
  # The following actions are related to `HeadObject`:
9282
9827
  #
9283
- # * [GetObject][6]
9828
+ # * [GetObject][7]
9284
9829
  #
9285
- # * [GetObjectAttributes][7]
9830
+ # * [GetObjectAttributes][8]
9286
9831
  #
9287
9832
  #
9288
9833
  #
9289
9834
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonRequestHeaders.html
9290
- # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-Regions-and-Zones.html
9291
- # [3]: https://docs.aws.amazon.com/AmazonS3/latest/dev/list_amazons3.html
9292
- # [4]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html
9293
- # [5]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html
9294
- # [6]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html
9295
- # [7]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAttributes.html
9835
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/dev/list_amazons3.html
9836
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html
9837
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html
9838
+ # [5]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html
9839
+ # [6]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-Regions-and-Zones.html
9840
+ # [7]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html
9841
+ # [8]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAttributes.html
9296
9842
  #
9297
9843
  # @option params [required, String] :bucket
9298
9844
  # The name of the bucket that contains the object.
@@ -9423,6 +9969,24 @@ module Aws::S3
9423
9969
  # the Range is not satisfiable, S3 returns a `416 - Requested Range Not
9424
9970
  # Satisfiable` error.
9425
9971
  #
9972
+ # @option params [String] :response_cache_control
9973
+ # Sets the `Cache-Control` header of the response.
9974
+ #
9975
+ # @option params [String] :response_content_disposition
9976
+ # Sets the `Content-Disposition` header of the response.
9977
+ #
9978
+ # @option params [String] :response_content_encoding
9979
+ # Sets the `Content-Encoding` header of the response.
9980
+ #
9981
+ # @option params [String] :response_content_language
9982
+ # Sets the `Content-Language` header of the response.
9983
+ #
9984
+ # @option params [String] :response_content_type
9985
+ # Sets the `Content-Type` header of the response.
9986
+ #
9987
+ # @option params [Time,DateTime,Date,Integer,String] :response_expires
9988
+ # Sets the `Expires` header of the response.
9989
+ #
9426
9990
  # @option params [String] :version_id
9427
9991
  # Version ID used to reference a specific version of the object.
9428
9992
  #
@@ -9490,10 +10054,20 @@ module Aws::S3
9490
10054
  # @option params [String] :checksum_mode
9491
10055
  # To retrieve the checksum, this parameter must be enabled.
9492
10056
  #
9493
- # In addition, if you enable `ChecksumMode` and the object is encrypted
9494
- # with Amazon Web Services Key Management Service (Amazon Web Services
9495
- # KMS), you must have permission to use the `kms:Decrypt` action for the
9496
- # request to succeed.
10057
+ # **General purpose buckets** - If you enable checksum mode and the
10058
+ # object is uploaded with a [checksum][1] and encrypted with an Key
10059
+ # Management Service (KMS) key, you must have permission to use the
10060
+ # `kms:Decrypt` action to retrieve the checksum.
10061
+ #
10062
+ # **Directory buckets** - If you enable `ChecksumMode` and the object is
10063
+ # encrypted with Amazon Web Services Key Management Service (Amazon Web
10064
+ # Services KMS), you must also have the `kms:GenerateDataKey` and
10065
+ # `kms:Decrypt` permissions in IAM identity-based policies and KMS key
10066
+ # policies for the KMS key to retrieve the checksum of the object.
10067
+ #
10068
+ #
10069
+ #
10070
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_Checksum.html
9497
10071
  #
9498
10072
  # @return [Types::HeadObjectOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
9499
10073
  #
@@ -9565,6 +10139,12 @@ module Aws::S3
9565
10139
  # if_unmodified_since: Time.now,
9566
10140
  # key: "ObjectKey", # required
9567
10141
  # range: "Range",
10142
+ # response_cache_control: "ResponseCacheControl",
10143
+ # response_content_disposition: "ResponseContentDisposition",
10144
+ # response_content_encoding: "ResponseContentEncoding",
10145
+ # response_content_language: "ResponseContentLanguage",
10146
+ # response_content_type: "ResponseContentType",
10147
+ # response_expires: Time.now,
9568
10148
  # version_id: "ObjectVersionId",
9569
10149
  # sse_customer_algorithm: "SSECustomerAlgorithm",
9570
10150
  # sse_customer_key: "SSECustomerKey",
@@ -10041,10 +10621,52 @@ module Aws::S3
10041
10621
  #
10042
10622
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-buckets-s3.html
10043
10623
  #
10624
+ # @option params [Integer] :max_buckets
10625
+ # Maximum number of buckets to be returned in response. When the number
10626
+ # is more than the count of buckets that are owned by an Amazon Web
10627
+ # Services account, return all the buckets in response.
10628
+ #
10629
+ # @option params [String] :continuation_token
10630
+ # `ContinuationToken` indicates to Amazon S3 that the list is being
10631
+ # continued on this bucket with a token. `ContinuationToken` is
10632
+ # obfuscated and is not a real key. You can use this `ContinuationToken`
10633
+ # for pagination of the list results.
10634
+ #
10635
+ # Length Constraints: Minimum length of 0. Maximum length of 1024.
10636
+ #
10637
+ # Required: No.
10638
+ #
10639
+ # @option params [String] :prefix
10640
+ # Limits the response to bucket names that begin with the specified
10641
+ # bucket name prefix.
10642
+ #
10643
+ # @option params [String] :bucket_region
10644
+ # Limits the response to buckets that are located in the specified
10645
+ # Amazon Web Services Region. The Amazon Web Services Region must be
10646
+ # expressed according to the Amazon Web Services Region code, such as
10647
+ # `us-west-2` for the US West (Oregon) Region. For a list of the valid
10648
+ # values for all of the Amazon Web Services Regions, see [Regions and
10649
+ # Endpoints][1].
10650
+ #
10651
+ # <note markdown="1"> Requests made to a Regional endpoint that is different from the
10652
+ # `bucket-region` parameter are not supported. For example, if you want
10653
+ # to limit the response to your buckets in Region `us-west-2`, the
10654
+ # request must be made to an endpoint in Region `us-west-2`.
10655
+ #
10656
+ # </note>
10657
+ #
10658
+ #
10659
+ #
10660
+ # [1]: https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region
10661
+ #
10044
10662
  # @return [Types::ListBucketsOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
10045
10663
  #
10046
10664
  # * {Types::ListBucketsOutput#buckets #buckets} => Array&lt;Types::Bucket&gt;
10047
10665
  # * {Types::ListBucketsOutput#owner #owner} => Types::Owner
10666
+ # * {Types::ListBucketsOutput#continuation_token #continuation_token} => String
10667
+ # * {Types::ListBucketsOutput#prefix #prefix} => String
10668
+ #
10669
+ # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}.
10048
10670
  #
10049
10671
  #
10050
10672
  # @example Example: To list all buckets
@@ -10076,13 +10698,25 @@ module Aws::S3
10076
10698
  # },
10077
10699
  # }
10078
10700
  #
10701
+ # @example Request syntax with placeholder values
10702
+ #
10703
+ # resp = client.list_buckets({
10704
+ # max_buckets: 1,
10705
+ # continuation_token: "Token",
10706
+ # prefix: "Prefix",
10707
+ # bucket_region: "BucketRegion",
10708
+ # })
10709
+ #
10079
10710
  # @example Response structure
10080
10711
  #
10081
10712
  # resp.buckets #=> Array
10082
10713
  # resp.buckets[0].name #=> String
10083
10714
  # resp.buckets[0].creation_date #=> Time
10715
+ # resp.buckets[0].bucket_region #=> String
10084
10716
  # resp.owner.display_name #=> String
10085
10717
  # resp.owner.id #=> String
10718
+ # resp.continuation_token #=> String
10719
+ # resp.prefix #=> String
10086
10720
  #
10087
10721
  # @see http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBuckets AWS API Documentation
10088
10722
  #
@@ -10131,9 +10765,9 @@ module Aws::S3
10131
10765
  #
10132
10766
  # @option params [String] :continuation_token
10133
10767
  # `ContinuationToken` indicates to Amazon S3 that the list is being
10134
- # continued on this bucket with a token. `ContinuationToken` is
10135
- # obfuscated and is not a real key. You can use this `ContinuationToken`
10136
- # for pagination of the list results.
10768
+ # continued on buckets in this account with a token. `ContinuationToken`
10769
+ # is obfuscated and is not a real bucket name. You can use this
10770
+ # `ContinuationToken` for the pagination of the list results.
10137
10771
  #
10138
10772
  # @option params [Integer] :max_directory_buckets
10139
10773
  # Maximum number of buckets to be returned in response. When the number
@@ -10159,6 +10793,7 @@ module Aws::S3
10159
10793
  # resp.buckets #=> Array
10160
10794
  # resp.buckets[0].name #=> String
10161
10795
  # resp.buckets[0].creation_date #=> Time
10796
+ # resp.buckets[0].bucket_region #=> String
10162
10797
  # resp.continuation_token #=> String
10163
10798
  #
10164
10799
  # @see http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListDirectoryBuckets AWS API Documentation
@@ -10177,7 +10812,11 @@ module Aws::S3
10177
10812
  #
10178
10813
  # <note markdown="1"> **Directory buckets** - If multipart uploads in a directory bucket are
10179
10814
  # in progress, you can't delete the bucket until all the in-progress
10180
- # multipart uploads are aborted or completed.
10815
+ # multipart uploads are aborted or completed. To delete these
10816
+ # in-progress multipart uploads, use the `ListMultipartUploads`
10817
+ # operation to list the in-progress multipart uploads in the bucket and
10818
+ # use the `AbortMultupartUpload` operation to abort all the in-progress
10819
+ # multipart uploads.
10181
10820
  #
10182
10821
  # </note>
10183
10822
  #
@@ -10343,12 +10982,26 @@ module Aws::S3
10343
10982
  # </note>
10344
10983
  #
10345
10984
  # @option params [String] :encoding_type
10346
- # Requests Amazon S3 to encode the object keys in the response and
10347
- # specifies the encoding method to use. An object key can contain any
10348
- # Unicode character; however, the XML 1.0 parser cannot parse some
10349
- # characters, such as characters with an ASCII value from 0 to 10. For
10350
- # characters that are not supported in XML 1.0, you can add this
10351
- # parameter to request that Amazon S3 encode the keys in the response.
10985
+ # Encoding type used by Amazon S3 to encode the [object keys][1] in the
10986
+ # response. Responses are encoded only in UTF-8. An object key can
10987
+ # contain any Unicode character. However, the XML 1.0 parser can't
10988
+ # parse certain characters, such as characters with an ASCII value from
10989
+ # 0 to 10. For characters that aren't supported in XML 1.0, you can add
10990
+ # this parameter to request that Amazon S3 encode the keys in the
10991
+ # response. For more information about characters to avoid in object key
10992
+ # names, see [Object key naming guidelines][2].
10993
+ #
10994
+ # <note markdown="1"> When using the URL encoding type, non-ASCII characters that are used
10995
+ # in an object's key name will be percent-encoded according to UTF-8
10996
+ # code values. For example, the object `test_file(3).png` will appear as
10997
+ # `test_file%283%29.png`.
10998
+ #
10999
+ # </note>
11000
+ #
11001
+ #
11002
+ #
11003
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html
11004
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-guidelines
10352
11005
  #
10353
11006
  # @option params [String] :key_marker
10354
11007
  # Specifies the multipart upload after which listing should begin.
@@ -10640,12 +11293,26 @@ module Aws::S3
10640
11293
  # the response.
10641
11294
  #
10642
11295
  # @option params [String] :encoding_type
10643
- # Requests Amazon S3 to encode the object keys in the response and
10644
- # specifies the encoding method to use. An object key can contain any
10645
- # Unicode character; however, the XML 1.0 parser cannot parse some
10646
- # characters, such as characters with an ASCII value from 0 to 10. For
10647
- # characters that are not supported in XML 1.0, you can add this
10648
- # parameter to request that Amazon S3 encode the keys in the response.
11296
+ # Encoding type used by Amazon S3 to encode the [object keys][1] in the
11297
+ # response. Responses are encoded only in UTF-8. An object key can
11298
+ # contain any Unicode character. However, the XML 1.0 parser can't
11299
+ # parse certain characters, such as characters with an ASCII value from
11300
+ # 0 to 10. For characters that aren't supported in XML 1.0, you can add
11301
+ # this parameter to request that Amazon S3 encode the keys in the
11302
+ # response. For more information about characters to avoid in object key
11303
+ # names, see [Object key naming guidelines][2].
11304
+ #
11305
+ # <note markdown="1"> When using the URL encoding type, non-ASCII characters that are used
11306
+ # in an object's key name will be percent-encoded according to UTF-8
11307
+ # code values. For example, the object `test_file(3).png` will appear as
11308
+ # `test_file%283%29.png`.
11309
+ #
11310
+ # </note>
11311
+ #
11312
+ #
11313
+ #
11314
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html
11315
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-guidelines
10649
11316
  #
10650
11317
  # @option params [String] :key_marker
10651
11318
  # Specifies the key to start with when listing objects in a bucket.
@@ -10899,12 +11566,26 @@ module Aws::S3
10899
11566
  # A delimiter is a character that you use to group keys.
10900
11567
  #
10901
11568
  # @option params [String] :encoding_type
10902
- # Requests Amazon S3 to encode the object keys in the response and
10903
- # specifies the encoding method to use. An object key can contain any
10904
- # Unicode character; however, the XML 1.0 parser cannot parse some
10905
- # characters, such as characters with an ASCII value from 0 to 10. For
10906
- # characters that are not supported in XML 1.0, you can add this
10907
- # parameter to request that Amazon S3 encode the keys in the response.
11569
+ # Encoding type used by Amazon S3 to encode the [object keys][1] in the
11570
+ # response. Responses are encoded only in UTF-8. An object key can
11571
+ # contain any Unicode character. However, the XML 1.0 parser can't
11572
+ # parse certain characters, such as characters with an ASCII value from
11573
+ # 0 to 10. For characters that aren't supported in XML 1.0, you can add
11574
+ # this parameter to request that Amazon S3 encode the keys in the
11575
+ # response. For more information about characters to avoid in object key
11576
+ # names, see [Object key naming guidelines][2].
11577
+ #
11578
+ # <note markdown="1"> When using the URL encoding type, non-ASCII characters that are used
11579
+ # in an object's key name will be percent-encoded according to UTF-8
11580
+ # code values. For example, the object `test_file(3).png` will appear as
11581
+ # `test_file%283%29.png`.
11582
+ #
11583
+ # </note>
11584
+ #
11585
+ #
11586
+ #
11587
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html
11588
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-guidelines
10908
11589
  #
10909
11590
  # @option params [String] :marker
10910
11591
  # Marker is where you want Amazon S3 to start listing from. Amazon S3
@@ -11046,12 +11727,20 @@ module Aws::S3
11046
11727
  # programmatically][1] in the *Amazon S3 User Guide*. To get a list of
11047
11728
  # your buckets, see [ListBuckets][2].
11048
11729
  #
11049
- # <note markdown="1"> **Directory buckets** - For directory buckets, you must make requests
11050
- # for this API operation to the Zonal endpoint. These endpoints support
11051
- # virtual-hosted-style requests in the format
11052
- # `https://bucket_name.s3express-az_id.region.amazonaws.com/key-name `.
11053
- # Path-style requests are not supported. For more information, see
11054
- # [Regional and Zonal endpoints][3] in the *Amazon S3 User Guide*.
11730
+ # <note markdown="1"> * **General purpose bucket** - For general purpose buckets,
11731
+ # `ListObjectsV2` doesn't return prefixes that are related only to
11732
+ # in-progress multipart uploads.
11733
+ #
11734
+ # * **Directory buckets** - For directory buckets, `ListObjectsV2`
11735
+ # response includes the prefixes that are related only to in-progress
11736
+ # multipart uploads.
11737
+ #
11738
+ # * **Directory buckets** - For directory buckets, you must make
11739
+ # requests for this API operation to the Zonal endpoint. These
11740
+ # endpoints support virtual-hosted-style requests in the format
11741
+ # `https://bucket_name.s3express-az_id.region.amazonaws.com/key-name
11742
+ # `. Path-style requests are not supported. For more information, see
11743
+ # [Regional and Zonal endpoints][3] in the *Amazon S3 User Guide*.
11055
11744
  #
11056
11745
  # </note>
11057
11746
  #
@@ -11180,10 +11869,26 @@ module Aws::S3
11180
11869
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html
11181
11870
  #
11182
11871
  # @option params [String] :encoding_type
11183
- # Encoding type used by Amazon S3 to encode object keys in the response.
11184
- # If using `url`, non-ASCII characters used in an object's key name
11185
- # will be URL encoded. For example, the object test\_file(3).png will
11186
- # appear as test\_file%283%29.png.
11872
+ # Encoding type used by Amazon S3 to encode the [object keys][1] in the
11873
+ # response. Responses are encoded only in UTF-8. An object key can
11874
+ # contain any Unicode character. However, the XML 1.0 parser can't
11875
+ # parse certain characters, such as characters with an ASCII value from
11876
+ # 0 to 10. For characters that aren't supported in XML 1.0, you can add
11877
+ # this parameter to request that Amazon S3 encode the keys in the
11878
+ # response. For more information about characters to avoid in object key
11879
+ # names, see [Object key naming guidelines][2].
11880
+ #
11881
+ # <note markdown="1"> When using the URL encoding type, non-ASCII characters that are used
11882
+ # in an object's key name will be percent-encoded according to UTF-8
11883
+ # code values. For example, the object `test_file(3).png` will appear as
11884
+ # `test_file%283%29.png`.
11885
+ #
11886
+ # </note>
11887
+ #
11888
+ #
11889
+ #
11890
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html
11891
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-guidelines
11187
11892
  #
11188
11893
  # @option params [Integer] :max_keys
11189
11894
  # Sets the maximum number of keys returned in the response. By default,
@@ -12383,66 +13088,156 @@ module Aws::S3
12383
13088
  req.send_request(options)
12384
13089
  end
12385
13090
 
12386
- # <note markdown="1"> This operation is not supported by directory buckets.
13091
+ # This operation configures default encryption and Amazon S3 Bucket Keys
13092
+ # for an existing bucket.
12387
13093
  #
12388
- # </note>
13094
+ # <note markdown="1"> <b>Directory buckets </b> - For directory buckets, you must make
13095
+ # requests for this API operation to the Regional endpoint. These
13096
+ # endpoints support path-style requests in the format
13097
+ # `https://s3express-control.region_code.amazonaws.com/bucket-name `.
13098
+ # Virtual-hosted-style requests aren't supported. For more information,
13099
+ # see [Regional and Zonal endpoints][1] in the *Amazon S3 User Guide*.
12389
13100
  #
12390
- # This action uses the `encryption` subresource to configure default
12391
- # encryption and Amazon S3 Bucket Keys for an existing bucket.
13101
+ # </note>
12392
13102
  #
12393
13103
  # By default, all buckets have a default encryption configuration that
12394
- # uses server-side encryption with Amazon S3 managed keys (SSE-S3). You
12395
- # can optionally configure default encryption for a bucket by using
12396
- # server-side encryption with Key Management Service (KMS) keys
12397
- # (SSE-KMS) or dual-layer server-side encryption with Amazon Web
12398
- # Services KMS keys (DSSE-KMS). If you specify default encryption by
12399
- # using SSE-KMS, you can also configure [Amazon S3 Bucket Keys][1]. If
12400
- # you use PutBucketEncryption to set your [default bucket encryption][2]
12401
- # to SSE-KMS, you should verify that your KMS key ID is correct. Amazon
12402
- # S3 does not validate the KMS key ID provided in PutBucketEncryption
12403
- # requests.
12404
- #
12405
- # This action requires Amazon Web Services Signature Version 4. For more
12406
- # information, see [ Authenticating Requests (Amazon Web Services
12407
- # Signature Version 4)][3].
13104
+ # uses server-side encryption with Amazon S3 managed keys (SSE-S3).
13105
+ #
13106
+ # <note markdown="1"> * **General purpose buckets**
13107
+ #
13108
+ # * You can optionally configure default encryption for a bucket by
13109
+ # using server-side encryption with Key Management Service (KMS)
13110
+ # keys (SSE-KMS) or dual-layer server-side encryption with Amazon
13111
+ # Web Services KMS keys (DSSE-KMS). If you specify default
13112
+ # encryption by using SSE-KMS, you can also configure [Amazon S3
13113
+ # Bucket Keys][2]. For information about the bucket default
13114
+ # encryption feature, see [Amazon S3 Bucket Default Encryption][3]
13115
+ # in the *Amazon S3 User Guide*.
13116
+ #
13117
+ # * If you use PutBucketEncryption to set your [default bucket
13118
+ # encryption][3] to SSE-KMS, you should verify that your KMS key ID
13119
+ # is correct. Amazon S3 doesn't validate the KMS key ID provided in
13120
+ # PutBucketEncryption requests.
13121
+ #
13122
+ # * <b>Directory buckets </b> - You can optionally configure default
13123
+ # encryption for a bucket by using server-side encryption with Key
13124
+ # Management Service (KMS) keys (SSE-KMS).
13125
+ #
13126
+ # * We recommend that the bucket's default encryption uses the
13127
+ # desired encryption configuration and you don't override the
13128
+ # bucket default encryption in your `CreateSession` requests or
13129
+ # `PUT` object requests. Then, new objects are automatically
13130
+ # encrypted with the desired encryption settings. For more
13131
+ # information about the encryption overriding behaviors in directory
13132
+ # buckets, see [Specifying server-side encryption with KMS for new
13133
+ # object uploads][4].
13134
+ #
13135
+ # * Your SSE-KMS configuration can only support 1 [customer managed
13136
+ # key][5] per directory bucket for the lifetime of the bucket. The
13137
+ # [Amazon Web Services managed key][6] (`aws/s3`) isn't supported.
13138
+ #
13139
+ # * S3 Bucket Keys are always enabled for `GET` and `PUT` operations
13140
+ # in a directory bucket and can’t be disabled. S3 Bucket Keys
13141
+ # aren't supported, when you copy SSE-KMS encrypted objects from
13142
+ # general purpose buckets to directory buckets, from directory
13143
+ # buckets to general purpose buckets, or between directory buckets,
13144
+ # through [CopyObject][7], [UploadPartCopy][8], [the Copy operation
13145
+ # in Batch Operations][9], or [the import jobs][10]. In this case,
13146
+ # Amazon S3 makes a call to KMS every time a copy request is made
13147
+ # for a KMS-encrypted object.
13148
+ #
13149
+ # * When you specify an [KMS customer managed key][5] for encryption
13150
+ # in your directory bucket, only use the key ID or key ARN. The key
13151
+ # alias format of the KMS key isn't supported.
13152
+ #
13153
+ # * For directory buckets, if you use PutBucketEncryption to set your
13154
+ # [default bucket encryption][3] to SSE-KMS, Amazon S3 validates the
13155
+ # KMS key ID provided in PutBucketEncryption requests.
13156
+ #
13157
+ # </note>
13158
+ #
13159
+ # If you're specifying a customer managed KMS key, we recommend using a
13160
+ # fully qualified KMS key ARN. If you use a KMS key alias instead, then
13161
+ # KMS resolves the key within the requester’s account. This behavior can
13162
+ # result in data that's encrypted with a KMS key that belongs to the
13163
+ # requester, and not the bucket owner.
13164
+ #
13165
+ # Also, this action requires Amazon Web Services Signature Version 4.
13166
+ # For more information, see [ Authenticating Requests (Amazon Web
13167
+ # Services Signature Version 4)][11].
13168
+ #
13169
+ # Permissions
13170
+ # : * **General purpose bucket permissions** - The
13171
+ # `s3:PutEncryptionConfiguration` permission is required in a
13172
+ # policy. The bucket owner has this permission by default. The
13173
+ # bucket owner can grant this permission to others. For more
13174
+ # information about permissions, see [Permissions Related to Bucket
13175
+ # Operations][12] and [Managing Access Permissions to Your Amazon S3
13176
+ # Resources][13] in the *Amazon S3 User Guide*.
13177
+ #
13178
+ # * **Directory bucket permissions** - To grant access to this API
13179
+ # operation, you must have the
13180
+ # `s3express:PutEncryptionConfiguration` permission in an IAM
13181
+ # identity-based policy instead of a bucket policy. Cross-account
13182
+ # access to this API operation isn't supported. This operation can
13183
+ # only be performed by the Amazon Web Services account that owns the
13184
+ # resource. For more information about directory bucket policies and
13185
+ # permissions, see [Amazon Web Services Identity and Access
13186
+ # Management (IAM) for S3 Express One Zone][14] in the *Amazon S3
13187
+ # User Guide*.
13188
+ #
13189
+ # To set a directory bucket default encryption with SSE-KMS, you
13190
+ # must also have the `kms:GenerateDataKey` and the `kms:Decrypt`
13191
+ # permissions in IAM identity-based policies and KMS key policies
13192
+ # for the target KMS key.
13193
+ #
13194
+ # HTTP Host header syntax
12408
13195
  #
12409
- # To use this operation, you must have permission to perform the
12410
- # `s3:PutEncryptionConfiguration` action. The bucket owner has this
12411
- # permission by default. The bucket owner can grant this permission to
12412
- # others. For more information about permissions, see [Permissions
12413
- # Related to Bucket Subresource Operations][4] and [Managing Access
12414
- # Permissions to Your Amazon S3 Resources][5] in the *Amazon S3 User
12415
- # Guide*.
13196
+ # : <b>Directory buckets </b> - The HTTP Host header syntax is
13197
+ # `s3express-control.region.amazonaws.com`.
12416
13198
  #
12417
13199
  # The following operations are related to `PutBucketEncryption`:
12418
13200
  #
12419
- # * [GetBucketEncryption][6]
13201
+ # * [GetBucketEncryption][15]
12420
13202
  #
12421
- # * [DeleteBucketEncryption][7]
13203
+ # * [DeleteBucketEncryption][16]
12422
13204
  #
12423
13205
  #
12424
13206
  #
12425
- # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html
12426
- # [2]: https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html
12427
- # [3]: https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html
12428
- # [4]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources
12429
- # [5]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html
12430
- # [6]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html
12431
- # [7]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketEncryption.html
13207
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-Regions-and-Zones.html
13208
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html
13209
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html
13210
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html
13211
+ # [5]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk
13212
+ # [6]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk
13213
+ # [7]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
13214
+ # [8]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
13215
+ # [9]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-buckets-objects-Batch-Ops
13216
+ # [10]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-import-job
13217
+ # [11]: https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html
13218
+ # [12]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources
13219
+ # [13]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html
13220
+ # [14]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam.html
13221
+ # [15]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html
13222
+ # [16]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketEncryption.html
12432
13223
  #
12433
13224
  # @option params [required, String] :bucket
12434
13225
  # Specifies default encryption for a bucket using server-side encryption
12435
- # with different key options. By default, all buckets have a default
12436
- # encryption configuration that uses server-side encryption with Amazon
12437
- # S3 managed keys (SSE-S3). You can optionally configure default
12438
- # encryption for a bucket by using server-side encryption with an Amazon
12439
- # Web Services KMS key (SSE-KMS) or a customer-provided key (SSE-C). For
12440
- # information about the bucket default encryption feature, see [Amazon
12441
- # S3 Bucket Default Encryption][1] in the *Amazon S3 User Guide*.
13226
+ # with different key options.
13227
+ #
13228
+ # <b>Directory buckets </b> - When you use this operation with a
13229
+ # directory bucket, you must use path-style requests in the format
13230
+ # `https://s3express-control.region_code.amazonaws.com/bucket-name `.
13231
+ # Virtual-hosted-style requests aren't supported. Directory bucket
13232
+ # names must be unique in the chosen Availability Zone. Bucket names
13233
+ # must also follow the format ` bucket_base_name--az_id--x-s3` (for
13234
+ # example, ` DOC-EXAMPLE-BUCKET--usw2-az1--x-s3`). For information about
13235
+ # bucket naming restrictions, see [Directory bucket naming rules][1] in
13236
+ # the *Amazon S3 User Guide*
12442
13237
  #
12443
13238
  #
12444
13239
  #
12445
- # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html
13240
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-bucket-naming-rules.html
12446
13241
  #
12447
13242
  # @option params [String] :content_md5
12448
13243
  # The base64-encoded 128-bit MD5 digest of the server-side encryption
@@ -12452,6 +13247,10 @@ module Aws::S3
12452
13247
  # (CLI) or Amazon Web Services SDKs, this field is calculated
12453
13248
  # automatically.
12454
13249
  #
13250
+ # <note markdown="1"> This functionality is not supported for directory buckets.
13251
+ #
13252
+ # </note>
13253
+ #
12455
13254
  # @option params [String] :checksum_algorithm
12456
13255
  # Indicates the algorithm used to create the checksum for the object
12457
13256
  # when you use the SDK. This header will not provide any additional
@@ -12464,6 +13263,11 @@ module Aws::S3
12464
13263
  # If you provide an individual checksum, Amazon S3 ignores any provided
12465
13264
  # `ChecksumAlgorithm` parameter.
12466
13265
  #
13266
+ # <note markdown="1"> For directory buckets, when you use Amazon Web Services SDKs, `CRC32`
13267
+ # is the default checksum algorithm that's used for performance.
13268
+ #
13269
+ # </note>
13270
+ #
12467
13271
  #
12468
13272
  #
12469
13273
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
@@ -12476,6 +13280,12 @@ module Aws::S3
12476
13280
  # you provide does not match the actual owner of the bucket, the request
12477
13281
  # fails with the HTTP status code `403 Forbidden` (access denied).
12478
13282
  #
13283
+ # <note markdown="1"> For directory buckets, this header is not supported in this API
13284
+ # operation. If you specify this header, the request fails with the HTTP
13285
+ # status code `501 Not Implemented`.
13286
+ #
13287
+ # </note>
13288
+ #
12479
13289
  # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
12480
13290
  #
12481
13291
  # @example Request syntax with placeholder values
@@ -12946,23 +13756,22 @@ module Aws::S3
12946
13756
  # lifecycle configuration. For information about lifecycle
12947
13757
  # configuration, see [Managing your storage lifecycle][1].
12948
13758
  #
12949
- # <note markdown="1"> Bucket lifecycle configuration now supports specifying a lifecycle
12950
- # rule using an object key name prefix, one or more object tags, object
12951
- # size, or any combination of these. Accordingly, this section describes
12952
- # the latest API. The previous version of the API supported filtering
12953
- # based only on an object key name prefix, which is supported for
12954
- # backward compatibility. For the related API description, see
12955
- # [PutBucketLifecycle][2].
12956
- #
12957
- # </note>
12958
- #
12959
13759
  # Rules
12960
13760
  #
12961
13761
  # : You specify the lifecycle configuration in your request body. The
12962
13762
  # lifecycle configuration is specified as XML consisting of one or
12963
13763
  # more rules. An Amazon S3 Lifecycle configuration can have up to
12964
- # 1,000 rules. This limit is not adjustable. Each rule consists of the
12965
- # following:
13764
+ # 1,000 rules. This limit is not adjustable.
13765
+ #
13766
+ # Bucket lifecycle configuration supports specifying a lifecycle rule
13767
+ # using an object key name prefix, one or more object tags, object
13768
+ # size, or any combination of these. Accordingly, this section
13769
+ # describes the latest API. The previous version of the API supported
13770
+ # filtering based only on an object key name prefix, which is
13771
+ # supported for backward compatibility. For the related API
13772
+ # description, see [PutBucketLifecycle][2].
13773
+ #
13774
+ # A lifecycle rule consists of the following:
12966
13775
  #
12967
13776
  # * A filter identifying a subset of objects to which the rule
12968
13777
  # applies. The filter can be based on a key name prefix, object
@@ -13053,7 +13862,26 @@ module Aws::S3
13053
13862
  # you provide does not match the actual owner of the bucket, the request
13054
13863
  # fails with the HTTP status code `403 Forbidden` (access denied).
13055
13864
  #
13056
- # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
13865
+ # @option params [String] :transition_default_minimum_object_size
13866
+ # Indicates which default minimum object size behavior is applied to the
13867
+ # lifecycle configuration.
13868
+ #
13869
+ # * `all_storage_classes_128K` - Objects smaller than 128 KB will not
13870
+ # transition to any storage class by default.
13871
+ #
13872
+ # * `varies_by_storage_class` - Objects smaller than 128 KB will
13873
+ # transition to Glacier Flexible Retrieval or Glacier Deep Archive
13874
+ # storage classes. By default, all other storage classes will prevent
13875
+ # transitions smaller than 128 KB.
13876
+ #
13877
+ # To customize the minimum object size for any transition you can add a
13878
+ # filter that specifies a custom `ObjectSizeGreaterThan` or
13879
+ # `ObjectSizeLessThan` in the body of your transition rule. Custom
13880
+ # filters always take precedence over the default transition behavior.
13881
+ #
13882
+ # @return [Types::PutBucketLifecycleConfigurationOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
13883
+ #
13884
+ # * {Types::PutBucketLifecycleConfigurationOutput#transition_default_minimum_object_size #transition_default_minimum_object_size} => String
13057
13885
  #
13058
13886
  #
13059
13887
  # @example Example: Put bucket lifecycle
@@ -13145,8 +13973,13 @@ module Aws::S3
13145
13973
  # ],
13146
13974
  # },
13147
13975
  # expected_bucket_owner: "AccountId",
13976
+ # transition_default_minimum_object_size: "varies_by_storage_class", # accepts varies_by_storage_class, all_storage_classes_128K
13148
13977
  # })
13149
13978
  #
13979
+ # @example Response structure
13980
+ #
13981
+ # resp.transition_default_minimum_object_size #=> String, one of "varies_by_storage_class", "all_storage_classes_128K"
13982
+ #
13150
13983
  # @see http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLifecycleConfiguration AWS API Documentation
13151
13984
  #
13152
13985
  # @overload put_bucket_lifecycle_configuration(params = {})
@@ -13899,13 +14732,13 @@ module Aws::S3
13899
14732
  # For the `x-amz-checksum-algorithm ` header, replace ` algorithm ` with
13900
14733
  # the supported algorithm from the following list:
13901
14734
  #
13902
- # * CRC32
14735
+ # * `CRC32`
13903
14736
  #
13904
- # * CRC32C
14737
+ # * `CRC32C`
13905
14738
  #
13906
- # * SHA1
14739
+ # * `SHA1`
13907
14740
  #
13908
- # * SHA256
14741
+ # * `SHA256`
13909
14742
  #
13910
14743
  # For more information, see [Checking object integrity][1] in the
13911
14744
  # *Amazon S3 User Guide*.
@@ -14472,6 +15305,14 @@ module Aws::S3
14472
15305
  #
14473
15306
  # </note>
14474
15307
  #
15308
+ # <note markdown="1"> When you enable versioning on a bucket for the first time, it might
15309
+ # take a short amount of time for the change to be fully propagated. We
15310
+ # recommend that you wait for 15 minutes after enabling versioning
15311
+ # before issuing write operations (`PUT` or `DELETE`) on objects in the
15312
+ # bucket.
15313
+ #
15314
+ # </note>
15315
+ #
14475
15316
  # Sets the versioning state of an existing bucket.
14476
15317
  #
14477
15318
  # You can set the versioning state with one of the following values:
@@ -14865,6 +15706,10 @@ module Aws::S3
14865
15706
  # interruptions when a session expires. For more information about
14866
15707
  # authorization, see [ `CreateSession` ][5].
14867
15708
  #
15709
+ # If the object is encrypted with SSE-KMS, you must also have the
15710
+ # `kms:GenerateDataKey` and `kms:Decrypt` permissions in IAM
15711
+ # identity-based policies and KMS key policies for the KMS key.
15712
+ #
14868
15713
  # Data integrity with Content-MD5
14869
15714
  # : * **General purpose bucket** - To ensure that data is not corrupted
14870
15715
  # traversing the network, use the `Content-MD5` header. When you use
@@ -15032,10 +15877,11 @@ module Aws::S3
15032
15877
  # information about REST request authentication, see [REST
15033
15878
  # Authentication][1].
15034
15879
  #
15035
- # <note markdown="1"> The `Content-MD5` header is required for any request to upload an
15036
- # object with a retention period configured using Amazon S3 Object Lock.
15037
- # For more information about Amazon S3 Object Lock, see [Amazon S3
15038
- # Object Lock Overview][2] in the *Amazon S3 User Guide*.
15880
+ # <note markdown="1"> The `Content-MD5` or `x-amz-sdk-checksum-algorithm` header is required
15881
+ # for any request to upload an object with a retention period configured
15882
+ # using Amazon S3 Object Lock. For more information, see [Uploading
15883
+ # objects to an Object Lock enabled bucket ][2] in the *Amazon S3 User
15884
+ # Guide*.
15039
15885
  #
15040
15886
  # </note>
15041
15887
  #
@@ -15046,7 +15892,7 @@ module Aws::S3
15046
15892
  #
15047
15893
  #
15048
15894
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html
15049
- # [2]: https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html
15895
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-managing.html#object-lock-put-object
15050
15896
  #
15051
15897
  # @option params [String] :content_type
15052
15898
  # A standard MIME type describing the format of the contents. For more
@@ -15068,13 +15914,13 @@ module Aws::S3
15068
15914
  # For the `x-amz-checksum-algorithm ` header, replace ` algorithm ` with
15069
15915
  # the supported algorithm from the following list:
15070
15916
  #
15071
- # * CRC32
15917
+ # * `CRC32`
15072
15918
  #
15073
- # * CRC32C
15919
+ # * `CRC32C`
15074
15920
  #
15075
- # * SHA1
15921
+ # * `SHA1`
15076
15922
  #
15077
- # * SHA256
15923
+ # * `SHA256`
15078
15924
  #
15079
15925
  # For more information, see [Checking object integrity][1] in the
15080
15926
  # *Amazon S3 User Guide*.
@@ -15085,21 +15931,28 @@ module Aws::S3
15085
15931
  # provided `ChecksumAlgorithm` parameter and uses the checksum algorithm
15086
15932
  # that matches the provided value in `x-amz-checksum-algorithm `.
15087
15933
  #
15088
- # <note markdown="1"> For directory buckets, when you use Amazon Web Services SDKs, `CRC32`
15089
- # is the default checksum algorithm that's used for performance.
15934
+ # <note markdown="1"> The `Content-MD5` or `x-amz-sdk-checksum-algorithm` header is required
15935
+ # for any request to upload an object with a retention period configured
15936
+ # using Amazon S3 Object Lock. For more information, see [Uploading
15937
+ # objects to an Object Lock enabled bucket ][2] in the *Amazon S3 User
15938
+ # Guide*.
15090
15939
  #
15091
15940
  # </note>
15092
15941
  #
15942
+ # For directory buckets, when you use Amazon Web Services SDKs, `CRC32`
15943
+ # is the default checksum algorithm that's used for performance.
15944
+ #
15093
15945
  #
15094
15946
  #
15095
15947
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
15948
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-managing.html#object-lock-put-object
15096
15949
  #
15097
15950
  # @option params [String] :checksum_crc32
15098
15951
  # This header can be used as a data integrity check to verify that the
15099
15952
  # data received is the same data that was originally sent. This header
15100
- # specifies the base64-encoded, 32-bit CRC32 checksum of the object. For
15101
- # more information, see [Checking object integrity][1] in the *Amazon S3
15102
- # User Guide*.
15953
+ # specifies the base64-encoded, 32-bit CRC-32 checksum of the object.
15954
+ # For more information, see [Checking object integrity][1] in the
15955
+ # *Amazon S3 User Guide*.
15103
15956
  #
15104
15957
  #
15105
15958
  #
@@ -15108,7 +15961,7 @@ module Aws::S3
15108
15961
  # @option params [String] :checksum_crc32c
15109
15962
  # This header can be used as a data integrity check to verify that the
15110
15963
  # data received is the same data that was originally sent. This header
15111
- # specifies the base64-encoded, 32-bit CRC32C checksum of the object.
15964
+ # specifies the base64-encoded, 32-bit CRC-32C checksum of the object.
15112
15965
  # For more information, see [Checking object integrity][1] in the
15113
15966
  # *Amazon S3 User Guide*.
15114
15967
  #
@@ -15147,6 +16000,25 @@ module Aws::S3
15147
16000
  #
15148
16001
  # [1]: https://www.rfc-editor.org/rfc/rfc7234#section-5.3
15149
16002
  #
16003
+ # @option params [String] :if_none_match
16004
+ # Uploads the object only if the object key name does not already exist
16005
+ # in the bucket specified. Otherwise, Amazon S3 returns a `412
16006
+ # Precondition Failed` error.
16007
+ #
16008
+ # If a conflicting operation occurs during the upload S3 returns a `409
16009
+ # ConditionalRequestConflict` response. On a 409 failure you should
16010
+ # retry the upload.
16011
+ #
16012
+ # Expects the '*' (asterisk) character.
16013
+ #
16014
+ # For more information about conditional requests, see [RFC 7232][1], or
16015
+ # [Conditional requests][2] in the *Amazon S3 User Guide*.
16016
+ #
16017
+ #
16018
+ #
16019
+ # [1]: https://tools.ietf.org/html/rfc7232
16020
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/conditional-requests.html
16021
+ #
15150
16022
  # @option params [String] :grant_full_control
15151
16023
  # Gives the grantee READ, READ\_ACP, and WRITE\_ACP permissions on the
15152
16024
  # object.
@@ -15195,25 +16067,65 @@ module Aws::S3
15195
16067
  # object in Amazon S3 (for example, `AES256`, `aws:kms`,
15196
16068
  # `aws:kms:dsse`).
15197
16069
  #
15198
- # <b>General purpose buckets </b> - You have four mutually exclusive
15199
- # options to protect data using server-side encryption in Amazon S3,
15200
- # depending on how you choose to manage the encryption keys.
15201
- # Specifically, the encryption key options are Amazon S3 managed keys
15202
- # (SSE-S3), Amazon Web Services KMS keys (SSE-KMS or DSSE-KMS), and
15203
- # customer-provided keys (SSE-C). Amazon S3 encrypts data with
15204
- # server-side encryption by using Amazon S3 managed keys (SSE-S3) by
15205
- # default. You can optionally tell Amazon S3 to encrypt data at rest by
15206
- # using server-side encryption with other key options. For more
15207
- # information, see [Using Server-Side Encryption][1] in the *Amazon S3
15208
- # User Guide*.
16070
+ # * <b>General purpose buckets </b> - You have four mutually exclusive
16071
+ # options to protect data using server-side encryption in Amazon S3,
16072
+ # depending on how you choose to manage the encryption keys.
16073
+ # Specifically, the encryption key options are Amazon S3 managed keys
16074
+ # (SSE-S3), Amazon Web Services KMS keys (SSE-KMS or DSSE-KMS), and
16075
+ # customer-provided keys (SSE-C). Amazon S3 encrypts data with
16076
+ # server-side encryption by using Amazon S3 managed keys (SSE-S3) by
16077
+ # default. You can optionally tell Amazon S3 to encrypt data at rest
16078
+ # by using server-side encryption with other key options. For more
16079
+ # information, see [Using Server-Side Encryption][1] in the *Amazon S3
16080
+ # User Guide*.
16081
+ #
16082
+ # * <b>Directory buckets </b> - For directory buckets, there are only
16083
+ # two supported options for server-side encryption: server-side
16084
+ # encryption with Amazon S3 managed keys (SSE-S3) (`AES256`) and
16085
+ # server-side encryption with KMS keys (SSE-KMS) (`aws:kms`). We
16086
+ # recommend that the bucket's default encryption uses the desired
16087
+ # encryption configuration and you don't override the bucket default
16088
+ # encryption in your `CreateSession` requests or `PUT` object
16089
+ # requests. Then, new objects are automatically encrypted with the
16090
+ # desired encryption settings. For more information, see [Protecting
16091
+ # data with server-side encryption][2] in the *Amazon S3 User Guide*.
16092
+ # For more information about the encryption overriding behaviors in
16093
+ # directory buckets, see [Specifying server-side encryption with KMS
16094
+ # for new object uploads][3].
16095
+ #
16096
+ # In the Zonal endpoint API calls (except [CopyObject][4] and
16097
+ # [UploadPartCopy][5]) using the REST API, the encryption request
16098
+ # headers must match the encryption settings that are specified in the
16099
+ # `CreateSession` request. You can't override the values of the
16100
+ # encryption settings (`x-amz-server-side-encryption`,
16101
+ # `x-amz-server-side-encryption-aws-kms-key-id`,
16102
+ # `x-amz-server-side-encryption-context`, and
16103
+ # `x-amz-server-side-encryption-bucket-key-enabled`) that are
16104
+ # specified in the `CreateSession` request. You don't need to
16105
+ # explicitly specify these encryption settings values in Zonal
16106
+ # endpoint API calls, and Amazon S3 will use the encryption settings
16107
+ # values from the `CreateSession` request to protect new objects in
16108
+ # the directory bucket.
16109
+ #
16110
+ # <note markdown="1"> When you use the CLI or the Amazon Web Services SDKs, for
16111
+ # `CreateSession`, the session token refreshes automatically to avoid
16112
+ # service interruptions when a session expires. The CLI or the Amazon
16113
+ # Web Services SDKs use the bucket's default encryption configuration
16114
+ # for the `CreateSession` request. It's not supported to override the
16115
+ # encryption settings values in the `CreateSession` request. So in the
16116
+ # Zonal endpoint API calls (except [CopyObject][4] and
16117
+ # [UploadPartCopy][5]), the encryption request headers must match the
16118
+ # default encryption configuration of the directory bucket.
15209
16119
  #
15210
- # <b>Directory buckets </b> - For directory buckets, only the
15211
- # server-side encryption with Amazon S3 managed keys (SSE-S3) (`AES256`)
15212
- # value is supported.
16120
+ # </note>
15213
16121
  #
15214
16122
  #
15215
16123
  #
15216
16124
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html
16125
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html
16126
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html
16127
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
16128
+ # [5]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
15217
16129
  #
15218
16130
  # @option params [String] :storage_class
15219
16131
  # By default, Amazon S3 uses the STANDARD Storage Class to store newly
@@ -15293,46 +16205,88 @@ module Aws::S3
15293
16205
  # </note>
15294
16206
  #
15295
16207
  # @option params [String] :ssekms_key_id
15296
- # If `x-amz-server-side-encryption` has a valid value of `aws:kms` or
15297
- # `aws:kms:dsse`, this header specifies the ID (Key ID, Key ARN, or Key
15298
- # Alias) of the Key Management Service (KMS) symmetric encryption
15299
- # customer managed key that was used for the object. If you specify
15300
- # `x-amz-server-side-encryption:aws:kms` or
15301
- # `x-amz-server-side-encryption:aws:kms:dsse`, but do not provide`
15302
- # x-amz-server-side-encryption-aws-kms-key-id`, Amazon S3 uses the
15303
- # Amazon Web Services managed key (`aws/s3`) to protect the data. If the
15304
- # KMS key does not exist in the same account that's issuing the
15305
- # command, you must use the full ARN and not just the ID.
16208
+ # Specifies the KMS key ID (Key ID, Key ARN, or Key Alias) to use for
16209
+ # object encryption. If the KMS key doesn't exist in the same account
16210
+ # that's issuing the command, you must use the full Key ARN not the Key
16211
+ # ID.
16212
+ #
16213
+ # **General purpose buckets** - If you specify
16214
+ # `x-amz-server-side-encryption` with `aws:kms` or `aws:kms:dsse`, this
16215
+ # header specifies the ID (Key ID, Key ARN, or Key Alias) of the KMS key
16216
+ # to use. If you specify `x-amz-server-side-encryption:aws:kms` or
16217
+ # `x-amz-server-side-encryption:aws:kms:dsse`, but do not provide
16218
+ # `x-amz-server-side-encryption-aws-kms-key-id`, Amazon S3 uses the
16219
+ # Amazon Web Services managed key (`aws/s3`) to protect the data.
16220
+ #
16221
+ # **Directory buckets** - If you specify `x-amz-server-side-encryption`
16222
+ # with `aws:kms`, the ` x-amz-server-side-encryption-aws-kms-key-id`
16223
+ # header is implicitly assigned the ID of the KMS symmetric encryption
16224
+ # customer managed key that's configured for your directory bucket's
16225
+ # default encryption setting. If you want to specify the `
16226
+ # x-amz-server-side-encryption-aws-kms-key-id` header explicitly, you
16227
+ # can only specify it with the ID (Key ID or Key ARN) of the KMS
16228
+ # customer managed key that's configured for your directory bucket's
16229
+ # default encryption setting. Otherwise, you get an HTTP `400 Bad
16230
+ # Request` error. Only use the key ID or key ARN. The key alias format
16231
+ # of the KMS key isn't supported. Your SSE-KMS configuration can only
16232
+ # support 1 [customer managed key][1] per directory bucket for the
16233
+ # lifetime of the bucket. The [Amazon Web Services managed key][2]
16234
+ # (`aws/s3`) isn't supported.
16235
+ #
16236
+ #
16237
+ #
16238
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk
16239
+ # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk
15306
16240
  #
15307
- # <note markdown="1"> This functionality is not supported for directory buckets.
16241
+ # @option params [String] :ssekms_encryption_context
16242
+ # Specifies the Amazon Web Services KMS Encryption Context as an
16243
+ # additional encryption context to use for object encryption. The value
16244
+ # of this header is a Base64-encoded string of a UTF-8 encoded JSON,
16245
+ # which contains the encryption context as key-value pairs. This value
16246
+ # is stored as object metadata and automatically gets passed on to
16247
+ # Amazon Web Services KMS for future `GetObject` operations on this
16248
+ # object.
15308
16249
  #
15309
- # </note>
16250
+ # **General purpose buckets** - This value must be explicitly added
16251
+ # during `CopyObject` operations if you want an additional encryption
16252
+ # context for your object. For more information, see [Encryption
16253
+ # context][1] in the *Amazon S3 User Guide*.
15310
16254
  #
15311
- # @option params [String] :ssekms_encryption_context
15312
- # Specifies the Amazon Web Services KMS Encryption Context to use for
15313
- # object encryption. The value of this header is a base64-encoded UTF-8
15314
- # string holding JSON with the encryption context key-value pairs. This
15315
- # value is stored as object metadata and automatically gets passed on to
15316
- # Amazon Web Services KMS for future `GetObject` or `CopyObject`
15317
- # operations on this object. This value must be explicitly added during
15318
- # `CopyObject` operations.
16255
+ # **Directory buckets** - You can optionally provide an explicit
16256
+ # encryption context value. The value must match the default encryption
16257
+ # context - the bucket Amazon Resource Name (ARN). An additional
16258
+ # encryption context value is not supported.
15319
16259
  #
15320
- # <note markdown="1"> This functionality is not supported for directory buckets.
15321
16260
  #
15322
- # </note>
16261
+ #
16262
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html#encryption-context
15323
16263
  #
15324
16264
  # @option params [Boolean] :bucket_key_enabled
15325
16265
  # Specifies whether Amazon S3 should use an S3 Bucket Key for object
15326
16266
  # encryption with server-side encryption using Key Management Service
15327
- # (KMS) keys (SSE-KMS). Setting this header to `true` causes Amazon S3
15328
- # to use an S3 Bucket Key for object encryption with SSE-KMS.
16267
+ # (KMS) keys (SSE-KMS).
15329
16268
  #
15330
- # Specifying this header with a PUT action doesn’t affect bucket-level
15331
- # settings for S3 Bucket Key.
16269
+ # **General purpose buckets** - Setting this header to `true` causes
16270
+ # Amazon S3 to use an S3 Bucket Key for object encryption with SSE-KMS.
16271
+ # Also, specifying this header with a PUT action doesn't affect
16272
+ # bucket-level settings for S3 Bucket Key.
16273
+ #
16274
+ # **Directory buckets** - S3 Bucket Keys are always enabled for `GET`
16275
+ # and `PUT` operations in a directory bucket and can’t be disabled. S3
16276
+ # Bucket Keys aren't supported, when you copy SSE-KMS encrypted objects
16277
+ # from general purpose buckets to directory buckets, from directory
16278
+ # buckets to general purpose buckets, or between directory buckets,
16279
+ # through [CopyObject][1], [UploadPartCopy][2], [the Copy operation in
16280
+ # Batch Operations][3], or [the import jobs][4]. In this case, Amazon S3
16281
+ # makes a call to KMS every time a copy request is made for a
16282
+ # KMS-encrypted object.
15332
16283
  #
15333
- # <note markdown="1"> This functionality is not supported for directory buckets.
15334
16284
  #
15335
- # </note>
16285
+ #
16286
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
16287
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
16288
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-buckets-objects-Batch-Ops
16289
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-import-job
15336
16290
  #
15337
16291
  # @option params [String] :request_payer
15338
16292
  # Confirms that the requester knows that they will be charged for the
@@ -15410,41 +16364,20 @@ module Aws::S3
15410
16364
  # * {Types::PutObjectOutput#request_charged #request_charged} => String
15411
16365
  #
15412
16366
  #
15413
- # @example Example: To upload an object
15414
- #
15415
- # # The following example uploads an object to a versioning-enabled bucket. The source file is specified using Windows file
15416
- # # syntax. S3 returns VersionId of the newly created object.
15417
- #
15418
- # resp = client.put_object({
15419
- # body: "HappyFace.jpg",
15420
- # bucket: "examplebucket",
15421
- # key: "HappyFace.jpg",
15422
- # })
15423
- #
15424
- # resp.to_h outputs the following:
15425
- # {
15426
- # etag: "\"6805f2cfc46c0f04559748bb039d69ae\"",
15427
- # version_id: "tpf3zF08nBplQK1XLOefGskR7mGDwcDk",
15428
- # }
15429
- #
15430
- # @example Example: To upload an object (specify optional headers)
16367
+ # @example Example: To create an object.
15431
16368
  #
15432
- # # The following example uploads an object. The request specifies optional request headers to directs S3 to use specific
15433
- # # storage class and use server-side encryption.
16369
+ # # The following example creates an object. If the bucket is versioning enabled, S3 returns version ID in response.
15434
16370
  #
15435
16371
  # resp = client.put_object({
15436
- # body: "HappyFace.jpg",
16372
+ # body: "filetoupload",
15437
16373
  # bucket: "examplebucket",
15438
- # key: "HappyFace.jpg",
15439
- # server_side_encryption: "AES256",
15440
- # storage_class: "STANDARD_IA",
16374
+ # key: "objectkey",
15441
16375
  # })
15442
16376
  #
15443
16377
  # resp.to_h outputs the following:
15444
16378
  # {
15445
16379
  # etag: "\"6805f2cfc46c0f04559748bb039d69ae\"",
15446
- # server_side_encryption: "AES256",
15447
- # version_id: "CG612hodqujkf8FaaNfp8U..FIhLROcp",
16380
+ # version_id: "Bvq0EDKxOcXLJXNo_Lkz37eM3R4pfzyQ",
15448
16381
  # }
15449
16382
  #
15450
16383
  # @example Example: To upload object and specify user-defined metadata
@@ -15468,58 +16401,59 @@ module Aws::S3
15468
16401
  # version_id: "pSKidl4pHBiNwukdbcPXAIs.sshFFOc0",
15469
16402
  # }
15470
16403
  #
15471
- # @example Example: To upload an object and specify canned ACL.
16404
+ # @example Example: To upload an object
15472
16405
  #
15473
- # # The following example uploads and object. The request specifies optional canned ACL (access control list) to all READ
15474
- # # access to authenticated users. If the bucket is versioning enabled, S3 returns version ID in response.
16406
+ # # The following example uploads an object to a versioning-enabled bucket. The source file is specified using Windows file
16407
+ # # syntax. S3 returns VersionId of the newly created object.
15475
16408
  #
15476
16409
  # resp = client.put_object({
15477
- # acl: "authenticated-read",
15478
- # body: "filetoupload",
16410
+ # body: "HappyFace.jpg",
15479
16411
  # bucket: "examplebucket",
15480
- # key: "exampleobject",
16412
+ # key: "HappyFace.jpg",
15481
16413
  # })
15482
16414
  #
15483
16415
  # resp.to_h outputs the following:
15484
16416
  # {
15485
16417
  # etag: "\"6805f2cfc46c0f04559748bb039d69ae\"",
15486
- # version_id: "Kirh.unyZwjQ69YxcQLA8z4F5j3kJJKr",
16418
+ # version_id: "tpf3zF08nBplQK1XLOefGskR7mGDwcDk",
15487
16419
  # }
15488
16420
  #
15489
- # @example Example: To create an object.
16421
+ # @example Example: To upload an object and specify canned ACL.
15490
16422
  #
15491
- # # The following example creates an object. If the bucket is versioning enabled, S3 returns version ID in response.
16423
+ # # The following example uploads and object. The request specifies optional canned ACL (access control list) to all READ
16424
+ # # access to authenticated users. If the bucket is versioning enabled, S3 returns version ID in response.
15492
16425
  #
15493
16426
  # resp = client.put_object({
16427
+ # acl: "authenticated-read",
15494
16428
  # body: "filetoupload",
15495
16429
  # bucket: "examplebucket",
15496
- # key: "objectkey",
16430
+ # key: "exampleobject",
15497
16431
  # })
15498
16432
  #
15499
16433
  # resp.to_h outputs the following:
15500
16434
  # {
15501
16435
  # etag: "\"6805f2cfc46c0f04559748bb039d69ae\"",
15502
- # version_id: "Bvq0EDKxOcXLJXNo_Lkz37eM3R4pfzyQ",
16436
+ # version_id: "Kirh.unyZwjQ69YxcQLA8z4F5j3kJJKr",
15503
16437
  # }
15504
16438
  #
15505
- # @example Example: To upload an object and specify server-side encryption and object tags
16439
+ # @example Example: To upload an object (specify optional headers)
15506
16440
  #
15507
- # # The following example uploads an object. The request specifies the optional server-side encryption option. The request
15508
- # # also specifies optional object tags. If the bucket is versioning enabled, S3 returns version ID in response.
16441
+ # # The following example uploads an object. The request specifies optional request headers to directs S3 to use specific
16442
+ # # storage class and use server-side encryption.
15509
16443
  #
15510
16444
  # resp = client.put_object({
15511
- # body: "filetoupload",
16445
+ # body: "HappyFace.jpg",
15512
16446
  # bucket: "examplebucket",
15513
- # key: "exampleobject",
16447
+ # key: "HappyFace.jpg",
15514
16448
  # server_side_encryption: "AES256",
15515
- # tagging: "key1=value1&key2=value2",
16449
+ # storage_class: "STANDARD_IA",
15516
16450
  # })
15517
16451
  #
15518
16452
  # resp.to_h outputs the following:
15519
16453
  # {
15520
16454
  # etag: "\"6805f2cfc46c0f04559748bb039d69ae\"",
15521
16455
  # server_side_encryption: "AES256",
15522
- # version_id: "Ri.vC6qVlA4dEnjgRV4ZHsHoFIjqEMNt",
16456
+ # version_id: "CG612hodqujkf8FaaNfp8U..FIhLROcp",
15523
16457
  # }
15524
16458
  #
15525
16459
  # @example Example: To upload an object and specify optional tags
@@ -15540,6 +16474,26 @@ module Aws::S3
15540
16474
  # version_id: "psM2sYY4.o1501dSx8wMvnkOzSBB.V4a",
15541
16475
  # }
15542
16476
  #
16477
+ # @example Example: To upload an object and specify server-side encryption and object tags
16478
+ #
16479
+ # # The following example uploads an object. The request specifies the optional server-side encryption option. The request
16480
+ # # also specifies optional object tags. If the bucket is versioning enabled, S3 returns version ID in response.
16481
+ #
16482
+ # resp = client.put_object({
16483
+ # body: "filetoupload",
16484
+ # bucket: "examplebucket",
16485
+ # key: "exampleobject",
16486
+ # server_side_encryption: "AES256",
16487
+ # tagging: "key1=value1&key2=value2",
16488
+ # })
16489
+ #
16490
+ # resp.to_h outputs the following:
16491
+ # {
16492
+ # etag: "\"6805f2cfc46c0f04559748bb039d69ae\"",
16493
+ # server_side_encryption: "AES256",
16494
+ # version_id: "Ri.vC6qVlA4dEnjgRV4ZHsHoFIjqEMNt",
16495
+ # }
16496
+ #
15543
16497
  # @example Streaming a file from disk
15544
16498
  # # upload file from disk in a single request, may not exceed 5GB
15545
16499
  # File.open('/source/file/path', 'rb') do |file|
@@ -15565,6 +16519,7 @@ module Aws::S3
15565
16519
  # checksum_sha1: "ChecksumSHA1",
15566
16520
  # checksum_sha256: "ChecksumSHA256",
15567
16521
  # expires: Time.now,
16522
+ # if_none_match: "IfNoneMatch",
15568
16523
  # grant_full_control: "GrantFullControl",
15569
16524
  # grant_read: "GrantRead",
15570
16525
  # grant_read_acp: "GrantReadACP",
@@ -17506,14 +18461,27 @@ module Aws::S3
17506
18461
  # </note>
17507
18462
  #
17508
18463
  # Permissions
17509
- # : * **General purpose bucket permissions** - For information on the
17510
- # permissions required to use the multipart upload API, see
17511
- # [Multipart Upload and Permissions][6] in the *Amazon S3 User
17512
- # Guide*.
18464
+ # : * **General purpose bucket permissions** - To perform a multipart
18465
+ # upload with encryption using an Key Management Service key, the
18466
+ # requester must have permission to the `kms:Decrypt` and
18467
+ # `kms:GenerateDataKey` actions on the key. The requester must also
18468
+ # have permissions for the `kms:GenerateDataKey` action for the
18469
+ # `CreateMultipartUpload` API. Then, the requester needs permissions
18470
+ # for the `kms:Decrypt` action on the `UploadPart` and
18471
+ # `UploadPartCopy` APIs.
18472
+ #
18473
+ # These permissions are required because Amazon S3 must decrypt and
18474
+ # read data from the encrypted file parts before it completes the
18475
+ # multipart upload. For more information about KMS permissions, see
18476
+ # [Protecting data using server-side encryption with KMS][6] in the
18477
+ # *Amazon S3 User Guide*. For information about the permissions
18478
+ # required to use the multipart upload API, see [Multipart upload
18479
+ # and permissions][7] and [Multipart upload API and permissions][8]
18480
+ # in the *Amazon S3 User Guide*.
17513
18481
  #
17514
18482
  # * **Directory bucket permissions** - To grant access to this API
17515
18483
  # operation on a directory bucket, we recommend that you use the [
17516
- # `CreateSession` ][7] API operation for session-based
18484
+ # `CreateSession` ][9] API operation for session-based
17517
18485
  # authorization. Specifically, you grant the
17518
18486
  # `s3express:CreateSession` permission to the directory bucket in a
17519
18487
  # bucket policy or an IAM identity-based policy. Then, you make the
@@ -17524,7 +18492,11 @@ module Aws::S3
17524
18492
  # token for use. Amazon Web Services CLI or SDKs create session and
17525
18493
  # refresh the session token automatically to avoid service
17526
18494
  # interruptions when a session expires. For more information about
17527
- # authorization, see [ `CreateSession` ][7].
18495
+ # authorization, see [ `CreateSession` ][9].
18496
+ #
18497
+ # If the object is encrypted with SSE-KMS, you must also have the
18498
+ # `kms:GenerateDataKey` and `kms:Decrypt` permissions in IAM
18499
+ # identity-based policies and KMS key policies for the KMS key.
17528
18500
  #
17529
18501
  # Data integrity
17530
18502
  #
@@ -17536,7 +18508,7 @@ module Aws::S3
17536
18508
  # then Amazon Web Services S3 uses the `x-amz-content-sha256` header
17537
18509
  # as a checksum instead of `Content-MD5`. For more information see
17538
18510
  # [Authenticating Requests: Using the Authorization Header (Amazon Web
17539
- # Services Signature Version 4)][8].
18511
+ # Services Signature Version 4)][10].
17540
18512
  #
17541
18513
  # <note markdown="1"> **Directory buckets** - MD5 is not supported by directory buckets.
17542
18514
  # You can use checksum algorithms to check object integrity.
@@ -17577,12 +18549,13 @@ module Aws::S3
17577
18549
  #
17578
18550
  # * x-amz-server-side-encryption-customer-key-MD5
17579
18551
  #
17580
- # * **Directory bucket** - For directory buckets, only server-side
17581
- # encryption with Amazon S3 managed keys (SSE-S3) (`AES256`) is
17582
- # supported.
18552
+ # For more information, see [Using Server-Side Encryption][11] in
18553
+ # the *Amazon S3 User Guide*.
17583
18554
  #
17584
- # For more information, see [Using Server-Side Encryption][9] in the
17585
- # *Amazon S3 User Guide*.
18555
+ # * <b>Directory buckets </b> - For directory buckets, there are only
18556
+ # two supported options for server-side encryption: server-side
18557
+ # encryption with Amazon S3 managed keys (SSE-S3) (`AES256`) and
18558
+ # server-side encryption with KMS keys (SSE-KMS) (`aws:kms`).
17586
18559
  #
17587
18560
  # Special errors
17588
18561
  # : * Error Code: `NoSuchUpload`
@@ -17604,13 +18577,13 @@ module Aws::S3
17604
18577
  #
17605
18578
  # * [CreateMultipartUpload][2]
17606
18579
  #
17607
- # * [CompleteMultipartUpload][10]
18580
+ # * [CompleteMultipartUpload][12]
17608
18581
  #
17609
- # * [AbortMultipartUpload][11]
18582
+ # * [AbortMultipartUpload][13]
17610
18583
  #
17611
- # * [ListParts][12]
18584
+ # * [ListParts][14]
17612
18585
  #
17613
- # * [ListMultipartUploads][13]
18586
+ # * [ListMultipartUploads][15]
17614
18587
  #
17615
18588
  #
17616
18589
  #
@@ -17619,14 +18592,16 @@ module Aws::S3
17619
18592
  # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/qfacts.html
17620
18593
  # [4]: https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html
17621
18594
  # [5]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-Regions-and-Zones.html
17622
- # [6]: https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html
17623
- # [7]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html
17624
- # [8]: https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-auth-using-authorization-header.html
17625
- # [9]: https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html
17626
- # [10]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html
17627
- # [11]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html
17628
- # [12]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html
17629
- # [13]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html
18595
+ # [6]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html
18596
+ # [7]: https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html
18597
+ # [8]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html#mpuAndPermissions
18598
+ # [9]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html
18599
+ # [10]: https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-auth-using-authorization-header.html
18600
+ # [11]: https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html
18601
+ # [12]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html
18602
+ # [13]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html
18603
+ # [14]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html
18604
+ # [15]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html
17630
18605
  #
17631
18606
  # @option params [String, StringIO, File] :body
17632
18607
  # Object data.
@@ -17710,9 +18685,9 @@ module Aws::S3
17710
18685
  # @option params [String] :checksum_crc32
17711
18686
  # This header can be used as a data integrity check to verify that the
17712
18687
  # data received is the same data that was originally sent. This header
17713
- # specifies the base64-encoded, 32-bit CRC32 checksum of the object. For
17714
- # more information, see [Checking object integrity][1] in the *Amazon S3
17715
- # User Guide*.
18688
+ # specifies the base64-encoded, 32-bit CRC-32 checksum of the object.
18689
+ # For more information, see [Checking object integrity][1] in the
18690
+ # *Amazon S3 User Guide*.
17716
18691
  #
17717
18692
  #
17718
18693
  #
@@ -17721,7 +18696,7 @@ module Aws::S3
17721
18696
  # @option params [String] :checksum_crc32c
17722
18697
  # This header can be used as a data integrity check to verify that the
17723
18698
  # data received is the same data that was originally sent. This header
17724
- # specifies the base64-encoded, 32-bit CRC32C checksum of the object.
18699
+ # specifies the base64-encoded, 32-bit CRC-32C checksum of the object.
17725
18700
  # For more information, see [Checking object integrity][1] in the
17726
18701
  # *Amazon S3 User Guide*.
17727
18702
  #
@@ -17959,9 +18934,21 @@ module Aws::S3
17959
18934
  # have the <b> <code>s3:PutObject</code> </b> permission to write
17960
18935
  # the object copy to the destination bucket.
17961
18936
  #
17962
- # For information about permissions required to use the multipart
17963
- # upload API, see [Multipart Upload and Permissions][7] in the
17964
- # *Amazon S3 User Guide*.
18937
+ # * To perform a multipart upload with encryption using an Key
18938
+ # Management Service key, the requester must have permission to
18939
+ # the `kms:Decrypt` and `kms:GenerateDataKey` actions on the key.
18940
+ # The requester must also have permissions for the
18941
+ # `kms:GenerateDataKey` action for the `CreateMultipartUpload`
18942
+ # API. Then, the requester needs permissions for the `kms:Decrypt`
18943
+ # action on the `UploadPart` and `UploadPartCopy` APIs. These
18944
+ # permissions are required because Amazon S3 must decrypt and read
18945
+ # data from the encrypted file parts before it completes the
18946
+ # multipart upload. For more information about KMS permissions,
18947
+ # see [Protecting data using server-side encryption with KMS][7]
18948
+ # in the *Amazon S3 User Guide*. For information about the
18949
+ # permissions required to use the multipart upload API, see
18950
+ # [Multipart upload and permissions][8] and [Multipart upload API
18951
+ # and permissions][9] in the *Amazon S3 User Guide*.
17965
18952
  #
17966
18953
  # * **Directory bucket permissions** - You must have permissions in a
17967
18954
  # bucket policy or an IAM identity-based policy based on the source
@@ -17970,9 +18957,9 @@ module Aws::S3
17970
18957
  # * If the source object that you want to copy is in a directory
17971
18958
  # bucket, you must have the <b>
17972
18959
  # <code>s3express:CreateSession</code> </b> permission in the
17973
- # `Action` element of a policy to read the object . By default,
17974
- # the session is in the `ReadWrite` mode. If you want to restrict
17975
- # the access, you can explicitly set the `s3express:SessionMode`
18960
+ # `Action` element of a policy to read the object. By default, the
18961
+ # session is in the `ReadWrite` mode. If you want to restrict the
18962
+ # access, you can explicitly set the `s3express:SessionMode`
17976
18963
  # condition key to `ReadOnly` on the copy source bucket.
17977
18964
  #
17978
18965
  # * If the copy destination is a directory bucket, you must have the
@@ -17981,20 +18968,41 @@ module Aws::S3
17981
18968
  # destination. The `s3express:SessionMode` condition key cannot be
17982
18969
  # set to `ReadOnly` on the copy destination.
17983
18970
  #
18971
+ # If the object is encrypted with SSE-KMS, you must also have the
18972
+ # `kms:GenerateDataKey` and `kms:Decrypt` permissions in IAM
18973
+ # identity-based policies and KMS key policies for the KMS key.
18974
+ #
17984
18975
  # For example policies, see [Example bucket policies for S3 Express
17985
- # One Zone][8] and [Amazon Web Services Identity and Access
18976
+ # One Zone][10] and [Amazon Web Services Identity and Access
17986
18977
  # Management (IAM) identity-based policies for S3 Express One
17987
- # Zone][9] in the *Amazon S3 User Guide*.
18978
+ # Zone][11] in the *Amazon S3 User Guide*.
17988
18979
  #
17989
18980
  # Encryption
17990
18981
  # : * <b>General purpose buckets </b> - For information about using
17991
18982
  # server-side encryption with customer-provided encryption keys with
17992
- # the `UploadPartCopy` operation, see [CopyObject][10] and
18983
+ # the `UploadPartCopy` operation, see [CopyObject][12] and
17993
18984
  # [UploadPart][2].
17994
18985
  #
17995
- # * <b>Directory buckets </b> - For directory buckets, only
17996
- # server-side encryption with Amazon S3 managed keys (SSE-S3)
17997
- # (`AES256`) is supported.
18986
+ # * <b>Directory buckets </b> - For directory buckets, there are only
18987
+ # two supported options for server-side encryption: server-side
18988
+ # encryption with Amazon S3 managed keys (SSE-S3) (`AES256`) and
18989
+ # server-side encryption with KMS keys (SSE-KMS) (`aws:kms`). For
18990
+ # more information, see [Protecting data with server-side
18991
+ # encryption][13] in the *Amazon S3 User Guide*.
18992
+ #
18993
+ # <note markdown="1"> For directory buckets, when you perform a `CreateMultipartUpload`
18994
+ # operation and an `UploadPartCopy` operation, the request headers
18995
+ # you provide in the `CreateMultipartUpload` request must match the
18996
+ # default encryption configuration of the destination bucket.
18997
+ #
18998
+ # </note>
18999
+ #
19000
+ # S3 Bucket Keys aren't supported, when you copy SSE-KMS encrypted
19001
+ # objects from general purpose buckets to directory buckets, from
19002
+ # directory buckets to general purpose buckets, or between directory
19003
+ # buckets, through [UploadPartCopy][14]. In this case, Amazon S3
19004
+ # makes a call to KMS every time a copy request is made for a
19005
+ # KMS-encrypted object.
17998
19006
  #
17999
19007
  # Special errors
18000
19008
  # : * Error Code: `NoSuchUpload`
@@ -18019,17 +19027,17 @@ module Aws::S3
18019
19027
  #
18020
19028
  # The following operations are related to `UploadPartCopy`:
18021
19029
  #
18022
- # * [CreateMultipartUpload][11]
19030
+ # * [CreateMultipartUpload][15]
18023
19031
  #
18024
19032
  # * [UploadPart][2]
18025
19033
  #
18026
- # * [CompleteMultipartUpload][12]
19034
+ # * [CompleteMultipartUpload][16]
18027
19035
  #
18028
- # * [AbortMultipartUpload][13]
19036
+ # * [AbortMultipartUpload][17]
18029
19037
  #
18030
- # * [ListParts][14]
19038
+ # * [ListParts][18]
18031
19039
  #
18032
- # * [ListMultipartUploads][15]
19040
+ # * [ListMultipartUploads][19]
18033
19041
  #
18034
19042
  #
18035
19043
  #
@@ -18039,15 +19047,19 @@ module Aws::S3
18039
19047
  # [4]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectOperations.html
18040
19048
  # [5]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-Regions-and-Zones.html
18041
19049
  # [6]: https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html
18042
- # [7]: https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html
18043
- # [8]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam-example-bucket-policies.html
18044
- # [9]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam-identity-policies.html
18045
- # [10]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
18046
- # [11]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html
18047
- # [12]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html
18048
- # [13]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html
18049
- # [14]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html
18050
- # [15]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html
19050
+ # [7]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html
19051
+ # [8]: https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html
19052
+ # [9]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html#mpuAndPermissions
19053
+ # [10]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam-example-bucket-policies.html
19054
+ # [11]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam-identity-policies.html
19055
+ # [12]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
19056
+ # [13]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html
19057
+ # [14]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
19058
+ # [15]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html
19059
+ # [16]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html
19060
+ # [17]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html
19061
+ # [18]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html
19062
+ # [19]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html
18051
19063
  #
18052
19064
  # @option params [required, String] :bucket
18053
19065
  # The bucket name.
@@ -18333,45 +19345,45 @@ module Aws::S3
18333
19345
  # * {Types::UploadPartCopyOutput#request_charged #request_charged} => String
18334
19346
  #
18335
19347
  #
18336
- # @example Example: To upload a part by copying data from an existing object as data source
19348
+ # @example Example: To upload a part by copying byte range from an existing object as data source
18337
19349
  #
18338
- # # The following example uploads a part of a multipart upload by copying data from an existing object as data source.
19350
+ # # The following example uploads a part of a multipart upload by copying a specified byte range from an existing object as
19351
+ # # data source.
18339
19352
  #
18340
19353
  # resp = client.upload_part_copy({
18341
19354
  # bucket: "examplebucket",
18342
19355
  # copy_source: "/bucketname/sourceobjectkey",
19356
+ # copy_source_range: "bytes=1-100000",
18343
19357
  # key: "examplelargeobject",
18344
- # part_number: 1,
19358
+ # part_number: 2,
18345
19359
  # upload_id: "exampleuoh_10OhKhT7YukE9bjzTPRiuaCotmZM_pFngJFir9OZNrSr5cWa3cq3LZSUsfjI4FI7PkP91We7Nrw--",
18346
19360
  # })
18347
19361
  #
18348
19362
  # resp.to_h outputs the following:
18349
19363
  # {
18350
19364
  # copy_part_result: {
18351
- # etag: "\"b0c6f0e7e054ab8fa2536a2677f8734d\"",
18352
- # last_modified: Time.parse("2016-12-29T21:24:43.000Z"),
19365
+ # etag: "\"65d16d19e65a7508a51f043180edcc36\"",
19366
+ # last_modified: Time.parse("2016-12-29T21:44:28.000Z"),
18353
19367
  # },
18354
19368
  # }
18355
19369
  #
18356
- # @example Example: To upload a part by copying byte range from an existing object as data source
19370
+ # @example Example: To upload a part by copying data from an existing object as data source
18357
19371
  #
18358
- # # The following example uploads a part of a multipart upload by copying a specified byte range from an existing object as
18359
- # # data source.
19372
+ # # The following example uploads a part of a multipart upload by copying data from an existing object as data source.
18360
19373
  #
18361
19374
  # resp = client.upload_part_copy({
18362
19375
  # bucket: "examplebucket",
18363
19376
  # copy_source: "/bucketname/sourceobjectkey",
18364
- # copy_source_range: "bytes=1-100000",
18365
19377
  # key: "examplelargeobject",
18366
- # part_number: 2,
19378
+ # part_number: 1,
18367
19379
  # upload_id: "exampleuoh_10OhKhT7YukE9bjzTPRiuaCotmZM_pFngJFir9OZNrSr5cWa3cq3LZSUsfjI4FI7PkP91We7Nrw--",
18368
19380
  # })
18369
19381
  #
18370
19382
  # resp.to_h outputs the following:
18371
19383
  # {
18372
19384
  # copy_part_result: {
18373
- # etag: "\"65d16d19e65a7508a51f043180edcc36\"",
18374
- # last_modified: Time.parse("2016-12-29T21:44:28.000Z"),
19385
+ # etag: "\"b0c6f0e7e054ab8fa2536a2677f8734d\"",
19386
+ # last_modified: Time.parse("2016-12-29T21:24:43.000Z"),
18375
19387
  # },
18376
19388
  # }
18377
19389
  #
@@ -18570,7 +19582,7 @@ module Aws::S3
18570
19582
  # @option params [String] :checksum_crc32
18571
19583
  # This header can be used as a data integrity check to verify that the
18572
19584
  # data received is the same data that was originally sent. This
18573
- # specifies the base64-encoded, 32-bit CRC32 checksum of the object
19585
+ # specifies the base64-encoded, 32-bit CRC-32 checksum of the object
18574
19586
  # returned by the Object Lambda function. This may not match the
18575
19587
  # checksum for the object stored in Amazon S3. Amazon S3 will perform
18576
19588
  # validation of the checksum values only when the original `GetObject`
@@ -18590,7 +19602,7 @@ module Aws::S3
18590
19602
  # @option params [String] :checksum_crc32c
18591
19603
  # This header can be used as a data integrity check to verify that the
18592
19604
  # data received is the same data that was originally sent. This
18593
- # specifies the base64-encoded, 32-bit CRC32C checksum of the object
19605
+ # specifies the base64-encoded, 32-bit CRC-32C checksum of the object
18594
19606
  # returned by the Object Lambda function. This may not match the
18595
19607
  # checksum for the object stored in Amazon S3. Amazon S3 will perform
18596
19608
  # validation of the checksum values only when the original `GetObject`
@@ -18821,14 +19833,19 @@ module Aws::S3
18821
19833
  # @api private
18822
19834
  def build_request(operation_name, params = {})
18823
19835
  handlers = @handlers.for(operation_name)
19836
+ tracer = config.telemetry_provider.tracer_provider.tracer(
19837
+ Aws::Telemetry.module_to_tracer_name('Aws::S3')
19838
+ )
18824
19839
  context = Seahorse::Client::RequestContext.new(
18825
19840
  operation_name: operation_name,
18826
19841
  operation: config.api.operation(operation_name),
18827
19842
  client: self,
18828
19843
  params: params,
18829
- config: config)
19844
+ config: config,
19845
+ tracer: tracer
19846
+ )
18830
19847
  context[:gem_name] = 'aws-sdk-s3'
18831
- context[:gem_version] = '1.150.0'
19848
+ context[:gem_version] = '1.169.0'
18832
19849
  Seahorse::Client::Request.new(handlers, context)
18833
19850
  end
18834
19851