aws-sdk-s3 1.147.0 → 1.163.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +103 -2
  3. data/VERSION +1 -1
  4. data/lib/aws-sdk-s3/access_grants_credentials.rb +57 -0
  5. data/lib/aws-sdk-s3/access_grants_credentials_provider.rb +250 -0
  6. data/lib/aws-sdk-s3/bucket.rb +209 -69
  7. data/lib/aws-sdk-s3/bucket_acl.rb +3 -3
  8. data/lib/aws-sdk-s3/bucket_cors.rb +4 -4
  9. data/lib/aws-sdk-s3/bucket_lifecycle.rb +4 -4
  10. data/lib/aws-sdk-s3/bucket_lifecycle_configuration.rb +4 -4
  11. data/lib/aws-sdk-s3/bucket_logging.rb +3 -3
  12. data/lib/aws-sdk-s3/bucket_notification.rb +3 -3
  13. data/lib/aws-sdk-s3/bucket_policy.rb +4 -4
  14. data/lib/aws-sdk-s3/bucket_region_cache.rb +9 -5
  15. data/lib/aws-sdk-s3/bucket_request_payment.rb +3 -3
  16. data/lib/aws-sdk-s3/bucket_tagging.rb +4 -4
  17. data/lib/aws-sdk-s3/bucket_versioning.rb +5 -5
  18. data/lib/aws-sdk-s3/bucket_website.rb +4 -4
  19. data/lib/aws-sdk-s3/client.rb +1653 -637
  20. data/lib/aws-sdk-s3/client_api.rb +35 -3
  21. data/lib/aws-sdk-s3/customizations/bucket.rb +1 -1
  22. data/lib/aws-sdk-s3/customizations/errors.rb +15 -2
  23. data/lib/aws-sdk-s3/customizations/object.rb +5 -5
  24. data/lib/aws-sdk-s3/customizations.rb +4 -1
  25. data/lib/aws-sdk-s3/encryption/client.rb +2 -2
  26. data/lib/aws-sdk-s3/encryption/kms_cipher_provider.rb +2 -2
  27. data/lib/aws-sdk-s3/encryptionV2/client.rb +2 -2
  28. data/lib/aws-sdk-s3/encryptionV2/kms_cipher_provider.rb +2 -2
  29. data/lib/aws-sdk-s3/endpoint_parameters.rb +8 -0
  30. data/lib/aws-sdk-s3/endpoint_provider.rb +1 -0
  31. data/lib/aws-sdk-s3/endpoints.rb +199 -397
  32. data/lib/aws-sdk-s3/express_credentials_provider.rb +27 -4
  33. data/lib/aws-sdk-s3/file_downloader.rb +1 -1
  34. data/lib/aws-sdk-s3/file_uploader.rb +1 -1
  35. data/lib/aws-sdk-s3/multipart_stream_uploader.rb +1 -1
  36. data/lib/aws-sdk-s3/multipart_upload.rb +24 -4
  37. data/lib/aws-sdk-s3/multipart_upload_part.rb +3 -3
  38. data/lib/aws-sdk-s3/object.rb +394 -137
  39. data/lib/aws-sdk-s3/object_acl.rb +3 -3
  40. data/lib/aws-sdk-s3/object_copier.rb +1 -1
  41. data/lib/aws-sdk-s3/object_multipart_copier.rb +10 -8
  42. data/lib/aws-sdk-s3/object_summary.rb +358 -115
  43. data/lib/aws-sdk-s3/object_version.rb +46 -9
  44. data/lib/aws-sdk-s3/plugins/access_grants.rb +178 -0
  45. data/lib/aws-sdk-s3/plugins/endpoints.rb +10 -1
  46. data/lib/aws-sdk-s3/plugins/express_session_auth.rb +8 -2
  47. data/lib/aws-sdk-s3/plugins/http_200_errors.rb +53 -16
  48. data/lib/aws-sdk-s3/plugins/s3_signer.rb +7 -2
  49. data/lib/aws-sdk-s3/presigner.rb +1 -0
  50. data/lib/aws-sdk-s3/resource.rb +12 -10
  51. data/lib/aws-sdk-s3/types.rb +966 -350
  52. data/lib/aws-sdk-s3.rb +1 -1
  53. data/sig/bucket.rbs +1 -0
  54. data/sig/client.rbs +38 -2
  55. data/sig/customizations/bucket.rbs +19 -0
  56. data/sig/customizations/object.rbs +38 -0
  57. data/sig/customizations/object_summary.rbs +35 -0
  58. data/sig/multipart_upload.rbs +1 -0
  59. data/sig/object.rbs +7 -0
  60. data/sig/object_summary.rbs +1 -0
  61. data/sig/object_version.rbs +6 -0
  62. data/sig/resource.rbs +6 -1
  63. data/sig/types.rbs +25 -2
  64. data/sig/waiters.rbs +12 -0
  65. metadata +12 -7
  66. data/lib/aws-sdk-s3/express_credentials_cache.rb +0 -30
@@ -22,6 +22,7 @@ require 'aws-sdk-core/plugins/endpoint_pattern.rb'
22
22
  require 'aws-sdk-core/plugins/response_paging.rb'
23
23
  require 'aws-sdk-core/plugins/stub_responses.rb'
24
24
  require 'aws-sdk-core/plugins/idempotency_token.rb'
25
+ require 'aws-sdk-core/plugins/invocation_id.rb'
25
26
  require 'aws-sdk-core/plugins/jsonvalue_converter.rb'
26
27
  require 'aws-sdk-core/plugins/client_metrics_plugin.rb'
27
28
  require 'aws-sdk-core/plugins/client_metrics_send_plugin.rb'
@@ -31,9 +32,11 @@ require 'aws-sdk-core/plugins/checksum_algorithm.rb'
31
32
  require 'aws-sdk-core/plugins/request_compression.rb'
32
33
  require 'aws-sdk-core/plugins/defaults_mode.rb'
33
34
  require 'aws-sdk-core/plugins/recursion_detection.rb'
35
+ require 'aws-sdk-core/plugins/telemetry.rb'
34
36
  require 'aws-sdk-core/plugins/sign.rb'
35
37
  require 'aws-sdk-core/plugins/protocols/rest_xml.rb'
36
38
  require 'aws-sdk-s3/plugins/accelerate.rb'
39
+ require 'aws-sdk-s3/plugins/access_grants.rb'
37
40
  require 'aws-sdk-s3/plugins/arn.rb'
38
41
  require 'aws-sdk-s3/plugins/bucket_dns.rb'
39
42
  require 'aws-sdk-s3/plugins/bucket_name_restrictions.rb'
@@ -92,6 +95,7 @@ module Aws::S3
92
95
  add_plugin(Aws::Plugins::ResponsePaging)
93
96
  add_plugin(Aws::Plugins::StubResponses)
94
97
  add_plugin(Aws::Plugins::IdempotencyToken)
98
+ add_plugin(Aws::Plugins::InvocationId)
95
99
  add_plugin(Aws::Plugins::JsonvalueConverter)
96
100
  add_plugin(Aws::Plugins::ClientMetricsPlugin)
97
101
  add_plugin(Aws::Plugins::ClientMetricsSendPlugin)
@@ -101,9 +105,11 @@ module Aws::S3
101
105
  add_plugin(Aws::Plugins::RequestCompression)
102
106
  add_plugin(Aws::Plugins::DefaultsMode)
103
107
  add_plugin(Aws::Plugins::RecursionDetection)
108
+ add_plugin(Aws::Plugins::Telemetry)
104
109
  add_plugin(Aws::Plugins::Sign)
105
110
  add_plugin(Aws::Plugins::Protocols::RestXml)
106
111
  add_plugin(Aws::S3::Plugins::Accelerate)
112
+ add_plugin(Aws::S3::Plugins::AccessGrants)
107
113
  add_plugin(Aws::S3::Plugins::ARN)
108
114
  add_plugin(Aws::S3::Plugins::BucketDns)
109
115
  add_plugin(Aws::S3::Plugins::BucketNameRestrictions)
@@ -127,6 +133,11 @@ module Aws::S3
127
133
 
128
134
  # @overload initialize(options)
129
135
  # @param [Hash] options
136
+ #
137
+ # @option options [Array<Seahorse::Client::Plugin>] :plugins ([]])
138
+ # A list of plugins to apply to the client. Each plugin is either a
139
+ # class name or an instance of a plugin class.
140
+ #
130
141
  # @option options [required, Aws::CredentialProvider] :credentials
131
142
  # Your AWS credentials. This can be an instance of any one of the
132
143
  # following classes:
@@ -184,6 +195,16 @@ module Aws::S3
184
195
  # * `~/.aws/credentials`
185
196
  # * `~/.aws/config`
186
197
  #
198
+ # @option options [Boolean] :access_grants (false)
199
+ # When `true`, the S3 client will use the S3 Access Grants feature to
200
+ # authenticate requests. Bucket credentials will be fetched from S3
201
+ # Control using the `get_data_access` API.
202
+ #
203
+ # @option options [Aws::S3::AccessGrantsCredentialsProvider] :access_grants_credentials_provider
204
+ # When `access_grants` is `true`, this option can be used to provide
205
+ # additional options to the credentials provider, including a privilege
206
+ # setting, caching, and fallback behavior.
207
+ #
187
208
  # @option options [String] :access_key_id
188
209
  #
189
210
  # @option options [Boolean] :active_endpoint_cache (false)
@@ -246,10 +267,16 @@ module Aws::S3
246
267
  # @option options [Boolean] :disable_s3_express_session_auth
247
268
  # Parameter to indicate whether S3Express session auth should be disabled
248
269
  #
249
- # @option options [String] :endpoint
250
- # The client endpoint is normally constructed from the `:region`
251
- # option. You should only configure an `:endpoint` when connecting
252
- # to test or custom endpoints. This should be a valid HTTP(S) URI.
270
+ # @option options [String, URI::HTTPS, URI::HTTP] :endpoint
271
+ # Normally you should not configure the `:endpoint` option
272
+ # directly. This is normally constructed from the `:region`
273
+ # option. Configuring `:endpoint` is normally reserved for
274
+ # connecting to test or custom endpoints. The endpoint should
275
+ # be a URI formatted like:
276
+ #
277
+ # 'http://example.com'
278
+ # 'https://example.com'
279
+ # 'http://example.com:123'
253
280
  #
254
281
  # @option options [Integer] :endpoint_cache_max_entries (1000)
255
282
  # Used for the maximum size limit of the LRU cache storing endpoints data
@@ -365,7 +392,6 @@ module Aws::S3
365
392
  # throttling. This is a provisional mode that may change behavior
366
393
  # in the future.
367
394
  #
368
- #
369
395
  # @option options [Boolean] :s3_disable_multiregion_access_points (false)
370
396
  # When set to `false` this will option will raise errors when multi-region
371
397
  # access point ARNs are used. Multi-region access points can potentially
@@ -382,13 +408,23 @@ module Aws::S3
382
408
  #
383
409
  # @option options [String] :sdk_ua_app_id
384
410
  # A unique and opaque application ID that is appended to the
385
- # User-Agent header as app/<sdk_ua_app_id>. It should have a
386
- # maximum length of 50.
411
+ # User-Agent header as app/sdk_ua_app_id. It should have a
412
+ # maximum length of 50. This variable is sourced from environment
413
+ # variable AWS_SDK_UA_APP_ID or the shared config profile attribute sdk_ua_app_id.
387
414
  #
388
415
  # @option options [String] :secret_access_key
389
416
  #
390
417
  # @option options [String] :session_token
391
418
  #
419
+ # @option options [Array] :sigv4a_signing_region_set
420
+ # A list of regions that should be signed with SigV4a signing. When
421
+ # not passed, a default `:sigv4a_signing_region_set` is searched for
422
+ # in the following locations:
423
+ #
424
+ # * `Aws.config[:sigv4a_signing_region_set]`
425
+ # * `ENV['AWS_SIGV4A_SIGNING_REGION_SET']`
426
+ # * `~/.aws/config`
427
+ #
392
428
  # @option options [Boolean] :stub_responses (false)
393
429
  # Causes the client to return stubbed responses. By default
394
430
  # fake responses are generated and returned. You can specify
@@ -398,6 +434,16 @@ module Aws::S3
398
434
  # ** Please note ** When response stubbing is enabled, no HTTP
399
435
  # requests are made, and retries are disabled.
400
436
  #
437
+ # @option options [Aws::Telemetry::TelemetryProviderBase] :telemetry_provider (Aws::Telemetry::NoOpTelemetryProvider)
438
+ # Allows you to provide a telemetry provider, which is used to
439
+ # emit telemetry data. By default, uses `NoOpTelemetryProvider` which
440
+ # will not record or emit any telemetry data. The SDK supports the
441
+ # following telemetry providers:
442
+ #
443
+ # * OpenTelemetry (OTel) - To use the OTel provider, install and require the
444
+ # `opentelemetry-sdk` gem and then, pass in an instance of a
445
+ # `Aws::Telemetry::OTelProvider` for telemetry provider.
446
+ #
401
447
  # @option options [Aws::TokenProvider] :token_provider
402
448
  # A Bearer Token Provider. This can be an instance of any one of the
403
449
  # following classes:
@@ -432,50 +478,71 @@ module Aws::S3
432
478
  # @option options [Aws::S3::EndpointProvider] :endpoint_provider
433
479
  # 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`
434
480
  #
435
- # @option options [URI::HTTP,String] :http_proxy A proxy to send
436
- # requests through. Formatted like 'http://proxy.com:123'.
437
- #
438
- # @option options [Float] :http_open_timeout (15) The number of
439
- # seconds to wait when opening a HTTP session before raising a
440
- # `Timeout::Error`.
441
- #
442
- # @option options [Float] :http_read_timeout (60) The default
443
- # number of seconds to wait for response data. This value can
444
- # safely be set per-request on the session.
445
- #
446
- # @option options [Float] :http_idle_timeout (5) The number of
447
- # seconds a connection is allowed to sit idle before it is
448
- # considered stale. Stale connections are closed and removed
449
- # from the pool before making a request.
481
+ # @option options [Float] :http_continue_timeout (1)
482
+ # The number of seconds to wait for a 100-continue response before sending the
483
+ # request body. This option has no effect unless the request has "Expect"
484
+ # header set to "100-continue". Defaults to `nil` which disables this
485
+ # behaviour. This value can safely be set per request on the session.
486
+ #
487
+ # @option options [Float] :http_idle_timeout (5)
488
+ # The number of seconds a connection is allowed to sit idle before it
489
+ # is considered stale. Stale connections are closed and removed from the
490
+ # pool before making a request.
491
+ #
492
+ # @option options [Float] :http_open_timeout (15)
493
+ # The default number of seconds to wait for response data.
494
+ # This value can safely be set per-request on the session.
495
+ #
496
+ # @option options [URI::HTTP,String] :http_proxy
497
+ # A proxy to send requests through. Formatted like 'http://proxy.com:123'.
498
+ #
499
+ # @option options [Float] :http_read_timeout (60)
500
+ # The default number of seconds to wait for response data.
501
+ # This value can safely be set per-request on the session.
502
+ #
503
+ # @option options [Boolean] :http_wire_trace (false)
504
+ # When `true`, HTTP debug output will be sent to the `:logger`.
505
+ #
506
+ # @option options [Proc] :on_chunk_received
507
+ # When a Proc object is provided, it will be used as callback when each chunk
508
+ # of the response body is received. It provides three arguments: the chunk,
509
+ # the number of bytes received, and the total number of
510
+ # bytes in the response (or nil if the server did not send a `content-length`).
511
+ #
512
+ # @option options [Proc] :on_chunk_sent
513
+ # When a Proc object is provided, it will be used as callback when each chunk
514
+ # of the request body is sent. It provides three arguments: the chunk,
515
+ # the number of bytes read from the body, and the total number of
516
+ # bytes in the body.
517
+ #
518
+ # @option options [Boolean] :raise_response_errors (true)
519
+ # When `true`, response errors are raised.
520
+ #
521
+ # @option options [String] :ssl_ca_bundle
522
+ # Full path to the SSL certificate authority bundle file that should be used when
523
+ # verifying peer certificates. If you do not pass `:ssl_ca_bundle` or
524
+ # `:ssl_ca_directory` the the system default will be used if available.
525
+ #
526
+ # @option options [String] :ssl_ca_directory
527
+ # Full path of the directory that contains the unbundled SSL certificate
528
+ # authority files for verifying peer certificates. If you do
529
+ # not pass `:ssl_ca_bundle` or `:ssl_ca_directory` the the system
530
+ # default will be used if available.
450
531
  #
451
- # @option options [Float] :http_continue_timeout (1) The number of
452
- # seconds to wait for a 100-continue response before sending the
453
- # request body. This option has no effect unless the request has
454
- # "Expect" header set to "100-continue". Defaults to `nil` which
455
- # disables this behaviour. This value can safely be set per
456
- # request on the session.
532
+ # @option options [String] :ssl_ca_store
533
+ # Sets the X509::Store to verify peer certificate.
457
534
  #
458
- # @option options [Float] :ssl_timeout (nil) Sets the SSL timeout
459
- # in seconds.
535
+ # @option options [OpenSSL::X509::Certificate] :ssl_cert
536
+ # Sets a client certificate when creating http connections.
460
537
  #
461
- # @option options [Boolean] :http_wire_trace (false) When `true`,
462
- # HTTP debug output will be sent to the `:logger`.
538
+ # @option options [OpenSSL::PKey] :ssl_key
539
+ # Sets a client key when creating http connections.
463
540
  #
464
- # @option options [Boolean] :ssl_verify_peer (true) When `true`,
465
- # SSL peer certificates are verified when establishing a
466
- # connection.
541
+ # @option options [Float] :ssl_timeout
542
+ # Sets the SSL timeout in seconds
467
543
  #
468
- # @option options [String] :ssl_ca_bundle Full path to the SSL
469
- # certificate authority bundle file that should be used when
470
- # verifying peer certificates. If you do not pass
471
- # `:ssl_ca_bundle` or `:ssl_ca_directory` the the system default
472
- # will be used if available.
473
- #
474
- # @option options [String] :ssl_ca_directory Full path of the
475
- # directory that contains the unbundled SSL certificate
476
- # authority files for verifying peer certificates. If you do
477
- # not pass `:ssl_ca_bundle` or `:ssl_ca_directory` the the
478
- # system default will be used if available.
544
+ # @option options [Boolean] :ssl_verify_peer (true)
545
+ # When `true`, SSL peer certificates are verified when establishing a connection.
479
546
  #
480
547
  def initialize(*args)
481
548
  super
@@ -495,12 +562,20 @@ module Aws::S3
495
562
  # for the part storage, you should call the [ListParts][1] API operation
496
563
  # and ensure that the parts list is empty.
497
564
  #
498
- # <note markdown="1"> **Directory buckets** - For directory buckets, you must make requests
499
- # for this API operation to the Zonal endpoint. These endpoints support
500
- # virtual-hosted-style requests in the format
501
- # `https://bucket_name.s3express-az_id.region.amazonaws.com/key-name `.
502
- # Path-style requests are not supported. For more information, see
503
- # [Regional and Zonal endpoints][2] in the *Amazon S3 User Guide*.
565
+ # <note markdown="1"> * **Directory buckets** - If multipart uploads in a directory bucket
566
+ # are in progress, you can't delete the bucket until all the
567
+ # in-progress multipart uploads are aborted or completed. To delete
568
+ # these in-progress multipart uploads, use the `ListMultipartUploads`
569
+ # operation to list the in-progress multipart uploads in the bucket
570
+ # and use the `AbortMultupartUpload` operation to abort all the
571
+ # in-progress multipart uploads.
572
+ #
573
+ # * **Directory buckets** - For directory buckets, you must make
574
+ # requests for this API operation to the Zonal endpoint. These
575
+ # endpoints support virtual-hosted-style requests in the format
576
+ # `https://bucket_name.s3express-az_id.region.amazonaws.com/key-name
577
+ # `. Path-style requests are not supported. For more information, see
578
+ # [Regional and Zonal endpoints][2] in the *Amazon S3 User Guide*.
504
579
  #
505
580
  # </note>
506
581
  #
@@ -725,9 +800,15 @@ module Aws::S3
725
800
  # [Multipart Upload and Permissions][6] in the *Amazon S3 User
726
801
  # Guide*.
727
802
  #
803
+ # If you provide an [additional checksum value][7] in your
804
+ # `MultipartUpload` requests and the object is encrypted with Key
805
+ # Management Service, you must have permission to use the
806
+ # `kms:Decrypt` action for the `CompleteMultipartUpload` request to
807
+ # succeed.
808
+ #
728
809
  # * **Directory bucket permissions** - To grant access to this API
729
810
  # operation on a directory bucket, we recommend that you use the [
730
- # `CreateSession` ][7] API operation for session-based
811
+ # `CreateSession` ][8] API operation for session-based
731
812
  # authorization. Specifically, you grant the
732
813
  # `s3express:CreateSession` permission to the directory bucket in a
733
814
  # bucket policy or an IAM identity-based policy. Then, you make the
@@ -738,7 +819,11 @@ module Aws::S3
738
819
  # token for use. Amazon Web Services CLI or SDKs create session and
739
820
  # refresh the session token automatically to avoid service
740
821
  # interruptions when a session expires. For more information about
741
- # authorization, see [ `CreateSession` ][7].
822
+ # authorization, see [ `CreateSession` ][8].
823
+ #
824
+ # If the object is encrypted with SSE-KMS, you must also have the
825
+ # `kms:GenerateDataKey` and `kms:Decrypt` permissions in IAM
826
+ # identity-based policies and KMS key policies for the KMS key.
742
827
  #
743
828
  # Special errors
744
829
  # : * Error Code: `EntityTooSmall`
@@ -779,15 +864,15 @@ module Aws::S3
779
864
  #
780
865
  # The following operations are related to `CompleteMultipartUpload`:
781
866
  #
782
- # * [CreateMultipartUpload][8]
867
+ # * [CreateMultipartUpload][9]
783
868
  #
784
869
  # * [UploadPart][1]
785
870
  #
786
- # * [AbortMultipartUpload][9]
871
+ # * [AbortMultipartUpload][10]
787
872
  #
788
- # * [ListParts][10]
873
+ # * [ListParts][11]
789
874
  #
790
- # * [ListMultipartUploads][11]
875
+ # * [ListMultipartUploads][12]
791
876
  #
792
877
  #
793
878
  #
@@ -797,11 +882,12 @@ module Aws::S3
797
882
  # [4]: https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html
798
883
  # [5]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-Regions-and-Zones.html
799
884
  # [6]: https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html
800
- # [7]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html
801
- # [8]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html
802
- # [9]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html
803
- # [10]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html
804
- # [11]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html
885
+ # [7]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_Checksum.html
886
+ # [8]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html
887
+ # [9]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html
888
+ # [10]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html
889
+ # [11]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html
890
+ # [12]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html
805
891
  #
806
892
  # @option params [required, String] :bucket
807
893
  # Name of the bucket to which the multipart upload was initiated.
@@ -922,6 +1008,26 @@ module Aws::S3
922
1008
  # you provide does not match the actual owner of the bucket, the request
923
1009
  # fails with the HTTP status code `403 Forbidden` (access denied).
924
1010
  #
1011
+ # @option params [String] :if_none_match
1012
+ # Uploads the object only if the object key name does not already exist
1013
+ # in the bucket specified. Otherwise, Amazon S3 returns a `412
1014
+ # Precondition Failed` error.
1015
+ #
1016
+ # If a conflicting operation occurs during the upload S3 returns a `409
1017
+ # ConditionalRequestConflict` response. On a 409 failure you should
1018
+ # re-initiate the multipart upload with `CreateMultipartUpload` and
1019
+ # re-upload each part.
1020
+ #
1021
+ # Expects the '*' (asterisk) character.
1022
+ #
1023
+ # For more information about conditional requests, see [RFC 7232][1], or
1024
+ # [Conditional requests][2] in the *Amazon S3 User Guide*.
1025
+ #
1026
+ #
1027
+ #
1028
+ # [1]: https://tools.ietf.org/html/rfc7232
1029
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/conditional-requests.html
1030
+ #
925
1031
  # @option params [String] :sse_customer_algorithm
926
1032
  # The server-side encryption (SSE) algorithm used to encrypt the object.
927
1033
  # This parameter is required only when the object was created using a
@@ -1037,6 +1143,7 @@ module Aws::S3
1037
1143
  # checksum_sha256: "ChecksumSHA256",
