aws-sdk-s3 1.147.0 → 1.163.0

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