aws-sdk-s3 1.150.0 → 1.169.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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