1038
1144
  # request_payer: "requester", # accepts requester
1039
1145
  # expected_bucket_owner: "AccountId",
1146
+ # if_none_match: "IfNoneMatch",
1040
1147
  # sse_customer_algorithm: "SSECustomerAlgorithm",
1041
1148
  # sse_customer_key: "SSECustomerKey",
1042
1149
  # sse_customer_key_md5: "SSECustomerKeyMD5",
@@ -1083,12 +1190,20 @@ module Aws::S3
1083
1190
  # between directory buckets, and between general purpose buckets and
1084
1191
  # directory buckets.
1085
1192
  #
1086
- # <note markdown="1"> <b>Directory buckets </b> - For directory buckets, you must make
1087
- # requests for this API operation to the Zonal endpoint. These endpoints
1088
- # support virtual-hosted-style requests in the format
1089
- # `https://bucket_name.s3express-az_id.region.amazonaws.com/key-name `.
1090
- # Path-style requests are not supported. For more information, see
1091
- # [Regional and Zonal endpoints][2] in the *Amazon S3 User Guide*.
1193
+ # <note markdown="1"> * Amazon S3 supports copy operations using Multi-Region Access Points
1194
+ # only as a destination when using the Multi-Region Access Point ARN.
1195
+ #
1196
+ # * <b>Directory buckets </b> - For directory buckets, you must make
1197
+ # requests for this API operation to the Zonal endpoint. These
1198
+ # endpoints support virtual-hosted-style requests in the format
1199
+ # `https://bucket_name.s3express-az_id.region.amazonaws.com/key-name
1200
+ # `. Path-style requests are not supported. For more information, see
1201
+ # [Regional and Zonal endpoints][2] in the *Amazon S3 User Guide*.
1202
+ #
1203
+ # * VPC endpoints don't support cross-Region requests (including
1204
+ # copies). If you're using VPC endpoints, your source and destination
1205
+ # buckets should be in the same Amazon Web Services Region as your VPC
1206
+ # endpoint.
1092
1207
  #
1093
1208
  # </note>
1094
1209
  #
@@ -1154,6 +1269,10 @@ module Aws::S3
1154
1269
  # destination. The `s3express:SessionMode` condition key can't be
1155
1270
  # set to `ReadOnly` on the copy destination bucket.
1156
1271
  #
1272
+ # If the object is encrypted with SSE-KMS, you must also have the
1273
+ # `kms:GenerateDataKey` and `kms:Decrypt` permissions in IAM
1274
+ # identity-based policies and KMS key policies for the KMS key.
1275
+ #
1157
1276
  # For example policies, see [Example bucket policies for S3 Express
1158
1277
  # One Zone][6] and [Amazon Web Services Identity and Access
1159
1278
  # Management (IAM) identity-based policies for S3 Express One
@@ -1164,8 +1283,7 @@ module Aws::S3
1164
1283
  # : When the request is an HTTP 1.1 request, the response is chunk
1165
1284
  # encoded. When the request is not an HTTP 1.1 request, the response
1166
1285
  # would not contain the `Content-Length`. You always need to read the
1167
- # entire response body to check if the copy succeeds. to keep the
1168
- # connection alive while we copy the data.
1286
+ # entire response body to check if the copy succeeds.
1169
1287
  #
1170
1288
  # * If the copy is successful, you receive a response with information
1171
1289
  # about the copied object.
@@ -1601,9 +1719,8 @@ module Aws::S3
1601
1719
  #
1602
1720
  # @option params [String] :server_side_encryption
1603
1721
  # The server-side encryption algorithm used when storing this object in
1604
- # Amazon S3 (for example, `AES256`, `aws:kms`, `aws:kms:dsse`).
1605
- # Unrecognized or unsupported values won’t write a destination object
1606
- # and will receive a `400 Bad Request` response.
1722
+ # Amazon S3. Unrecognized or unsupported values won’t write a
1723
+ # destination object and will receive a `400 Bad Request` response.
1607
1724
  #
1608
1725
  # Amazon S3 automatically encrypts all new objects that are copied to an
1609
1726
  # S3 bucket. When copying an object, if you don't specify encryption
@@ -1611,35 +1728,72 @@ module Aws::S3
1611
1728
  # object is set to the default encryption configuration of the
1612
1729
  # destination bucket. By default, all buckets have a base level of
1613
1730
  # encryption configuration that uses server-side encryption with Amazon
1614
- # S3 managed keys (SSE-S3). If the destination bucket has a default
1615
- # encryption configuration that uses server-side encryption with Key
1616
- # Management Service (KMS) keys (SSE-KMS), dual-layer server-side
1617
- # encryption with Amazon Web Services KMS keys (DSSE-KMS), or
1618
- # server-side encryption with customer-provided encryption keys (SSE-C),
1619
- # Amazon S3 uses the corresponding KMS key, or a customer-provided key
1620
- # to encrypt the target object copy.
1621
- #
1622
- # When you perform a `CopyObject` operation, if you want to use a
1623
- # different type of encryption setting for the target object, you can
1624
- # specify appropriate encryption-related headers to encrypt the target
1625
- # object with an Amazon S3 managed key, a KMS key, or a
1626
- # customer-provided key. If the encryption setting in your request is
1627
- # different from the default encryption configuration of the destination
1628
- # bucket, the encryption setting in your request takes precedence.
1731
+ # S3 managed keys (SSE-S3). If the destination bucket has a different
1732
+ # default encryption configuration, Amazon S3 uses the corresponding
1733
+ # encryption key to encrypt the target object copy.
1629
1734
  #
1630
1735
  # With server-side encryption, Amazon S3 encrypts your data as it writes
1631
1736
  # your data to disks in its data centers and decrypts the data when you
1632
1737
  # access it. For more information about server-side encryption, see
1633
1738
  # [Using Server-Side Encryption][1] in the *Amazon S3 User Guide*.
1634
1739
  #
1635
- # <note markdown="1"> For directory buckets, only server-side encryption with Amazon S3
1636
- # managed keys (SSE-S3) (`AES256`) is supported.
1637
- #
1638
- # </note>
1740
+ # <b>General purpose buckets </b>
1741
+ #
1742
+ # * For general purpose buckets, there are the following supported
1743
+ # options for server-side encryption: server-side encryption with Key
1744
+ # Management Service (KMS) keys (SSE-KMS), dual-layer server-side
1745
+ # encryption with Amazon Web Services KMS keys (DSSE-KMS), and
1746
+ # server-side encryption with customer-provided encryption keys
1747
+ # (SSE-C). Amazon S3 uses the corresponding KMS key, or a
1748
+ # customer-provided key to encrypt the target object copy.
1749
+ #
1750
+ # * When you perform a `CopyObject` operation, if you want to use a
1751
+ # different type of encryption setting for the target object, you can
1752
+ # specify appropriate encryption-related headers to encrypt the target
1753
+ # object with an Amazon S3 managed key, a KMS key, or a
1754
+ # customer-provided key. If the encryption setting in your request is
1755
+ # different from the default encryption configuration of the
1756
+ # destination bucket, the encryption setting in your request takes
1757
+ # precedence.
1758
+ #
1759
+ # <b>Directory buckets </b>
1760
+ #
1761
+ # * For directory buckets, there are only two supported options for
1762
+ # server-side encryption: server-side encryption with Amazon S3
1763
+ # managed keys (SSE-S3) (`AES256`) and server-side encryption with KMS
1764
+ # keys (SSE-KMS) (`aws:kms`). We recommend that the bucket's default
1765
+ # encryption uses the desired encryption configuration and you don't
1766
+ # override the bucket default encryption in your `CreateSession`
1767
+ # requests or `PUT` object requests. Then, new objects are
1768
+ # automatically encrypted with the desired encryption settings. For
1769
+ # more information, see [Protecting data with server-side
1770
+ # encryption][2] in the *Amazon S3 User Guide*. For more information
1771
+ # about the encryption overriding behaviors in directory buckets, see
1772
+ # [Specifying server-side encryption with KMS for new object
1773
+ # uploads][3].
1774
+ #
1775
+ # * To encrypt new object copies to a directory bucket with SSE-KMS, we
1776
+ # recommend you specify SSE-KMS as the directory bucket's default
1777
+ # encryption configuration with a KMS key (specifically, a [customer
1778
+ # managed key][4]). [Amazon Web Services managed key][5] (`aws/s3`)
1779
+ # isn't supported. Your SSE-KMS configuration can only support 1
1780
+ # [customer managed key][4] per directory bucket for the lifetime of
1781
+ # the bucket. After you specify a customer managed key for SSE-KMS,
1782
+ # you can't override the customer managed key for the bucket's
1783
+ # SSE-KMS configuration. Then, when you perform a `CopyObject`
1784
+ # operation and want to specify server-side encryption settings for
1785
+ # new object copies with SSE-KMS in the encryption-related request
1786
+ # headers, you must ensure the encryption key is the same customer
1787
+ # managed key that you specified for the directory bucket's default
1788
+ # encryption configuration.
1639
1789
  #
1640
1790
  #
1641
1791
  #
1642
1792
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html
1793
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html
1794
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html
1795
+ # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk
1796
+ # [5]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk
1643
1797
  #
1644
1798
  # @option params [String] :storage_class
1645
1799
  # If the `x-amz-storage-class` header is not used, the copied object
@@ -1736,33 +1890,51 @@ module Aws::S3
1736
1890
  # </note>
1737
1891
  #
1738
1892
  # @option params [String] :ssekms_key_id
1739
- # Specifies the KMS ID (Key ID, Key ARN, or Key Alias) to use for object
1740
- # encryption. All GET and PUT requests for an object protected by KMS
1741
- # will fail if they're not made via SSL or using SigV4. For information
1742
- # about configuring any of the officially supported Amazon Web Services
1743
- # SDKs and Amazon Web Services CLI, see [Specifying the Signature
1744
- # Version in Request Authentication][1] in the *Amazon S3 User Guide*.
1745
- #
1746
- # <note markdown="1"> This functionality is not supported when the destination bucket is a
1747
- # directory bucket.
1893
+ # Specifies the KMS key ID (Key ID, Key ARN, or Key Alias) to use for
1894
+ # object encryption. All GET and PUT requests for an object protected by
1895
+ # KMS will fail if they're not made via SSL or using SigV4. For
1896
+ # information about configuring any of the officially supported Amazon
1897
+ # Web Services SDKs and Amazon Web Services CLI, see [Specifying the
1898
+ # Signature Version in Request Authentication][1] in the *Amazon S3 User
1899
+ # Guide*.
1748
1900
  #
1749
- # </note>
1901
+ # **Directory buckets** - If you specify `x-amz-server-side-encryption`
1902
+ # with `aws:kms`, you must specify the `
1903
+ # x-amz-server-side-encryption-aws-kms-key-id` header with the ID (Key
1904
+ # ID or Key ARN) of the KMS symmetric encryption customer managed key to
1905
+ # use. Otherwise, you get an HTTP `400 Bad Request` error. Only use the
1906
+ # key ID or key ARN. The key alias format of the KMS key isn't
1907
+ # supported. Your SSE-KMS configuration can only support 1 [customer
1908
+ # managed key][2] per directory bucket for the lifetime of the bucket.
1909
+ # [Amazon Web Services managed key][3] (`aws/s3`) isn't supported.
1750
1910
  #
1751
1911
  #
1752
1912
  #
1753
1913
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version
1914
+ # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk
1915
+ # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk
1754
1916
  #
1755
1917
  # @option params [String] :ssekms_encryption_context
1756
- # Specifies the Amazon Web Services KMS Encryption Context to use for
1757
- # object encryption. The value of this header is a base64-encoded UTF-8
1758
- # string holding JSON with the encryption context key-value pairs. This
1759
- # value must be explicitly added to specify encryption context for
1760
- # `CopyObject` requests.
1918
+ # Specifies the Amazon Web Services KMS Encryption Context as an
1919
+ # additional encryption context to use for the destination object
1920
+ # encryption. The value of this header is a base64-encoded UTF-8 string
1921
+ # holding JSON with the encryption context key-value pairs.
1761
1922
  #
1762
- # <note markdown="1"> This functionality is not supported when the destination bucket is a
1763
- # directory bucket.
1923
+ # **General purpose buckets** - This value must be explicitly added to
1924
+ # specify encryption context for `CopyObject` requests if you want an
1925
+ # additional encryption context for your destination object. The
1926
+ # additional encryption context of the source object won't be copied to
1927
+ # the destination object. For more information, see [Encryption
1928
+ # context][1] in the *Amazon S3 User Guide*.
1929
+ #
1930
+ # **Directory buckets** - You can optionally provide an explicit
1931
+ # encryption context value. The value must match the default encryption
1932
+ # context - the bucket Amazon Resource Name (ARN). An additional
1933
+ # encryption context value is not supported.
1764
1934
  #
1765
- # </note>
1935
+ #
1936
+ #
1937
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html#encryption-context
1766
1938
  #
1767
1939
  # @option params [Boolean] :bucket_key_enabled
1768
1940
  # Specifies whether Amazon S3 should use an S3 Bucket Key for object
@@ -1777,14 +1949,19 @@ module Aws::S3
1777
1949
  # For more information, see [Amazon S3 Bucket Keys][1] in the *Amazon S3
1778
1950
  # User Guide*.
1779
1951
  #
1780
- # <note markdown="1"> This functionality is not supported when the destination bucket is a
1781
- # directory bucket.
1952
+ # <note markdown="1"> **Directory buckets** - S3 Bucket Keys aren't supported, when you
1953
+ # copy SSE-KMS encrypted objects from general purpose buckets to
1954
+ # directory buckets, from directory buckets to general purpose buckets,
1955
+ # or between directory buckets, through [CopyObject][2]. In this case,
1956
+ # Amazon S3 makes a call to KMS every time a copy request is made for a
1957
+ # KMS-encrypted object.
1782
1958
  #
1783
1959
  # </note>
1784
1960
  #
1785
1961
  #
1786
1962
  #
1787
1963
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html
1964
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
1788
1965
  #
1789
1966
  # @option params [String] :copy_source_sse_customer_algorithm
1790
1967
  # Specifies the algorithm to use when decrypting the source object (for
@@ -2291,33 +2468,33 @@ module Aws::S3
2291
2468
  # * {Types::CreateBucketOutput#location #location} => String
2292
2469
  #
2293
2470
  #
2294
- # @example Example: To create a bucket
2471
+ # @example Example: To create a bucket in a specific region
2295
2472
  #
2296
- # # The following example creates a bucket.
2473
+ # # The following example creates a bucket. The request specifies an AWS region where to create the bucket.
2297
2474
  #
2298
2475
  # resp = client.create_bucket({
2299
2476
  # bucket: "examplebucket",
2477
+ # create_bucket_configuration: {
2478
+ # location_constraint: "eu-west-1",
2479
+ # },
2300
2480
  # })
2301
2481
  #
2302
2482
  # resp.to_h outputs the following:
2303
2483
  # {
2304
- # location: "/examplebucket",
2484
+ # location: "http://examplebucket.<Region>.s3.amazonaws.com/",
2305
2485
  # }
2306
2486
  #
2307
- # @example Example: To create a bucket in a specific region
2487
+ # @example Example: To create a bucket
2308
2488
  #
2309
- # # The following example creates a bucket. The request specifies an AWS region where to create the bucket.
2489
+ # # The following example creates a bucket.
2310
2490
  #
2311
2491
  # resp = client.create_bucket({
2312
2492
  # bucket: "examplebucket",
2313
- # create_bucket_configuration: {
2314
- # location_constraint: "eu-west-1",
2315
- # },
2316
2493
  # })
2317
2494
  #
2318
2495
  # resp.to_h outputs the following:
2319
2496
  # {
2320
- # location: "http://examplebucket.<Region>.s3.amazonaws.com/",
2497
+ # location: "/examplebucket",
2321
2498
  # }
2322
2499
  #
2323
2500
  # @example Request syntax with placeholder values
@@ -2406,24 +2583,23 @@ module Aws::S3
2406
2583
  # Version 4)][5] in the *Amazon S3 User Guide*.
2407
2584
  #
2408
2585
  # Permissions
2409
- # : * **General purpose bucket permissions** - For information about the
2410
- # permissions required to use the multipart upload API, see
2411
- # [Multipart upload and permissions][6] in the *Amazon S3 User
2412
- # Guide*.
2413
- #
2414
- # To perform a multipart upload with encryption by using an Amazon
2415
- # Web Services KMS key, the requester must have permission to the
2416
- # `kms:Decrypt` and `kms:GenerateDataKey*` actions on the key. These
2417
- # permissions are required because Amazon S3 must decrypt and read
2418
- # data from the encrypted file parts before it completes the
2419
- # multipart upload. For more information, see [Multipart upload API
2420
- # and permissions][7] and [Protecting data using server-side
2421
- # encryption with Amazon Web Services KMS][8] in the *Amazon S3 User
2422
- # Guide*.
2586
+ # : * **General purpose bucket permissions** - To perform a multipart
2587
+ # upload with encryption using an Key Management Service (KMS) KMS
2588
+ # key, the requester must have permission to the `kms:Decrypt` and
2589
+ # `kms:GenerateDataKey` actions on the key. The requester must also
2590
+ # have permissions for the `kms:GenerateDataKey` action for the
2591
+ # `CreateMultipartUpload` API. Then, the requester needs permissions
2592
+ # for the `kms:Decrypt` action on the `UploadPart` and
2593
+ # `UploadPartCopy` APIs. These permissions are required because
2594
+ # Amazon S3 must decrypt and read data from the encrypted file parts
2595
+ # before it completes the multipart upload. For more information,
2596
+ # see [Multipart upload API and permissions][6] and [Protecting data
2597
+ # using server-side encryption with Amazon Web Services KMS][7] in
2598
+ # the *Amazon S3 User Guide*.
2423
2599
  #
2424
2600
  # * **Directory bucket permissions** - To grant access to this API
2425
2601
  # operation on a directory bucket, we recommend that you use the [
2426
- # `CreateSession` ][9] API operation for session-based
2602
+ # `CreateSession` ][8] API operation for session-based
2427
2603
  # authorization. Specifically, you grant the
2428
2604
  # `s3express:CreateSession` permission to the directory bucket in a
2429
2605
  # bucket policy or an IAM identity-based policy. Then, you make the
@@ -2434,7 +2610,7 @@ module Aws::S3
2434
2610
  # token for use. Amazon Web Services CLI or SDKs create session and
2435
2611
  # refresh the session token automatically to avoid service
2436
2612
  # interruptions when a session expires. For more information about
2437
- # authorization, see [ `CreateSession` ][9].
2613
+ # authorization, see [ `CreateSession` ][8].
2438
2614
  #
2439
2615
  # Encryption
2440
2616
  # : * **General purpose buckets** - Server-side encryption is for data
@@ -2461,7 +2637,7 @@ module Aws::S3
2461
2637
  # the destination bucket, the encryption setting in your request
2462
2638
  # takes precedence. If you choose to provide your own encryption
2463
2639
  # key, the request headers you provide in [UploadPart][1] and
2464
- # [UploadPartCopy][10] requests must match the headers you used in
2640
+ # [UploadPartCopy][9] requests must match the headers you used in
2465
2641
  # the `CreateMultipartUpload` request.
2466
2642
  #
2467
2643
  # * Use KMS keys (SSE-KMS) that include the Amazon Web Services
@@ -2487,9 +2663,9 @@ module Aws::S3
2487
2663
  # actions on the key. These permissions are required because
2488
2664
  # Amazon S3 must decrypt and read data from the encrypted file
2489
2665
  # parts before it completes the multipart upload. For more
2490
- # information, see [Multipart upload API and permissions][7] and
2666
+ # information, see [Multipart upload API and permissions][6] and
2491
2667
  # [Protecting data using server-side encryption with Amazon Web
2492
- # Services KMS][8] in the *Amazon S3 User Guide*.
2668
+ # Services KMS][7] in the *Amazon S3 User Guide*.
2493
2669
  #
2494
2670
  # * If your Identity and Access Management (IAM) user or role is
2495
2671
  # in the same Amazon Web Services account as the KMS key, then
@@ -2504,13 +2680,13 @@ module Aws::S3
2504
2680
  # For information about configuring any of the officially
2505
2681
  # supported Amazon Web Services SDKs and Amazon Web Services
2506
2682
  # CLI, see [Specifying the Signature Version in Request
2507
- # Authentication][11] in the *Amazon S3 User Guide*.
2683
+ # Authentication][10] in the *Amazon S3 User Guide*.
2508
2684
  #
2509
2685
  # </note>
2510
2686
  #
2511
2687
  # For more information about server-side encryption with KMS keys
2512
2688
  # (SSE-KMS), see [Protecting Data Using Server-Side Encryption
2513
- # with KMS keys][8] in the *Amazon S3 User Guide*.
2689
+ # with KMS keys][7] in the *Amazon S3 User Guide*.
2514
2690
  #
2515
2691
  # * Use customer-provided encryption keys (SSE-C) – If you want to
2516
2692
  # manage your own encryption keys, provide all the following
@@ -2525,11 +2701,55 @@ module Aws::S3
2525
2701
  # For more information about server-side encryption with
2526
2702
  # customer-provided encryption keys (SSE-C), see [ Protecting data
2527
2703
  # using server-side encryption with customer-provided encryption
2528
- # keys (SSE-C)][12] in the *Amazon S3 User Guide*.
2704
+ # keys (SSE-C)][11] in the *Amazon S3 User Guide*.
2705
+ #
2706
+ # * **Directory buckets** - For directory buckets, there are only two
2707
+ # supported options for server-side encryption: server-side
2708
+ # encryption with Amazon S3 managed keys (SSE-S3) (`AES256`) and
2709
+ # server-side encryption with KMS keys (SSE-KMS) (`aws:kms`). We
2710
+ # recommend that the bucket's default encryption uses the desired
2711
+ # encryption configuration and you don't override the bucket
2712
+ # default encryption in your `CreateSession` requests or `PUT`
2713
+ # object requests. Then, new objects are automatically encrypted
2714
+ # with the desired encryption settings. For more information, see
2715
+ # [Protecting data with server-side encryption][12] in the *Amazon
2716
+ # S3 User Guide*. For more information about the encryption
2717
+ # overriding behaviors in directory buckets, see [Specifying
2718
+ # server-side encryption with KMS for new object uploads][13].
2719
+ #
2720
+ # In the Zonal endpoint API calls (except [CopyObject][14] and
2721
+ # [UploadPartCopy][9]) using the REST API, the encryption request
2722
+ # headers must match the encryption settings that are specified in
2723
+ # the `CreateSession` request. You can't override the values of the
2724
+ # encryption settings (`x-amz-server-side-encryption`,
2725
+ # `x-amz-server-side-encryption-aws-kms-key-id`,
2726
+ # `x-amz-server-side-encryption-context`, and
2727
+ # `x-amz-server-side-encryption-bucket-key-enabled`) that are
2728
+ # specified in the `CreateSession` request. You don't need to
2729
+ # explicitly specify these encryption settings values in Zonal
2730
+ # endpoint API calls, and Amazon S3 will use the encryption settings
2731
+ # values from the `CreateSession` request to protect new objects in
2732
+ # the directory bucket.
2733
+ #
2734
+ # <note markdown="1"> When you use the CLI or the Amazon Web Services SDKs, for
2735
+ # `CreateSession`, the session token refreshes automatically to
2736
+ # avoid service interruptions when a session expires. The CLI or the
2737
+ # Amazon Web Services SDKs use the bucket's default encryption
2738
+ # configuration for the `CreateSession` request. It's not supported
2739
+ # to override the encryption settings values in the `CreateSession`
2740
+ # request. So in the Zonal endpoint API calls (except
2741
+ # [CopyObject][14] and [UploadPartCopy][9]), the encryption request
2742
+ # headers must match the default encryption configuration of the
2743
+ # directory bucket.
2744
+ #
2745
+ # </note>
2746
+ #
2747
+ # <note markdown="1"> For directory buckets, when you perform a `CreateMultipartUpload`
2748
+ # operation and an `UploadPartCopy` operation, the request headers
2749
+ # you provide in the `CreateMultipartUpload` request must match the
2750
+ # default encryption configuration of the destination bucket.
2529
2751
  #
2530
- # * **Directory buckets** -For directory buckets, only server-side
2531
- # encryption with Amazon S3 managed keys (SSE-S3) (`AES256`) is
2532
- # supported.
2752
+ # </note>
2533
2753
  #
2534
2754
  # HTTP Host header syntax
2535
2755
  #
@@ -2540,13 +2760,13 @@ module Aws::S3
2540
2760
  #
2541
2761
  # * [UploadPart][1]
2542
2762
  #
2543
- # * [CompleteMultipartUpload][13]
2763
+ # * [CompleteMultipartUpload][15]
2544
2764
  #
2545
- # * [AbortMultipartUpload][14]
2765
+ # * [AbortMultipartUpload][16]
2546
2766
  #
2547
- # * [ListParts][15]
2767
+ # * [ListParts][17]
2548
2768
  #
2549
- # * [ListMultipartUploads][16]
2769
+ # * [ListMultipartUploads][18]
2550
2770
  #
2551
2771
  #
2552
2772
  #
@@ -2555,17 +2775,19 @@ module Aws::S3
2555
2775
  # [3]: https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config
2556
2776
  # [4]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-Regions-and-Zones.html
2557
2777
  # [5]: https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html
2558
- # [6]: https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html
2559
- # [7]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html#mpuAndPermissions
2560
- # [8]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html
2561
- # [9]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html
2562
- # [10]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
2563
- # [11]: https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version
2564
- # [12]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/ServerSideEncryptionCustomerKeys.html
2565
- # [13]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html
2566
- # [14]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html
2567
- # [15]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html
2568
- # [16]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html
2778
+ # [6]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html#mpuAndPermissions
2779
+ # [7]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html
2780
+ # [8]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html
2781
+ # [9]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
2782
+ # [10]: https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version
2783
+ # [11]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/ServerSideEncryptionCustomerKeys.html
2784
+ # [12]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html
2785
+ # [13]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html
2786
+ # [14]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
2787
+ # [15]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html
2788
+ # [16]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html
2789
+ # [17]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html
2790
+ # [18]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html
2569
2791
  #
2570
2792
  # @option params [String] :acl
2571
2793
  # The canned ACL to apply to the object. Amazon S3 supports a set of
@@ -2928,10 +3150,52 @@ module Aws::S3
2928
3150
  # The server-side encryption algorithm used when you store this object
2929
3151
  # in Amazon S3 (for example, `AES256`, `aws:kms`).
2930
3152
  #
2931
- # <note markdown="1"> For directory buckets, only server-side encryption with Amazon S3
2932
- # managed keys (SSE-S3) (`AES256`) is supported.
3153
+ # * <b>Directory buckets </b> - For directory buckets, there are only
3154
+ # two supported options for server-side encryption: server-side
3155
+ # encryption with Amazon S3 managed keys (SSE-S3) (`AES256`) and
3156
+ # server-side encryption with KMS keys (SSE-KMS) (`aws:kms`). We
3157
+ # recommend that the bucket's default encryption uses the desired
3158
+ # encryption configuration and you don't override the bucket default
3159
+ # encryption in your `CreateSession` requests or `PUT` object
3160
+ # requests. Then, new objects are automatically encrypted with the
3161
+ # desired encryption settings. For more information, see [Protecting
3162
+ # data with server-side encryption][1] in the *Amazon S3 User Guide*.
3163
+ # For more information about the encryption overriding behaviors in
3164
+ # directory buckets, see [Specifying server-side encryption with KMS
3165
+ # for new object uploads][2].
3166
+ #
3167
+ # In the Zonal endpoint API calls (except [CopyObject][3] and
3168
+ # [UploadPartCopy][4]) using the REST API, the encryption request
3169
+ # headers must match the encryption settings that are specified in the
3170
+ # `CreateSession` request. You can't override the values of the
3171
+ # encryption settings (`x-amz-server-side-encryption`,
3172
+ # `x-amz-server-side-encryption-aws-kms-key-id`,
3173
+ # `x-amz-server-side-encryption-context`, and
3174
+ # `x-amz-server-side-encryption-bucket-key-enabled`) that are
3175
+ # specified in the `CreateSession` request. You don't need to
3176
+ # explicitly specify these encryption settings values in Zonal
3177
+ # endpoint API calls, and Amazon S3 will use the encryption settings
3178
+ # values from the `CreateSession` request to protect new objects in
3179
+ # the directory bucket.
3180
+ #
3181
+ # <note markdown="1"> When you use the CLI or the Amazon Web Services SDKs, for
3182
+ # `CreateSession`, the session token refreshes automatically to avoid
3183
+ # service interruptions when a session expires. The CLI or the Amazon
3184
+ # Web Services SDKs use the bucket's default encryption configuration
3185
+ # for the `CreateSession` request. It's not supported to override the
3186
+ # encryption settings values in the `CreateSession` request. So in the
3187
+ # Zonal endpoint API calls (except [CopyObject][3] and
3188
+ # [UploadPartCopy][4]), the encryption request headers must match the
3189
+ # default encryption configuration of the directory bucket.
3190
+ #
3191
+ # </note>
3192
+ #
2933
3193
  #
2934
- # </note>
3194
+ #
3195
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html
3196
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html
3197
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
3198
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
2935
3199
  #
2936
3200
  # @option params [String] :storage_class
2937
3201
  # By default, Amazon S3 uses the STANDARD Storage Class to store newly
@@ -2990,34 +3254,71 @@ module Aws::S3
2990
3254
  # </note>
2991
3255
  #
2992
3256
  # @option params [String] :ssekms_key_id
2993
- # Specifies the ID (Key ID, Key ARN, or Key Alias) of the symmetric
2994
- # encryption customer managed key to use for object encryption.
2995
- #
2996
- # <note markdown="1"> This functionality is not supported for directory buckets.
2997
- #
2998
- # </note>
3257
+ # Specifies the KMS key ID (Key ID, Key ARN, or Key Alias) to use for
3258
+ # object encryption. If the KMS key doesn't exist in the same account
3259
+ # that's issuing the command, you must use the full Key ARN not the Key
3260
+ # ID.
3261
+ #
3262
+ # **General purpose buckets** - If you specify
3263
+ # `x-amz-server-side-encryption` with `aws:kms` or `aws:kms:dsse`, this
3264
+ # header specifies the ID (Key ID, Key ARN, or Key Alias) of the KMS key
3265
+ # to use. If you specify `x-amz-server-side-encryption:aws:kms` or
3266
+ # `x-amz-server-side-encryption:aws:kms:dsse`, but do not provide
3267
+ # `x-amz-server-side-encryption-aws-kms-key-id`, Amazon S3 uses the
3268
+ # Amazon Web Services managed key (`aws/s3`) to protect the data.
3269
+ #
3270
+ # **Directory buckets** - If you specify `x-amz-server-side-encryption`
3271
+ # with `aws:kms`, you must specify the `
3272
+ # x-amz-server-side-encryption-aws-kms-key-id` header with the ID (Key
3273
+ # ID or Key ARN) of the KMS symmetric encryption customer managed key to
3274
+ # use. Otherwise, you get an HTTP `400 Bad Request` error. Only use the
3275
+ # key ID or key ARN. The key alias format of the KMS key isn't
3276
+ # supported. Your SSE-KMS configuration can only support 1 [customer
3277
+ # managed key][1] per directory bucket for the lifetime of the bucket.
3278
+ # [Amazon Web Services managed key][2] (`aws/s3`) isn't supported.
3279
+ #
3280
+ #
3281
+ #
3282
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk
3283
+ # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk
2999
3284
  #
3000
3285
  # @option params [String] :ssekms_encryption_context
3001
3286
  # Specifies the Amazon Web Services KMS Encryption Context to use for
3002
- # object encryption. The value of this header is a base64-encoded UTF-8
3003
- # string holding JSON with the encryption context key-value pairs.
3004
- #
3005
- # <note markdown="1"> This functionality is not supported for directory buckets.
3287
+ # object encryption. The value of this header is a Base64-encoded string
3288
+ # of a UTF-8 encoded JSON, which contains the encryption context as
3289
+ # key-value pairs.
3006
3290
  #
3007
- # </note>
3291
+ # **Directory buckets** - You can optionally provide an explicit
3292
+ # encryption context value. The value must match the default encryption
3293
+ # context - the bucket Amazon Resource Name (ARN). An additional
3294
+ # encryption context value is not supported.
3008
3295
  #
3009
3296
  # @option params [Boolean] :bucket_key_enabled
3010
3297
  # Specifies whether Amazon S3 should use an S3 Bucket Key for object
3011
3298
  # encryption with server-side encryption using Key Management Service
3012
- # (KMS) keys (SSE-KMS). Setting this header to `true` causes Amazon S3
3013
- # to use an S3 Bucket Key for object encryption with SSE-KMS.
3299
+ # (KMS) keys (SSE-KMS).
3014
3300
  #
3015
- # Specifying this header with an object action doesn’t affect
3301
+ # **General purpose buckets** - Setting this header to `true` causes
3302
+ # Amazon S3 to use an S3 Bucket Key for object encryption with SSE-KMS.
3303
+ # Also, specifying this header with a PUT action doesn't affect
3016
3304
  # bucket-level settings for S3 Bucket Key.
3017
3305
  #
3018
- # <note markdown="1"> This functionality is not supported for directory buckets.
3306
+ # **Directory buckets** - S3 Bucket Keys are always enabled for `GET`
3307
+ # and `PUT` operations in a directory bucket and can’t be disabled. S3
3308
+ # Bucket Keys aren't supported, when you copy SSE-KMS encrypted objects
3309
+ # from general purpose buckets to directory buckets, from directory
3310
+ # buckets to general purpose buckets, or between directory buckets,
3311
+ # through [CopyObject][1], [UploadPartCopy][2], [the Copy operation in
3312
+ # Batch Operations][3], or [the import jobs][4]. In this case, Amazon S3
3313
+ # makes a call to KMS every time a copy request is made for a
3314
+ # KMS-encrypted object.
3019
3315
  #
3020
- # </note>
3316
+ #
3317
+ #
3318
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
3319
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
3320
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-buckets-objects-Batch-Ops
3321
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-import-job
3021
3322
  #
3022
3323
  # @option params [String] :request_payer
3023
3324
  # Confirms that the requester knows that they will be charged for the
@@ -3178,9 +3479,10 @@ module Aws::S3
3178
3479
 
3179
3480
  # Creates a session that establishes temporary security credentials to
3180
3481
  # support fast authentication and authorization for the Zonal endpoint
3181
- # APIs on directory buckets. For more information about Zonal endpoint
3182
- # APIs that include the Availability Zone in the request endpoint, see
3183
- # [S3 Express One Zone APIs][1] in the *Amazon S3 User Guide*.
3482
+ # API operations on directory buckets. For more information about Zonal
3483
+ # endpoint API operations that include the Availability Zone in the
3484
+ # request endpoint, see [S3 Express One Zone APIs][1] in the *Amazon S3
3485
+ # User Guide*.
3184
3486
  #
3185
3487
  # To make Zonal endpoint API requests on a directory bucket, use the
3186
3488
  # `CreateSession` API operation. Specifically, you grant
@@ -3189,13 +3491,13 @@ module Aws::S3
3189
3491
  # the `CreateSession` API request on the bucket, which returns temporary
3190
3492
  # security credentials that include the access key ID, secret access
3191
3493
  # key, session token, and expiration. These credentials have associated
3192
- # permissions to access the Zonal endpoint APIs. After the session is
3193
- # created, you don’t need to use other policies to grant permissions to
3194
- # each Zonal endpoint API individually. Instead, in your Zonal endpoint
3195
- # API requests, you sign your requests by applying the temporary
3196
- # security credentials of the session to the request headers and
3197
- # following the SigV4 protocol for authentication. You also apply the
3198
- # session token to the `x-amz-s3session-token` request header for
3494
+ # permissions to access the Zonal endpoint API operations. After the
3495
+ # session is created, you don’t need to use other policies to grant
3496
+ # permissions to each Zonal endpoint API individually. Instead, in your
3497
+ # Zonal endpoint API requests, you sign your requests by applying the
3498
+ # temporary security credentials of the session to the request headers
3499
+ # and following the SigV4 protocol for authentication. You also apply
3500
+ # the session token to the `x-amz-s3session-token` request header for
3199
3501
  # authorization. Temporary security credentials are scoped to the bucket
3200
3502
  # and expire after 5 minutes. After the expiration time, any calls that
3201
3503
  # you make with those credentials will fail. You must use IAM
@@ -3218,16 +3520,16 @@ module Aws::S3
3218
3520
  # [Regional and Zonal endpoints][3] in the *Amazon S3 User Guide*.
3219
3521
  #
3220
3522
  # * <b> <code>CopyObject</code> API operation</b> - Unlike other Zonal
3221
- # endpoint APIs, the `CopyObject` API operation doesn't use the
3222
- # temporary security credentials returned from the `CreateSession` API
3223
- # operation for authentication and authorization. For information
3523
+ # endpoint API operations, the `CopyObject` API operation doesn't use
3524
+ # the temporary security credentials returned from the `CreateSession`
3525
+ # API operation for authentication and authorization. For information
3224
3526
  # about authentication and authorization of the `CopyObject` API
3225
3527
  # operation on directory buckets, see [CopyObject][4].
3226
3528
  #
3227
3529
  # * <b> <code>HeadBucket</code> API operation</b> - Unlike other Zonal
3228
- # endpoint APIs, the `HeadBucket` API operation doesn't use the
3229
- # temporary security credentials returned from the `CreateSession` API
3230
- # operation for authentication and authorization. For information
3530
+ # endpoint API operations, the `HeadBucket` API operation doesn't use
3531
+ # the temporary security credentials returned from the `CreateSession`
3532
+ # API operation for authentication and authorization. For information
3231
3533
  # about authentication and authorization of the `HeadBucket` API
3232
3534
  # operation on directory buckets, see [HeadBucket][5].
3233
3535
  #
@@ -3246,9 +3548,71 @@ module Aws::S3
3246
3548
  # Identity and Access Management (IAM) identity-based policies for S3
3247
3549
  # Express One Zone][8] in the *Amazon S3 User Guide*.
3248
3550
  #
3249
- # To grant cross-account access to Zonal endpoint APIs, the bucket
3250
- # policy should also grant both accounts the `s3express:CreateSession`
3251
- # permission.
3551
+ # To grant cross-account access to Zonal endpoint API operations, the
3552
+ # bucket policy should also grant both accounts the
3553
+ # `s3express:CreateSession` permission.
3554
+ #
3555
+ # If you want to encrypt objects with SSE-KMS, you must also have the
3556
+ # `kms:GenerateDataKey` and the `kms:Decrypt` permissions in IAM
3557
+ # identity-based policies and KMS key policies for the target KMS key.
3558
+ #
3559
+ # Encryption
3560
+ #
3561
+ # : For directory buckets, there are only two supported options for
3562
+ # server-side encryption: server-side encryption with Amazon S3
3563
+ # managed keys (SSE-S3) (`AES256`) and server-side encryption with KMS
3564
+ # keys (SSE-KMS) (`aws:kms`). We recommend that the bucket's default
3565
+ # encryption uses the desired encryption configuration and you don't
3566
+ # override the bucket default encryption in your `CreateSession`
3567
+ # requests or `PUT` object requests. Then, new objects are
3568
+ # automatically encrypted with the desired encryption settings. For
3569
+ # more information, see [Protecting data with server-side
3570
+ # encryption][9] in the *Amazon S3 User Guide*. For more information
3571
+ # about the encryption overriding behaviors in directory buckets, see
3572
+ # [Specifying server-side encryption with KMS for new object
3573
+ # uploads][10].
3574
+ #
3575
+ # For [Zonal endpoint (object-level) API operations][11] except
3576
+ # [CopyObject][4] and [UploadPartCopy][12], you authenticate and
3577
+ # authorize requests through [CreateSession][13] for low latency. To
3578
+ # encrypt new objects in a directory bucket with SSE-KMS, you must
3579
+ # specify SSE-KMS as the directory bucket's default encryption
3580
+ # configuration with a KMS key (specifically, a [customer managed
3581
+ # key][14]). Then, when a session is created for Zonal endpoint API
3582
+ # operations, new objects are automatically encrypted and decrypted
3583
+ # with SSE-KMS and S3 Bucket Keys during the session.
3584
+ #
3585
+ # <note markdown="1"> Only 1 [customer managed key][14] is supported per directory bucket
3586
+ # for the lifetime of the bucket. [Amazon Web Services managed
3587
+ # key][15] (`aws/s3`) isn't supported. After you specify SSE-KMS as
3588
+ # your bucket's default encryption configuration with a customer
3589
+ # managed key, you can't change the customer managed key for the
3590
+ # bucket's SSE-KMS configuration.
3591
+ #
3592
+ # </note>
3593
+ #
3594
+ # In the Zonal endpoint API calls (except [CopyObject][4] and
3595
+ # [UploadPartCopy][12]) using the REST API, you can't override the
3596
+ # values of the encryption settings (`x-amz-server-side-encryption`,
3597
+ # `x-amz-server-side-encryption-aws-kms-key-id`,
3598
+ # `x-amz-server-side-encryption-context`, and
3599
+ # `x-amz-server-side-encryption-bucket-key-enabled`) from the
3600
+ # `CreateSession` request. You don't need to explicitly specify these
3601
+ # encryption settings values in Zonal endpoint API calls, and Amazon
3602
+ # S3 will use the encryption settings values from the `CreateSession`
3603
+ # request to protect new objects in the directory bucket.
3604
+ #
3605
+ # <note markdown="1"> When you use the CLI or the Amazon Web Services SDKs, for
3606
+ # `CreateSession`, the session token refreshes automatically to avoid
3607
+ # service interruptions when a session expires. The CLI or the Amazon
3608
+ # Web Services SDKs use the bucket's default encryption configuration
3609
+ # for the `CreateSession` request. It's not supported to override the
3610
+ # encryption settings values in the `CreateSession` request. Also, in
3611
+ # the Zonal endpoint API calls (except [CopyObject][4] and
3612
+ # [UploadPartCopy][12]), it's not supported to override the values of
3613
+ # the encryption settings from the `CreateSession` request.
3614
+ #
3615
+ # </note>
3252
3616
  #
3253
3617
  # HTTP Host header syntax
3254
3618
  #
@@ -3265,21 +3629,110 @@ module Aws::S3
3265
3629
  # [6]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html#API_CreateSession_RequestParameters
3266
3630
  # [7]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam-example-bucket-policies.html
3267
3631
  # [8]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam-identity-policies.html
3632
+ # [9]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html
3633
+ # [10]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html
3634
+ # [11]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-differences.html#s3-express-differences-api-operations
3635
+ # [12]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
3636
+ # [13]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html
3637
+ # [14]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk
3638
+ # [15]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk
3268
3639
  #
3269
3640
  # @option params [String] :session_mode
3270
3641
  # Specifies the mode of the session that will be created, either
3271
3642
  # `ReadWrite` or `ReadOnly`. By default, a `ReadWrite` session is
3272
3643
  # created. A `ReadWrite` session is capable of executing all the Zonal
3273
- # endpoint APIs on a directory bucket. A `ReadOnly` session is
3274
- # constrained to execute the following Zonal endpoint APIs: `GetObject`,
3275
- # `HeadObject`, `ListObjectsV2`, `GetObjectAttributes`, `ListParts`, and
3276
- # `ListMultipartUploads`.
3644
+ # endpoint API operations on a directory bucket. A `ReadOnly` session is
3645
+ # constrained to execute the following Zonal endpoint API operations:
3646
+ # `GetObject`, `HeadObject`, `ListObjectsV2`, `GetObjectAttributes`,
3647
+ # `ListParts`, and `ListMultipartUploads`.
3277
3648
  #
3278
3649
  # @option params [required, String] :bucket
3279
3650
  # The name of the bucket that you create a session for.
3280
3651
  #
3652
+ # @option params [String] :server_side_encryption
3653
+ # The server-side encryption algorithm to use when you store objects in
3654
+ # the directory bucket.
3655
+ #
3656
+ # For directory buckets, there are only two supported options for
3657
+ # server-side encryption: server-side encryption with Amazon S3 managed
3658
+ # keys (SSE-S3) (`AES256`) and server-side encryption with KMS keys
3659
+ # (SSE-KMS) (`aws:kms`). By default, Amazon S3 encrypts data with
3660
+ # SSE-S3. For more information, see [Protecting data with server-side
3661
+ # encryption][1] in the *Amazon S3 User Guide*.
3662
+ #
3663
+ #
3664
+ #
3665
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html
3666
+ #
3667
+ # @option params [String] :ssekms_key_id
3668
+ # If you specify `x-amz-server-side-encryption` with `aws:kms`, you must
3669
+ # specify the ` x-amz-server-side-encryption-aws-kms-key-id` header with
3670
+ # the ID (Key ID or Key ARN) of the KMS symmetric encryption customer
3671
+ # managed key to use. Otherwise, you get an HTTP `400 Bad Request`
3672
+ # error. Only use the key ID or key ARN. The key alias format of the KMS
3673
+ # key isn't supported. Also, if the KMS key doesn't exist in the same
3674
+ # account that't issuing the command, you must use the full Key ARN not
3675
+ # the Key ID.
3676
+ #
3677
+ # Your SSE-KMS configuration can only support 1 [customer managed
3678
+ # key][1] per directory bucket for the lifetime of the bucket. [Amazon
3679
+ # Web Services managed key][2] (`aws/s3`) isn't supported.
3680
+ #
3681
+ #
3682
+ #
3683
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk
3684
+ # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk
3685
+ #
3686
+ # @option params [String] :ssekms_encryption_context
3687
+ # Specifies the Amazon Web Services KMS Encryption Context as an
3688
+ # additional encryption context to use for object encryption. The value
3689
+ # of this header is a Base64-encoded string of a UTF-8 encoded JSON,
3690
+ # which contains the encryption context as key-value pairs. This value
3691
+ # is stored as object metadata and automatically gets passed on to
3692
+ # Amazon Web Services KMS for future `GetObject` operations on this
3693
+ # object.
3694
+ #
3695
+ # **General purpose buckets** - This value must be explicitly added
3696
+ # during `CopyObject` operations if you want an additional encryption
3697
+ # context for your object. For more information, see [Encryption
3698
+ # context][1] in the *Amazon S3 User Guide*.
3699
+ #
3700
+ # **Directory buckets** - You can optionally provide an explicit
3701
+ # encryption context value. The value must match the default encryption
3702
+ # context - the bucket Amazon Resource Name (ARN). An additional
3703
+ # encryption context value is not supported.
3704
+ #
3705
+ #
3706
+ #
3707
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html#encryption-context
3708
+ #
3709
+ # @option params [Boolean] :bucket_key_enabled
3710
+ # Specifies whether Amazon S3 should use an S3 Bucket Key for object
3711
+ # encryption with server-side encryption using KMS keys (SSE-KMS).
3712
+ #
3713
+ # S3 Bucket Keys are always enabled for `GET` and `PUT` operations in a
3714
+ # directory bucket and can’t be disabled. S3 Bucket Keys aren't
3715
+ # supported, when you copy SSE-KMS encrypted objects from general
3716
+ # purpose buckets to directory buckets, from directory buckets to
3717
+ # general purpose buckets, or between directory buckets, through
3718
+ # [CopyObject][1], [UploadPartCopy][2], [the Copy operation in Batch
3719
+ # Operations][3], or [the import jobs][4]. In this case, Amazon S3 makes
3720
+ # a call to KMS every time a copy request is made for a KMS-encrypted
3721
+ # object.
3722
+ #
3723
+ #
3724
+ #
3725
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
3726
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
3727
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-buckets-objects-Batch-Ops
3728
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-import-job
3729
+ #
3281
3730
  # @return [Types::CreateSessionOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
3282
3731
  #
3732
+ # * {Types::CreateSessionOutput#server_side_encryption #server_side_encryption} => String
3733
+ # * {Types::CreateSessionOutput#ssekms_key_id #ssekms_key_id} => String
3734
+ # * {Types::CreateSessionOutput#ssekms_encryption_context #ssekms_encryption_context} => String
3735
+ # * {Types::CreateSessionOutput#bucket_key_enabled #bucket_key_enabled} => Boolean
3283
3736
  # * {Types::CreateSessionOutput#credentials #credentials} => Types::SessionCredentials
3284
3737
  #
3285
3738
  # @example Request syntax with placeholder values
@@ -3287,10 +3740,18 @@ module Aws::S3
3287
3740
  # resp = client.create_session({
3288
3741
  # session_mode: "ReadOnly", # accepts ReadOnly, ReadWrite
3289
3742
  # bucket: "BucketName", # required
3743
+ # server_side_encryption: "AES256", # accepts AES256, aws:kms, aws:kms:dsse
3744
+ # ssekms_key_id: "SSEKMSKeyId",
3745
+ # ssekms_encryption_context: "SSEKMSEncryptionContext",
3746
+ # bucket_key_enabled: false,
3290
3747
  # })
3291
3748
  #
3292
3749
  # @example Response structure
3293
3750
  #
3751
+ # resp.server_side_encryption #=> String, one of "AES256", "aws:kms", "aws:kms:dsse"
3752
+ # resp.ssekms_key_id #=> String
3753
+ # resp.ssekms_encryption_context #=> String
3754
+ # resp.bucket_key_enabled #=> Boolean
3294
3755
  # resp.credentials.access_key_id #=> String
3295
3756
  # resp.credentials.secret_access_key #=> String
3296
3757
  # resp.credentials.session_token #=> String
@@ -3536,47 +3997,92 @@ module Aws::S3
3536
3997
  req.send_request(options)
3537
3998
  end
3538
3999
 
3539
- # <note markdown="1"> This operation is not supported by directory buckets.
4000
+ # This implementation of the DELETE action resets the default encryption
4001
+ # for the bucket as server-side encryption with Amazon S3 managed keys
4002
+ # (SSE-S3).
4003
+ #
4004
+ # <note markdown="1"> * **General purpose buckets** - For information about the bucket
4005
+ # default encryption feature, see [Amazon S3 Bucket Default
4006
+ # Encryption][1] in the *Amazon S3 User Guide*.
4007
+ #
4008
+ # * **Directory buckets** - For directory buckets, there are only two
4009
+ # supported options for server-side encryption: SSE-S3 and SSE-KMS.
4010
+ # For information about the default encryption configuration in
4011
+ # directory buckets, see [Setting default server-side encryption
4012
+ # behavior for directory buckets][2].
3540
4013
  #
3541
4014
  # </note>
3542
4015
  #
3543
- # This implementation of the DELETE action resets the default encryption
3544
- # for the bucket as server-side encryption with Amazon S3 managed keys
3545
- # (SSE-S3). For information about the bucket default encryption feature,
3546
- # see [Amazon S3 Bucket Default Encryption][1] in the *Amazon S3 User
3547
- # Guide*.
4016
+ # Permissions
4017
+ # : * **General purpose bucket permissions** - The
4018
+ # `s3:PutEncryptionConfiguration` permission is required in a
4019
+ # policy. The bucket owner has this permission by default. The
4020
+ # bucket owner can grant this permission to others. For more
4021
+ # information about permissions, see [Permissions Related to Bucket
4022
+ # Operations][3] and [Managing Access Permissions to Your Amazon S3
4023
+ # Resources][4].
3548
4024
  #
3549
- # To use this operation, you must have permissions to perform the
3550
- # `s3:PutEncryptionConfiguration` action. The bucket owner has this
3551
- # permission by default. The bucket owner can grant this permission to
3552
- # others. For more information about permissions, see [Permissions
3553
- # Related to Bucket Subresource Operations][2] and [Managing Access
3554
- # Permissions to your Amazon S3 Resources][3] in the *Amazon S3 User
3555
- # Guide*.
4025
+ # * **Directory bucket permissions** - To grant access to this API
4026
+ # operation, you must have the
4027
+ # `s3express:PutEncryptionConfiguration` permission in an IAM
4028
+ # identity-based policy instead of a bucket policy. Cross-account
4029
+ # access to this API operation isn't supported. This operation can
4030
+ # only be performed by the Amazon Web Services account that owns the
4031
+ # resource. For more information about directory bucket policies and
4032
+ # permissions, see [Amazon Web Services Identity and Access
4033
+ # Management (IAM) for S3 Express One Zone][5] in the *Amazon S3
4034
+ # User Guide*.
4035
+ #
4036
+ # HTTP Host header syntax
4037
+ #
4038
+ # : <b>Directory buckets </b> - The HTTP Host header syntax is
4039
+ # `s3express-control.region.amazonaws.com`.
3556
4040
  #
3557
4041
  # The following operations are related to `DeleteBucketEncryption`:
3558
4042
  #
3559
- # * [PutBucketEncryption][4]
4043
+ # * [PutBucketEncryption][6]
3560
4044
  #
3561
- # * [GetBucketEncryption][5]
4045
+ # * [GetBucketEncryption][7]
3562
4046
  #
3563
4047
  #
3564
4048
  #
3565
4049
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html
3566
- # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources
3567
- # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html
3568
- # [4]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html
3569
- # [5]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html
4050
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-bucket-encryption.html
4051
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources
4052
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html
4053
+ # [5]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam.html
4054
+ # [6]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html
4055
+ # [7]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html
3570
4056
  #
3571
4057
  # @option params [required, String] :bucket
3572
4058
  # The name of the bucket containing the server-side encryption
3573
4059
  # configuration to delete.
3574
4060
  #
4061
+ # <b>Directory buckets </b> - When you use this operation with a
4062
+ # directory bucket, you must use path-style requests in the format
4063
+ # `https://s3express-control.region_code.amazonaws.com/bucket-name `.
4064
+ # Virtual-hosted-style requests aren't supported. Directory bucket
4065
+ # names must be unique in the chosen Availability Zone. Bucket names
4066
+ # must also follow the format ` bucket_base_name--az_id--x-s3` (for
4067
+ # example, ` DOC-EXAMPLE-BUCKET--usw2-az1--x-s3`). For information about
4068
+ # bucket naming restrictions, see [Directory bucket naming rules][1] in
4069
+ # the *Amazon S3 User Guide*
4070
+ #
4071
+ #
4072
+ #
4073
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-bucket-naming-rules.html
4074
+ #
3575
4075
  # @option params [String] :expected_bucket_owner
3576
4076
  # The account ID of the expected bucket owner. If the account ID that
3577
4077
  # you provide does not match the actual owner of the bucket, the request
3578
4078
  # fails with the HTTP status code `403 Forbidden` (access denied).
3579
4079
  #
4080
+ # <note markdown="1"> For directory buckets, this header is not supported in this API
4081
+ # operation. If you specify this header, the request fails with the HTTP
4082
+ # status code `501 Not Implemented`.
4083
+ #
4084
+ # </note>
4085
+ #
3580
4086
  # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
3581
4087
  #
3582
4088
  # @example Request syntax with placeholder values
@@ -4450,6 +4956,15 @@ module Aws::S3
4450
4956
  # * {Types::DeleteObjectOutput#request_charged #request_charged} => String
4451
4957
  #
4452
4958
  #
4959
+ # @example Example: To delete an object (from a non-versioned bucket)
4960
+ #
4961
+ # # The following example deletes an object from a non-versioned bucket.
4962
+ #
4963
+ # resp = client.delete_object({
4964
+ # bucket: "ExampleBucket",
4965
+ # key: "HappyFace.jpg",
4966
+ # })
4967
+ #
4453
4968
  # @example Example: To delete an object
4454
4969
  #
4455
4970
  # # The following example deletes an object from an S3 bucket.
@@ -4463,15 +4978,6 @@ module Aws::S3
4463
4978
  # {
4464
4979
  # }
4465
4980
  #
4466
- # @example Example: To delete an object (from a non-versioned bucket)
4467
- #
4468
- # # The following example deletes an object from a non-versioned bucket.
4469
- #
4470
- # resp = client.delete_object({
4471
- # bucket: "ExampleBucket",
4472
- # key: "HappyFace.jpg",
4473
- # })
4474
- #
4475
4981
  # @example Request syntax with placeholder values
4476
4982
  #
4477
4983
  # resp = client.delete_object({
@@ -4570,35 +5076,35 @@ module Aws::S3
4570
5076
  # * {Types::DeleteObjectTaggingOutput#version_id #version_id} => String
4571
5077
  #
4572
5078
  #
4573
- # @example Example: To remove tag set from an object version
5079
+ # @example Example: To remove tag set from an object
4574
5080
  #
4575
- # # The following example removes tag set associated with the specified object version. The request specifies both the
4576
- # # object key and object version.
5081
+ # # The following example removes tag set associated with the specified object. If the bucket is versioning enabled, the
5082
+ # # operation removes tag set from the latest object version.
4577
5083
  #
4578
5084
  # resp = client.delete_object_tagging({
4579
5085
  # bucket: "examplebucket",
4580
5086
  # key: "HappyFace.jpg",
4581
- # version_id: "ydlaNkwWm0SfKJR.T1b1fIdPRbldTYRI",
4582
5087
  # })
4583
5088
  #
4584
5089
  # resp.to_h outputs the following:
4585
5090
  # {
4586
- # version_id: "ydlaNkwWm0SfKJR.T1b1fIdPRbldTYRI",
5091
+ # version_id: "null",
4587
5092
  # }
4588
5093
  #
4589
- # @example Example: To remove tag set from an object
5094
+ # @example Example: To remove tag set from an object version
4590
5095
  #
4591
- # # The following example removes tag set associated with the specified object. If the bucket is versioning enabled, the
4592
- # # operation removes tag set from the latest object version.
5096
+ # # The following example removes tag set associated with the specified object version. The request specifies both the
5097
+ # # object key and object version.
4593
5098
  #
4594
5099
  # resp = client.delete_object_tagging({
4595
5100
  # bucket: "examplebucket",
4596
5101
  # key: "HappyFace.jpg",
5102
+ # version_id: "ydlaNkwWm0SfKJR.T1b1fIdPRbldTYRI",
4597
5103
  # })
4598
5104
  #
4599
5105
  # resp.to_h outputs the following:
4600
5106
  # {
4601
- # version_id: "null",
5107
+ # version_id: "ydlaNkwWm0SfKJR.T1b1fIdPRbldTYRI",
4602
5108
  # }
4603
5109
  #
4604
5110
  # @example Request syntax with placeholder values
@@ -4680,7 +5186,7 @@ module Aws::S3
4680
5186
  # permission.
4681
5187
  #
4682
5188
  # * <b> <code>s3:DeleteObjectVersion</code> </b> - To delete a
4683
- # specific version of an object from a versiong-enabled bucket,
5189
+ # specific version of an object from a versioning-enabled bucket,
4684
5190
  # you must specify the `s3:DeleteObjectVersion` permission.
4685
5191
  #
4686
5192
  # * **Directory bucket permissions** - To grant access to this API
@@ -5451,46 +5957,92 @@ module Aws::S3
5451
5957
  req.send_request(options)
5452
5958
  end
5453
5959
 
5454
- # <note markdown="1"> This operation is not supported by directory buckets.
5960
+ # Returns the default encryption configuration for an Amazon S3 bucket.
5961
+ # By default, all buckets have a default encryption configuration that
5962
+ # uses server-side encryption with Amazon S3 managed keys (SSE-S3).
5963
+ #
5964
+ # <note markdown="1"> * **General purpose buckets** - For information about the bucket
5965
+ # default encryption feature, see [Amazon S3 Bucket Default
5966
+ # Encryption][1] in the *Amazon S3 User Guide*.
5967
+ #
5968
+ # * **Directory buckets** - For directory buckets, there are only two
5969
+ # supported options for server-side encryption: SSE-S3 and SSE-KMS.
5970
+ # For information about the default encryption configuration in
5971
+ # directory buckets, see [Setting default server-side encryption
5972
+ # behavior for directory buckets][2].
5455
5973
  #
5456
5974
  # </note>
5457
5975
  #
5458
- # Returns the default encryption configuration for an Amazon S3 bucket.
5459
- # By default, all buckets have a default encryption configuration that
5460
- # uses server-side encryption with Amazon S3 managed keys (SSE-S3). For
5461
- # information about the bucket default encryption feature, see [Amazon
5462
- # S3 Bucket Default Encryption][1] in the *Amazon S3 User Guide*.
5976
+ # Permissions
5977
+ # : * **General purpose bucket permissions** - The
5978
+ # `s3:GetEncryptionConfiguration` permission is required in a
5979
+ # policy. The bucket owner has this permission by default. The
5980
+ # bucket owner can grant this permission to others. For more
5981
+ # information about permissions, see [Permissions Related to Bucket
5982
+ # Operations][3] and [Managing Access Permissions to Your Amazon S3
5983
+ # Resources][4].
5463
5984
  #
5464
- # To use this operation, you must have permission to perform the
5465
- # `s3:GetEncryptionConfiguration` action. The bucket owner has this
5466
- # permission by default. The bucket owner can grant this permission to
5467
- # others. For more information about permissions, see [Permissions
5468
- # Related to Bucket Subresource Operations][2] and [Managing Access
5469
- # Permissions to Your Amazon S3 Resources][3].
5985
+ # * **Directory bucket permissions** - To grant access to this API
5986
+ # operation, you must have the
5987
+ # `s3express:GetEncryptionConfiguration` permission in an IAM
5988
+ # identity-based policy instead of a bucket policy. Cross-account
5989
+ # access to this API operation isn't supported. This operation can
5990
+ # only be performed by the Amazon Web Services account that owns the
5991
+ # resource. For more information about directory bucket policies and
5992
+ # permissions, see [Amazon Web Services Identity and Access
5993
+ # Management (IAM) for S3 Express One Zone][5] in the *Amazon S3
5994
+ # User Guide*.
5995
+ #
5996
+ # HTTP Host header syntax
5997
+ #
5998
+ # : <b>Directory buckets </b> - The HTTP Host header syntax is
5999
+ # `s3express-control.region.amazonaws.com`.
5470
6000
  #
5471
6001
  # The following operations are related to `GetBucketEncryption`:
5472
6002
  #
5473
- # * [PutBucketEncryption][4]
6003
+ # * [PutBucketEncryption][6]
5474
6004
  #
5475
- # * [DeleteBucketEncryption][5]
6005
+ # * [DeleteBucketEncryption][7]
5476
6006
  #
5477
6007
  #
5478
6008
  #
5479
6009
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html
5480
- # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources
5481
- # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html
5482
- # [4]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html
5483
- # [5]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketEncryption.html
6010
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-bucket-encryption.html
6011
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources
6012
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html
6013
+ # [5]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam.html
6014
+ # [6]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html
6015
+ # [7]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketEncryption.html
5484
6016
  #
5485
6017
  # @option params [required, String] :bucket
5486
6018
  # The name of the bucket from which the server-side encryption
5487
6019
  # configuration is retrieved.
5488
6020
  #
6021
+ # <b>Directory buckets </b> - When you use this operation with a
6022
+ # directory bucket, you must use path-style requests in the format
6023
+ # `https://s3express-control.region_code.amazonaws.com/bucket-name `.
6024
+ # Virtual-hosted-style requests aren't supported. Directory bucket
6025
+ # names must be unique in the chosen Availability Zone. Bucket names
6026
+ # must also follow the format ` bucket_base_name--az_id--x-s3` (for
6027
+ # example, ` DOC-EXAMPLE-BUCKET--usw2-az1--x-s3`). For information about
6028
+ # bucket naming restrictions, see [Directory bucket naming rules][1] in
6029
+ # the *Amazon S3 User Guide*
6030
+ #
6031
+ #
6032
+ #
6033
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-bucket-naming-rules.html
6034
+ #
5489
6035
  # @option params [String] :expected_bucket_owner
5490
6036
  # The account ID of the expected bucket owner. If the account ID that
5491
6037
  # you provide does not match the actual owner of the bucket, the request
5492
6038
  # fails with the HTTP status code `403 Forbidden` (access denied).
5493
6039
  #
6040
+ # <note markdown="1"> For directory buckets, this header is not supported in this API
6041
+ # operation. If you specify this header, the request fails with the HTTP
6042
+ # status code `501 Not Implemented`.
6043
+ #
6044
+ # </note>
6045
+ #
5494
6046
  # @return [Types::GetBucketEncryptionOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
5495
6047
  #
5496
6048
  # * {Types::GetBucketEncryptionOutput#server_side_encryption_configuration #server_side_encryption_configuration} => Types::ServerSideEncryptionConfiguration
@@ -7230,6 +7782,10 @@ module Aws::S3
7230
7782
  # interruptions when a session expires. For more information about
7231
7783
  # authorization, see [ `CreateSession` ][4].
7232
7784
  #
7785
+ # If the object is encrypted using SSE-KMS, you must also have the
7786
+ # `kms:GenerateDataKey` and `kms:Decrypt` permissions in IAM
7787
+ # identity-based policies and KMS key policies for the KMS key.
7788
+ #
7233
7789
  # Storage classes
7234
7790
  #
7235
7791
  # : If the object you are retrieving is stored in the S3 Glacier
@@ -7258,6 +7814,11 @@ module Aws::S3
7258
7814
  # `GetObject` requests for the object that uses these types of keys,
7259
7815
  # you’ll get an HTTP `400 Bad Request` error.
7260
7816
  #
7817
+ # **Directory buckets** - For directory buckets, there are only two
7818
+ # supported options for server-side encryption: SSE-S3 and SSE-KMS.
7819
+ # SSE-C isn't supported. For more information, see [Protecting data
7820
+ # with server-side encryption][7] in the *Amazon S3 User Guide*.
7821
+ #
7261
7822
  # Overriding response header values through the request
7262
7823
  #
7263
7824
  # : There are times when you want to override certain response header
@@ -7305,9 +7866,9 @@ module Aws::S3
7305
7866
  #
7306
7867
  # The following operations are related to `GetObject`:
7307
7868
  #
7308
- # * [ListBuckets][7]
7869
+ # * [ListBuckets][8]
7309
7870
  #
7310
- # * [GetObjectAcl][8]
7871
+ # * [GetObjectAcl][9]
7311
7872
  #
7312
7873
  #
7313
7874
  #
@@ -7317,8 +7878,9 @@ module Aws::S3
7317
7878
  # [4]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html
7318
7879
  # [5]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html
7319
7880
  # [6]: https://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html
7320
- # [7]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBuckets.html
7321
- # [8]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAcl.html
7881
+ # [7]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html
7882
+ # [8]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBuckets.html
7883
+ # [9]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAcl.html
7322
7884
  #
7323
7885
  # @option params [String, IO] :response_target
7324
7886
  # Where to write response data, file path, or IO object.
@@ -7615,6 +8177,15 @@ module Aws::S3
7615
8177
  # @option params [String] :checksum_mode
7616
8178
  # To retrieve the checksum, this mode must be enabled.
7617
8179
  #
8180
+ # **General purpose buckets** - In addition, if you enable checksum mode
8181
+ # and the object is uploaded with a [checksum][1] and encrypted with an
8182
+ # Key Management Service (KMS) key, you must have permission to use the
8183
+ # `kms:Decrypt` action to retrieve the checksum.
8184
+ #
8185
+ #
8186
+ #
8187
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_Checksum.html
8188
+ #
7618
8189
  # @return [Types::GetObjectOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
7619
8190
  #
7620
8191
  # * {Types::GetObjectOutput#body #body} => IO
@@ -7656,49 +8227,49 @@ module Aws::S3
7656
8227
  # * {Types::GetObjectOutput#object_lock_legal_hold_status #object_lock_legal_hold_status} => String
7657
8228
  #
7658
8229
  #
7659
- # @example Example: To retrieve a byte range of an object
8230
+ # @example Example: To retrieve an object
7660
8231
  #
7661
- # # The following example retrieves an object for an S3 bucket. The request specifies the range header to retrieve a
7662
- # # specific byte range.
8232
+ # # The following example retrieves an object for an S3 bucket.
7663
8233
  #
7664
8234
  # resp = client.get_object({
7665
8235
  # bucket: "examplebucket",
7666
- # key: "SampleFile.txt",
7667
- # range: "bytes=0-9",
8236
+ # key: "HappyFace.jpg",
7668
8237
  # })
7669
8238
  #
7670
8239
  # resp.to_h outputs the following:
7671
8240
  # {
7672
8241
  # accept_ranges: "bytes",
7673
- # content_length: 10,
7674
- # content_range: "bytes 0-9/43",
7675
- # content_type: "text/plain",
7676
- # etag: "\"0d94420ffd0bc68cd3d152506b97a9cc\"",
7677
- # last_modified: Time.parse("Thu, 09 Oct 2014 22:57:28 GMT"),
8242
+ # content_length: 3191,
8243
+ # content_type: "image/jpeg",
8244
+ # etag: "\"6805f2cfc46c0f04559748bb039d69ae\"",
8245
+ # last_modified: Time.parse("Thu, 15 Dec 2016 01:19:41 GMT"),
7678
8246
  # metadata: {
7679
8247
  # },
8248
+ # tag_count: 2,
7680
8249
  # version_id: "null",
7681
8250
  # }
7682
8251
  #
7683
- # @example Example: To retrieve an object
8252
+ # @example Example: To retrieve a byte range of an object
7684
8253
  #
7685
- # # The following example retrieves an object for an S3 bucket.
8254
+ # # The following example retrieves an object for an S3 bucket. The request specifies the range header to retrieve a
8255
+ # # specific byte range.
7686
8256
  #
7687
8257
  # resp = client.get_object({
7688
8258
  # bucket: "examplebucket",
7689
- # key: "HappyFace.jpg",
8259
+ # key: "SampleFile.txt",
8260
+ # range: "bytes=0-9",
7690
8261
  # })
7691
8262
  #
7692
8263
  # resp.to_h outputs the following:
7693
8264
  # {
7694
8265
  # accept_ranges: "bytes",
7695
- # content_length: 3191,
7696
- # content_type: "image/jpeg",
7697
- # etag: "\"6805f2cfc46c0f04559748bb039d69ae\"",
7698
- # last_modified: Time.parse("Thu, 15 Dec 2016 01:19:41 GMT"),
8266
+ # content_length: 10,
8267
+ # content_range: "bytes 0-9/43",
8268
+ # content_type: "text/plain",
8269
+ # etag: "\"0d94420ffd0bc68cd3d152506b97a9cc\"",
8270
+ # last_modified: Time.parse("Thu, 09 Oct 2014 22:57:28 GMT"),
7699
8271
  # metadata: {
7700
8272
  # },
7701
- # tag_count: 2,
7702
8273
  # version_id: "null",
7703
8274
  # }
7704
8275
  #
@@ -8011,7 +8582,7 @@ module Aws::S3
8011
8582
  # Permissions
8012
8583
  # : * **General purpose bucket permissions** - To use
8013
8584
  # `GetObjectAttributes`, you must have READ access to the object.
8014
- # The permissions that you need to use this operation with depend on
8585
+ # The permissions that you need to use this operation depend on
8015
8586
  # whether the bucket is versioned. If the bucket is versioned, you
8016
8587
  # need both the `s3:GetObjectVersion` and
8017
8588
  # `s3:GetObjectVersionAttributes` permissions for this operation. If
@@ -8045,6 +8616,10 @@ module Aws::S3
8045
8616
  # interruptions when a session expires. For more information about
8046
8617
  # authorization, see [ `CreateSession` ][3].
8047
8618
  #
8619
+ # If the object is encrypted with SSE-KMS, you must also have the
8620
+ # `kms:GenerateDataKey` and `kms:Decrypt` permissions in IAM
8621
+ # identity-based policies and KMS key policies for the KMS key.
8622
+ #
8048
8623
  # Encryption
8049
8624
  # : <note markdown="1"> Encryption request headers, like `x-amz-server-side-encryption`,
8050
8625
  # should not be sent for `HEAD` requests if your object uses
@@ -8078,9 +8653,19 @@ module Aws::S3
8078
8653
  # Customer-Provided Encryption Keys)][4] in the *Amazon S3 User
8079
8654
  # Guide*.
8080
8655
  #
8081
- # <note markdown="1"> **Directory bucket permissions** - For directory buckets, only
8082
- # server-side encryption with Amazon S3 managed keys (SSE-S3)
8083
- # (`AES256`) is supported.
8656
+ # <note markdown="1"> **Directory bucket permissions** - For directory buckets, there are
8657
+ # only two supported options for server-side encryption: server-side
8658
+ # encryption with Amazon S3 managed keys (SSE-S3) (`AES256`) and
8659
+ # server-side encryption with KMS keys (SSE-KMS) (`aws:kms`). We
8660
+ # recommend that the bucket's default encryption uses the desired
8661
+ # encryption configuration and you don't override the bucket default
8662
+ # encryption in your `CreateSession` requests or `PUT` object
8663
+ # requests. Then, new objects are automatically encrypted with the
8664
+ # desired encryption settings. For more information, see [Protecting
8665
+ # data with server-side encryption][5] in the *Amazon S3 User Guide*.
8666
+ # For more information about the encryption overriding behaviors in
8667
+ # directory buckets, see [Specifying server-side encryption with KMS
8668
+ # for new object uploads][6].
8084
8669
  #
8085
8670
  # </note>
8086
8671
  #
@@ -8104,7 +8689,7 @@ module Aws::S3
8104
8689
  # * `If-Unmodified-Since` condition evaluates to `false`.
8105
8690
  #
8106
8691
  # For more information about conditional requests, see [RFC
8107
- # 7232][5].
8692
+ # 7232][7].
8108
8693
  #
8109
8694
  # * If both of the `If-None-Match` and `If-Modified-Since` headers are
8110
8695
  # present in the request as follows, then Amazon S3 returns the HTTP
@@ -8115,7 +8700,7 @@ module Aws::S3
8115
8700
  # * `If-Modified-Since` condition evaluates to `true`.
8116
8701
  #
8117
8702
  # For more information about conditional requests, see [RFC
8118
- # 7232][5].
8703
+ # 7232][7].
8119
8704
  #
8120
8705
  # HTTP Host header syntax
8121
8706
  #
@@ -8124,21 +8709,21 @@ module Aws::S3
8124
8709
  #
8125
8710
  # The following actions are related to `GetObjectAttributes`:
8126
8711
  #
8127
- # * [GetObject][6]
8712
+ # * [GetObject][8]
8128
8713
  #
8129
- # * [GetObjectAcl][7]
8714
+ # * [GetObjectAcl][9]
8130
8715
  #
8131
- # * [GetObjectLegalHold][8]
8716
+ # * [GetObjectLegalHold][10]
8132
8717
  #
8133
- # * [GetObjectLockConfiguration][9]
8718
+ # * [GetObjectLockConfiguration][11]
8134
8719
  #
8135
- # * [GetObjectRetention][10]
8720
+ # * [GetObjectRetention][12]
8136
8721
  #
8137
- # * [GetObjectTagging][11]
8722
+ # * [GetObjectTagging][13]
8138
8723
  #
8139
- # * [HeadObject][12]
8724
+ # * [HeadObject][14]
8140
8725
  #
8141
- # * [ListParts][13]
8726
+ # * [ListParts][15]
8142
8727
  #
8143
8728
  #
8144
8729
  #
@@ -8146,15 +8731,17 @@ module Aws::S3
8146
8731
  # [2]: https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html
8147
8732
  # [3]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html
8148
8733
  # [4]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html
8149
- # [5]: https://tools.ietf.org/html/rfc7232
8150
- # [6]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html
8151
- # [7]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAcl.html
8152
- # [8]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectLegalHold.html
8153
- # [9]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectLockConfiguration.html
8154
- # [10]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectRetention.html
8155
- # [11]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html
8156
- # [12]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html
8157
- # [13]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html
8734
+ # [5]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html
8735
+ # [6]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html
8736
+ # [7]: https://tools.ietf.org/html/rfc7232
8737
+ # [8]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html
8738
+ # [9]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAcl.html
8739
+ # [10]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectLegalHold.html
8740
+ # [11]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectLockConfiguration.html
8741
+ # [12]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectRetention.html
8742
+ # [13]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html
8743
+ # [14]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html
8744
+ # [15]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html
8158
8745
  #
8159
8746
  # @option params [required, String] :bucket
8160
8747
  # The name of the bucket that contains the object.
@@ -8949,29 +9536,24 @@ module Aws::S3
8949
9536
  # have permission to access it. The action returns a `200 OK` if the
8950
9537
  # bucket exists and you have permission to access it.
8951
9538
  #
8952
- # If the bucket does not exist or you do not have permission to access
9539
+ # <note markdown="1"> If the bucket does not exist or you do not have permission to access
8953
9540
  # it, the `HEAD` request returns a generic `400 Bad Request`, `403
8954
9541
  # Forbidden` or `404 Not Found` code. A message body is not included, so
8955
9542
  # you cannot determine the exception beyond these HTTP response codes.
8956
9543
  #
8957
- # <note markdown="1"> <b>Directory buckets </b> - You must make requests for this API
8958
- # operation to the Zonal endpoint. These endpoints support
8959
- # virtual-hosted-style requests in the format
8960
- # `https://bucket_name.s3express-az_id.region.amazonaws.com`. Path-style
8961
- # requests are not supported. For more information, see [Regional and
8962
- # Zonal endpoints][1] in the *Amazon S3 User Guide*.
8963
- #
8964
9544
  # </note>
8965
9545
  #
8966
9546
  # Authentication and authorization
8967
9547
  #
8968
- # : All `HeadBucket` requests must be authenticated and signed by using
8969
- # IAM credentials (access key ID and secret access key for the IAM
8970
- # identities). All headers with the `x-amz-` prefix, including
9548
+ # : **General purpose buckets** - Request to public buckets that grant
9549
+ # the s3:ListBucket permission publicly do not need to be signed. All
9550
+ # other `HeadBucket` requests must be authenticated and signed by
9551
+ # using IAM credentials (access key ID and secret access key for the
9552
+ # IAM identities). All headers with the `x-amz-` prefix, including
8971
9553
  # `x-amz-copy-source`, must be signed. For more information, see [REST
8972
- # Authentication][2].
9554
+ # Authentication][1].
8973
9555
  #
8974
- # **Directory bucket** - You must use IAM credentials to authenticate
9556
+ # **Directory buckets** - You must use IAM credentials to authenticate
8975
9557
  # and authorize your access to the `HeadBucket` API operation, instead
8976
9558
  # of using the temporary security credentials through the
8977
9559
  # `CreateSession` API operation.
@@ -8987,7 +9569,7 @@ module Aws::S3
8987
9569
  # you must have permissions to perform the `s3:ListBucket` action.
8988
9570
  # The bucket owner has this permission by default and can grant this
8989
9571
  # permission to others. For more information about permissions, see
8990
- # [Managing access permissions to your Amazon S3 resources][3] in
9572
+ # [Managing access permissions to your Amazon S3 resources][2] in
8991
9573
  # the *Amazon S3 User Guide*.
8992
9574
  #
8993
9575
  # * **Directory bucket permissions** - You must have the <b>
@@ -8998,9 +9580,9 @@ module Aws::S3
8998
9580
  # `ReadOnly` on the bucket.
8999
9581
  #
9000
9582
  # For more information about example bucket policies, see [Example
9001
- # bucket policies for S3 Express One Zone][4] and [Amazon Web
9583
+ # bucket policies for S3 Express One Zone][3] and [Amazon Web
9002
9584
  # Services Identity and Access Management (IAM) identity-based
9003
- # policies for S3 Express One Zone][5] in the *Amazon S3 User
9585
+ # policies for S3 Express One Zone][4] in the *Amazon S3 User
9004
9586
  # Guide*.
9005
9587
  #
9006
9588
  # HTTP Host header syntax
@@ -9008,13 +9590,21 @@ module Aws::S3
9008
9590
  # : <b>Directory buckets </b> - The HTTP Host header syntax is `
9009
9591
  # Bucket_name.s3express-az_id.region.amazonaws.com`.
9010
9592
  #
9593
+ # <note markdown="1"> You must make requests for this API operation to the Zonal endpoint.
9594
+ # These endpoints support virtual-hosted-style requests in the format
9595
+ # `https://bucket_name.s3express-az_id.region.amazonaws.com`.
9596
+ # Path-style requests are not supported. For more information, see
9597
+ # [Regional and Zonal endpoints][5] in the *Amazon S3 User Guide*.
9011
9598
  #
9599
+ # </note>
9012
9600
  #
9013
- # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-Regions-and-Zones.html
9014
- # [2]: https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html
9015
- # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html
9016
- # [4]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam-example-bucket-policies.html
9017
- # [5]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam-identity-policies.html
9601
+ #
9602
+ #
9603
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html
9604
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html
9605
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam-example-bucket-policies.html
9606
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam-identity-policies.html
9607
+ # [5]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-Regions-and-Zones.html
9018
9608
  #
9019
9609
  # @option params [required, String] :bucket
9020
9610
  # The bucket name.
@@ -9122,7 +9712,7 @@ module Aws::S3
9122
9712
  # returning the object itself. This operation is useful if you're
9123
9713
  # interested only in an object's metadata.
9124
9714
  #
9125
- # A `HEAD` request has the same options as a `GET` operation on an
9715
+ # <note markdown="1"> A `HEAD` request has the same options as a `GET` operation on an
9126
9716
  # object. The response is identical to the `GET` response except that
9127
9717
  # there is no response body. Because of this, if the `HEAD` request
9128
9718
  # generates an error, it returns a generic code, such as `400 Bad
@@ -9130,18 +9720,11 @@ module Aws::S3
9130
9720
  # `412 Precondition Failed`, or `304 Not Modified`. It's not possible
9131
9721
  # to retrieve the exact exception of these error codes.
9132
9722
  #
9723
+ # </note>
9724
+ #
9133
9725
  # Request headers are limited to 8 KB in size. For more information, see
9134
9726
  # [Common Request Headers][1].
9135
9727
  #
9136
- # <note markdown="1"> **Directory buckets** - For directory buckets, you must make requests
9137
- # for this API operation to the Zonal endpoint. These endpoints support
9138
- # virtual-hosted-style requests in the format
9139
- # `https://bucket_name.s3express-az_id.region.amazonaws.com/key-name `.
9140
- # Path-style requests are not supported. For more information, see
9141
- # [Regional and Zonal endpoints][2] in the *Amazon S3 User Guide*.
9142
- #
9143
- # </note>
9144
- #
9145
9728
  # Permissions
9146
9729
  #
9147
9730
  # :
@@ -9150,7 +9733,7 @@ module Aws::S3
9150
9733
  # have the `s3:GetObject` permission. You need the relevant read
9151
9734
  # object (or version) permission for this operation. For more
9152
9735
  # information, see [Actions, resources, and condition keys for
9153
- # Amazon S3][3] in the *Amazon S3 User Guide*.
9736
+ # Amazon S3][2] in the *Amazon S3 User Guide*.
9154
9737
  #
9155
9738
  # If the object you request doesn't exist, the error that Amazon S3
9156
9739
  # returns depends on whether you also have the `s3:ListBucket`
@@ -9164,7 +9747,7 @@ module Aws::S3
9164
9747
  #
9165
9748
  # * **Directory bucket permissions** - To grant access to this API
9166
9749
  # operation on a directory bucket, we recommend that you use the [
9167
- # `CreateSession` ][4] API operation for session-based
9750
+ # `CreateSession` ][3] API operation for session-based
9168
9751
  # authorization. Specifically, you grant the
9169
9752
  # `s3express:CreateSession` permission to the directory bucket in a
9170
9753
  # bucket policy or an IAM identity-based policy. Then, you make the
@@ -9175,7 +9758,14 @@ module Aws::S3
9175
9758
  # token for use. Amazon Web Services CLI or SDKs create session and
9176
9759
  # refresh the session token automatically to avoid service
9177
9760
  # interruptions when a session expires. For more information about
9178
- # authorization, see [ `CreateSession` ][4].
9761
+ # authorization, see [ `CreateSession` ][3].
9762
+ #
9763
+ # If you enable `x-amz-checksum-mode` in the request and the object
9764
+ # is encrypted with Amazon Web Services Key Management Service
9765
+ # (Amazon Web Services KMS), you must also have the
9766
+ # `kms:GenerateDataKey` and `kms:Decrypt` permissions in IAM
9767
+ # identity-based policies and KMS key policies for the KMS key to
9768
+ # retrieve the checksum of the object.
9179
9769
  #
9180
9770
  # Encryption
9181
9771
  # : <note markdown="1"> Encryption request headers, like `x-amz-server-side-encryption`,
@@ -9207,12 +9797,13 @@ module Aws::S3
9207
9797
  # * `x-amz-server-side-encryption-customer-key-MD5`
9208
9798
  #
9209
9799
  # For more information about SSE-C, see [Server-Side Encryption (Using
9210
- # Customer-Provided Encryption Keys)][5] in the *Amazon S3 User
9800
+ # Customer-Provided Encryption Keys)][4] in the *Amazon S3 User
9211
9801
  # Guide*.
9212
9802
  #
9213
- # <note markdown="1"> **Directory bucket permissions** - For directory buckets, only
9214
- # server-side encryption with Amazon S3 managed keys (SSE-S3)
9215
- # (`AES256`) is supported.
9803
+ # <note markdown="1"> <b>Directory bucket </b> - For directory buckets, there are only two
9804
+ # supported options for server-side encryption: SSE-S3 and SSE-KMS.
9805
+ # SSE-C isn't supported. For more information, see [Protecting data
9806
+ # with server-side encryption][5] in the *Amazon S3 User Guide*.
9216
9807
  #
9217
9808
  # </note>
9218
9809
  #
@@ -9241,21 +9832,31 @@ module Aws::S3
9241
9832
  # : <b>Directory buckets </b> - The HTTP Host header syntax is `
9242
9833
  # Bucket_name.s3express-az_id.region.amazonaws.com`.
9243
9834
  #
9835
+ # <note markdown="1"> For directory buckets, you must make requests for this API operation
9836
+ # to the Zonal endpoint. These endpoints support virtual-hosted-style
9837
+ # requests in the format
9838
+ # `https://bucket_name.s3express-az_id.region.amazonaws.com/key-name
9839
+ # `. Path-style requests are not supported. For more information, see
9840
+ # [Regional and Zonal endpoints][6] in the *Amazon S3 User Guide*.
9841
+ #
9842
+ # </note>
9843
+ #
9244
9844
  # The following actions are related to `HeadObject`:
9245
9845
  #
9246
- # * [GetObject][6]
9846
+ # * [GetObject][7]
9247
9847
  #
9248
- # * [GetObjectAttributes][7]
9848
+ # * [GetObjectAttributes][8]
9249
9849
  #
9250
9850
  #
9251
9851
  #
9252
9852
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/API/RESTCommonRequestHeaders.html
9253
- # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-Regions-and-Zones.html
9254
- # [3]: https://docs.aws.amazon.com/AmazonS3/latest/dev/list_amazons3.html
9255
- # [4]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html
9256
- # [5]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html
9257
- # [6]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html
9258
- # [7]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAttributes.html
9853
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/dev/list_amazons3.html
9854
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html
9855
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html
9856
+ # [5]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html
9857
+ # [6]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-Regions-and-Zones.html
9858
+ # [7]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html
9859
+ # [8]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAttributes.html
9259
9860
  #
9260
9861
  # @option params [required, String] :bucket
9261
9862
  # The name of the bucket that contains the object.
@@ -9386,6 +9987,24 @@ module Aws::S3
9386
9987
  # the Range is not satisfiable, S3 returns a `416 - Requested Range Not
9387
9988
  # Satisfiable` error.
9388
9989
  #
9990
+ # @option params [String] :response_cache_control
9991
+ # Sets the `Cache-Control` header of the response.
9992
+ #
9993
+ # @option params [String] :response_content_disposition
9994
+ # Sets the `Content-Disposition` header of the response.
9995
+ #
9996
+ # @option params [String] :response_content_encoding
9997
+ # Sets the `Content-Encoding` header of the response.
9998
+ #
9999
+ # @option params [String] :response_content_language
10000
+ # Sets the `Content-Language` header of the response.
10001
+ #
10002
+ # @option params [String] :response_content_type
10003
+ # Sets the `Content-Type` header of the response.
10004
+ #
10005
+ # @option params [Time,DateTime,Date,Integer,String] :response_expires
10006
+ # Sets the `Expires` header of the response.
10007
+ #
9389
10008
  # @option params [String] :version_id
9390
10009
  # Version ID used to reference a specific version of the object.
9391
10010
  #
@@ -9453,10 +10072,20 @@ module Aws::S3
9453
10072
  # @option params [String] :checksum_mode
9454
10073
  # To retrieve the checksum, this parameter must be enabled.
9455
10074
  #
9456
- # In addition, if you enable `ChecksumMode` and the object is encrypted
9457
- # with Amazon Web Services Key Management Service (Amazon Web Services
9458
- # KMS), you must have permission to use the `kms:Decrypt` action for the
9459
- # request to succeed.
10075
+ # **General purpose buckets** - If you enable checksum mode and the
10076
+ # object is uploaded with a [checksum][1] and encrypted with an Key
10077
+ # Management Service (KMS) key, you must have permission to use the
10078
+ # `kms:Decrypt` action to retrieve the checksum.
10079
+ #
10080
+ # **Directory buckets** - If you enable `ChecksumMode` and the object is
10081
+ # encrypted with Amazon Web Services Key Management Service (Amazon Web
10082
+ # Services KMS), you must also have the `kms:GenerateDataKey` and
10083
+ # `kms:Decrypt` permissions in IAM identity-based policies and KMS key
10084
+ # policies for the KMS key to retrieve the checksum of the object.
10085
+ #
10086
+ #
10087
+ #
10088
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_Checksum.html
9460
10089
  #
9461
10090
  # @return [Types::HeadObjectOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
9462
10091
  #
@@ -9528,6 +10157,12 @@ module Aws::S3
9528
10157
  # if_unmodified_since: Time.now,
9529
10158
  # key: "ObjectKey", # required
9530
10159
  # range: "Range",
10160
+ # response_cache_control: "ResponseCacheControl",
10161
+ # response_content_disposition: "ResponseContentDisposition",
10162
+ # response_content_encoding: "ResponseContentEncoding",
10163
+ # response_content_language: "ResponseContentLanguage",
10164
+ # response_content_type: "ResponseContentType",
10165
+ # response_expires: Time.now,
9531
10166
  # version_id: "ObjectVersionId",
9532
10167
  # sse_customer_algorithm: "SSECustomerAlgorithm",
9533
10168
  # sse_customer_key: "SSECustomerKey",
@@ -10004,10 +10639,28 @@ module Aws::S3
10004
10639
  #
10005
10640
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-buckets-s3.html
10006
10641
  #
10642
+ # @option params [Integer] :max_buckets
10643
+ # Maximum number of buckets to be returned in response. When the number
10644
+ # is more than the count of buckets that are owned by an Amazon Web
10645
+ # Services account, return all the buckets in response.
10646
+ #
10647
+ # @option params [String] :continuation_token
10648
+ # `ContinuationToken` indicates to Amazon S3 that the list is being
10649
+ # continued on this bucket with a token. `ContinuationToken` is
10650
+ # obfuscated and is not a real key. You can use this `ContinuationToken`
10651
+ # for pagination of the list results.
10652
+ #
10653
+ # Length Constraints: Minimum length of 0. Maximum length of 1024.
10654
+ #
10655
+ # Required: No.
10656
+ #
10007
10657
  # @return [Types::ListBucketsOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
10008
10658
  #
10009
10659
  # * {Types::ListBucketsOutput#buckets #buckets} => Array&lt;Types::Bucket&gt;
10010
10660
  # * {Types::ListBucketsOutput#owner #owner} => Types::Owner
10661
+ # * {Types::ListBucketsOutput#continuation_token #continuation_token} => String
10662
+ #
10663
+ # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}.
10011
10664
  #
10012
10665
  #
10013
10666
  # @example Example: To list all buckets
@@ -10039,6 +10692,13 @@ module Aws::S3
10039
10692
  # },
10040
10693
  # }
10041
10694
  #
10695
+ # @example Request syntax with placeholder values
10696
+ #
10697
+ # resp = client.list_buckets({
10698
+ # max_buckets: 1,
10699
+ # continuation_token: "Token",
10700
+ # })
10701
+ #
10042
10702
  # @example Response structure
10043
10703
  #
10044
10704
  # resp.buckets #=> Array
@@ -10046,6 +10706,7 @@ module Aws::S3
10046
10706
  # resp.buckets[0].creation_date #=> Time
10047
10707
  # resp.owner.display_name #=> String
10048
10708
  # resp.owner.id #=> String
10709
+ # resp.continuation_token #=> String
10049
10710
  #
10050
10711
  # @see http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBuckets AWS API Documentation
10051
10712
  #
@@ -10094,9 +10755,9 @@ module Aws::S3
10094
10755
  #
10095
10756
  # @option params [String] :continuation_token
10096
10757
  # `ContinuationToken` indicates to Amazon S3 that the list is being
10097
- # continued on this bucket with a token. `ContinuationToken` is
10098
- # obfuscated and is not a real key. You can use this `ContinuationToken`
10099
- # for pagination of the list results.
10758
+ # continued on buckets in this account with a token. `ContinuationToken`
10759
+ # is obfuscated and is not a real bucket name. You can use this
10760
+ # `ContinuationToken` for the pagination of the list results.
10100
10761
  #
10101
10762
  # @option params [Integer] :max_directory_buckets
10102
10763
  # Maximum number of buckets to be returned in response. When the number
@@ -10140,7 +10801,11 @@ module Aws::S3
10140
10801
  #
10141
10802
  # <note markdown="1"> **Directory buckets** - If multipart uploads in a directory bucket are
10142
10803
  # in progress, you can't delete the bucket until all the in-progress
10143
- # multipart uploads are aborted or completed.
10804
+ # multipart uploads are aborted or completed. To delete these
10805
+ # in-progress multipart uploads, use the `ListMultipartUploads`
10806
+ # operation to list the in-progress multipart uploads in the bucket and
10807
+ # use the `AbortMultupartUpload` operation to abort all the in-progress
10808
+ # multipart uploads.
10144
10809
  #
10145
10810
  # </note>
10146
10811
  #
@@ -10306,12 +10971,26 @@ module Aws::S3
10306
10971
  # </note>
10307
10972
  #
10308
10973
  # @option params [String] :encoding_type
10309
- # Requests Amazon S3 to encode the object keys in the response and
10310
- # specifies the encoding method to use. An object key can contain any
10311
- # Unicode character; however, the XML 1.0 parser cannot parse some
10312
- # characters, such as characters with an ASCII value from 0 to 10. For
10313
- # characters that are not supported in XML 1.0, you can add this
10314
- # parameter to request that Amazon S3 encode the keys in the response.
10974
+ # Encoding type used by Amazon S3 to encode the [object keys][1] in the
10975
+ # response. Responses are encoded only in UTF-8. An object key can
10976
+ # contain any Unicode character. However, the XML 1.0 parser can't
10977
+ # parse certain characters, such as characters with an ASCII value from
10978
+ # 0 to 10. For characters that aren't supported in XML 1.0, you can add
10979
+ # this parameter to request that Amazon S3 encode the keys in the
10980
+ # response. For more information about characters to avoid in object key
10981
+ # names, see [Object key naming guidelines][2].
10982
+ #
10983
+ # <note markdown="1"> When using the URL encoding type, non-ASCII characters that are used
10984
+ # in an object's key name will be percent-encoded according to UTF-8
10985
+ # code values. For example, the object `test_file(3).png` will appear as
10986
+ # `test_file%283%29.png`.
10987
+ #
10988
+ # </note>
10989
+ #
10990
+ #
10991
+ #
10992
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html
10993
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-guidelines
10315
10994
  #
10316
10995
  # @option params [String] :key_marker
10317
10996
  # Specifies the multipart upload after which listing should begin.
@@ -10603,12 +11282,26 @@ module Aws::S3
10603
11282
  # the response.
10604
11283
  #
10605
11284
  # @option params [String] :encoding_type
10606
- # Requests Amazon S3 to encode the object keys in the response and
10607
- # specifies the encoding method to use. An object key can contain any
10608
- # Unicode character; however, the XML 1.0 parser cannot parse some
10609
- # characters, such as characters with an ASCII value from 0 to 10. For
10610
- # characters that are not supported in XML 1.0, you can add this
10611
- # parameter to request that Amazon S3 encode the keys in the response.
11285
+ # Encoding type used by Amazon S3 to encode the [object keys][1] in the
11286
+ # response. Responses are encoded only in UTF-8. An object key can
11287
+ # contain any Unicode character. However, the XML 1.0 parser can't
11288
+ # parse certain characters, such as characters with an ASCII value from
11289
+ # 0 to 10. For characters that aren't supported in XML 1.0, you can add
11290
+ # this parameter to request that Amazon S3 encode the keys in the
11291
+ # response. For more information about characters to avoid in object key
11292
+ # names, see [Object key naming guidelines][2].
11293
+ #
11294
+ # <note markdown="1"> When using the URL encoding type, non-ASCII characters that are used
11295
+ # in an object's key name will be percent-encoded according to UTF-8
11296
+ # code values. For example, the object `test_file(3).png` will appear as
11297
+ # `test_file%283%29.png`.
11298
+ #
11299
+ # </note>
11300
+ #
11301
+ #
11302
+ #
11303
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html
11304
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-guidelines
10612
11305
  #
10613
11306
  # @option params [String] :key_marker
10614
11307
  # Specifies the key to start with when listing objects in a bucket.
@@ -10862,12 +11555,26 @@ module Aws::S3
10862
11555
  # A delimiter is a character that you use to group keys.
10863
11556
  #
10864
11557
  # @option params [String] :encoding_type
10865
- # Requests Amazon S3 to encode the object keys in the response and
10866
- # specifies the encoding method to use. An object key can contain any
10867
- # Unicode character; however, the XML 1.0 parser cannot parse some
10868
- # characters, such as characters with an ASCII value from 0 to 10. For
10869
- # characters that are not supported in XML 1.0, you can add this
10870
- # parameter to request that Amazon S3 encode the keys in the response.
11558
+ # Encoding type used by Amazon S3 to encode the [object keys][1] in the
11559
+ # response. Responses are encoded only in UTF-8. An object key can
11560
+ # contain any Unicode character. However, the XML 1.0 parser can't
11561
+ # parse certain characters, such as characters with an ASCII value from
11562
+ # 0 to 10. For characters that aren't supported in XML 1.0, you can add
11563
+ # this parameter to request that Amazon S3 encode the keys in the
11564
+ # response. For more information about characters to avoid in object key
11565
+ # names, see [Object key naming guidelines][2].
11566
+ #
11567
+ # <note markdown="1"> When using the URL encoding type, non-ASCII characters that are used
11568
+ # in an object's key name will be percent-encoded according to UTF-8
11569
+ # code values. For example, the object `test_file(3).png` will appear as
11570
+ # `test_file%283%29.png`.
11571
+ #
11572
+ # </note>
11573
+ #
11574
+ #
11575
+ #
11576
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html
11577
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-guidelines
10871
11578
  #
10872
11579
  # @option params [String] :marker
10873
11580
  # Marker is where you want Amazon S3 to start listing from. Amazon S3
@@ -11009,12 +11716,20 @@ module Aws::S3
11009
11716
  # programmatically][1] in the *Amazon S3 User Guide*. To get a list of
11010
11717
  # your buckets, see [ListBuckets][2].
11011
11718
  #
11012
- # <note markdown="1"> **Directory buckets** - For directory buckets, you must make requests
11013
- # for this API operation to the Zonal endpoint. These endpoints support
11014
- # virtual-hosted-style requests in the format
11015
- # `https://bucket_name.s3express-az_id.region.amazonaws.com/key-name `.
11016
- # Path-style requests are not supported. For more information, see
11017
- # [Regional and Zonal endpoints][3] in the *Amazon S3 User Guide*.
11719
+ # <note markdown="1"> * **General purpose bucket** - For general purpose buckets,
11720
+ # `ListObjectsV2` doesn't return prefixes that are related only to
11721
+ # in-progress multipart uploads.
11722
+ #
11723
+ # * **Directory buckets** - For directory buckets, `ListObjectsV2`
11724
+ # response includes the prefixes that are related only to in-progress
11725
+ # multipart uploads.
11726
+ #
11727
+ # * **Directory buckets** - For directory buckets, you must make
11728
+ # requests for this API operation to the Zonal endpoint. These
11729
+ # endpoints support virtual-hosted-style requests in the format
11730
+ # `https://bucket_name.s3express-az_id.region.amazonaws.com/key-name
11731
+ # `. Path-style requests are not supported. For more information, see
11732
+ # [Regional and Zonal endpoints][3] in the *Amazon S3 User Guide*.
11018
11733
  #
11019
11734
  # </note>
11020
11735
  #
@@ -11143,10 +11858,26 @@ module Aws::S3
11143
11858
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html
11144
11859
  #
11145
11860
  # @option params [String] :encoding_type
11146
- # Encoding type used by Amazon S3 to encode object keys in the response.
11147
- # If using `url`, non-ASCII characters used in an object's key name
11148
- # will be URL encoded. For example, the object test\_file(3).png will
11149
- # appear as test\_file%283%29.png.
11861
+ # Encoding type used by Amazon S3 to encode the [object keys][1] in the
11862
+ # response. Responses are encoded only in UTF-8. An object key can
11863
+ # contain any Unicode character. However, the XML 1.0 parser can't
11864
+ # parse certain characters, such as characters with an ASCII value from
11865
+ # 0 to 10. For characters that aren't supported in XML 1.0, you can add
11866
+ # this parameter to request that Amazon S3 encode the keys in the
11867
+ # response. For more information about characters to avoid in object key
11868
+ # names, see [Object key naming guidelines][2].
11869
+ #
11870
+ # <note markdown="1"> When using the URL encoding type, non-ASCII characters that are used
11871
+ # in an object's key name will be percent-encoded according to UTF-8
11872
+ # code values. For example, the object `test_file(3).png` will appear as
11873
+ # `test_file%283%29.png`.
11874
+ #
11875
+ # </note>
11876
+ #
11877
+ #
11878
+ #
11879
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html
11880
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-guidelines
11150
11881
  #
11151
11882
  # @option params [Integer] :max_keys
11152
11883
  # Sets the maximum number of keys returned in the response. By default,
@@ -12346,66 +13077,156 @@ module Aws::S3
12346
13077
  req.send_request(options)
12347
13078
  end
12348
13079
 
12349
- # <note markdown="1"> This operation is not supported by directory buckets.
13080
+ # This operation configures default encryption and Amazon S3 Bucket Keys
13081
+ # for an existing bucket.
12350
13082
  #
12351
- # </note>
13083
+ # <note markdown="1"> <b>Directory buckets </b> - For directory buckets, you must make
13084
+ # requests for this API operation to the Regional endpoint. These
13085
+ # endpoints support path-style requests in the format
13086
+ # `https://s3express-control.region_code.amazonaws.com/bucket-name `.
13087
+ # Virtual-hosted-style requests aren't supported. For more information,
13088
+ # see [Regional and Zonal endpoints][1] in the *Amazon S3 User Guide*.
12352
13089
  #
12353
- # This action uses the `encryption` subresource to configure default
12354
- # encryption and Amazon S3 Bucket Keys for an existing bucket.
13090
+ # </note>
12355
13091
  #
12356
13092
  # By default, all buckets have a default encryption configuration that
12357
- # uses server-side encryption with Amazon S3 managed keys (SSE-S3). You
12358
- # can optionally configure default encryption for a bucket by using
12359
- # server-side encryption with Key Management Service (KMS) keys
12360
- # (SSE-KMS) or dual-layer server-side encryption with Amazon Web
12361
- # Services KMS keys (DSSE-KMS). If you specify default encryption by
12362
- # using SSE-KMS, you can also configure [Amazon S3 Bucket Keys][1]. If
12363
- # you use PutBucketEncryption to set your [default bucket encryption][2]
12364
- # to SSE-KMS, you should verify that your KMS key ID is correct. Amazon
12365
- # S3 does not validate the KMS key ID provided in PutBucketEncryption
12366
- # requests.
12367
- #
12368
- # This action requires Amazon Web Services Signature Version 4. For more
12369
- # information, see [ Authenticating Requests (Amazon Web Services
12370
- # Signature Version 4)][3].
13093
+ # uses server-side encryption with Amazon S3 managed keys (SSE-S3).
12371
13094
  #
12372
- # To use this operation, you must have permission to perform the
12373
- # `s3:PutEncryptionConfiguration` action. The bucket owner has this
12374
- # permission by default. The bucket owner can grant this permission to
12375
- # others. For more information about permissions, see [Permissions
12376
- # Related to Bucket Subresource Operations][4] and [Managing Access
12377
- # Permissions to Your Amazon S3 Resources][5] in the *Amazon S3 User
12378
- # Guide*.
13095
+ # <note markdown="1"> * **General purpose buckets**
13096
+ #
13097
+ # * You can optionally configure default encryption for a bucket by
13098
+ # using server-side encryption with Key Management Service (KMS)
13099
+ # keys (SSE-KMS) or dual-layer server-side encryption with Amazon
13100
+ # Web Services KMS keys (DSSE-KMS). If you specify default
13101
+ # encryption by using SSE-KMS, you can also configure [Amazon S3
13102
+ # Bucket Keys][2]. For information about the bucket default
13103
+ # encryption feature, see [Amazon S3 Bucket Default Encryption][3]
13104
+ # in the *Amazon S3 User Guide*.
13105
+ #
13106
+ # * If you use PutBucketEncryption to set your [default bucket
13107
+ # encryption][3] to SSE-KMS, you should verify that your KMS key ID
13108
+ # is correct. Amazon S3 doesn't validate the KMS key ID provided in
13109
+ # PutBucketEncryption requests.
13110
+ #
13111
+ # * <b>Directory buckets </b> - You can optionally configure default
13112
+ # encryption for a bucket by using server-side encryption with Key
13113
+ # Management Service (KMS) keys (SSE-KMS).
13114
+ #
13115
+ # * We recommend that the bucket's default encryption uses the
13116
+ # desired encryption configuration and you don't override the
13117
+ # bucket default encryption in your `CreateSession` requests or
13118
+ # `PUT` object requests. Then, new objects are automatically
13119
+ # encrypted with the desired encryption settings. For more
13120
+ # information about the encryption overriding behaviors in directory
13121
+ # buckets, see [Specifying server-side encryption with KMS for new
13122
+ # object uploads][4].
13123
+ #
13124
+ # * Your SSE-KMS configuration can only support 1 [customer managed
13125
+ # key][5] per directory bucket for the lifetime of the bucket.
13126
+ # [Amazon Web Services managed key][6] (`aws/s3`) isn't supported.
13127
+ #
13128
+ # * S3 Bucket Keys are always enabled for `GET` and `PUT` operations
13129
+ # in a directory bucket and can’t be disabled. S3 Bucket Keys
13130
+ # aren't supported, when you copy SSE-KMS encrypted objects from
13131
+ # general purpose buckets to directory buckets, from directory
13132
+ # buckets to general purpose buckets, or between directory buckets,
13133
+ # through [CopyObject][7], [UploadPartCopy][8], [the Copy operation
13134
+ # in Batch Operations][9], or [the import jobs][10]. In this case,
13135
+ # Amazon S3 makes a call to KMS every time a copy request is made
13136
+ # for a KMS-encrypted object.
13137
+ #
13138
+ # * When you specify an [KMS customer managed key][5] for encryption
13139
+ # in your directory bucket, only use the key ID or key ARN. The key
13140
+ # alias format of the KMS key isn't supported.
13141
+ #
13142
+ # * For directory buckets, if you use PutBucketEncryption to set your
13143
+ # [default bucket encryption][3] to SSE-KMS, Amazon S3 validates the
13144
+ # KMS key ID provided in PutBucketEncryption requests.
13145
+ #
13146
+ # </note>
13147
+ #
13148
+ # If you're specifying a customer managed KMS key, we recommend using a
13149
+ # fully qualified KMS key ARN. If you use a KMS key alias instead, then
13150
+ # KMS resolves the key within the requester’s account. This behavior can
13151
+ # result in data that's encrypted with a KMS key that belongs to the
13152
+ # requester, and not the bucket owner.
13153
+ #
13154
+ # Also, this action requires Amazon Web Services Signature Version 4.
13155
+ # For more information, see [ Authenticating Requests (Amazon Web
13156
+ # Services Signature Version 4)][11].
13157
+ #
13158
+ # Permissions
13159
+ # : * **General purpose bucket permissions** - The
13160
+ # `s3:PutEncryptionConfiguration` permission is required in a
13161
+ # policy. The bucket owner has this permission by default. The
13162
+ # bucket owner can grant this permission to others. For more
13163
+ # information about permissions, see [Permissions Related to Bucket
13164
+ # Operations][12] and [Managing Access Permissions to Your Amazon S3
13165
+ # Resources][13] in the *Amazon S3 User Guide*.
13166
+ #
13167
+ # * **Directory bucket permissions** - To grant access to this API
13168
+ # operation, you must have the
13169
+ # `s3express:PutEncryptionConfiguration` permission in an IAM
13170
+ # identity-based policy instead of a bucket policy. Cross-account
13171
+ # access to this API operation isn't supported. This operation can
13172
+ # only be performed by the Amazon Web Services account that owns the
13173
+ # resource. For more information about directory bucket policies and
13174
+ # permissions, see [Amazon Web Services Identity and Access
13175
+ # Management (IAM) for S3 Express One Zone][14] in the *Amazon S3
13176
+ # User Guide*.
13177
+ #
13178
+ # To set a directory bucket default encryption with SSE-KMS, you
13179
+ # must also have the `kms:GenerateDataKey` and the `kms:Decrypt`
13180
+ # permissions in IAM identity-based policies and KMS key policies
13181
+ # for the target KMS key.
13182
+ #
13183
+ # HTTP Host header syntax
13184
+ #
13185
+ # : <b>Directory buckets </b> - The HTTP Host header syntax is
13186
+ # `s3express-control.region.amazonaws.com`.
12379
13187
  #
12380
13188
  # The following operations are related to `PutBucketEncryption`:
12381
13189
  #
12382
- # * [GetBucketEncryption][6]
13190
+ # * [GetBucketEncryption][15]
12383
13191
  #
12384
- # * [DeleteBucketEncryption][7]
13192
+ # * [DeleteBucketEncryption][16]
12385
13193
  #
12386
13194
  #
12387
13195
  #
12388
- # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html
12389
- # [2]: https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html
12390
- # [3]: https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html
12391
- # [4]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources
12392
- # [5]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html
12393
- # [6]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html
12394
- # [7]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketEncryption.html
13196
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-Regions-and-Zones.html
13197
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html
13198
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html
13199
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html
13200
+ # [5]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk
13201
+ # [6]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk
13202
+ # [7]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
13203
+ # [8]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
13204
+ # [9]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-buckets-objects-Batch-Ops
13205
+ # [10]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-import-job
13206
+ # [11]: https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html
13207
+ # [12]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources
13208
+ # [13]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html
13209
+ # [14]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam.html
13210
+ # [15]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html
13211
+ # [16]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketEncryption.html
12395
13212
  #
12396
13213
  # @option params [required, String] :bucket
12397
13214
  # Specifies default encryption for a bucket using server-side encryption
12398
- # with different key options. By default, all buckets have a default
12399
- # encryption configuration that uses server-side encryption with Amazon
12400
- # S3 managed keys (SSE-S3). You can optionally configure default
12401
- # encryption for a bucket by using server-side encryption with an Amazon
12402
- # Web Services KMS key (SSE-KMS) or a customer-provided key (SSE-C). For
12403
- # information about the bucket default encryption feature, see [Amazon
12404
- # S3 Bucket Default Encryption][1] in the *Amazon S3 User Guide*.
13215
+ # with different key options.
13216
+ #
13217
+ # <b>Directory buckets </b> - When you use this operation with a
13218
+ # directory bucket, you must use path-style requests in the format
13219
+ # `https://s3express-control.region_code.amazonaws.com/bucket-name `.
13220
+ # Virtual-hosted-style requests aren't supported. Directory bucket
13221
+ # names must be unique in the chosen Availability Zone. Bucket names
13222
+ # must also follow the format ` bucket_base_name--az_id--x-s3` (for
13223
+ # example, ` DOC-EXAMPLE-BUCKET--usw2-az1--x-s3`). For information about
13224
+ # bucket naming restrictions, see [Directory bucket naming rules][1] in
13225
+ # the *Amazon S3 User Guide*
12405
13226
  #
12406
13227
  #
12407
13228
  #
12408
- # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html
13229
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-bucket-naming-rules.html
12409
13230
  #
12410
13231
  # @option params [String] :content_md5
12411
13232
  # The base64-encoded 128-bit MD5 digest of the server-side encryption
@@ -12415,6 +13236,10 @@ module Aws::S3
12415
13236
  # (CLI) or Amazon Web Services SDKs, this field is calculated
12416
13237
  # automatically.
12417
13238
  #
13239
+ # <note markdown="1"> This functionality is not supported for directory buckets.
13240
+ #
13241
+ # </note>
13242
+ #
12418
13243
  # @option params [String] :checksum_algorithm
12419
13244
  # Indicates the algorithm used to create the checksum for the object
12420
13245
  # when you use the SDK. This header will not provide any additional
@@ -12427,6 +13252,11 @@ module Aws::S3
12427
13252
  # If you provide an individual checksum, Amazon S3 ignores any provided
12428
13253
  # `ChecksumAlgorithm` parameter.
12429
13254
  #
13255
+ # <note markdown="1"> For directory buckets, when you use Amazon Web Services SDKs, `CRC32`
13256
+ # is the default checksum algorithm that's used for performance.
13257
+ #
13258
+ # </note>
13259
+ #
12430
13260
  #
12431
13261
  #
12432
13262
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
@@ -12439,6 +13269,12 @@ module Aws::S3
12439
13269
  # you provide does not match the actual owner of the bucket, the request
12440
13270
  # fails with the HTTP status code `403 Forbidden` (access denied).
12441
13271
  #
13272
+ # <note markdown="1"> For directory buckets, this header is not supported in this API
13273
+ # operation. If you specify this header, the request fails with the HTTP
13274
+ # status code `501 Not Implemented`.
13275
+ #
13276
+ # </note>
13277
+ #
12442
13278
  # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
12443
13279
  #
12444
13280
  # @example Request syntax with placeholder values
@@ -14435,6 +15271,14 @@ module Aws::S3
14435
15271
  #
14436
15272
  # </note>
14437
15273
  #
15274
+ # <note markdown="1"> When you enable versioning on a bucket for the first time, it might
15275
+ # take a short amount of time for the change to be fully propagated. We
15276
+ # recommend that you wait for 15 minutes after enabling versioning
15277
+ # before issuing write operations (`PUT` or `DELETE`) on objects in the
15278
+ # bucket.
15279
+ #
15280
+ # </note>
15281
+ #
14438
15282
  # Sets the versioning state of an existing bucket.
14439
15283
  #
14440
15284
  # You can set the versioning state with one of the following values:
@@ -14828,6 +15672,10 @@ module Aws::S3
14828
15672
  # interruptions when a session expires. For more information about
14829
15673
  # authorization, see [ `CreateSession` ][5].
14830
15674
  #
15675
+ # If the object is encrypted with SSE-KMS, you must also have the
15676
+ # `kms:GenerateDataKey` and `kms:Decrypt` permissions in IAM
15677
+ # identity-based policies and KMS key policies for the KMS key.
15678
+ #
14831
15679
  # Data integrity with Content-MD5
14832
15680
  # : * **General purpose bucket** - To ensure that data is not corrupted
14833
15681
  # traversing the network, use the `Content-MD5` header. When you use
@@ -15110,6 +15958,25 @@ module Aws::S3
15110
15958
  #
15111
15959
  # [1]: https://www.rfc-editor.org/rfc/rfc7234#section-5.3
15112
15960
  #
15961
+ # @option params [String] :if_none_match
15962
+ # Uploads the object only if the object key name does not already exist
15963
+ # in the bucket specified. Otherwise, Amazon S3 returns a `412
15964
+ # Precondition Failed` error.
15965
+ #
15966
+ # If a conflicting operation occurs during the upload S3 returns a `409
15967
+ # ConditionalRequestConflict` response. On a 409 failure you should
15968
+ # retry the upload.
15969
+ #
15970
+ # Expects the '*' (asterisk) character.
15971
+ #
15972
+ # For more information about conditional requests, see [RFC 7232][1], or
15973
+ # [Conditional requests][2] in the *Amazon S3 User Guide*.
15974
+ #
15975
+ #
15976
+ #
15977
+ # [1]: https://tools.ietf.org/html/rfc7232
15978
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/conditional-requests.html
15979
+ #
15113
15980
  # @option params [String] :grant_full_control
15114
15981
  # Gives the grantee READ, READ\_ACP, and WRITE\_ACP permissions on the
15115
15982
  # object.
@@ -15158,25 +16025,65 @@ module Aws::S3
15158
16025
  # object in Amazon S3 (for example, `AES256`, `aws:kms`,
15159
16026
  # `aws:kms:dsse`).
15160
16027
  #
15161
- # <b>General purpose buckets </b> - You have four mutually exclusive
15162
- # options to protect data using server-side encryption in Amazon S3,
15163
- # depending on how you choose to manage the encryption keys.
15164
- # Specifically, the encryption key options are Amazon S3 managed keys
15165
- # (SSE-S3), Amazon Web Services KMS keys (SSE-KMS or DSSE-KMS), and
15166
- # customer-provided keys (SSE-C). Amazon S3 encrypts data with
15167
- # server-side encryption by using Amazon S3 managed keys (SSE-S3) by
15168
- # default. You can optionally tell Amazon S3 to encrypt data at rest by
15169
- # using server-side encryption with other key options. For more
15170
- # information, see [Using Server-Side Encryption][1] in the *Amazon S3
15171
- # User Guide*.
16028
+ # * <b>General purpose buckets </b> - You have four mutually exclusive
16029
+ # options to protect data using server-side encryption in Amazon S3,
16030
+ # depending on how you choose to manage the encryption keys.
16031
+ # Specifically, the encryption key options are Amazon S3 managed keys
16032
+ # (SSE-S3), Amazon Web Services KMS keys (SSE-KMS or DSSE-KMS), and
16033
+ # customer-provided keys (SSE-C). Amazon S3 encrypts data with
16034
+ # server-side encryption by using Amazon S3 managed keys (SSE-S3) by
16035
+ # default. You can optionally tell Amazon S3 to encrypt data at rest
16036
+ # by using server-side encryption with other key options. For more
16037
+ # information, see [Using Server-Side Encryption][1] in the *Amazon S3
16038
+ # User Guide*.
15172
16039
  #
15173
- # <b>Directory buckets </b> - For directory buckets, only the
15174
- # server-side encryption with Amazon S3 managed keys (SSE-S3) (`AES256`)
15175
- # value is supported.
16040
+ # * <b>Directory buckets </b> - For directory buckets, there are only
16041
+ # two supported options for server-side encryption: server-side
16042
+ # encryption with Amazon S3 managed keys (SSE-S3) (`AES256`) and
16043
+ # server-side encryption with KMS keys (SSE-KMS) (`aws:kms`). We
16044
+ # recommend that the bucket's default encryption uses the desired
16045
+ # encryption configuration and you don't override the bucket default
16046
+ # encryption in your `CreateSession` requests or `PUT` object
16047
+ # requests. Then, new objects are automatically encrypted with the
16048
+ # desired encryption settings. For more information, see [Protecting
16049
+ # data with server-side encryption][2] in the *Amazon S3 User Guide*.
16050
+ # For more information about the encryption overriding behaviors in
16051
+ # directory buckets, see [Specifying server-side encryption with KMS
16052
+ # for new object uploads][3].
16053
+ #
16054
+ # In the Zonal endpoint API calls (except [CopyObject][4] and
16055
+ # [UploadPartCopy][5]) using the REST API, the encryption request
16056
+ # headers must match the encryption settings that are specified in the
16057
+ # `CreateSession` request. You can't override the values of the
16058
+ # encryption settings (`x-amz-server-side-encryption`,
16059
+ # `x-amz-server-side-encryption-aws-kms-key-id`,
16060
+ # `x-amz-server-side-encryption-context`, and
16061
+ # `x-amz-server-side-encryption-bucket-key-enabled`) that are
16062
+ # specified in the `CreateSession` request. You don't need to
16063
+ # explicitly specify these encryption settings values in Zonal
16064
+ # endpoint API calls, and Amazon S3 will use the encryption settings
16065
+ # values from the `CreateSession` request to protect new objects in
16066
+ # the directory bucket.
16067
+ #
16068
+ # <note markdown="1"> When you use the CLI or the Amazon Web Services SDKs, for
16069
+ # `CreateSession`, the session token refreshes automatically to avoid
16070
+ # service interruptions when a session expires. The CLI or the Amazon
16071
+ # Web Services SDKs use the bucket's default encryption configuration
16072
+ # for the `CreateSession` request. It's not supported to override the
16073
+ # encryption settings values in the `CreateSession` request. So in the
16074
+ # Zonal endpoint API calls (except [CopyObject][4] and
16075
+ # [UploadPartCopy][5]), the encryption request headers must match the
16076
+ # default encryption configuration of the directory bucket.
16077
+ #
16078
+ # </note>
15176
16079
  #
15177
16080
  #
15178
16081
  #
15179
16082
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html
16083
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html
16084
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html
16085
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
16086
+ # [5]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
15180
16087
  #
15181
16088
  # @option params [String] :storage_class
15182
16089
  # By default, Amazon S3 uses the STANDARD Storage Class to store newly
@@ -15256,46 +16163,83 @@ module Aws::S3
15256
16163
  # </note>
15257
16164
  #
15258
16165
  # @option params [String] :ssekms_key_id
15259
- # If `x-amz-server-side-encryption` has a valid value of `aws:kms` or
15260
- # `aws:kms:dsse`, this header specifies the ID (Key ID, Key ARN, or Key
15261
- # Alias) of the Key Management Service (KMS) symmetric encryption
15262
- # customer managed key that was used for the object. If you specify
15263
- # `x-amz-server-side-encryption:aws:kms` or
15264
- # `x-amz-server-side-encryption:aws:kms:dsse`, but do not provide`
15265
- # x-amz-server-side-encryption-aws-kms-key-id`, Amazon S3 uses the
15266
- # Amazon Web Services managed key (`aws/s3`) to protect the data. If the
15267
- # KMS key does not exist in the same account that's issuing the
15268
- # command, you must use the full ARN and not just the ID.
16166
+ # Specifies the KMS key ID (Key ID, Key ARN, or Key Alias) to use for
16167
+ # object encryption. If the KMS key doesn't exist in the same account
16168
+ # that's issuing the command, you must use the full Key ARN not the Key
16169
+ # ID.
16170
+ #
16171
+ # **General purpose buckets** - If you specify
16172
+ # `x-amz-server-side-encryption` with `aws:kms` or `aws:kms:dsse`, this
16173
+ # header specifies the ID (Key ID, Key ARN, or Key Alias) of the KMS key
16174
+ # to use. If you specify `x-amz-server-side-encryption:aws:kms` or
16175
+ # `x-amz-server-side-encryption:aws:kms:dsse`, but do not provide
16176
+ # `x-amz-server-side-encryption-aws-kms-key-id`, Amazon S3 uses the
16177
+ # Amazon Web Services managed key (`aws/s3`) to protect the data.
16178
+ #
16179
+ # **Directory buckets** - If you specify `x-amz-server-side-encryption`
16180
+ # with `aws:kms`, you must specify the `
16181
+ # x-amz-server-side-encryption-aws-kms-key-id` header with the ID (Key
16182
+ # ID or Key ARN) of the KMS symmetric encryption customer managed key to
16183
+ # use. Otherwise, you get an HTTP `400 Bad Request` error. Only use the
16184
+ # key ID or key ARN. The key alias format of the KMS key isn't
16185
+ # supported. Your SSE-KMS configuration can only support 1 [customer
16186
+ # managed key][1] per directory bucket for the lifetime of the bucket.
16187
+ # [Amazon Web Services managed key][2] (`aws/s3`) isn't supported.
16188
+ #
16189
+ #
16190
+ #
16191
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk
16192
+ # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk
15269
16193
  #
15270
- # <note markdown="1"> This functionality is not supported for directory buckets.
16194
+ # @option params [String] :ssekms_encryption_context
16195
+ # Specifies the Amazon Web Services KMS Encryption Context as an
16196
+ # additional encryption context to use for object encryption. The value
16197
+ # of this header is a Base64-encoded string of a UTF-8 encoded JSON,
16198
+ # which contains the encryption context as key-value pairs. This value
16199
+ # is stored as object metadata and automatically gets passed on to
16200
+ # Amazon Web Services KMS for future `GetObject` operations on this
16201
+ # object.
15271
16202
  #
15272
- # </note>
16203
+ # **General purpose buckets** - This value must be explicitly added
16204
+ # during `CopyObject` operations if you want an additional encryption
16205
+ # context for your object. For more information, see [Encryption
16206
+ # context][1] in the *Amazon S3 User Guide*.
15273
16207
  #
15274
- # @option params [String] :ssekms_encryption_context
15275
- # Specifies the Amazon Web Services KMS Encryption Context to use for
15276
- # object encryption. The value of this header is a base64-encoded UTF-8
15277
- # string holding JSON with the encryption context key-value pairs. This
15278
- # value is stored as object metadata and automatically gets passed on to
15279
- # Amazon Web Services KMS for future `GetObject` or `CopyObject`
15280
- # operations on this object. This value must be explicitly added during
15281
- # `CopyObject` operations.
16208
+ # **Directory buckets** - You can optionally provide an explicit
16209
+ # encryption context value. The value must match the default encryption
16210
+ # context - the bucket Amazon Resource Name (ARN). An additional
16211
+ # encryption context value is not supported.
15282
16212
  #
15283
- # <note markdown="1"> This functionality is not supported for directory buckets.
15284
16213
  #
15285
- # </note>
16214
+ #
16215
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html#encryption-context
15286
16216
  #
15287
16217
  # @option params [Boolean] :bucket_key_enabled
15288
16218
  # Specifies whether Amazon S3 should use an S3 Bucket Key for object
15289
16219
  # encryption with server-side encryption using Key Management Service
15290
- # (KMS) keys (SSE-KMS). Setting this header to `true` causes Amazon S3
15291
- # to use an S3 Bucket Key for object encryption with SSE-KMS.
16220
+ # (KMS) keys (SSE-KMS).
16221
+ #
16222
+ # **General purpose buckets** - Setting this header to `true` causes
16223
+ # Amazon S3 to use an S3 Bucket Key for object encryption with SSE-KMS.
16224
+ # Also, specifying this header with a PUT action doesn't affect
16225
+ # bucket-level settings for S3 Bucket Key.
15292
16226
  #
15293
- # Specifying this header with a PUT action doesn’t affect bucket-level
15294
- # settings for S3 Bucket Key.
16227
+ # **Directory buckets** - S3 Bucket Keys are always enabled for `GET`
16228
+ # and `PUT` operations in a directory bucket and can’t be disabled. S3
16229
+ # Bucket Keys aren't supported, when you copy SSE-KMS encrypted objects
16230
+ # from general purpose buckets to directory buckets, from directory
16231
+ # buckets to general purpose buckets, or between directory buckets,
16232
+ # through [CopyObject][1], [UploadPartCopy][2], [the Copy operation in
16233
+ # Batch Operations][3], or [the import jobs][4]. In this case, Amazon S3
16234
+ # makes a call to KMS every time a copy request is made for a
16235
+ # KMS-encrypted object.
15295
16236
  #
15296
- # <note markdown="1"> This functionality is not supported for directory buckets.
15297
16237
  #
15298
- # </note>
16238
+ #
16239
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
16240
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
16241
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-buckets-objects-Batch-Ops
16242
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-import-job
15299
16243
  #
15300
16244
  # @option params [String] :request_payer
15301
16245
  # Confirms that the requester knows that they will be charged for the
@@ -15373,41 +16317,38 @@ module Aws::S3
15373
16317
  # * {Types::PutObjectOutput#request_charged #request_charged} => String
15374
16318
  #
15375
16319
  #
15376
- # @example Example: To upload an object
16320
+ # @example Example: To upload an object and specify optional tags
15377
16321
  #
15378
- # # The following example uploads an object to a versioning-enabled bucket. The source file is specified using Windows file
15379
- # # syntax. S3 returns VersionId of the newly created object.
16322
+ # # The following example uploads an object. The request specifies optional object tags. The bucket is versioned, therefore
16323
+ # # S3 returns version ID of the newly created object.
15380
16324
  #
15381
16325
  # resp = client.put_object({
15382
- # body: "HappyFace.jpg",
16326
+ # body: "c:\\HappyFace.jpg",
15383
16327
  # bucket: "examplebucket",
15384
16328
  # key: "HappyFace.jpg",
16329
+ # tagging: "key1=value1&key2=value2",
15385
16330
  # })
15386
16331
  #
15387
16332
  # resp.to_h outputs the following:
15388
16333
  # {
15389
16334
  # etag: "\"6805f2cfc46c0f04559748bb039d69ae\"",
15390
- # version_id: "tpf3zF08nBplQK1XLOefGskR7mGDwcDk",
16335
+ # version_id: "psM2sYY4.o1501dSx8wMvnkOzSBB.V4a",
15391
16336
  # }
15392
16337
  #
15393
- # @example Example: To upload an object (specify optional headers)
16338
+ # @example Example: To create an object.
15394
16339
  #
15395
- # # The following example uploads an object. The request specifies optional request headers to directs S3 to use specific
15396
- # # storage class and use server-side encryption.
16340
+ # # The following example creates an object. If the bucket is versioning enabled, S3 returns version ID in response.
15397
16341
  #
15398
16342
  # resp = client.put_object({
15399
- # body: "HappyFace.jpg",
16343
+ # body: "filetoupload",
15400
16344
  # bucket: "examplebucket",
15401
- # key: "HappyFace.jpg",
15402
- # server_side_encryption: "AES256",
15403
- # storage_class: "STANDARD_IA",
16345
+ # key: "objectkey",
15404
16346
  # })
15405
16347
  #
15406
16348
  # resp.to_h outputs the following:
15407
16349
  # {
15408
16350
  # etag: "\"6805f2cfc46c0f04559748bb039d69ae\"",
15409
- # server_side_encryption: "AES256",
15410
- # version_id: "CG612hodqujkf8FaaNfp8U..FIhLROcp",
16351
+ # version_id: "Bvq0EDKxOcXLJXNo_Lkz37eM3R4pfzyQ",
15411
16352
  # }
15412
16353
  #
15413
16354
  # @example Example: To upload object and specify user-defined metadata
@@ -15431,76 +16372,79 @@ module Aws::S3
15431
16372
  # version_id: "pSKidl4pHBiNwukdbcPXAIs.sshFFOc0",
15432
16373
  # }
15433
16374
  #
15434
- # @example Example: To upload an object and specify canned ACL.
16375
+ # @example Example: To upload an object
15435
16376
  #
15436
- # # The following example uploads and object. The request specifies optional canned ACL (access control list) to all READ
15437
- # # access to authenticated users. If the bucket is versioning enabled, S3 returns version ID in response.
16377
+ # # The following example uploads an object to a versioning-enabled bucket. The source file is specified using Windows file
16378
+ # # syntax. S3 returns VersionId of the newly created object.
15438
16379
  #
15439
16380
  # resp = client.put_object({
15440
- # acl: "authenticated-read",
15441
- # body: "filetoupload",
16381
+ # body: "HappyFace.jpg",
15442
16382
  # bucket: "examplebucket",
15443
- # key: "exampleobject",
16383
+ # key: "HappyFace.jpg",
15444
16384
  # })
15445
16385
  #
15446
16386
  # resp.to_h outputs the following:
15447
16387
  # {
15448
16388
  # etag: "\"6805f2cfc46c0f04559748bb039d69ae\"",
15449
- # version_id: "Kirh.unyZwjQ69YxcQLA8z4F5j3kJJKr",
16389
+ # version_id: "tpf3zF08nBplQK1XLOefGskR7mGDwcDk",
15450
16390
  # }
15451
16391
  #
15452
- # @example Example: To create an object.
16392
+ # @example Example: To upload an object and specify server-side encryption and object tags
15453
16393
  #
15454
- # # The following example creates an object. If the bucket is versioning enabled, S3 returns version ID in response.
16394
+ # # The following example uploads an object. The request specifies the optional server-side encryption option. The request
16395
+ # # also specifies optional object tags. If the bucket is versioning enabled, S3 returns version ID in response.
15455
16396
  #
15456
16397
  # resp = client.put_object({
15457
16398
  # body: "filetoupload",
15458
16399
  # bucket: "examplebucket",
15459
- # key: "objectkey",
16400
+ # key: "exampleobject",
16401
+ # server_side_encryption: "AES256",
16402
+ # tagging: "key1=value1&key2=value2",
15460
16403
  # })
15461
16404
  #
15462
16405
  # resp.to_h outputs the following:
15463
16406
  # {
15464
16407
  # etag: "\"6805f2cfc46c0f04559748bb039d69ae\"",
15465
- # version_id: "Bvq0EDKxOcXLJXNo_Lkz37eM3R4pfzyQ",
16408
+ # server_side_encryption: "AES256",
16409
+ # version_id: "Ri.vC6qVlA4dEnjgRV4ZHsHoFIjqEMNt",
15466
16410
  # }
15467
16411
  #
15468
- # @example Example: To upload an object and specify server-side encryption and object tags
16412
+ # @example Example: To upload an object and specify canned ACL.
15469
16413
  #
15470
- # # The following example uploads an object. The request specifies the optional server-side encryption option. The request
15471
- # # also specifies optional object tags. If the bucket is versioning enabled, S3 returns version ID in response.
16414
+ # # The following example uploads and object. The request specifies optional canned ACL (access control list) to all READ
16415
+ # # access to authenticated users. If the bucket is versioning enabled, S3 returns version ID in response.
15472
16416
  #
15473
16417
  # resp = client.put_object({
16418
+ # acl: "authenticated-read",
15474
16419
  # body: "filetoupload",
15475
16420
  # bucket: "examplebucket",
15476
16421
  # key: "exampleobject",
15477
- # server_side_encryption: "AES256",
15478
- # tagging: "key1=value1&key2=value2",
15479
16422
  # })
15480
16423
  #
15481
16424
  # resp.to_h outputs the following:
15482
16425
  # {
15483
16426
  # etag: "\"6805f2cfc46c0f04559748bb039d69ae\"",
15484
- # server_side_encryption: "AES256",
15485
- # version_id: "Ri.vC6qVlA4dEnjgRV4ZHsHoFIjqEMNt",
16427
+ # version_id: "Kirh.unyZwjQ69YxcQLA8z4F5j3kJJKr",
15486
16428
  # }
15487
16429
  #
15488
- # @example Example: To upload an object and specify optional tags
16430
+ # @example Example: To upload an object (specify optional headers)
15489
16431
  #
15490
- # # The following example uploads an object. The request specifies optional object tags. The bucket is versioned, therefore
15491
- # # S3 returns version ID of the newly created object.
16432
+ # # The following example uploads an object. The request specifies optional request headers to directs S3 to use specific
16433
+ # # storage class and use server-side encryption.
15492
16434
  #
15493
16435
  # resp = client.put_object({
15494
- # body: "c:\\HappyFace.jpg",
16436
+ # body: "HappyFace.jpg",
15495
16437
  # bucket: "examplebucket",
15496
16438
  # key: "HappyFace.jpg",
15497
- # tagging: "key1=value1&key2=value2",
16439
+ # server_side_encryption: "AES256",
16440
+ # storage_class: "STANDARD_IA",
15498
16441
  # })
15499
16442
  #
15500
16443
  # resp.to_h outputs the following:
15501
16444
  # {
15502
16445
  # etag: "\"6805f2cfc46c0f04559748bb039d69ae\"",
15503
- # version_id: "psM2sYY4.o1501dSx8wMvnkOzSBB.V4a",
16446
+ # server_side_encryption: "AES256",
16447
+ # version_id: "CG612hodqujkf8FaaNfp8U..FIhLROcp",
15504
16448
  # }
15505
16449
  #
15506
16450
  # @example Streaming a file from disk
@@ -15528,6 +16472,7 @@ module Aws::S3
15528
16472
  # checksum_sha1: "ChecksumSHA1",
15529
16473
  # checksum_sha256: "ChecksumSHA256",
15530
16474
  # expires: Time.now,
16475
+ # if_none_match: "IfNoneMatch",
15531
16476
  # grant_full_control: "GrantFullControl",
15532
16477
  # grant_read: "GrantRead",
15533
16478
  # grant_read_acp: "GrantReadACP",
@@ -16627,6 +17572,10 @@ module Aws::S3
16627
17572
  #
16628
17573
  # </note>
16629
17574
  #
17575
+ # The `SELECT` job type for the RestoreObject operation is no longer
17576
+ # available to new customers. Existing customers of Amazon S3 Select can
17577
+ # continue to use the feature as usual. [Learn more][1]
17578
+ #
16630
17579
  # Restores an archived copy of an object back into Amazon S3
16631
17580
  #
16632
17581
  # This functionality is not supported for Amazon S3 on Outposts.
@@ -16640,11 +17589,11 @@ module Aws::S3
16640
17589
  # For more information about the `S3` structure in the request body, see
16641
17590
  # the following:
16642
17591
  #
16643
- # * [PutObject][1]
17592
+ # * [PutObject][2]
16644
17593
  #
16645
- # * [Managing Access with ACLs][2] in the *Amazon S3 User Guide*
17594
+ # * [Managing Access with ACLs][3] in the *Amazon S3 User Guide*
16646
17595
  #
16647
- # * [Protecting Data Using Server-Side Encryption][3] in the *Amazon S3
17596
+ # * [Protecting Data Using Server-Side Encryption][4] in the *Amazon S3
16648
17597
  # User Guide*
16649
17598
  #
16650
17599
  # Permissions
@@ -16653,8 +17602,8 @@ module Aws::S3
16653
17602
  # `s3:RestoreObject` action. The bucket owner has this permission by
16654
17603
  # default and can grant this permission to others. For more
16655
17604
  # information about permissions, see [Permissions Related to Bucket
16656
- # Subresource Operations][4] and [Managing Access Permissions to Your
16657
- # Amazon S3 Resources][5] in the *Amazon S3 User Guide*.
17605
+ # Subresource Operations][5] and [Managing Access Permissions to Your
17606
+ # Amazon S3 Resources][6] in the *Amazon S3 User Guide*.
16658
17607
  #
16659
17608
  # Restoring objects
16660
17609
  #
@@ -16717,11 +17666,11 @@ module Aws::S3
16717
17666
  #
16718
17667
  # For more information about archive retrieval options and provisioned
16719
17668
  # capacity for `Expedited` data access, see [Restoring Archived
16720
- # Objects][6] in the *Amazon S3 User Guide*.
17669
+ # Objects][7] in the *Amazon S3 User Guide*.
16721
17670
  #
16722
17671
  # You can use Amazon S3 restore speed upgrade to change the restore
16723
17672
  # speed to a faster speed while it is in progress. For more
16724
- # information, see [ Upgrading the speed of an in-progress restore][7]
17673
+ # information, see [ Upgrading the speed of an in-progress restore][8]
16725
17674
  # in the *Amazon S3 User Guide*.
16726
17675
  #
16727
17676
  # To get the status of object restoration, you can send a `HEAD`
@@ -16729,7 +17678,7 @@ module Aws::S3
16729
17678
  # provides information about the restoration status, in the response.
16730
17679
  # You can use Amazon S3 event notifications to notify you when a
16731
17680
  # restore is initiated or completed. For more information, see
16732
- # [Configuring Amazon S3 Event Notifications][8] in the *Amazon S3
17681
+ # [Configuring Amazon S3 Event Notifications][9] in the *Amazon S3
16733
17682
  # User Guide*.
16734
17683
  #
16735
17684
  # After restoring an archived object, you can update the restoration
@@ -16745,8 +17694,8 @@ module Aws::S3
16745
17694
  # restore an object copy for 10 days, but the object is scheduled to
16746
17695
  # expire in 3 days, Amazon S3 deletes the object in 3 days. For more
16747
17696
  # information about lifecycle configuration, see
16748
- # [PutBucketLifecycleConfiguration][9] and [Object Lifecycle
16749
- # Management][10] in *Amazon S3 User Guide*.
17697
+ # [PutBucketLifecycleConfiguration][10] and [Object Lifecycle
17698
+ # Management][11] in *Amazon S3 User Guide*.
16750
17699
  #
16751
17700
  # Responses
16752
17701
  #
@@ -16784,23 +17733,24 @@ module Aws::S3
16784
17733
  #
16785
17734
  # The following operations are related to `RestoreObject`:
16786
17735
  #
16787
- # * [PutBucketLifecycleConfiguration][9]
17736
+ # * [PutBucketLifecycleConfiguration][10]
16788
17737
  #
16789
- # * [GetBucketNotificationConfiguration][11]
17738
+ # * [GetBucketNotificationConfiguration][12]
16790
17739
  #
16791
17740
  #
16792
17741
  #
16793
- # [1]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html
16794
- # [2]: https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html
16795
- # [3]: https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html
16796
- # [4]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources
16797
- # [5]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html
16798
- # [6]: https://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html
16799
- # [7]: https://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html#restoring-objects-upgrade-tier.title.html
16800
- # [8]: https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html
16801
- # [9]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html
16802
- # [10]: https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html
16803
- # [11]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketNotificationConfiguration.html
17742
+ # [1]: http://aws.amazon.com/blogs/storage/how-to-optimize-querying-your-data-in-amazon-s3/
17743
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html
17744
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html
17745
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html
17746
+ # [5]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources
17747
+ # [6]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html
17748
+ # [7]: https://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html
17749
+ # [8]: https://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html#restoring-objects-upgrade-tier.title.html
17750
+ # [9]: https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html
17751
+ # [10]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html
17752
+ # [11]: https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html
17753
+ # [12]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketNotificationConfiguration.html
16804
17754
  #
16805
17755
  # @option params [required, String] :bucket
16806
17756
  # The bucket name containing the object to restore.
@@ -17012,6 +17962,10 @@ module Aws::S3
17012
17962
  #
17013
17963
  # </note>
17014
17964
  #
17965
+ # The SelectObjectContent operation is no longer available to new
17966
+ # customers. Existing customers of Amazon S3 Select can continue to use
17967
+ # the operation as usual. [Learn more][1]
17968
+ #
17015
17969
  # This action filters the contents of an Amazon S3 object based on a
17016
17970
  # simple structured query language (SQL) statement. In the request,
17017
17971
  # along with the SQL expression, you must also specify a data
@@ -17023,7 +17977,7 @@ module Aws::S3
17023
17977
  # This functionality is not supported for Amazon S3 on Outposts.
17024
17978
  #
17025
17979
  # For more information about Amazon S3 Select, see [Selecting Content
17026
- # from Objects][1] and [SELECT Command][2] in the *Amazon S3 User
17980
+ # from Objects][2] and [SELECT Command][3] in the *Amazon S3 User
17027
17981
  # Guide*.
17028
17982
  #
17029
17983
  #
@@ -17033,7 +17987,7 @@ module Aws::S3
17033
17987
  # : You must have the `s3:GetObject` permission for this
17034
17988
  # operation. Amazon S3 Select does not support anonymous access. For
17035
17989
  # more information about permissions, see [Specifying Permissions in a
17036
- # Policy][3] in the *Amazon S3 User Guide*.
17990
+ # Policy][4] in the *Amazon S3 User Guide*.
17037
17991
  #
17038
17992
  # Object Data Formats
17039
17993
  #
@@ -17058,31 +18012,31 @@ module Aws::S3
17058
18012
  #
17059
18013
  # For objects that are encrypted with customer-provided encryption
17060
18014
  # keys (SSE-C), you must use HTTPS, and you must use the headers
17061
- # that are documented in the [GetObject][4]. For more information
18015
+ # that are documented in the [GetObject][5]. For more information
17062
18016
  # about SSE-C, see [Server-Side Encryption (Using Customer-Provided
17063
- # Encryption Keys)][5] in the *Amazon S3 User Guide*.
18017
+ # Encryption Keys)][6] in the *Amazon S3 User Guide*.
17064
18018
  #
17065
18019
  # For objects that are encrypted with Amazon S3 managed keys
17066
18020
  # (SSE-S3) and Amazon Web Services KMS keys (SSE-KMS), server-side
17067
18021
  # encryption is handled transparently, so you don't need to specify
17068
18022
  # anything. For more information about server-side encryption,
17069
18023
  # including SSE-S3 and SSE-KMS, see [Protecting Data Using
17070
- # Server-Side Encryption][6] in the *Amazon S3 User Guide*.
18024
+ # Server-Side Encryption][7] in the *Amazon S3 User Guide*.
17071
18025
  #
17072
18026
  # Working with the Response Body
17073
18027
  #
17074
18028
  # : Given the response size is unknown, Amazon S3 Select streams the
17075
18029
  # response as a series of messages and includes a `Transfer-Encoding`
17076
18030
  # header with `chunked` as its value in the response. For more
17077
- # information, see [Appendix: SelectObjectContent Response][7].
18031
+ # information, see [Appendix: SelectObjectContent Response][8].
17078
18032
  #
17079
18033
  # GetObject Support
17080
18034
  #
17081
18035
  # : The `SelectObjectContent` action does not support the following
17082
- # `GetObject` functionality. For more information, see [GetObject][4].
18036
+ # `GetObject` functionality. For more information, see [GetObject][5].
17083
18037
  #
17084
18038
  # * `Range`: Although you can specify a scan range for an Amazon S3
17085
- # Select request (see [SelectObjectContentRequest - ScanRange][8] in
18039
+ # Select request (see [SelectObjectContentRequest - ScanRange][9] in
17086
18040
  # the request parameters), you cannot specify the range of bytes of
17087
18041
  # an object to return.
17088
18042
  #
@@ -17093,36 +18047,37 @@ module Aws::S3
17093
18047
  # storage classes, nor objects in the `ARCHIVE_ACCESS` or
17094
18048
  # `DEEP_ARCHIVE_ACCESS` access tiers of the `INTELLIGENT_TIERING`
17095
18049
  # storage class. For more information about storage classes, see
17096
- # [Using Amazon S3 storage classes][9] in the *Amazon S3 User
18050
+ # [Using Amazon S3 storage classes][10] in the *Amazon S3 User
17097
18051
  # Guide*.
17098
18052
  #
17099
18053
  # Special Errors
17100
18054
  #
17101
18055
  # : For a list of special errors for this operation, see [List of SELECT
17102
- # Object Content Error Codes][10]
18056
+ # Object Content Error Codes][11]
17103
18057
  #
17104
18058
  # The following operations are related to `SelectObjectContent`:
17105
18059
  #
17106
- # * [GetObject][4]
18060
+ # * [GetObject][5]
17107
18061
  #
17108
- # * [GetBucketLifecycleConfiguration][11]
18062
+ # * [GetBucketLifecycleConfiguration][12]
17109
18063
  #
17110
- # * [PutBucketLifecycleConfiguration][12]
18064
+ # * [PutBucketLifecycleConfiguration][13]
17111
18065
  #
17112
18066
  #
17113
18067
  #
17114
- # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/selecting-content-from-objects.html
17115
- # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-glacier-select-sql-reference-select.html
17116
- # [3]: https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html
17117
- # [4]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html
17118
- # [5]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html
17119
- # [6]: https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html
17120
- # [7]: https://docs.aws.amazon.com/AmazonS3/latest/API/RESTSelectObjectAppendix.html
17121
- # [8]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_SelectObjectContent.html#AmazonS3-SelectObjectContent-request-ScanRange
17122
- # [9]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-class-intro.html
17123
- # [10]: https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#SelectObjectContentErrorCodeList
17124
- # [11]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycleConfiguration.html
17125
- # [12]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html
18068
+ # [1]: http://aws.amazon.com/blogs/storage/how-to-optimize-querying-your-data-in-amazon-s3/
18069
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/dev/selecting-content-from-objects.html
18070
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-glacier-select-sql-reference-select.html
18071
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html
18072
+ # [5]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html
18073
+ # [6]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html
18074
+ # [7]: https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html
18075
+ # [8]: https://docs.aws.amazon.com/AmazonS3/latest/API/RESTSelectObjectAppendix.html
18076
+ # [9]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_SelectObjectContent.html#AmazonS3-SelectObjectContent-request-ScanRange
18077
+ # [10]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-class-intro.html
18078
+ # [11]: https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#SelectObjectContentErrorCodeList
18079
+ # [12]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycleConfiguration.html
18080
+ # [13]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html
17126
18081
  #
17127
18082
  # @option params [required, String] :bucket
17128
18083
  # The S3 bucket.
@@ -17206,22 +18161,22 @@ module Aws::S3
17206
18161
  #
17207
18162
  # @example EventStream Operation Example
17208
18163
  #
17209
- # You can process event once it arrives immediately, or wait until
17210
- # full response complete and iterate through eventstream enumerator.
18164
+ # You can process the event once it arrives immediately, or wait until the
18165
+ # full response is complete and iterate through the eventstream enumerator.
17211
18166
  #
17212
18167
  # To interact with event immediately, you need to register #select_object_content
17213
- # with callbacks, callbacks can be register for specifc events or for all events,
17214
- # callback for errors in the event stream is also available for register.
18168
+ # with callbacks. Callbacks can be registered for specific events or for all
18169
+ # events, including error events.
17215
18170
  #
17216
- # Callbacks can be passed in by `:event_stream_handler` option or within block
17217
- # statement attached to #select_object_content call directly. Hybrid pattern of both
17218
- # is also supported.
18171
+ # Callbacks can be passed into the `:event_stream_handler` option or within a
18172
+ # block statement attached to the #select_object_content call directly. Hybrid
18173
+ # pattern of both is also supported.
17219
18174
  #
17220
- # `:event_stream_handler` option takes in either Proc object or
18175
+ # `:event_stream_handler` option takes in either a Proc object or
17221
18176
  # Aws::S3::EventStreams::SelectObjectContentEventStream object.
17222
18177
  #
17223
- # Usage pattern a): callbacks with a block attached to #select_object_content
17224
- # Example for registering callbacks for all event types and error event
18178
+ # Usage pattern a): Callbacks with a block attached to #select_object_content
18179
+ # Example for registering callbacks for all event types and an error event
17225
18180
  #
17226
18181
  # client.select_object_content( # params input# ) do |stream|
17227
18182
  # stream.on_error_event do |event|
@@ -17241,9 +18196,9 @@ module Aws::S3
17241
18196
  #
17242
18197
  # end
17243
18198
  #
17244
- # Usage pattern b): pass in `:event_stream_handler` for #select_object_content
18199
+ # Usage pattern b): Pass in `:event_stream_handler` for #select_object_content
17245
18200
  #
17246
- # 1) create a Aws::S3::EventStreams::SelectObjectContentEventStream object
18201
+ # 1) Create a Aws::S3::EventStreams::SelectObjectContentEventStream object
17247
18202
  # Example for registering callbacks with specific events
17248
18203
  #
17249
18204
  # handler = Aws::S3::EventStreams::SelectObjectContentEventStream.new
@@ -17265,7 +18220,7 @@ module Aws::S3
17265
18220
  #
17266
18221
  # client.select_object_content( # params input #, event_stream_handler: handler)
17267
18222
  #
17268
- # 2) use a Ruby Proc object
18223
+ # 2) Use a Ruby Proc object
17269
18224
  # Example for registering callbacks with specific events
17270
18225
  #
17271
18226
  # handler = Proc.new do |stream|
@@ -17288,7 +18243,7 @@ module Aws::S3
17288
18243
  #
17289
18244
  # client.select_object_content( # params input #, event_stream_handler: handler)
17290
18245
  #
17291
- # Usage pattern c): hybird pattern of a) and b)
18246
+ # Usage pattern c): Hybrid pattern of a) and b)
17292
18247
  #
17293
18248
  # handler = Aws::S3::EventStreams::SelectObjectContentEventStream.new
17294
18249
  # handler.on_records_event do |event|
@@ -17318,8 +18273,7 @@ module Aws::S3
17318
18273
  # end
17319
18274
  # end
17320
18275
  #
17321
- # Besides above usage patterns for process events when they arrive immediately, you can also
17322
- # iterate through events after response complete.
18276
+ # You can also iterate through events after the response complete.
17323
18277
  #
17324
18278
  # Events are available at resp.payload # => Enumerator
17325
18279
  # For parameter input example, please refer to following request syntax
@@ -17470,14 +18424,27 @@ module Aws::S3
17470
18424
  # </note>
17471
18425
  #
17472
18426
  # Permissions
17473
- # : * **General purpose bucket permissions** - For information on the
17474
- # permissions required to use the multipart upload API, see
17475
- # [Multipart Upload and Permissions][6] in the *Amazon S3 User
17476
- # Guide*.
18427
+ # : * **General purpose bucket permissions** - To perform a multipart
18428
+ # upload with encryption using an Key Management Service key, the
18429
+ # requester must have permission to the `kms:Decrypt` and
18430
+ # `kms:GenerateDataKey` actions on the key. The requester must also
18431
+ # have permissions for the `kms:GenerateDataKey` action for the
18432
+ # `CreateMultipartUpload` API. Then, the requester needs permissions
18433
+ # for the `kms:Decrypt` action on the `UploadPart` and
18434
+ # `UploadPartCopy` APIs.
18435
+ #
18436
+ # These permissions are required because Amazon S3 must decrypt and
18437
+ # read data from the encrypted file parts before it completes the
18438
+ # multipart upload. For more information about KMS permissions, see
18439
+ # [Protecting data using server-side encryption with KMS][6] in the
18440
+ # *Amazon S3 User Guide*. For information about the permissions
18441
+ # required to use the multipart upload API, see [Multipart upload
18442
+ # and permissions][7] and [Multipart upload API and permissions][8]
18443
+ # in the *Amazon S3 User Guide*.
17477
18444
  #
17478
18445
  # * **Directory bucket permissions** - To grant access to this API
17479
18446
  # operation on a directory bucket, we recommend that you use the [
17480
- # `CreateSession` ][7] API operation for session-based
18447
+ # `CreateSession` ][9] API operation for session-based
17481
18448
  # authorization. Specifically, you grant the
17482
18449
  # `s3express:CreateSession` permission to the directory bucket in a
17483
18450
  # bucket policy or an IAM identity-based policy. Then, you make the
@@ -17488,7 +18455,11 @@ module Aws::S3
17488
18455
  # token for use. Amazon Web Services CLI or SDKs create session and
17489
18456
  # refresh the session token automatically to avoid service
17490
18457
  # interruptions when a session expires. For more information about
17491
- # authorization, see [ `CreateSession` ][7].
18458
+ # authorization, see [ `CreateSession` ][9].
18459
+ #
18460
+ # If the object is encrypted with SSE-KMS, you must also have the
18461
+ # `kms:GenerateDataKey` and `kms:Decrypt` permissions in IAM
18462
+ # identity-based policies and KMS key policies for the KMS key.
17492
18463
  #
17493
18464
  # Data integrity
17494
18465
  #
@@ -17500,7 +18471,7 @@ module Aws::S3
17500
18471
  # then Amazon Web Services S3 uses the `x-amz-content-sha256` header
17501
18472
  # as a checksum instead of `Content-MD5`. For more information see
17502
18473
  # [Authenticating Requests: Using the Authorization Header (Amazon Web
17503
- # Services Signature Version 4)][8].
18474
+ # Services Signature Version 4)][10].
17504
18475
  #
17505
18476
  # <note markdown="1"> **Directory buckets** - MD5 is not supported by directory buckets.
17506
18477
  # You can use checksum algorithms to check object integrity.
@@ -17541,12 +18512,13 @@ module Aws::S3
17541
18512
  #
17542
18513
  # * x-amz-server-side-encryption-customer-key-MD5
17543
18514
  #
17544
- # * **Directory bucket** - For directory buckets, only server-side
17545
- # encryption with Amazon S3 managed keys (SSE-S3) (`AES256`) is
17546
- # supported.
18515
+ # For more information, see [Using Server-Side Encryption][11] in
18516
+ # the *Amazon S3 User Guide*.
17547
18517
  #
17548
- # For more information, see [Using Server-Side Encryption][9] in the
17549
- # *Amazon S3 User Guide*.
18518
+ # * <b>Directory buckets </b> - For directory buckets, there are only
18519
+ # two supported options for server-side encryption: server-side
18520
+ # encryption with Amazon S3 managed keys (SSE-S3) (`AES256`) and
18521
+ # server-side encryption with KMS keys (SSE-KMS) (`aws:kms`).
17550
18522
  #
17551
18523
  # Special errors
17552
18524
  # : * Error Code: `NoSuchUpload`
@@ -17568,13 +18540,13 @@ module Aws::S3
17568
18540
  #
17569
18541
  # * [CreateMultipartUpload][2]
17570
18542
  #
17571
- # * [CompleteMultipartUpload][10]
18543
+ # * [CompleteMultipartUpload][12]
17572
18544
  #
17573
- # * [AbortMultipartUpload][11]
18545
+ # * [AbortMultipartUpload][13]
17574
18546
  #
17575
- # * [ListParts][12]
18547
+ # * [ListParts][14]
17576
18548
  #
17577
- # * [ListMultipartUploads][13]
18549
+ # * [ListMultipartUploads][15]
17578
18550
  #
17579
18551
  #
17580
18552
  #
@@ -17583,14 +18555,16 @@ module Aws::S3
17583
18555
  # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/qfacts.html
17584
18556
  # [4]: https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html
17585
18557
  # [5]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-Regions-and-Zones.html
17586
- # [6]: https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html
17587
- # [7]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html
17588
- # [8]: https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-auth-using-authorization-header.html
17589
- # [9]: https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html
17590
- # [10]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html
17591
- # [11]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html
17592
- # [12]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html
17593
- # [13]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html
18558
+ # [6]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html
18559
+ # [7]: https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html
18560
+ # [8]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html#mpuAndPermissions
18561
+ # [9]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html
18562
+ # [10]: https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-auth-using-authorization-header.html
18563
+ # [11]: https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html
18564
+ # [12]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html
18565
+ # [13]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html
18566
+ # [14]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html
18567
+ # [15]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html
17594
18568
  #
17595
18569
  # @option params [String, StringIO, File] :body
17596
18570
  # Object data.
@@ -17923,9 +18897,21 @@ module Aws::S3
17923
18897
  # have the <b> <code>s3:PutObject</code> </b> permission to write
17924
18898
  # the object copy to the destination bucket.
17925
18899
  #
17926
- # For information about permissions required to use the multipart
17927
- # upload API, see [Multipart Upload and Permissions][7] in the
17928
- # *Amazon S3 User Guide*.
18900
+ # * To perform a multipart upload with encryption using an Key
18901
+ # Management Service key, the requester must have permission to
18902
+ # the `kms:Decrypt` and `kms:GenerateDataKey` actions on the key.
18903
+ # The requester must also have permissions for the
18904
+ # `kms:GenerateDataKey` action for the `CreateMultipartUpload`
18905
+ # API. Then, the requester needs permissions for the `kms:Decrypt`
18906
+ # action on the `UploadPart` and `UploadPartCopy` APIs. These
18907
+ # permissions are required because Amazon S3 must decrypt and read
18908
+ # data from the encrypted file parts before it completes the
18909
+ # multipart upload. For more information about KMS permissions,
18910
+ # see [Protecting data using server-side encryption with KMS][7]
18911
+ # in the *Amazon S3 User Guide*. For information about the
18912
+ # permissions required to use the multipart upload API, see
18913
+ # [Multipart upload and permissions][8] and [Multipart upload API
18914
+ # and permissions][9] in the *Amazon S3 User Guide*.
17929
18915
  #
17930
18916
  # * **Directory bucket permissions** - You must have permissions in a
17931
18917
  # bucket policy or an IAM identity-based policy based on the source
@@ -17934,9 +18920,9 @@ module Aws::S3
17934
18920
  # * If the source object that you want to copy is in a directory
17935
18921
  # bucket, you must have the <b>
17936
18922
  # <code>s3express:CreateSession</code> </b> permission in the
17937
- # `Action` element of a policy to read the object . By default,
17938
- # the session is in the `ReadWrite` mode. If you want to restrict
17939
- # the access, you can explicitly set the `s3express:SessionMode`
18923
+ # `Action` element of a policy to read the object. By default, the
18924
+ # session is in the `ReadWrite` mode. If you want to restrict the
18925
+ # access, you can explicitly set the `s3express:SessionMode`
17940
18926
  # condition key to `ReadOnly` on the copy source bucket.
17941
18927
  #
17942
18928
  # * If the copy destination is a directory bucket, you must have the
@@ -17945,20 +18931,41 @@ module Aws::S3
17945
18931
  # destination. The `s3express:SessionMode` condition key cannot be
17946
18932
  # set to `ReadOnly` on the copy destination.
17947
18933
  #
18934
+ # If the object is encrypted with SSE-KMS, you must also have the
18935
+ # `kms:GenerateDataKey` and `kms:Decrypt` permissions in IAM
18936
+ # identity-based policies and KMS key policies for the KMS key.
18937
+ #
17948
18938
  # For example policies, see [Example bucket policies for S3 Express
17949
- # One Zone][8] and [Amazon Web Services Identity and Access
18939
+ # One Zone][10] and [Amazon Web Services Identity and Access
17950
18940
  # Management (IAM) identity-based policies for S3 Express One
17951
- # Zone][9] in the *Amazon S3 User Guide*.
18941
+ # Zone][11] in the *Amazon S3 User Guide*.
17952
18942
  #
17953
18943
  # Encryption
17954
18944
  # : * <b>General purpose buckets </b> - For information about using
17955
18945
  # server-side encryption with customer-provided encryption keys with
17956
- # the `UploadPartCopy` operation, see [CopyObject][10] and
18946
+ # the `UploadPartCopy` operation, see [CopyObject][12] and
17957
18947
  # [UploadPart][2].
17958
18948
  #
17959
- # * <b>Directory buckets </b> - For directory buckets, only
17960
- # server-side encryption with Amazon S3 managed keys (SSE-S3)
17961
- # (`AES256`) is supported.
18949
+ # * <b>Directory buckets </b> - For directory buckets, there are only
18950
+ # two supported options for server-side encryption: server-side
18951
+ # encryption with Amazon S3 managed keys (SSE-S3) (`AES256`) and
18952
+ # server-side encryption with KMS keys (SSE-KMS) (`aws:kms`). For
18953
+ # more information, see [Protecting data with server-side
18954
+ # encryption][13] in the *Amazon S3 User Guide*.
18955
+ #
18956
+ # <note markdown="1"> For directory buckets, when you perform a `CreateMultipartUpload`
18957
+ # operation and an `UploadPartCopy` operation, the request headers
18958
+ # you provide in the `CreateMultipartUpload` request must match the
18959
+ # default encryption configuration of the destination bucket.
18960
+ #
18961
+ # </note>
18962
+ #
18963
+ # S3 Bucket Keys aren't supported, when you copy SSE-KMS encrypted
18964
+ # objects from general purpose buckets to directory buckets, from
18965
+ # directory buckets to general purpose buckets, or between directory
18966
+ # buckets, through [UploadPartCopy][14]. In this case, Amazon S3
18967
+ # makes a call to KMS every time a copy request is made for a
18968
+ # KMS-encrypted object.
17962
18969
  #
17963
18970
  # Special errors
17964
18971
  # : * Error Code: `NoSuchUpload`
@@ -17983,17 +18990,17 @@ module Aws::S3
17983
18990
  #
17984
18991
  # The following operations are related to `UploadPartCopy`:
17985
18992
  #
17986
- # * [CreateMultipartUpload][11]
18993
+ # * [CreateMultipartUpload][15]
17987
18994
  #
17988
18995
  # * [UploadPart][2]
17989
18996
  #
17990
- # * [CompleteMultipartUpload][12]
18997
+ # * [CompleteMultipartUpload][16]
17991
18998
  #
17992
- # * [AbortMultipartUpload][13]
18999
+ # * [AbortMultipartUpload][17]
17993
19000
  #
17994
- # * [ListParts][14]
19001
+ # * [ListParts][18]
17995
19002
  #
17996
- # * [ListMultipartUploads][15]
19003
+ # * [ListMultipartUploads][19]
17997
19004
  #
17998
19005
  #
17999
19006
  #
@@ -18003,15 +19010,19 @@ module Aws::S3
18003
19010
  # [4]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectOperations.html
18004
19011
  # [5]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-Regions-and-Zones.html
18005
19012
  # [6]: https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html
18006
- # [7]: https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html
18007
- # [8]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam-example-bucket-policies.html
18008
- # [9]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam-identity-policies.html
18009
- # [10]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
18010
- # [11]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html
18011
- # [12]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html
18012
- # [13]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html
18013
- # [14]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html
18014
- # [15]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html
19013
+ # [7]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html
19014
+ # [8]: https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html
19015
+ # [9]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html#mpuAndPermissions
19016
+ # [10]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam-example-bucket-policies.html
19017
+ # [11]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam-identity-policies.html
19018
+ # [12]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
19019
+ # [13]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html
19020
+ # [14]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
19021
+ # [15]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html
19022
+ # [16]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html
19023
+ # [17]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html
19024
+ # [18]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html
19025
+ # [19]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html
18015
19026
  #
18016
19027
  # @option params [required, String] :bucket
18017
19028
  # The bucket name.
@@ -18297,45 +19308,45 @@ module Aws::S3
18297
19308
  # * {Types::UploadPartCopyOutput#request_charged #request_charged} => String
18298
19309
  #
18299
19310
  #
18300
- # @example Example: To upload a part by copying data from an existing object as data source
19311
+ # @example Example: To upload a part by copying byte range from an existing object as data source
18301
19312
  #
18302
- # # The following example uploads a part of a multipart upload by copying data from an existing object as data source.
19313
+ # # The following example uploads a part of a multipart upload by copying a specified byte range from an existing object as
19314
+ # # data source.
18303
19315
  #
18304
19316
  # resp = client.upload_part_copy({
18305
19317
  # bucket: "examplebucket",
18306
19318
  # copy_source: "/bucketname/sourceobjectkey",
19319
+ # copy_source_range: "bytes=1-100000",
18307
19320
  # key: "examplelargeobject",
18308
- # part_number: 1,
19321
+ # part_number: 2,
18309
19322
  # upload_id: "exampleuoh_10OhKhT7YukE9bjzTPRiuaCotmZM_pFngJFir9OZNrSr5cWa3cq3LZSUsfjI4FI7PkP91We7Nrw--",
18310
19323
  # })
18311
19324
  #
18312
19325
  # resp.to_h outputs the following:
18313
19326
  # {
18314
19327
  # copy_part_result: {
18315
- # etag: "\"b0c6f0e7e054ab8fa2536a2677f8734d\"",
18316
- # last_modified: Time.parse("2016-12-29T21:24:43.000Z"),
19328
+ # etag: "\"65d16d19e65a7508a51f043180edcc36\"",
19329
+ # last_modified: Time.parse("2016-12-29T21:44:28.000Z"),
18317
19330
  # },
18318
19331
  # }
18319
19332
  #
18320
- # @example Example: To upload a part by copying byte range from an existing object as data source
19333
+ # @example Example: To upload a part by copying data from an existing object as data source
18321
19334
  #
18322
- # # The following example uploads a part of a multipart upload by copying a specified byte range from an existing object as
18323
- # # data source.
19335
+ # # The following example uploads a part of a multipart upload by copying data from an existing object as data source.
18324
19336
  #
18325
19337
  # resp = client.upload_part_copy({
18326
19338
  # bucket: "examplebucket",
18327
19339
  # copy_source: "/bucketname/sourceobjectkey",
18328
- # copy_source_range: "bytes=1-100000",
18329
19340
  # key: "examplelargeobject",
18330
- # part_number: 2,
19341
+ # part_number: 1,
18331
19342
  # upload_id: "exampleuoh_10OhKhT7YukE9bjzTPRiuaCotmZM_pFngJFir9OZNrSr5cWa3cq3LZSUsfjI4FI7PkP91We7Nrw--",
18332
19343
  # })
18333
19344
  #
18334
19345
  # resp.to_h outputs the following:
18335
19346
  # {
18336
19347
  # copy_part_result: {
18337
- # etag: "\"65d16d19e65a7508a51f043180edcc36\"",
18338
- # last_modified: Time.parse("2016-12-29T21:44:28.000Z"),
19348
+ # etag: "\"b0c6f0e7e054ab8fa2536a2677f8734d\"",
19349
+ # last_modified: Time.parse("2016-12-29T21:24:43.000Z"),
18339
19350
  # },
18340
19351
  # }
18341
19352
  #
@@ -18785,14 +19796,19 @@ module Aws::S3
18785
19796
  # @api private
18786
19797
  def build_request(operation_name, params = {})
18787
19798
  handlers = @handlers.for(operation_name)
19799
+ tracer = config.telemetry_provider.tracer_provider.tracer(
19800
+ Aws::Telemetry.module_to_tracer_name('Aws::S3')
19801
+ )
18788
19802
  context = Seahorse::Client::RequestContext.new(
18789
19803
  operation_name: operation_name,
18790
19804
  operation: config.api.operation(operation_name),
18791
19805
  client: self,
18792
19806
  params: params,
18793
- config: config)
19807
+ config: config,
19808
+ tracer: tracer
19809
+ )
18794
19810
  context[:gem_name] = 'aws-sdk-s3'
18795
- context[:gem_version] = '1.147.0'
19811
+ context[:gem_version] = '1.163.0'
18796
19812
  Seahorse::Client::Request.new(handlers, context)
18797
19813
  end
18798
19814