aws-sdk-s3 1.147.0 → 1.167.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 (70) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +123 -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 +224 -81
  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 +42 -5
  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 +8 -8
  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 +1744 -695
  20. data/lib/aws-sdk-s3/client_api.rb +44 -4
  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 +11 -5
  24. data/lib/aws-sdk-s3/customizations/object_summary.rb +5 -0
  25. data/lib/aws-sdk-s3/customizations/object_version.rb +13 -0
  26. data/lib/aws-sdk-s3/customizations.rb +24 -35
  27. data/lib/aws-sdk-s3/encryption/client.rb +2 -2
  28. data/lib/aws-sdk-s3/encryption/kms_cipher_provider.rb +2 -2
  29. data/lib/aws-sdk-s3/encryptionV2/client.rb +2 -2
  30. data/lib/aws-sdk-s3/encryptionV2/kms_cipher_provider.rb +2 -2
  31. data/lib/aws-sdk-s3/endpoint_parameters.rb +8 -0
  32. data/lib/aws-sdk-s3/endpoint_provider.rb +1 -0
  33. data/lib/aws-sdk-s3/endpoints.rb +199 -397
  34. data/lib/aws-sdk-s3/errors.rb +3 -0
  35. data/lib/aws-sdk-s3/express_credentials_provider.rb +27 -4
  36. data/lib/aws-sdk-s3/file_downloader.rb +1 -1
  37. data/lib/aws-sdk-s3/file_uploader.rb +1 -1
  38. data/lib/aws-sdk-s3/multipart_stream_uploader.rb +1 -1
  39. data/lib/aws-sdk-s3/multipart_upload.rb +31 -8
  40. data/lib/aws-sdk-s3/multipart_upload_part.rb +11 -11
  41. data/lib/aws-sdk-s3/object.rb +411 -151
  42. data/lib/aws-sdk-s3/object_acl.rb +3 -3
  43. data/lib/aws-sdk-s3/object_copier.rb +1 -1
  44. data/lib/aws-sdk-s3/object_multipart_copier.rb +10 -8
  45. data/lib/aws-sdk-s3/object_summary.rb +373 -127
  46. data/lib/aws-sdk-s3/object_version.rb +53 -13
  47. data/lib/aws-sdk-s3/plugins/access_grants.rb +178 -0
  48. data/lib/aws-sdk-s3/plugins/endpoints.rb +23 -8
  49. data/lib/aws-sdk-s3/plugins/express_session_auth.rb +8 -2
  50. data/lib/aws-sdk-s3/plugins/http_200_errors.rb +53 -16
  51. data/lib/aws-sdk-s3/plugins/s3_signer.rb +7 -2
  52. data/lib/aws-sdk-s3/presigner.rb +1 -0
  53. data/lib/aws-sdk-s3/resource.rb +12 -10
  54. data/lib/aws-sdk-s3/types.rb +1082 -399
  55. data/lib/aws-sdk-s3.rb +35 -31
  56. data/sig/bucket.rbs +1 -0
  57. data/sig/bucket_lifecycle_configuration.rbs +7 -3
  58. data/sig/client.rbs +48 -5
  59. data/sig/customizations/bucket.rbs +19 -0
  60. data/sig/customizations/object.rbs +38 -0
  61. data/sig/customizations/object_summary.rbs +35 -0
  62. data/sig/multipart_upload.rbs +1 -0
  63. data/sig/object.rbs +7 -0
  64. data/sig/object_summary.rbs +1 -0
  65. data/sig/object_version.rbs +6 -0
  66. data/sig/resource.rbs +7 -1
  67. data/sig/types.rbs +32 -2
  68. data/sig/waiters.rbs +12 -0
  69. metadata +13 -7
  70. 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'
@@ -54,8 +57,6 @@ require 'aws-sdk-s3/plugins/streaming_retry.rb'
54
57
  require 'aws-sdk-s3/plugins/url_encoded_keys.rb'
55
58
  require 'aws-sdk-core/plugins/event_stream_configuration.rb'
56
59
 
57
- Aws::Plugins::GlobalConfiguration.add_identifier(:s3)
58
-
59
60
  module Aws::S3
60
61
  # An API client for S3. To construct a client, you need to configure a `:region` and `:credentials`.
61
62
  #
@@ -92,6 +93,7 @@ module Aws::S3
92
93
  add_plugin(Aws::Plugins::ResponsePaging)
93
94
  add_plugin(Aws::Plugins::StubResponses)
94
95
  add_plugin(Aws::Plugins::IdempotencyToken)
96
+ add_plugin(Aws::Plugins::InvocationId)
95
97
  add_plugin(Aws::Plugins::JsonvalueConverter)
96
98
  add_plugin(Aws::Plugins::ClientMetricsPlugin)
97
99
  add_plugin(Aws::Plugins::ClientMetricsSendPlugin)
@@ -101,9 +103,11 @@ module Aws::S3
101
103
  add_plugin(Aws::Plugins::RequestCompression)
102
104
  add_plugin(Aws::Plugins::DefaultsMode)
103
105
  add_plugin(Aws::Plugins::RecursionDetection)
106
+ add_plugin(Aws::Plugins::Telemetry)
104
107
  add_plugin(Aws::Plugins::Sign)
105
108
  add_plugin(Aws::Plugins::Protocols::RestXml)
106
109
  add_plugin(Aws::S3::Plugins::Accelerate)
110
+ add_plugin(Aws::S3::Plugins::AccessGrants)
107
111
  add_plugin(Aws::S3::Plugins::ARN)
108
112
  add_plugin(Aws::S3::Plugins::BucketDns)
109
113
  add_plugin(Aws::S3::Plugins::BucketNameRestrictions)
@@ -127,6 +131,11 @@ module Aws::S3
127
131
 
128
132
  # @overload initialize(options)
129
133
  # @param [Hash] options
134
+ #
135
+ # @option options [Array<Seahorse::Client::Plugin>] :plugins ([]])
136
+ # A list of plugins to apply to the client. Each plugin is either a
137
+ # class name or an instance of a plugin class.
138
+ #
130
139
  # @option options [required, Aws::CredentialProvider] :credentials
131
140
  # Your AWS credentials. This can be an instance of any one of the
132
141
  # following classes:
@@ -161,13 +170,15 @@ module Aws::S3
161
170
  # locations will be searched for credentials:
162
171
  #
163
172
  # * `Aws.config[:credentials]`
164
- # * The `:access_key_id`, `:secret_access_key`, and `:session_token` options.
165
- # * ENV['AWS_ACCESS_KEY_ID'], ENV['AWS_SECRET_ACCESS_KEY']
173
+ # * The `:access_key_id`, `:secret_access_key`, `:session_token`, and
174
+ # `:account_id` options.
175
+ # * ENV['AWS_ACCESS_KEY_ID'], ENV['AWS_SECRET_ACCESS_KEY'],
176
+ # ENV['AWS_SESSION_TOKEN'], and ENV['AWS_ACCOUNT_ID']
166
177
  # * `~/.aws/credentials`
167
178
  # * `~/.aws/config`
168
179
  # * EC2/ECS IMDS instance profile - When used by default, the timeouts
169
180
  # are very aggressive. Construct and pass an instance of
170
- # `Aws::InstanceProfileCredentails` or `Aws::ECSCredentials` to
181
+ # `Aws::InstanceProfileCredentials` or `Aws::ECSCredentials` to
171
182
  # enable retries and extended timeouts. Instance profile credential
172
183
  # fetching can be disabled by setting ENV['AWS_EC2_METADATA_DISABLED']
173
184
  # to true.
@@ -184,8 +195,20 @@ 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
  #
210
+ # @option options [String] :account_id
211
+ #
189
212
  # @option options [Boolean] :active_endpoint_cache (false)
190
213
  # When set to `true`, a thread polling for endpoints will be running in
191
214
  # the background every 60 secs (default). Defaults to `false`.
@@ -246,10 +269,16 @@ module Aws::S3
246
269
  # @option options [Boolean] :disable_s3_express_session_auth
247
270
  # Parameter to indicate whether S3Express session auth should be disabled
248
271
  #
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.
272
+ # @option options [String, URI::HTTPS, URI::HTTP] :endpoint
273
+ # Normally you should not configure the `:endpoint` option
274
+ # directly. This is normally constructed from the `:region`
275
+ # option. Configuring `:endpoint` is normally reserved for
276
+ # connecting to test or custom endpoints. The endpoint should
277
+ # be a URI formatted like:
278
+ #
279
+ # 'http://example.com'
280
+ # 'https://example.com'
281
+ # 'http://example.com:123'
253
282
  #
254
283
  # @option options [Integer] :endpoint_cache_max_entries (1000)
255
284
  # Used for the maximum size limit of the LRU cache storing endpoints data
@@ -365,7 +394,6 @@ module Aws::S3
365
394
  # throttling. This is a provisional mode that may change behavior
366
395
  # in the future.
367
396
  #
368
- #
369
397
  # @option options [Boolean] :s3_disable_multiregion_access_points (false)
370
398
  # When set to `false` this will option will raise errors when multi-region
371
399
  # access point ARNs are used. Multi-region access points can potentially
@@ -382,13 +410,23 @@ module Aws::S3
382
410
  #
383
411
  # @option options [String] :sdk_ua_app_id
384
412
  # 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.
413
+ # User-Agent header as app/sdk_ua_app_id. It should have a
414
+ # maximum length of 50. This variable is sourced from environment
415
+ # variable AWS_SDK_UA_APP_ID or the shared config profile attribute sdk_ua_app_id.
387
416
  #
388
417
  # @option options [String] :secret_access_key
389
418
  #
390
419
  # @option options [String] :session_token
391
420
  #
421
+ # @option options [Array] :sigv4a_signing_region_set
422
+ # A list of regions that should be signed with SigV4a signing. When
423
+ # not passed, a default `:sigv4a_signing_region_set` is searched for
424
+ # in the following locations:
425
+ #
426
+ # * `Aws.config[:sigv4a_signing_region_set]`
427
+ # * `ENV['AWS_SIGV4A_SIGNING_REGION_SET']`
428
+ # * `~/.aws/config`
429
+ #
392
430
  # @option options [Boolean] :stub_responses (false)
393
431
  # Causes the client to return stubbed responses. By default
394
432
  # fake responses are generated and returned. You can specify
@@ -398,6 +436,16 @@ module Aws::S3
398
436
  # ** Please note ** When response stubbing is enabled, no HTTP
399
437
  # requests are made, and retries are disabled.
400
438
  #
439
+ # @option options [Aws::Telemetry::TelemetryProviderBase] :telemetry_provider (Aws::Telemetry::NoOpTelemetryProvider)
440
+ # Allows you to provide a telemetry provider, which is used to
441
+ # emit telemetry data. By default, uses `NoOpTelemetryProvider` which
442
+ # will not record or emit any telemetry data. The SDK supports the
443
+ # following telemetry providers:
444
+ #
445
+ # * OpenTelemetry (OTel) - To use the OTel provider, install and require the
446
+ # `opentelemetry-sdk` gem and then, pass in an instance of a
447
+ # `Aws::Telemetry::OTelProvider` for telemetry provider.
448
+ #
401
449
  # @option options [Aws::TokenProvider] :token_provider
402
450
  # A Bearer Token Provider. This can be an instance of any one of the
403
451
  # following classes:
@@ -430,52 +478,75 @@ module Aws::S3
430
478
  # sending the request.
431
479
  #
432
480
  # @option options [Aws::S3::EndpointProvider] :endpoint_provider
433
- # 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
- #
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
+ # The endpoint provider used to resolve endpoints. Any object that responds to
482
+ # `#resolve_endpoint(parameters)` where `parameters` is a Struct similar to
483
+ # `Aws::S3::EndpointParameters`.
484
+ #
485
+ # @option options [Float] :http_continue_timeout (1)
486
+ # The number of seconds to wait for a 100-continue response before sending the
487
+ # request body. This option has no effect unless the request has "Expect"
488
+ # header set to "100-continue". Defaults to `nil` which disables this
489
+ # behaviour. This value can safely be set per request on the session.
490
+ #
491
+ # @option options [Float] :http_idle_timeout (5)
492
+ # The number of seconds a connection is allowed to sit idle before it
493
+ # is considered stale. Stale connections are closed and removed from the
494
+ # pool before making a request.
495
+ #
496
+ # @option options [Float] :http_open_timeout (15)
497
+ # The default number of seconds to wait for response data.
498
+ # This value can safely be set per-request on the session.
499
+ #
500
+ # @option options [URI::HTTP,String] :http_proxy
501
+ # A proxy to send requests through. Formatted like 'http://proxy.com:123'.
502
+ #
503
+ # @option options [Float] :http_read_timeout (60)
504
+ # The default number of seconds to wait for response data.
505
+ # This value can safely be set per-request on the session.
506
+ #
507
+ # @option options [Boolean] :http_wire_trace (false)
508
+ # When `true`, HTTP debug output will be sent to the `:logger`.
509
+ #
510
+ # @option options [Proc] :on_chunk_received
511
+ # When a Proc object is provided, it will be used as callback when each chunk
512
+ # of the response body is received. It provides three arguments: the chunk,
513
+ # the number of bytes received, and the total number of
514
+ # bytes in the response (or nil if the server did not send a `content-length`).
515
+ #
516
+ # @option options [Proc] :on_chunk_sent
517
+ # When a Proc object is provided, it will be used as callback when each chunk
518
+ # of the request body is sent. It provides three arguments: the chunk,
519
+ # the number of bytes read from the body, and the total number of
520
+ # bytes in the body.
521
+ #
522
+ # @option options [Boolean] :raise_response_errors (true)
523
+ # When `true`, response errors are raised.
524
+ #
525
+ # @option options [String] :ssl_ca_bundle
526
+ # Full path to the SSL certificate authority bundle file that should be used when
527
+ # verifying peer certificates. If you do not pass `:ssl_ca_bundle` or
528
+ # `:ssl_ca_directory` the the system default will be used if available.
529
+ #
530
+ # @option options [String] :ssl_ca_directory
531
+ # Full path of the directory that contains the unbundled SSL certificate
532
+ # authority files for verifying peer certificates. If you do
533
+ # not pass `:ssl_ca_bundle` or `:ssl_ca_directory` the the system
534
+ # default will be used if available.
450
535
  #
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.
536
+ # @option options [String] :ssl_ca_store
537
+ # Sets the X509::Store to verify peer certificate.
457
538
  #
458
- # @option options [Float] :ssl_timeout (nil) Sets the SSL timeout
459
- # in seconds.
539
+ # @option options [OpenSSL::X509::Certificate] :ssl_cert
540
+ # Sets a client certificate when creating http connections.
460
541
  #
461
- # @option options [Boolean] :http_wire_trace (false) When `true`,
462
- # HTTP debug output will be sent to the `:logger`.
542
+ # @option options [OpenSSL::PKey] :ssl_key
543
+ # Sets a client key when creating http connections.
463
544
  #
464
- # @option options [Boolean] :ssl_verify_peer (true) When `true`,
465
- # SSL peer certificates are verified when establishing a
466
- # connection.
545
+ # @option options [Float] :ssl_timeout
546
+ # Sets the SSL timeout in seconds
467
547
  #
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.
548
+ # @option options [Boolean] :ssl_verify_peer (true)
549
+ # When `true`, SSL peer certificates are verified when establishing a connection.
479
550
  #
480
551
  def initialize(*args)
481
552
  super
@@ -495,12 +566,20 @@ module Aws::S3
495
566
  # for the part storage, you should call the [ListParts][1] API operation
496
567
  # and ensure that the parts list is empty.
497
568
  #
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*.
569
+ # <note markdown="1"> * **Directory buckets** - If multipart uploads in a directory bucket
570
+ # are in progress, you can't delete the bucket until all the
571
+ # in-progress multipart uploads are aborted or completed. To delete
572
+ # these in-progress multipart uploads, use the `ListMultipartUploads`
573
+ # operation to list the in-progress multipart uploads in the bucket
574
+ # and use the `AbortMultupartUpload` operation to abort all the
575
+ # in-progress multipart uploads.
576
+ #
577
+ # * **Directory buckets** - For directory buckets, you must make
578
+ # requests for this API operation to the Zonal endpoint. These
579
+ # endpoints support virtual-hosted-style requests in the format
580
+ # `https://bucket_name.s3express-az_id.region.amazonaws.com/key-name
581
+ # `. Path-style requests are not supported. For more information, see
582
+ # [Regional and Zonal endpoints][2] in the *Amazon S3 User Guide*.
504
583
  #
505
584
  # </note>
506
585
  #
@@ -725,9 +804,15 @@ module Aws::S3
725
804
  # [Multipart Upload and Permissions][6] in the *Amazon S3 User
726
805
  # Guide*.
727
806
  #
807
+ # If you provide an [additional checksum value][7] in your
808
+ # `MultipartUpload` requests and the object is encrypted with Key
809
+ # Management Service, you must have permission to use the
810
+ # `kms:Decrypt` action for the `CompleteMultipartUpload` request to
811
+ # succeed.
812
+ #
728
813
  # * **Directory bucket permissions** - To grant access to this API
729
814
  # operation on a directory bucket, we recommend that you use the [
730
- # `CreateSession` ][7] API operation for session-based
815
+ # `CreateSession` ][8] API operation for session-based
731
816
  # authorization. Specifically, you grant the
732
817
  # `s3express:CreateSession` permission to the directory bucket in a
733
818
  # bucket policy or an IAM identity-based policy. Then, you make the
@@ -738,7 +823,11 @@ module Aws::S3
738
823
  # token for use. Amazon Web Services CLI or SDKs create session and
739
824
  # refresh the session token automatically to avoid service
740
825
  # interruptions when a session expires. For more information about
741
- # authorization, see [ `CreateSession` ][7].
826
+ # authorization, see [ `CreateSession` ][8].
827
+ #
828
+ # If the object is encrypted with SSE-KMS, you must also have the
829
+ # `kms:GenerateDataKey` and `kms:Decrypt` permissions in IAM
830
+ # identity-based policies and KMS key policies for the KMS key.
742
831
  #
743
832
  # Special errors
744
833
  # : * Error Code: `EntityTooSmall`
@@ -779,15 +868,15 @@ module Aws::S3
779
868
  #
780
869
  # The following operations are related to `CompleteMultipartUpload`:
781
870
  #
782
- # * [CreateMultipartUpload][8]
871
+ # * [CreateMultipartUpload][9]
783
872
  #
784
873
  # * [UploadPart][1]
785
874
  #
786
- # * [AbortMultipartUpload][9]
875
+ # * [AbortMultipartUpload][10]
787
876
  #
788
- # * [ListParts][10]
877
+ # * [ListParts][11]
789
878
  #
790
- # * [ListMultipartUploads][11]
879
+ # * [ListMultipartUploads][12]
791
880
  #
792
881
  #
793
882
  #
@@ -797,11 +886,12 @@ module Aws::S3
797
886
  # [4]: https://docs.aws.amazon.com/AmazonS3/latest/dev/uploadobjusingmpu.html
798
887
  # [5]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-Regions-and-Zones.html
799
888
  # [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
889
+ # [7]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_Checksum.html
890
+ # [8]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html
891
+ # [9]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html
892
+ # [10]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html
893
+ # [11]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html
894
+ # [12]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html
805
895
  #
806
896
  # @option params [required, String] :bucket
807
897
  # Name of the bucket to which the multipart upload was initiated.
@@ -859,9 +949,9 @@ module Aws::S3
859
949
  # @option params [String] :checksum_crc32
860
950
  # This header can be used as a data integrity check to verify that the
861
951
  # data received is the same data that was originally sent. This header
862
- # specifies the base64-encoded, 32-bit CRC32 checksum of the object. For
863
- # more information, see [Checking object integrity][1] in the *Amazon S3
864
- # User Guide*.
952
+ # specifies the base64-encoded, 32-bit CRC-32 checksum of the object.
953
+ # For more information, see [Checking object integrity][1] in the
954
+ # *Amazon S3 User Guide*.
865
955
  #
866
956
  #
867
957
  #
@@ -870,7 +960,7 @@ module Aws::S3
870
960
  # @option params [String] :checksum_crc32c
871
961
  # This header can be used as a data integrity check to verify that the
872
962
  # data received is the same data that was originally sent. This header
873
- # specifies the base64-encoded, 32-bit CRC32C checksum of the object.
963
+ # specifies the base64-encoded, 32-bit CRC-32C checksum of the object.
874
964
  # For more information, see [Checking object integrity][1] in the
875
965
  # *Amazon S3 User Guide*.
876
966
  #
@@ -922,6 +1012,26 @@ module Aws::S3
922
1012
  # you provide does not match the actual owner of the bucket, the request
923
1013
  # fails with the HTTP status code `403 Forbidden` (access denied).
924
1014
  #
1015
+ # @option params [String] :if_none_match
1016
+ # Uploads the object only if the object key name does not already exist
1017
+ # in the bucket specified. Otherwise, Amazon S3 returns a `412
1018
+ # Precondition Failed` error.
1019
+ #
1020
+ # If a conflicting operation occurs during the upload S3 returns a `409
1021
+ # ConditionalRequestConflict` response. On a 409 failure you should
1022
+ # re-initiate the multipart upload with `CreateMultipartUpload` and
1023
+ # re-upload each part.
1024
+ #
1025
+ # Expects the '*' (asterisk) character.
1026
+ #
1027
+ # For more information about conditional requests, see [RFC 7232][1], or
1028
+ # [Conditional requests][2] in the *Amazon S3 User Guide*.
1029
+ #
1030
+ #
1031
+ #
1032
+ # [1]: https://tools.ietf.org/html/rfc7232
1033
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/conditional-requests.html
1034
+ #
925
1035
  # @option params [String] :sse_customer_algorithm
926
1036
  # The server-side encryption (SSE) algorithm used to encrypt the object.
927
1037
  # This parameter is required only when the object was created using a
@@ -1037,6 +1147,7 @@ module Aws::S3
1037
1147
  # checksum_sha256: "ChecksumSHA256",
1038
1148
  # request_payer: "requester", # accepts requester
1039
1149
  # expected_bucket_owner: "AccountId",
1150
+ # if_none_match: "IfNoneMatch",
1040
1151
  # sse_customer_algorithm: "SSECustomerAlgorithm",
1041
1152
  # sse_customer_key: "SSECustomerKey",
1042
1153
  # sse_customer_key_md5: "SSECustomerKeyMD5",
@@ -1083,12 +1194,20 @@ module Aws::S3
1083
1194
  # between directory buckets, and between general purpose buckets and
1084
1195
  # directory buckets.
1085
1196
  #
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*.
1197
+ # <note markdown="1"> * Amazon S3 supports copy operations using Multi-Region Access Points
1198
+ # only as a destination when using the Multi-Region Access Point ARN.
1199
+ #
1200
+ # * <b>Directory buckets </b> - For directory buckets, you must make
1201
+ # requests for this API operation to the Zonal endpoint. These
1202
+ # endpoints support virtual-hosted-style requests in the format
1203
+ # `https://bucket_name.s3express-az_id.region.amazonaws.com/key-name
1204
+ # `. Path-style requests are not supported. For more information, see
1205
+ # [Regional and Zonal endpoints][2] in the *Amazon S3 User Guide*.
1206
+ #
1207
+ # * VPC endpoints don't support cross-Region requests (including
1208
+ # copies). If you're using VPC endpoints, your source and destination
1209
+ # buckets should be in the same Amazon Web Services Region as your VPC
1210
+ # endpoint.
1092
1211
  #
1093
1212
  # </note>
1094
1213
  #
@@ -1154,6 +1273,10 @@ module Aws::S3
1154
1273
  # destination. The `s3express:SessionMode` condition key can't be
1155
1274
  # set to `ReadOnly` on the copy destination bucket.
1156
1275
  #
1276
+ # If the object is encrypted with SSE-KMS, you must also have the
1277
+ # `kms:GenerateDataKey` and `kms:Decrypt` permissions in IAM
1278
+ # identity-based policies and KMS key policies for the KMS key.
1279
+ #
1157
1280
  # For example policies, see [Example bucket policies for S3 Express
1158
1281
  # One Zone][6] and [Amazon Web Services Identity and Access
1159
1282
  # Management (IAM) identity-based policies for S3 Express One
@@ -1164,8 +1287,7 @@ module Aws::S3
1164
1287
  # : When the request is an HTTP 1.1 request, the response is chunk
1165
1288
  # encoded. When the request is not an HTTP 1.1 request, the response
1166
1289
  # 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.
1290
+ # entire response body to check if the copy succeeds.
1169
1291
  #
1170
1292
  # * If the copy is successful, you receive a response with information
1171
1293
  # about the copied object.
@@ -1601,9 +1723,8 @@ module Aws::S3
1601
1723
  #
1602
1724
  # @option params [String] :server_side_encryption
1603
1725
  # 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.
1726
+ # Amazon S3. Unrecognized or unsupported values won’t write a
1727
+ # destination object and will receive a `400 Bad Request` response.
1607
1728
  #
1608
1729
  # Amazon S3 automatically encrypts all new objects that are copied to an
1609
1730
  # S3 bucket. When copying an object, if you don't specify encryption
@@ -1611,35 +1732,72 @@ module Aws::S3
1611
1732
  # object is set to the default encryption configuration of the
1612
1733
  # destination bucket. By default, all buckets have a base level of
1613
1734
  # 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.
1735
+ # S3 managed keys (SSE-S3). If the destination bucket has a different
1736
+ # default encryption configuration, Amazon S3 uses the corresponding
1737
+ # encryption key to encrypt the target object copy.
1629
1738
  #
1630
1739
  # With server-side encryption, Amazon S3 encrypts your data as it writes
1631
1740
  # your data to disks in its data centers and decrypts the data when you
1632
1741
  # access it. For more information about server-side encryption, see
1633
1742
  # [Using Server-Side Encryption][1] in the *Amazon S3 User Guide*.
1634
1743
  #
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>
1744
+ # <b>General purpose buckets </b>
1745
+ #
1746
+ # * For general purpose buckets, there are the following supported
1747
+ # options for server-side encryption: server-side encryption with Key
1748
+ # Management Service (KMS) keys (SSE-KMS), dual-layer server-side
1749
+ # encryption with Amazon Web Services KMS keys (DSSE-KMS), and
1750
+ # server-side encryption with customer-provided encryption keys
1751
+ # (SSE-C). Amazon S3 uses the corresponding KMS key, or a
1752
+ # customer-provided key to encrypt the target object copy.
1753
+ #
1754
+ # * When you perform a `CopyObject` operation, if you want to use a
1755
+ # different type of encryption setting for the target object, you can
1756
+ # specify appropriate encryption-related headers to encrypt the target
1757
+ # object with an Amazon S3 managed key, a KMS key, or a
1758
+ # customer-provided key. If the encryption setting in your request is
1759
+ # different from the default encryption configuration of the
1760
+ # destination bucket, the encryption setting in your request takes
1761
+ # precedence.
1762
+ #
1763
+ # <b>Directory buckets </b>
1764
+ #
1765
+ # * For directory buckets, there are only two supported options for
1766
+ # server-side encryption: server-side encryption with Amazon S3
1767
+ # managed keys (SSE-S3) (`AES256`) and server-side encryption with KMS
1768
+ # keys (SSE-KMS) (`aws:kms`). We recommend that the bucket's default
1769
+ # encryption uses the desired encryption configuration and you don't
1770
+ # override the bucket default encryption in your `CreateSession`
1771
+ # requests or `PUT` object requests. Then, new objects are
1772
+ # automatically encrypted with the desired encryption settings. For
1773
+ # more information, see [Protecting data with server-side
1774
+ # encryption][2] in the *Amazon S3 User Guide*. For more information
1775
+ # about the encryption overriding behaviors in directory buckets, see
1776
+ # [Specifying server-side encryption with KMS for new object
1777
+ # uploads][3].
1778
+ #
1779
+ # * To encrypt new object copies to a directory bucket with SSE-KMS, we
1780
+ # recommend you specify SSE-KMS as the directory bucket's default
1781
+ # encryption configuration with a KMS key (specifically, a [customer
1782
+ # managed key][4]). [Amazon Web Services managed key][5] (`aws/s3`)
1783
+ # isn't supported. Your SSE-KMS configuration can only support 1
1784
+ # [customer managed key][4] per directory bucket for the lifetime of
1785
+ # the bucket. After you specify a customer managed key for SSE-KMS,
1786
+ # you can't override the customer managed key for the bucket's
1787
+ # SSE-KMS configuration. Then, when you perform a `CopyObject`
1788
+ # operation and want to specify server-side encryption settings for
1789
+ # new object copies with SSE-KMS in the encryption-related request
1790
+ # headers, you must ensure the encryption key is the same customer
1791
+ # managed key that you specified for the directory bucket's default
1792
+ # encryption configuration.
1639
1793
  #
1640
1794
  #
1641
1795
  #
1642
1796
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html
1797
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html
1798
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html
1799
+ # [4]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk
1800
+ # [5]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk
1643
1801
  #
1644
1802
  # @option params [String] :storage_class
1645
1803
  # If the `x-amz-storage-class` header is not used, the copied object
@@ -1736,33 +1894,51 @@ module Aws::S3
1736
1894
  # </note>
1737
1895
  #
1738
1896
  # @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.
1897
+ # Specifies the KMS key ID (Key ID, Key ARN, or Key Alias) to use for
1898
+ # object encryption. All GET and PUT requests for an object protected by
1899
+ # KMS will fail if they're not made via SSL or using SigV4. For
1900
+ # information about configuring any of the officially supported Amazon
1901
+ # Web Services SDKs and Amazon Web Services CLI, see [Specifying the
1902
+ # Signature Version in Request Authentication][1] in the *Amazon S3 User
1903
+ # Guide*.
1748
1904
  #
1749
- # </note>
1905
+ # **Directory buckets** - If you specify `x-amz-server-side-encryption`
1906
+ # with `aws:kms`, you must specify the `
1907
+ # x-amz-server-side-encryption-aws-kms-key-id` header with the ID (Key
1908
+ # ID or Key ARN) of the KMS symmetric encryption customer managed key to
1909
+ # use. Otherwise, you get an HTTP `400 Bad Request` error. Only use the
1910
+ # key ID or key ARN. The key alias format of the KMS key isn't
1911
+ # supported. Your SSE-KMS configuration can only support 1 [customer
1912
+ # managed key][2] per directory bucket for the lifetime of the bucket.
1913
+ # [Amazon Web Services managed key][3] (`aws/s3`) isn't supported.
1750
1914
  #
1751
1915
  #
1752
1916
  #
1753
1917
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version
1918
+ # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk
1919
+ # [3]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk
1754
1920
  #
1755
1921
  # @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.
1922
+ # Specifies the Amazon Web Services KMS Encryption Context as an
1923
+ # additional encryption context to use for the destination object
1924
+ # encryption. The value of this header is a base64-encoded UTF-8 string
1925
+ # holding JSON with the encryption context key-value pairs.
1761
1926
  #
1762
- # <note markdown="1"> This functionality is not supported when the destination bucket is a
1763
- # directory bucket.
1927
+ # **General purpose buckets** - This value must be explicitly added to
1928
+ # specify encryption context for `CopyObject` requests if you want an
1929
+ # additional encryption context for your destination object. The
1930
+ # additional encryption context of the source object won't be copied to
1931
+ # the destination object. For more information, see [Encryption
1932
+ # context][1] in the *Amazon S3 User Guide*.
1764
1933
  #
1765
- # </note>
1934
+ # **Directory buckets** - You can optionally provide an explicit
1935
+ # encryption context value. The value must match the default encryption
1936
+ # context - the bucket Amazon Resource Name (ARN). An additional
1937
+ # encryption context value is not supported.
1938
+ #
1939
+ #
1940
+ #
1941
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html#encryption-context
1766
1942
  #
1767
1943
  # @option params [Boolean] :bucket_key_enabled
1768
1944
  # Specifies whether Amazon S3 should use an S3 Bucket Key for object
@@ -1777,14 +1953,19 @@ module Aws::S3
1777
1953
  # For more information, see [Amazon S3 Bucket Keys][1] in the *Amazon S3
1778
1954
  # User Guide*.
1779
1955
  #
1780
- # <note markdown="1"> This functionality is not supported when the destination bucket is a
1781
- # directory bucket.
1956
+ # <note markdown="1"> **Directory buckets** - S3 Bucket Keys aren't supported, when you
1957
+ # copy SSE-KMS encrypted objects from general purpose buckets to
1958
+ # directory buckets, from directory buckets to general purpose buckets,
1959
+ # or between directory buckets, through [CopyObject][2]. In this case,
1960
+ # Amazon S3 makes a call to KMS every time a copy request is made for a
1961
+ # KMS-encrypted object.
1782
1962
  #
1783
1963
  # </note>
1784
1964
  #
1785
1965
  #
1786
1966
  #
1787
1967
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html
1968
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
1788
1969
  #
1789
1970
  # @option params [String] :copy_source_sse_customer_algorithm
1790
1971
  # Specifies the algorithm to use when decrypting the source object (for
@@ -2291,33 +2472,33 @@ module Aws::S3
2291
2472
  # * {Types::CreateBucketOutput#location #location} => String
2292
2473
  #
2293
2474
  #
2294
- # @example Example: To create a bucket
2475
+ # @example Example: To create a bucket in a specific region
2295
2476
  #
2296
- # # The following example creates a bucket.
2477
+ # # The following example creates a bucket. The request specifies an AWS region where to create the bucket.
2297
2478
  #
2298
2479
  # resp = client.create_bucket({
2299
2480
  # bucket: "examplebucket",
2481
+ # create_bucket_configuration: {
2482
+ # location_constraint: "eu-west-1",
2483
+ # },
2300
2484
  # })
2301
2485
  #
2302
2486
  # resp.to_h outputs the following:
2303
2487
  # {
2304
- # location: "/examplebucket",
2488
+ # location: "http://examplebucket.<Region>.s3.amazonaws.com/",
2305
2489
  # }
2306
2490
  #
2307
- # @example Example: To create a bucket in a specific region
2491
+ # @example Example: To create a bucket
2308
2492
  #
2309
- # # The following example creates a bucket. The request specifies an AWS region where to create the bucket.
2493
+ # # The following example creates a bucket.
2310
2494
  #
2311
2495
  # resp = client.create_bucket({
2312
2496
  # bucket: "examplebucket",
2313
- # create_bucket_configuration: {
2314
- # location_constraint: "eu-west-1",
2315
- # },
2316
2497
  # })
2317
2498
  #
2318
2499
  # resp.to_h outputs the following:
2319
2500
  # {
2320
- # location: "http://examplebucket.<Region>.s3.amazonaws.com/",
2501
+ # location: "/examplebucket",
2321
2502
  # }
2322
2503
  #
2323
2504
  # @example Request syntax with placeholder values
@@ -2406,24 +2587,23 @@ module Aws::S3
2406
2587
  # Version 4)][5] in the *Amazon S3 User Guide*.
2407
2588
  #
2408
2589
  # 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*.
2590
+ # : * **General purpose bucket permissions** - To perform a multipart
2591
+ # upload with encryption using an Key Management Service (KMS) KMS
2592
+ # key, the requester must have permission to the `kms:Decrypt` and
2593
+ # `kms:GenerateDataKey` actions on the key. The requester must also
2594
+ # have permissions for the `kms:GenerateDataKey` action for the
2595
+ # `CreateMultipartUpload` API. Then, the requester needs permissions
2596
+ # for the `kms:Decrypt` action on the `UploadPart` and
2597
+ # `UploadPartCopy` APIs. These permissions are required because
2598
+ # Amazon S3 must decrypt and read data from the encrypted file parts
2599
+ # before it completes the multipart upload. For more information,
2600
+ # see [Multipart upload API and permissions][6] and [Protecting data
2601
+ # using server-side encryption with Amazon Web Services KMS][7] in
2602
+ # the *Amazon S3 User Guide*.
2423
2603
  #
2424
2604
  # * **Directory bucket permissions** - To grant access to this API
2425
2605
  # operation on a directory bucket, we recommend that you use the [
2426
- # `CreateSession` ][9] API operation for session-based
2606
+ # `CreateSession` ][8] API operation for session-based
2427
2607
  # authorization. Specifically, you grant the
2428
2608
  # `s3express:CreateSession` permission to the directory bucket in a
2429
2609
  # bucket policy or an IAM identity-based policy. Then, you make the
@@ -2434,7 +2614,7 @@ module Aws::S3
2434
2614
  # token for use. Amazon Web Services CLI or SDKs create session and
2435
2615
  # refresh the session token automatically to avoid service
2436
2616
  # interruptions when a session expires. For more information about
2437
- # authorization, see [ `CreateSession` ][9].
2617
+ # authorization, see [ `CreateSession` ][8].
2438
2618
  #
2439
2619
  # Encryption
2440
2620
  # : * **General purpose buckets** - Server-side encryption is for data
@@ -2461,7 +2641,7 @@ module Aws::S3
2461
2641
  # the destination bucket, the encryption setting in your request
2462
2642
  # takes precedence. If you choose to provide your own encryption
2463
2643
  # key, the request headers you provide in [UploadPart][1] and
2464
- # [UploadPartCopy][10] requests must match the headers you used in
2644
+ # [UploadPartCopy][9] requests must match the headers you used in
2465
2645
  # the `CreateMultipartUpload` request.
2466
2646
  #
2467
2647
  # * Use KMS keys (SSE-KMS) that include the Amazon Web Services
@@ -2487,9 +2667,9 @@ module Aws::S3
2487
2667
  # actions on the key. These permissions are required because
2488
2668
  # Amazon S3 must decrypt and read data from the encrypted file
2489
2669
  # parts before it completes the multipart upload. For more
2490
- # information, see [Multipart upload API and permissions][7] and
2670
+ # information, see [Multipart upload API and permissions][6] and
2491
2671
  # [Protecting data using server-side encryption with Amazon Web
2492
- # Services KMS][8] in the *Amazon S3 User Guide*.
2672
+ # Services KMS][7] in the *Amazon S3 User Guide*.
2493
2673
  #
2494
2674
  # * If your Identity and Access Management (IAM) user or role is
2495
2675
  # in the same Amazon Web Services account as the KMS key, then
@@ -2504,13 +2684,13 @@ module Aws::S3
2504
2684
  # For information about configuring any of the officially
2505
2685
  # supported Amazon Web Services SDKs and Amazon Web Services
2506
2686
  # CLI, see [Specifying the Signature Version in Request
2507
- # Authentication][11] in the *Amazon S3 User Guide*.
2687
+ # Authentication][10] in the *Amazon S3 User Guide*.
2508
2688
  #
2509
2689
  # </note>
2510
2690
  #
2511
2691
  # For more information about server-side encryption with KMS keys
2512
2692
  # (SSE-KMS), see [Protecting Data Using Server-Side Encryption
2513
- # with KMS keys][8] in the *Amazon S3 User Guide*.
2693
+ # with KMS keys][7] in the *Amazon S3 User Guide*.
2514
2694
  #
2515
2695
  # * Use customer-provided encryption keys (SSE-C) – If you want to
2516
2696
  # manage your own encryption keys, provide all the following
@@ -2525,11 +2705,55 @@ module Aws::S3
2525
2705
  # For more information about server-side encryption with
2526
2706
  # customer-provided encryption keys (SSE-C), see [ Protecting data
2527
2707
  # using server-side encryption with customer-provided encryption
2528
- # keys (SSE-C)][12] in the *Amazon S3 User Guide*.
2708
+ # keys (SSE-C)][11] in the *Amazon S3 User Guide*.
2709
+ #
2710
+ # * **Directory buckets** - For directory buckets, there are only two
2711
+ # supported options for server-side encryption: server-side
2712
+ # encryption with Amazon S3 managed keys (SSE-S3) (`AES256`) and
2713
+ # server-side encryption with KMS keys (SSE-KMS) (`aws:kms`). We
2714
+ # recommend that the bucket's default encryption uses the desired
2715
+ # encryption configuration and you don't override the bucket
2716
+ # default encryption in your `CreateSession` requests or `PUT`
2717
+ # object requests. Then, new objects are automatically encrypted
2718
+ # with the desired encryption settings. For more information, see
2719
+ # [Protecting data with server-side encryption][12] in the *Amazon
2720
+ # S3 User Guide*. For more information about the encryption
2721
+ # overriding behaviors in directory buckets, see [Specifying
2722
+ # server-side encryption with KMS for new object uploads][13].
2723
+ #
2724
+ # In the Zonal endpoint API calls (except [CopyObject][14] and
2725
+ # [UploadPartCopy][9]) using the REST API, the encryption request
2726
+ # headers must match the encryption settings that are specified in
2727
+ # the `CreateSession` request. You can't override the values of the
2728
+ # encryption settings (`x-amz-server-side-encryption`,
2729
+ # `x-amz-server-side-encryption-aws-kms-key-id`,
2730
+ # `x-amz-server-side-encryption-context`, and
2731
+ # `x-amz-server-side-encryption-bucket-key-enabled`) that are
2732
+ # specified in the `CreateSession` request. You don't need to
2733
+ # explicitly specify these encryption settings values in Zonal
2734
+ # endpoint API calls, and Amazon S3 will use the encryption settings
2735
+ # values from the `CreateSession` request to protect new objects in
2736
+ # the directory bucket.
2737
+ #
2738
+ # <note markdown="1"> When you use the CLI or the Amazon Web Services SDKs, for
2739
+ # `CreateSession`, the session token refreshes automatically to
2740
+ # avoid service interruptions when a session expires. The CLI or the
2741
+ # Amazon Web Services SDKs use the bucket's default encryption
2742
+ # configuration for the `CreateSession` request. It's not supported
2743
+ # to override the encryption settings values in the `CreateSession`
2744
+ # request. So in the Zonal endpoint API calls (except
2745
+ # [CopyObject][14] and [UploadPartCopy][9]), the encryption request
2746
+ # headers must match the default encryption configuration of the
2747
+ # directory bucket.
2748
+ #
2749
+ # </note>
2750
+ #
2751
+ # <note markdown="1"> For directory buckets, when you perform a `CreateMultipartUpload`
2752
+ # operation and an `UploadPartCopy` operation, the request headers
2753
+ # you provide in the `CreateMultipartUpload` request must match the
2754
+ # default encryption configuration of the destination bucket.
2529
2755
  #
2530
- # * **Directory buckets** -For directory buckets, only server-side
2531
- # encryption with Amazon S3 managed keys (SSE-S3) (`AES256`) is
2532
- # supported.
2756
+ # </note>
2533
2757
  #
2534
2758
  # HTTP Host header syntax
2535
2759
  #
@@ -2540,13 +2764,13 @@ module Aws::S3
2540
2764
  #
2541
2765
  # * [UploadPart][1]
2542
2766
  #
2543
- # * [CompleteMultipartUpload][13]
2767
+ # * [CompleteMultipartUpload][15]
2544
2768
  #
2545
- # * [AbortMultipartUpload][14]
2769
+ # * [AbortMultipartUpload][16]
2546
2770
  #
2547
- # * [ListParts][15]
2771
+ # * [ListParts][17]
2548
2772
  #
2549
- # * [ListMultipartUploads][16]
2773
+ # * [ListMultipartUploads][18]
2550
2774
  #
2551
2775
  #
2552
2776
  #
@@ -2555,17 +2779,19 @@ module Aws::S3
2555
2779
  # [3]: https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config
2556
2780
  # [4]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-Regions-and-Zones.html
2557
2781
  # [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
2782
+ # [6]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html#mpuAndPermissions
2783
+ # [7]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html
2784
+ # [8]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html
2785
+ # [9]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
2786
+ # [10]: https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingAWSSDK.html#specify-signature-version
2787
+ # [11]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/ServerSideEncryptionCustomerKeys.html
2788
+ # [12]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html
2789
+ # [13]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html
2790
+ # [14]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
2791
+ # [15]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html
2792
+ # [16]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html
2793
+ # [17]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html
2794
+ # [18]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html
2569
2795
  #
2570
2796
  # @option params [String] :acl
2571
2797
  # The canned ACL to apply to the object. Amazon S3 supports a set of
@@ -2928,10 +3154,52 @@ module Aws::S3
2928
3154
  # The server-side encryption algorithm used when you store this object
2929
3155
  # in Amazon S3 (for example, `AES256`, `aws:kms`).
2930
3156
  #
2931
- # <note markdown="1"> For directory buckets, only server-side encryption with Amazon S3
2932
- # managed keys (SSE-S3) (`AES256`) is supported.
3157
+ # * <b>Directory buckets </b> - For directory buckets, there are only
3158
+ # two supported options for server-side encryption: server-side
3159
+ # encryption with Amazon S3 managed keys (SSE-S3) (`AES256`) and
3160
+ # server-side encryption with KMS keys (SSE-KMS) (`aws:kms`). We
3161
+ # recommend that the bucket's default encryption uses the desired
3162
+ # encryption configuration and you don't override the bucket default
3163
+ # encryption in your `CreateSession` requests or `PUT` object
3164
+ # requests. Then, new objects are automatically encrypted with the
3165
+ # desired encryption settings. For more information, see [Protecting
3166
+ # data with server-side encryption][1] in the *Amazon S3 User Guide*.
3167
+ # For more information about the encryption overriding behaviors in
3168
+ # directory buckets, see [Specifying server-side encryption with KMS
3169
+ # for new object uploads][2].
3170
+ #
3171
+ # In the Zonal endpoint API calls (except [CopyObject][3] and
3172
+ # [UploadPartCopy][4]) using the REST API, the encryption request
3173
+ # headers must match the encryption settings that are specified in the
3174
+ # `CreateSession` request. You can't override the values of the
3175
+ # encryption settings (`x-amz-server-side-encryption`,
3176
+ # `x-amz-server-side-encryption-aws-kms-key-id`,
3177
+ # `x-amz-server-side-encryption-context`, and
3178
+ # `x-amz-server-side-encryption-bucket-key-enabled`) that are
3179
+ # specified in the `CreateSession` request. You don't need to
3180
+ # explicitly specify these encryption settings values in Zonal
3181
+ # endpoint API calls, and Amazon S3 will use the encryption settings
3182
+ # values from the `CreateSession` request to protect new objects in
3183
+ # the directory bucket.
3184
+ #
3185
+ # <note markdown="1"> When you use the CLI or the Amazon Web Services SDKs, for
3186
+ # `CreateSession`, the session token refreshes automatically to avoid
3187
+ # service interruptions when a session expires. The CLI or the Amazon
3188
+ # Web Services SDKs use the bucket's default encryption configuration
3189
+ # for the `CreateSession` request. It's not supported to override the
3190
+ # encryption settings values in the `CreateSession` request. So in the
3191
+ # Zonal endpoint API calls (except [CopyObject][3] and
3192
+ # [UploadPartCopy][4]), the encryption request headers must match the
3193
+ # default encryption configuration of the directory bucket.
2933
3194
  #
2934
- # </note>
3195
+ # </note>
3196
+ #
3197
+ #
3198
+ #
3199
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html
3200
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html
3201
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
3202
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
2935
3203
  #
2936
3204
  # @option params [String] :storage_class
2937
3205
  # By default, Amazon S3 uses the STANDARD Storage Class to store newly
@@ -2990,34 +3258,71 @@ module Aws::S3
2990
3258
  # </note>
2991
3259
  #
2992
3260
  # @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>
3261
+ # Specifies the KMS key ID (Key ID, Key ARN, or Key Alias) to use for
3262
+ # object encryption. If the KMS key doesn't exist in the same account
3263
+ # that's issuing the command, you must use the full Key ARN not the Key
3264
+ # ID.
3265
+ #
3266
+ # **General purpose buckets** - If you specify
3267
+ # `x-amz-server-side-encryption` with `aws:kms` or `aws:kms:dsse`, this
3268
+ # header specifies the ID (Key ID, Key ARN, or Key Alias) of the KMS key
3269
+ # to use. If you specify `x-amz-server-side-encryption:aws:kms` or
3270
+ # `x-amz-server-side-encryption:aws:kms:dsse`, but do not provide
3271
+ # `x-amz-server-side-encryption-aws-kms-key-id`, Amazon S3 uses the
3272
+ # Amazon Web Services managed key (`aws/s3`) to protect the data.
3273
+ #
3274
+ # **Directory buckets** - If you specify `x-amz-server-side-encryption`
3275
+ # with `aws:kms`, you must specify the `
3276
+ # x-amz-server-side-encryption-aws-kms-key-id` header with the ID (Key
3277
+ # ID or Key ARN) of the KMS symmetric encryption customer managed key to
3278
+ # use. Otherwise, you get an HTTP `400 Bad Request` error. Only use the
3279
+ # key ID or key ARN. The key alias format of the KMS key isn't
3280
+ # supported. Your SSE-KMS configuration can only support 1 [customer
3281
+ # managed key][1] per directory bucket for the lifetime of the bucket.
3282
+ # [Amazon Web Services managed key][2] (`aws/s3`) isn't supported.
3283
+ #
3284
+ #
3285
+ #
3286
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk
3287
+ # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk
2999
3288
  #
3000
3289
  # @option params [String] :ssekms_encryption_context
3001
3290
  # 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.
3291
+ # object encryption. The value of this header is a Base64-encoded string
3292
+ # of a UTF-8 encoded JSON, which contains the encryption context as
3293
+ # key-value pairs.
3006
3294
  #
3007
- # </note>
3295
+ # **Directory buckets** - You can optionally provide an explicit
3296
+ # encryption context value. The value must match the default encryption
3297
+ # context - the bucket Amazon Resource Name (ARN). An additional
3298
+ # encryption context value is not supported.
3008
3299
  #
3009
3300
  # @option params [Boolean] :bucket_key_enabled
3010
3301
  # Specifies whether Amazon S3 should use an S3 Bucket Key for object
3011
3302
  # 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.
3303
+ # (KMS) keys (SSE-KMS).
3014
3304
  #
3015
- # Specifying this header with an object action doesn’t affect
3305
+ # **General purpose buckets** - Setting this header to `true` causes
3306
+ # Amazon S3 to use an S3 Bucket Key for object encryption with SSE-KMS.
3307
+ # Also, specifying this header with a PUT action doesn't affect
3016
3308
  # bucket-level settings for S3 Bucket Key.
3017
3309
  #
3018
- # <note markdown="1"> This functionality is not supported for directory buckets.
3310
+ # **Directory buckets** - S3 Bucket Keys are always enabled for `GET`
3311
+ # and `PUT` operations in a directory bucket and can’t be disabled. S3
3312
+ # Bucket Keys aren't supported, when you copy SSE-KMS encrypted objects
3313
+ # from general purpose buckets to directory buckets, from directory
3314
+ # buckets to general purpose buckets, or between directory buckets,
3315
+ # through [CopyObject][1], [UploadPartCopy][2], [the Copy operation in
3316
+ # Batch Operations][3], or [the import jobs][4]. In this case, Amazon S3
3317
+ # makes a call to KMS every time a copy request is made for a
3318
+ # KMS-encrypted object.
3019
3319
  #
3020
- # </note>
3320
+ #
3321
+ #
3322
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
3323
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
3324
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-buckets-objects-Batch-Ops
3325
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-import-job
3021
3326
  #
3022
3327
  # @option params [String] :request_payer
3023
3328
  # Confirms that the requester knows that they will be charged for the
@@ -3178,9 +3483,10 @@ module Aws::S3
3178
3483
 
3179
3484
  # Creates a session that establishes temporary security credentials to
3180
3485
  # 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*.
3486
+ # API operations on directory buckets. For more information about Zonal
3487
+ # endpoint API operations that include the Availability Zone in the
3488
+ # request endpoint, see [S3 Express One Zone APIs][1] in the *Amazon S3
3489
+ # User Guide*.
3184
3490
  #
3185
3491
  # To make Zonal endpoint API requests on a directory bucket, use the
3186
3492
  # `CreateSession` API operation. Specifically, you grant
@@ -3189,13 +3495,13 @@ module Aws::S3
3189
3495
  # the `CreateSession` API request on the bucket, which returns temporary
3190
3496
  # security credentials that include the access key ID, secret access
3191
3497
  # 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
3498
+ # permissions to access the Zonal endpoint API operations. After the
3499
+ # session is created, you don’t need to use other policies to grant
3500
+ # permissions to each Zonal endpoint API individually. Instead, in your
3501
+ # Zonal endpoint API requests, you sign your requests by applying the
3502
+ # temporary security credentials of the session to the request headers
3503
+ # and following the SigV4 protocol for authentication. You also apply
3504
+ # the session token to the `x-amz-s3session-token` request header for
3199
3505
  # authorization. Temporary security credentials are scoped to the bucket
3200
3506
  # and expire after 5 minutes. After the expiration time, any calls that
3201
3507
  # you make with those credentials will fail. You must use IAM
@@ -3218,16 +3524,16 @@ module Aws::S3
3218
3524
  # [Regional and Zonal endpoints][3] in the *Amazon S3 User Guide*.
3219
3525
  #
3220
3526
  # * <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
3527
+ # endpoint API operations, the `CopyObject` API operation doesn't use
3528
+ # the temporary security credentials returned from the `CreateSession`
3529
+ # API operation for authentication and authorization. For information
3224
3530
  # about authentication and authorization of the `CopyObject` API
3225
3531
  # operation on directory buckets, see [CopyObject][4].
3226
3532
  #
3227
3533
  # * <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
3534
+ # endpoint API operations, the `HeadBucket` API operation doesn't use
3535
+ # the temporary security credentials returned from the `CreateSession`
3536
+ # API operation for authentication and authorization. For information
3231
3537
  # about authentication and authorization of the `HeadBucket` API
3232
3538
  # operation on directory buckets, see [HeadBucket][5].
3233
3539
  #
@@ -3246,9 +3552,71 @@ module Aws::S3
3246
3552
  # Identity and Access Management (IAM) identity-based policies for S3
3247
3553
  # Express One Zone][8] in the *Amazon S3 User Guide*.
3248
3554
  #
3249
- # To grant cross-account access to Zonal endpoint APIs, the bucket
3250
- # policy should also grant both accounts the `s3express:CreateSession`
3251
- # permission.
3555
+ # To grant cross-account access to Zonal endpoint API operations, the
3556
+ # bucket policy should also grant both accounts the
3557
+ # `s3express:CreateSession` permission.
3558
+ #
3559
+ # If you want to encrypt objects with SSE-KMS, you must also have the
3560
+ # `kms:GenerateDataKey` and the `kms:Decrypt` permissions in IAM
3561
+ # identity-based policies and KMS key policies for the target KMS key.
3562
+ #
3563
+ # Encryption
3564
+ #
3565
+ # : For directory buckets, there are only two supported options for
3566
+ # server-side encryption: server-side encryption with Amazon S3
3567
+ # managed keys (SSE-S3) (`AES256`) and server-side encryption with KMS
3568
+ # keys (SSE-KMS) (`aws:kms`). We recommend that the bucket's default
3569
+ # encryption uses the desired encryption configuration and you don't
3570
+ # override the bucket default encryption in your `CreateSession`
3571
+ # requests or `PUT` object requests. Then, new objects are
3572
+ # automatically encrypted with the desired encryption settings. For
3573
+ # more information, see [Protecting data with server-side
3574
+ # encryption][9] in the *Amazon S3 User Guide*. For more information
3575
+ # about the encryption overriding behaviors in directory buckets, see
3576
+ # [Specifying server-side encryption with KMS for new object
3577
+ # uploads][10].
3578
+ #
3579
+ # For [Zonal endpoint (object-level) API operations][11] except
3580
+ # [CopyObject][4] and [UploadPartCopy][12], you authenticate and
3581
+ # authorize requests through [CreateSession][13] for low latency. To
3582
+ # encrypt new objects in a directory bucket with SSE-KMS, you must
3583
+ # specify SSE-KMS as the directory bucket's default encryption
3584
+ # configuration with a KMS key (specifically, a [customer managed
3585
+ # key][14]). Then, when a session is created for Zonal endpoint API
3586
+ # operations, new objects are automatically encrypted and decrypted
3587
+ # with SSE-KMS and S3 Bucket Keys during the session.
3588
+ #
3589
+ # <note markdown="1"> Only 1 [customer managed key][14] is supported per directory bucket
3590
+ # for the lifetime of the bucket. [Amazon Web Services managed
3591
+ # key][15] (`aws/s3`) isn't supported. After you specify SSE-KMS as
3592
+ # your bucket's default encryption configuration with a customer
3593
+ # managed key, you can't change the customer managed key for the
3594
+ # bucket's SSE-KMS configuration.
3595
+ #
3596
+ # </note>
3597
+ #
3598
+ # In the Zonal endpoint API calls (except [CopyObject][4] and
3599
+ # [UploadPartCopy][12]) using the REST API, you can't override the
3600
+ # values of the encryption settings (`x-amz-server-side-encryption`,
3601
+ # `x-amz-server-side-encryption-aws-kms-key-id`,
3602
+ # `x-amz-server-side-encryption-context`, and
3603
+ # `x-amz-server-side-encryption-bucket-key-enabled`) from the
3604
+ # `CreateSession` request. You don't need to explicitly specify these
3605
+ # encryption settings values in Zonal endpoint API calls, and Amazon
3606
+ # S3 will use the encryption settings values from the `CreateSession`
3607
+ # request to protect new objects in the directory bucket.
3608
+ #
3609
+ # <note markdown="1"> When you use the CLI or the Amazon Web Services SDKs, for
3610
+ # `CreateSession`, the session token refreshes automatically to avoid
3611
+ # service interruptions when a session expires. The CLI or the Amazon
3612
+ # Web Services SDKs use the bucket's default encryption configuration
3613
+ # for the `CreateSession` request. It's not supported to override the
3614
+ # encryption settings values in the `CreateSession` request. Also, in
3615
+ # the Zonal endpoint API calls (except [CopyObject][4] and
3616
+ # [UploadPartCopy][12]), it's not supported to override the values of
3617
+ # the encryption settings from the `CreateSession` request.
3618
+ #
3619
+ # </note>
3252
3620
  #
3253
3621
  # HTTP Host header syntax
3254
3622
  #
@@ -3265,21 +3633,110 @@ module Aws::S3
3265
3633
  # [6]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html#API_CreateSession_RequestParameters
3266
3634
  # [7]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam-example-bucket-policies.html
3267
3635
  # [8]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam-identity-policies.html
3636
+ # [9]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html
3637
+ # [10]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html
3638
+ # [11]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-differences.html#s3-express-differences-api-operations
3639
+ # [12]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
3640
+ # [13]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html
3641
+ # [14]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk
3642
+ # [15]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk
3268
3643
  #
3269
3644
  # @option params [String] :session_mode
3270
3645
  # Specifies the mode of the session that will be created, either
3271
3646
  # `ReadWrite` or `ReadOnly`. By default, a `ReadWrite` session is
3272
3647
  # 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`.
3648
+ # endpoint API operations on a directory bucket. A `ReadOnly` session is
3649
+ # constrained to execute the following Zonal endpoint API operations:
3650
+ # `GetObject`, `HeadObject`, `ListObjectsV2`, `GetObjectAttributes`,
3651
+ # `ListParts`, and `ListMultipartUploads`.
3277
3652
  #
3278
3653
  # @option params [required, String] :bucket
3279
3654
  # The name of the bucket that you create a session for.
3280
3655
  #
3656
+ # @option params [String] :server_side_encryption
3657
+ # The server-side encryption algorithm to use when you store objects in
3658
+ # the directory bucket.
3659
+ #
3660
+ # For directory buckets, there are only two supported options for
3661
+ # server-side encryption: server-side encryption with Amazon S3 managed
3662
+ # keys (SSE-S3) (`AES256`) and server-side encryption with KMS keys
3663
+ # (SSE-KMS) (`aws:kms`). By default, Amazon S3 encrypts data with
3664
+ # SSE-S3. For more information, see [Protecting data with server-side
3665
+ # encryption][1] in the *Amazon S3 User Guide*.
3666
+ #
3667
+ #
3668
+ #
3669
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html
3670
+ #
3671
+ # @option params [String] :ssekms_key_id
3672
+ # If you specify `x-amz-server-side-encryption` with `aws:kms`, you must
3673
+ # specify the ` x-amz-server-side-encryption-aws-kms-key-id` header with
3674
+ # the ID (Key ID or Key ARN) of the KMS symmetric encryption customer
3675
+ # managed key to use. Otherwise, you get an HTTP `400 Bad Request`
3676
+ # error. Only use the key ID or key ARN. The key alias format of the KMS
3677
+ # key isn't supported. Also, if the KMS key doesn't exist in the same
3678
+ # account that't issuing the command, you must use the full Key ARN not
3679
+ # the Key ID.
3680
+ #
3681
+ # Your SSE-KMS configuration can only support 1 [customer managed
3682
+ # key][1] per directory bucket for the lifetime of the bucket. [Amazon
3683
+ # Web Services managed key][2] (`aws/s3`) isn't supported.
3684
+ #
3685
+ #
3686
+ #
3687
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk
3688
+ # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk
3689
+ #
3690
+ # @option params [String] :ssekms_encryption_context
3691
+ # Specifies the Amazon Web Services KMS Encryption Context as an
3692
+ # additional encryption context to use for object encryption. The value
3693
+ # of this header is a Base64-encoded string of a UTF-8 encoded JSON,
3694
+ # which contains the encryption context as key-value pairs. This value
3695
+ # is stored as object metadata and automatically gets passed on to
3696
+ # Amazon Web Services KMS for future `GetObject` operations on this
3697
+ # object.
3698
+ #
3699
+ # **General purpose buckets** - This value must be explicitly added
3700
+ # during `CopyObject` operations if you want an additional encryption
3701
+ # context for your object. For more information, see [Encryption
3702
+ # context][1] in the *Amazon S3 User Guide*.
3703
+ #
3704
+ # **Directory buckets** - You can optionally provide an explicit
3705
+ # encryption context value. The value must match the default encryption
3706
+ # context - the bucket Amazon Resource Name (ARN). An additional
3707
+ # encryption context value is not supported.
3708
+ #
3709
+ #
3710
+ #
3711
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html#encryption-context
3712
+ #
3713
+ # @option params [Boolean] :bucket_key_enabled
3714
+ # Specifies whether Amazon S3 should use an S3 Bucket Key for object
3715
+ # encryption with server-side encryption using KMS keys (SSE-KMS).
3716
+ #
3717
+ # S3 Bucket Keys are always enabled for `GET` and `PUT` operations in a
3718
+ # directory bucket and can’t be disabled. S3 Bucket Keys aren't
3719
+ # supported, when you copy SSE-KMS encrypted objects from general
3720
+ # purpose buckets to directory buckets, from directory buckets to
3721
+ # general purpose buckets, or between directory buckets, through
3722
+ # [CopyObject][1], [UploadPartCopy][2], [the Copy operation in Batch
3723
+ # Operations][3], or [the import jobs][4]. In this case, Amazon S3 makes
3724
+ # a call to KMS every time a copy request is made for a KMS-encrypted
3725
+ # object.
3726
+ #
3727
+ #
3728
+ #
3729
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
3730
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
3731
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-buckets-objects-Batch-Ops
3732
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-import-job
3733
+ #
3281
3734
  # @return [Types::CreateSessionOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
3282
3735
  #
3736
+ # * {Types::CreateSessionOutput#server_side_encryption #server_side_encryption} => String
3737
+ # * {Types::CreateSessionOutput#ssekms_key_id #ssekms_key_id} => String
3738
+ # * {Types::CreateSessionOutput#ssekms_encryption_context #ssekms_encryption_context} => String
3739
+ # * {Types::CreateSessionOutput#bucket_key_enabled #bucket_key_enabled} => Boolean
3283
3740
  # * {Types::CreateSessionOutput#credentials #credentials} => Types::SessionCredentials
3284
3741
  #
3285
3742
  # @example Request syntax with placeholder values
@@ -3287,10 +3744,18 @@ module Aws::S3
3287
3744
  # resp = client.create_session({
3288
3745
  # session_mode: "ReadOnly", # accepts ReadOnly, ReadWrite
3289
3746
  # bucket: "BucketName", # required
3747
+ # server_side_encryption: "AES256", # accepts AES256, aws:kms, aws:kms:dsse
3748
+ # ssekms_key_id: "SSEKMSKeyId",
3749
+ # ssekms_encryption_context: "SSEKMSEncryptionContext",
3750
+ # bucket_key_enabled: false,
3290
3751
  # })
3291
3752
  #
3292
3753
  # @example Response structure
3293
3754
  #
3755
+ # resp.server_side_encryption #=> String, one of "AES256", "aws:kms", "aws:kms:dsse"
3756
+ # resp.ssekms_key_id #=> String
3757
+ # resp.ssekms_encryption_context #=> String
3758
+ # resp.bucket_key_enabled #=> Boolean
3294
3759
  # resp.credentials.access_key_id #=> String
3295
3760
  # resp.credentials.secret_access_key #=> String
3296
3761
  # resp.credentials.session_token #=> String
@@ -3536,47 +4001,92 @@ module Aws::S3
3536
4001
  req.send_request(options)
3537
4002
  end
3538
4003
 
3539
- # <note markdown="1"> This operation is not supported by directory buckets.
4004
+ # This implementation of the DELETE action resets the default encryption
4005
+ # for the bucket as server-side encryption with Amazon S3 managed keys
4006
+ # (SSE-S3).
4007
+ #
4008
+ # <note markdown="1"> * **General purpose buckets** - For information about the bucket
4009
+ # default encryption feature, see [Amazon S3 Bucket Default
4010
+ # Encryption][1] in the *Amazon S3 User Guide*.
4011
+ #
4012
+ # * **Directory buckets** - For directory buckets, there are only two
4013
+ # supported options for server-side encryption: SSE-S3 and SSE-KMS.
4014
+ # For information about the default encryption configuration in
4015
+ # directory buckets, see [Setting default server-side encryption
4016
+ # behavior for directory buckets][2].
3540
4017
  #
3541
4018
  # </note>
3542
4019
  #
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*.
4020
+ # Permissions
4021
+ # : * **General purpose bucket permissions** - The
4022
+ # `s3:PutEncryptionConfiguration` permission is required in a
4023
+ # policy. The bucket owner has this permission by default. The
4024
+ # bucket owner can grant this permission to others. For more
4025
+ # information about permissions, see [Permissions Related to Bucket
4026
+ # Operations][3] and [Managing Access Permissions to Your Amazon S3
4027
+ # Resources][4].
3548
4028
  #
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*.
4029
+ # * **Directory bucket permissions** - To grant access to this API
4030
+ # operation, you must have the
4031
+ # `s3express:PutEncryptionConfiguration` permission in an IAM
4032
+ # identity-based policy instead of a bucket policy. Cross-account
4033
+ # access to this API operation isn't supported. This operation can
4034
+ # only be performed by the Amazon Web Services account that owns the
4035
+ # resource. For more information about directory bucket policies and
4036
+ # permissions, see [Amazon Web Services Identity and Access
4037
+ # Management (IAM) for S3 Express One Zone][5] in the *Amazon S3
4038
+ # User Guide*.
4039
+ #
4040
+ # HTTP Host header syntax
4041
+ #
4042
+ # : <b>Directory buckets </b> - The HTTP Host header syntax is
4043
+ # `s3express-control.region.amazonaws.com`.
3556
4044
  #
3557
4045
  # The following operations are related to `DeleteBucketEncryption`:
3558
4046
  #
3559
- # * [PutBucketEncryption][4]
4047
+ # * [PutBucketEncryption][6]
3560
4048
  #
3561
- # * [GetBucketEncryption][5]
4049
+ # * [GetBucketEncryption][7]
3562
4050
  #
3563
4051
  #
3564
4052
  #
3565
4053
  # [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
4054
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-bucket-encryption.html
4055
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources
4056
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html
4057
+ # [5]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam.html
4058
+ # [6]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html
4059
+ # [7]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html
3570
4060
  #
3571
4061
  # @option params [required, String] :bucket
3572
4062
  # The name of the bucket containing the server-side encryption
3573
4063
  # configuration to delete.
3574
4064
  #
4065
+ # <b>Directory buckets </b> - When you use this operation with a
4066
+ # directory bucket, you must use path-style requests in the format
4067
+ # `https://s3express-control.region_code.amazonaws.com/bucket-name `.
4068
+ # Virtual-hosted-style requests aren't supported. Directory bucket
4069
+ # names must be unique in the chosen Availability Zone. Bucket names
4070
+ # must also follow the format ` bucket_base_name--az_id--x-s3` (for
4071
+ # example, ` DOC-EXAMPLE-BUCKET--usw2-az1--x-s3`). For information about
4072
+ # bucket naming restrictions, see [Directory bucket naming rules][1] in
4073
+ # the *Amazon S3 User Guide*
4074
+ #
4075
+ #
4076
+ #
4077
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-bucket-naming-rules.html
4078
+ #
3575
4079
  # @option params [String] :expected_bucket_owner
3576
4080
  # The account ID of the expected bucket owner. If the account ID that
3577
4081
  # you provide does not match the actual owner of the bucket, the request
3578
4082
  # fails with the HTTP status code `403 Forbidden` (access denied).
3579
4083
  #
4084
+ # <note markdown="1"> For directory buckets, this header is not supported in this API
4085
+ # operation. If you specify this header, the request fails with the HTTP
4086
+ # status code `501 Not Implemented`.
4087
+ #
4088
+ # </note>
4089
+ #
3580
4090
  # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
3581
4091
  #
3582
4092
  # @example Request syntax with placeholder values
@@ -4570,35 +5080,35 @@ module Aws::S3
4570
5080
  # * {Types::DeleteObjectTaggingOutput#version_id #version_id} => String
4571
5081
  #
4572
5082
  #
4573
- # @example Example: To remove tag set from an object version
5083
+ # @example Example: To remove tag set from an object
4574
5084
  #
4575
- # # The following example removes tag set associated with the specified object version. The request specifies both the
4576
- # # object key and object version.
5085
+ # # The following example removes tag set associated with the specified object. If the bucket is versioning enabled, the
5086
+ # # operation removes tag set from the latest object version.
4577
5087
  #
4578
5088
  # resp = client.delete_object_tagging({
4579
5089
  # bucket: "examplebucket",
4580
5090
  # key: "HappyFace.jpg",
4581
- # version_id: "ydlaNkwWm0SfKJR.T1b1fIdPRbldTYRI",
4582
5091
  # })
4583
5092
  #
4584
5093
  # resp.to_h outputs the following:
4585
5094
  # {
4586
- # version_id: "ydlaNkwWm0SfKJR.T1b1fIdPRbldTYRI",
5095
+ # version_id: "null",
4587
5096
  # }
4588
5097
  #
4589
- # @example Example: To remove tag set from an object
5098
+ # @example Example: To remove tag set from an object version
4590
5099
  #
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.
5100
+ # # The following example removes tag set associated with the specified object version. The request specifies both the
5101
+ # # object key and object version.
4593
5102
  #
4594
5103
  # resp = client.delete_object_tagging({
4595
5104
  # bucket: "examplebucket",
4596
5105
  # key: "HappyFace.jpg",
5106
+ # version_id: "ydlaNkwWm0SfKJR.T1b1fIdPRbldTYRI",
4597
5107
  # })
4598
5108
  #
4599
5109
  # resp.to_h outputs the following:
4600
5110
  # {
4601
- # version_id: "null",
5111
+ # version_id: "ydlaNkwWm0SfKJR.T1b1fIdPRbldTYRI",
4602
5112
  # }
4603
5113
  #
4604
5114
  # @example Request syntax with placeholder values
@@ -4680,7 +5190,7 @@ module Aws::S3
4680
5190
  # permission.
4681
5191
  #
4682
5192
  # * <b> <code>s3:DeleteObjectVersion</code> </b> - To delete a
4683
- # specific version of an object from a versiong-enabled bucket,
5193
+ # specific version of an object from a versioning-enabled bucket,
4684
5194
  # you must specify the `s3:DeleteObjectVersion` permission.
4685
5195
  #
4686
5196
  # * **Directory bucket permissions** - To grant access to this API
@@ -4850,13 +5360,13 @@ module Aws::S3
4850
5360
  # For the `x-amz-checksum-algorithm ` header, replace ` algorithm ` with
4851
5361
  # the supported algorithm from the following list:
4852
5362
  #
4853
- # * CRC32
5363
+ # * `CRC32`
4854
5364
  #
4855
- # * CRC32C
5365
+ # * `CRC32C`
4856
5366
  #
4857
- # * SHA1
5367
+ # * `SHA1`
4858
5368
  #
4859
- # * SHA256
5369
+ # * `SHA256`
4860
5370
  #
4861
5371
  # For more information, see [Checking object integrity][1] in the
4862
5372
  # *Amazon S3 User Guide*.
@@ -4881,22 +5391,20 @@ module Aws::S3
4881
5391
  # * {Types::DeleteObjectsOutput#errors #errors} => Array&lt;Types::Error&gt;
4882
5392
  #
4883
5393
  #
4884
- # @example Example: To delete multiple object versions from a versioned bucket
5394
+ # @example Example: To delete multiple objects from a versioned bucket
4885
5395
  #
4886
- # # The following example deletes objects from a bucket. The request specifies object versions. S3 deletes specific object
4887
- # # versions and returns the key and versions of deleted objects in the response.
5396
+ # # The following example deletes objects from a bucket. The bucket is versioned, and the request does not specify the
5397
+ # # object version to delete. In this case, all versions remain in the bucket and S3 adds a delete marker.
4888
5398
  #
4889
5399
  # resp = client.delete_objects({
4890
5400
  # bucket: "examplebucket",
4891
5401
  # delete: {
4892
5402
  # objects: [
4893
5403
  # {
4894
- # key: "HappyFace.jpg",
4895
- # version_id: "2LWg7lQLnY41.maGB5Z6SWW.dcq0vx7b",
5404
+ # key: "objectkey1",
4896
5405
  # },
4897
5406
  # {
4898
- # key: "HappyFace.jpg",
4899
- # version_id: "yoz3HB.ZhCS_tKVEmIOr7qYyyAaZSKVd",
5407
+ # key: "objectkey2",
4900
5408
  # },
4901
5409
  # ],
4902
5410
  # quiet: false,
@@ -4907,30 +5415,34 @@ module Aws::S3
4907
5415
  # {
4908
5416
  # deleted: [
4909
5417
  # {
4910
- # key: "HappyFace.jpg",
4911
- # version_id: "yoz3HB.ZhCS_tKVEmIOr7qYyyAaZSKVd",
5418
+ # delete_marker: true,
5419
+ # delete_marker_version_id: "A._w1z6EFiCF5uhtQMDal9JDkID9tQ7F",
5420
+ # key: "objectkey1",
4912
5421
  # },
4913
5422
  # {
4914
- # key: "HappyFace.jpg",
4915
- # version_id: "2LWg7lQLnY41.maGB5Z6SWW.dcq0vx7b",
5423
+ # delete_marker: true,
5424
+ # delete_marker_version_id: "iOd_ORxhkKe_e8G8_oSGxt2PjsCZKlkt",
5425
+ # key: "objectkey2",
4916
5426
  # },
4917
5427
  # ],
4918
5428
  # }
4919
5429
  #
4920
- # @example Example: To delete multiple objects from a versioned bucket
5430
+ # @example Example: To delete multiple object versions from a versioned bucket
4921
5431
  #
4922
- # # The following example deletes objects from a bucket. The bucket is versioned, and the request does not specify the
4923
- # # object version to delete. In this case, all versions remain in the bucket and S3 adds a delete marker.
5432
+ # # The following example deletes objects from a bucket. The request specifies object versions. S3 deletes specific object
5433
+ # # versions and returns the key and versions of deleted objects in the response.
4924
5434
  #
4925
5435
  # resp = client.delete_objects({
4926
5436
  # bucket: "examplebucket",
4927
5437
  # delete: {
4928
5438
  # objects: [
4929
5439
  # {
4930
- # key: "objectkey1",
5440
+ # key: "HappyFace.jpg",
5441
+ # version_id: "2LWg7lQLnY41.maGB5Z6SWW.dcq0vx7b",
4931
5442
  # },
4932
5443
  # {
4933
- # key: "objectkey2",
5444
+ # key: "HappyFace.jpg",
5445
+ # version_id: "yoz3HB.ZhCS_tKVEmIOr7qYyyAaZSKVd",
4934
5446
  # },
4935
5447
  # ],
4936
5448
  # quiet: false,
@@ -4941,14 +5453,12 @@ module Aws::S3
4941
5453
  # {
4942
5454
  # deleted: [
4943
5455
  # {
4944
- # delete_marker: true,
4945
- # delete_marker_version_id: "A._w1z6EFiCF5uhtQMDal9JDkID9tQ7F",
4946
- # key: "objectkey1",
5456
+ # key: "HappyFace.jpg",
5457
+ # version_id: "yoz3HB.ZhCS_tKVEmIOr7qYyyAaZSKVd",
4947
5458
  # },
4948
5459
  # {
4949
- # delete_marker: true,
4950
- # delete_marker_version_id: "iOd_ORxhkKe_e8G8_oSGxt2PjsCZKlkt",
4951
- # key: "objectkey2",
5460
+ # key: "HappyFace.jpg",
5461
+ # version_id: "2LWg7lQLnY41.maGB5Z6SWW.dcq0vx7b",
4952
5462
  # },
4953
5463
  # ],
4954
5464
  # }
@@ -5451,46 +5961,92 @@ module Aws::S3
5451
5961
  req.send_request(options)
5452
5962
  end
5453
5963
 
5454
- # <note markdown="1"> This operation is not supported by directory buckets.
5964
+ # Returns the default encryption configuration for an Amazon S3 bucket.
5965
+ # By default, all buckets have a default encryption configuration that
5966
+ # uses server-side encryption with Amazon S3 managed keys (SSE-S3).
5967
+ #
5968
+ # <note markdown="1"> * **General purpose buckets** - For information about the bucket
5969
+ # default encryption feature, see [Amazon S3 Bucket Default
5970
+ # Encryption][1] in the *Amazon S3 User Guide*.
5971
+ #
5972
+ # * **Directory buckets** - For directory buckets, there are only two
5973
+ # supported options for server-side encryption: SSE-S3 and SSE-KMS.
5974
+ # For information about the default encryption configuration in
5975
+ # directory buckets, see [Setting default server-side encryption
5976
+ # behavior for directory buckets][2].
5455
5977
  #
5456
5978
  # </note>
5457
5979
  #
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*.
5980
+ # Permissions
5981
+ # : * **General purpose bucket permissions** - The
5982
+ # `s3:GetEncryptionConfiguration` permission is required in a
5983
+ # policy. The bucket owner has this permission by default. The
5984
+ # bucket owner can grant this permission to others. For more
5985
+ # information about permissions, see [Permissions Related to Bucket
5986
+ # Operations][3] and [Managing Access Permissions to Your Amazon S3
5987
+ # Resources][4].
5463
5988
  #
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].
5989
+ # * **Directory bucket permissions** - To grant access to this API
5990
+ # operation, you must have the
5991
+ # `s3express:GetEncryptionConfiguration` permission in an IAM
5992
+ # identity-based policy instead of a bucket policy. Cross-account
5993
+ # access to this API operation isn't supported. This operation can
5994
+ # only be performed by the Amazon Web Services account that owns the
5995
+ # resource. For more information about directory bucket policies and
5996
+ # permissions, see [Amazon Web Services Identity and Access
5997
+ # Management (IAM) for S3 Express One Zone][5] in the *Amazon S3
5998
+ # User Guide*.
5999
+ #
6000
+ # HTTP Host header syntax
6001
+ #
6002
+ # : <b>Directory buckets </b> - The HTTP Host header syntax is
6003
+ # `s3express-control.region.amazonaws.com`.
5470
6004
  #
5471
6005
  # The following operations are related to `GetBucketEncryption`:
5472
6006
  #
5473
- # * [PutBucketEncryption][4]
6007
+ # * [PutBucketEncryption][6]
5474
6008
  #
5475
- # * [DeleteBucketEncryption][5]
6009
+ # * [DeleteBucketEncryption][7]
5476
6010
  #
5477
6011
  #
5478
6012
  #
5479
6013
  # [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
6014
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-bucket-encryption.html
6015
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources
6016
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html
6017
+ # [5]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam.html
6018
+ # [6]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketEncryption.html
6019
+ # [7]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketEncryption.html
5484
6020
  #
5485
6021
  # @option params [required, String] :bucket
5486
6022
  # The name of the bucket from which the server-side encryption
5487
6023
  # configuration is retrieved.
5488
6024
  #
6025
+ # <b>Directory buckets </b> - When you use this operation with a
6026
+ # directory bucket, you must use path-style requests in the format
6027
+ # `https://s3express-control.region_code.amazonaws.com/bucket-name `.
6028
+ # Virtual-hosted-style requests aren't supported. Directory bucket
6029
+ # names must be unique in the chosen Availability Zone. Bucket names
6030
+ # must also follow the format ` bucket_base_name--az_id--x-s3` (for
6031
+ # example, ` DOC-EXAMPLE-BUCKET--usw2-az1--x-s3`). For information about
6032
+ # bucket naming restrictions, see [Directory bucket naming rules][1] in
6033
+ # the *Amazon S3 User Guide*
6034
+ #
6035
+ #
6036
+ #
6037
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-bucket-naming-rules.html
6038
+ #
5489
6039
  # @option params [String] :expected_bucket_owner
5490
6040
  # The account ID of the expected bucket owner. If the account ID that
5491
6041
  # you provide does not match the actual owner of the bucket, the request
5492
6042
  # fails with the HTTP status code `403 Forbidden` (access denied).
5493
6043
  #
6044
+ # <note markdown="1"> For directory buckets, this header is not supported in this API
6045
+ # operation. If you specify this header, the request fails with the HTTP
6046
+ # status code `501 Not Implemented`.
6047
+ #
6048
+ # </note>
6049
+ #
5494
6050
  # @return [Types::GetBucketEncryptionOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
5495
6051
  #
5496
6052
  # * {Types::GetBucketEncryptionOutput#server_side_encryption_configuration #server_side_encryption_configuration} => Types::ServerSideEncryptionConfiguration
@@ -5871,6 +6427,7 @@ module Aws::S3
5871
6427
  # @return [Types::GetBucketLifecycleConfigurationOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
5872
6428
  #
5873
6429
  # * {Types::GetBucketLifecycleConfigurationOutput#rules #rules} => Array&lt;Types::LifecycleRule&gt;
6430
+ # * {Types::GetBucketLifecycleConfigurationOutput#transition_default_minimum_object_size #transition_default_minimum_object_size} => String
5874
6431
  #
5875
6432
  #
5876
6433
  # @example Example: To get lifecycle configuration on a bucket
@@ -5936,6 +6493,7 @@ module Aws::S3
5936
6493
  # resp.rules[0].noncurrent_version_expiration.noncurrent_days #=> Integer
5937
6494
  # resp.rules[0].noncurrent_version_expiration.newer_noncurrent_versions #=> Integer
5938
6495
  # resp.rules[0].abort_incomplete_multipart_upload.days_after_initiation #=> Integer
6496
+ # resp.transition_default_minimum_object_size #=> String, one of "varies_by_storage_class", "all_storage_classes_128K"
5939
6497
  #
5940
6498
  # @see http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/GetBucketLifecycleConfiguration AWS API Documentation
5941
6499
  #
@@ -7230,6 +7788,10 @@ module Aws::S3
7230
7788
  # interruptions when a session expires. For more information about
7231
7789
  # authorization, see [ `CreateSession` ][4].
7232
7790
  #
7791
+ # If the object is encrypted using SSE-KMS, you must also have the
7792
+ # `kms:GenerateDataKey` and `kms:Decrypt` permissions in IAM
7793
+ # identity-based policies and KMS key policies for the KMS key.
7794
+ #
7233
7795
  # Storage classes
7234
7796
  #
7235
7797
  # : If the object you are retrieving is stored in the S3 Glacier
@@ -7258,6 +7820,11 @@ module Aws::S3
7258
7820
  # `GetObject` requests for the object that uses these types of keys,
7259
7821
  # you’ll get an HTTP `400 Bad Request` error.
7260
7822
  #
7823
+ # **Directory buckets** - For directory buckets, there are only two
7824
+ # supported options for server-side encryption: SSE-S3 and SSE-KMS.
7825
+ # SSE-C isn't supported. For more information, see [Protecting data
7826
+ # with server-side encryption][7] in the *Amazon S3 User Guide*.
7827
+ #
7261
7828
  # Overriding response header values through the request
7262
7829
  #
7263
7830
  # : There are times when you want to override certain response header
@@ -7305,9 +7872,9 @@ module Aws::S3
7305
7872
  #
7306
7873
  # The following operations are related to `GetObject`:
7307
7874
  #
7308
- # * [ListBuckets][7]
7875
+ # * [ListBuckets][8]
7309
7876
  #
7310
- # * [GetObjectAcl][8]
7877
+ # * [GetObjectAcl][9]
7311
7878
  #
7312
7879
  #
7313
7880
  #
@@ -7317,8 +7884,9 @@ module Aws::S3
7317
7884
  # [4]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html
7318
7885
  # [5]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_RestoreObject.html
7319
7886
  # [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
7887
+ # [7]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html
7888
+ # [8]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBuckets.html
7889
+ # [9]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAcl.html
7322
7890
  #
7323
7891
  # @option params [String, IO] :response_target
7324
7892
  # Where to write response data, file path, or IO object.
@@ -7615,6 +8183,15 @@ module Aws::S3
7615
8183
  # @option params [String] :checksum_mode
7616
8184
  # To retrieve the checksum, this mode must be enabled.
7617
8185
  #
8186
+ # **General purpose buckets** - In addition, if you enable checksum mode
8187
+ # and the object is uploaded with a [checksum][1] and encrypted with an
8188
+ # Key Management Service (KMS) key, you must have permission to use the
8189
+ # `kms:Decrypt` action to retrieve the checksum.
8190
+ #
8191
+ #
8192
+ #
8193
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_Checksum.html
8194
+ #
7618
8195
  # @return [Types::GetObjectOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
7619
8196
  #
7620
8197
  # * {Types::GetObjectOutput#body #body} => IO
@@ -8011,7 +8588,7 @@ module Aws::S3
8011
8588
  # Permissions
8012
8589
  # : * **General purpose bucket permissions** - To use
8013
8590
  # `GetObjectAttributes`, you must have READ access to the object.
8014
- # The permissions that you need to use this operation with depend on
8591
+ # The permissions that you need to use this operation depend on
8015
8592
  # whether the bucket is versioned. If the bucket is versioned, you
8016
8593
  # need both the `s3:GetObjectVersion` and
8017
8594
  # `s3:GetObjectVersionAttributes` permissions for this operation. If
@@ -8045,6 +8622,10 @@ module Aws::S3
8045
8622
  # interruptions when a session expires. For more information about
8046
8623
  # authorization, see [ `CreateSession` ][3].
8047
8624
  #
8625
+ # If the object is encrypted with SSE-KMS, you must also have the
8626
+ # `kms:GenerateDataKey` and `kms:Decrypt` permissions in IAM
8627
+ # identity-based policies and KMS key policies for the KMS key.
8628
+ #
8048
8629
  # Encryption
8049
8630
  # : <note markdown="1"> Encryption request headers, like `x-amz-server-side-encryption`,
8050
8631
  # should not be sent for `HEAD` requests if your object uses
@@ -8078,9 +8659,19 @@ module Aws::S3
8078
8659
  # Customer-Provided Encryption Keys)][4] in the *Amazon S3 User
8079
8660
  # Guide*.
8080
8661
  #
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.
8662
+ # <note markdown="1"> **Directory bucket permissions** - For directory buckets, there are
8663
+ # only two supported options for server-side encryption: server-side
8664
+ # encryption with Amazon S3 managed keys (SSE-S3) (`AES256`) and
8665
+ # server-side encryption with KMS keys (SSE-KMS) (`aws:kms`). We
8666
+ # recommend that the bucket's default encryption uses the desired
8667
+ # encryption configuration and you don't override the bucket default
8668
+ # encryption in your `CreateSession` requests or `PUT` object
8669
+ # requests. Then, new objects are automatically encrypted with the
8670
+ # desired encryption settings. For more information, see [Protecting
8671
+ # data with server-side encryption][5] in the *Amazon S3 User Guide*.
8672
+ # For more information about the encryption overriding behaviors in
8673
+ # directory buckets, see [Specifying server-side encryption with KMS
8674
+ # for new object uploads][6].
8084
8675
  #
8085
8676
  # </note>
8086
8677
  #
@@ -8104,7 +8695,7 @@ module Aws::S3
8104
8695
  # * `If-Unmodified-Since` condition evaluates to `false`.
8105
8696
  #
8106
8697
  # For more information about conditional requests, see [RFC
8107
- # 7232][5].
8698
+ # 7232][7].
8108
8699
  #
8109
8700
  # * If both of the `If-None-Match` and `If-Modified-Since` headers are
8110
8701
  # present in the request as follows, then Amazon S3 returns the HTTP
@@ -8115,7 +8706,7 @@ module Aws::S3
8115
8706
  # * `If-Modified-Since` condition evaluates to `true`.
8116
8707
  #
8117
8708
  # For more information about conditional requests, see [RFC
8118
- # 7232][5].
8709
+ # 7232][7].
8119
8710
  #
8120
8711
  # HTTP Host header syntax
8121
8712
  #
@@ -8124,21 +8715,21 @@ module Aws::S3
8124
8715
  #
8125
8716
  # The following actions are related to `GetObjectAttributes`:
8126
8717
  #
8127
- # * [GetObject][6]
8718
+ # * [GetObject][8]
8128
8719
  #
8129
- # * [GetObjectAcl][7]
8720
+ # * [GetObjectAcl][9]
8130
8721
  #
8131
- # * [GetObjectLegalHold][8]
8722
+ # * [GetObjectLegalHold][10]
8132
8723
  #
8133
- # * [GetObjectLockConfiguration][9]
8724
+ # * [GetObjectLockConfiguration][11]
8134
8725
  #
8135
- # * [GetObjectRetention][10]
8726
+ # * [GetObjectRetention][12]
8136
8727
  #
8137
- # * [GetObjectTagging][11]
8728
+ # * [GetObjectTagging][13]
8138
8729
  #
8139
- # * [HeadObject][12]
8730
+ # * [HeadObject][14]
8140
8731
  #
8141
- # * [ListParts][13]
8732
+ # * [ListParts][15]
8142
8733
  #
8143
8734
  #
8144
8735
  #
@@ -8146,15 +8737,17 @@ module Aws::S3
8146
8737
  # [2]: https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html
8147
8738
  # [3]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html
8148
8739
  # [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
8740
+ # [5]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html
8741
+ # [6]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html
8742
+ # [7]: https://tools.ietf.org/html/rfc7232
8743
+ # [8]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html
8744
+ # [9]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAcl.html
8745
+ # [10]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectLegalHold.html
8746
+ # [11]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectLockConfiguration.html
8747
+ # [12]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectRetention.html
8748
+ # [13]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectTagging.html
8749
+ # [14]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_HeadObject.html
8750
+ # [15]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html
8158
8751
  #
8159
8752
  # @option params [required, String] :bucket
8160
8753
  # The name of the bucket that contains the object.
@@ -8698,49 +9291,49 @@ module Aws::S3
8698
9291
  # * {Types::GetObjectTaggingOutput#tag_set #tag_set} => Array&lt;Types::Tag&gt;
8699
9292
  #
8700
9293
  #
8701
- # @example Example: To retrieve tag set of a specific object version
9294
+ # @example Example: To retrieve tag set of an object
8702
9295
  #
8703
- # # The following example retrieves tag set of an object. The request specifies object version.
9296
+ # # The following example retrieves tag set of an object.
8704
9297
  #
8705
9298
  # resp = client.get_object_tagging({
8706
9299
  # bucket: "examplebucket",
8707
- # key: "exampleobject",
8708
- # version_id: "ydlaNkwWm0SfKJR.T1b1fIdPRbldTYRI",
9300
+ # key: "HappyFace.jpg",
8709
9301
  # })
8710
9302
  #
8711
9303
  # resp.to_h outputs the following:
8712
9304
  # {
8713
9305
  # tag_set: [
8714
9306
  # {
8715
- # key: "Key1",
8716
- # value: "Value1",
9307
+ # key: "Key4",
9308
+ # value: "Value4",
9309
+ # },
9310
+ # {
9311
+ # key: "Key3",
9312
+ # value: "Value3",
8717
9313
  # },
8718
9314
  # ],
8719
- # version_id: "ydlaNkwWm0SfKJR.T1b1fIdPRbldTYRI",
9315
+ # version_id: "null",
8720
9316
  # }
8721
9317
  #
8722
- # @example Example: To retrieve tag set of an object
9318
+ # @example Example: To retrieve tag set of a specific object version
8723
9319
  #
8724
- # # The following example retrieves tag set of an object.
9320
+ # # The following example retrieves tag set of an object. The request specifies object version.
8725
9321
  #
8726
9322
  # resp = client.get_object_tagging({
8727
9323
  # bucket: "examplebucket",
8728
- # key: "HappyFace.jpg",
9324
+ # key: "exampleobject",
9325
+ # version_id: "ydlaNkwWm0SfKJR.T1b1fIdPRbldTYRI",
8729
9326
  # })
8730
9327
  #
8731
9328
  # resp.to_h outputs the following:
8732
9329
  # {
8733
9330
  # tag_set: [
8734
9331
  # {
8735
- # key: "Key4",
8736
- # value: "Value4",
8737
- # },
8738
- # {
8739
- # key: "Key3",
8740
- # value: "Value3",
9332
+ # key: "Key1",
9333
+ # value: "Value1",
8741
9334
  # },
8742
9335
  # ],
8743
- # version_id: "null",
9336
+ # version_id: "ydlaNkwWm0SfKJR.T1b1fIdPRbldTYRI",
8744
9337
  # }
8745
9338
  #
8746
9339
  # @example Request syntax with placeholder values
@@ -8949,29 +9542,24 @@ module Aws::S3
8949
9542
  # have permission to access it. The action returns a `200 OK` if the
8950
9543
  # bucket exists and you have permission to access it.
8951
9544
  #
8952
- # If the bucket does not exist or you do not have permission to access
9545
+ # <note markdown="1"> If the bucket does not exist or you do not have permission to access
8953
9546
  # it, the `HEAD` request returns a generic `400 Bad Request`, `403
8954
9547
  # Forbidden` or `404 Not Found` code. A message body is not included, so
8955
9548
  # you cannot determine the exception beyond these HTTP response codes.
8956
9549
  #
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
9550
  # </note>
8965
9551
  #
8966
9552
  # Authentication and authorization
8967
9553
  #
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
9554
+ # : **General purpose buckets** - Request to public buckets that grant
9555
+ # the s3:ListBucket permission publicly do not need to be signed. All
9556
+ # other `HeadBucket` requests must be authenticated and signed by
9557
+ # using IAM credentials (access key ID and secret access key for the
9558
+ # IAM identities). All headers with the `x-amz-` prefix, including
8971
9559
  # `x-amz-copy-source`, must be signed. For more information, see [REST
8972
- # Authentication][2].
9560
+ # Authentication][1].
8973
9561
  #
8974
- # **Directory bucket** - You must use IAM credentials to authenticate
9562
+ # **Directory buckets** - You must use IAM credentials to authenticate
8975
9563
  # and authorize your access to the `HeadBucket` API operation, instead
8976
9564
  # of using the temporary security credentials through the
8977
9565
  # `CreateSession` API operation.
@@ -8987,7 +9575,7 @@ module Aws::S3
8987
9575
  # you must have permissions to perform the `s3:ListBucket` action.
8988
9576
  # The bucket owner has this permission by default and can grant this
8989
9577
  # permission to others. For more information about permissions, see
8990
- # [Managing access permissions to your Amazon S3 resources][3] in
9578
+ # [Managing access permissions to your Amazon S3 resources][2] in
8991
9579
  # the *Amazon S3 User Guide*.
8992
9580
  #
8993
9581
  # * **Directory bucket permissions** - You must have the <b>
@@ -8998,9 +9586,9 @@ module Aws::S3
8998
9586
  # `ReadOnly` on the bucket.
8999
9587
  #
9000
9588
  # For more information about example bucket policies, see [Example
9001
- # bucket policies for S3 Express One Zone][4] and [Amazon Web
9589
+ # bucket policies for S3 Express One Zone][3] and [Amazon Web
9002
9590
  # Services Identity and Access Management (IAM) identity-based
9003
- # policies for S3 Express One Zone][5] in the *Amazon S3 User
9591
+ # policies for S3 Express One Zone][4] in the *Amazon S3 User
9004
9592
  # Guide*.
9005
9593
  #
9006
9594
  # HTTP Host header syntax
@@ -9008,13 +9596,21 @@ module Aws::S3
9008
9596
  # : <b>Directory buckets </b> - The HTTP Host header syntax is `
9009
9597
  # Bucket_name.s3express-az_id.region.amazonaws.com`.
9010
9598
  #
9599
+ # <note markdown="1"> You must make requests for this API operation to the Zonal endpoint.
9600
+ # These endpoints support virtual-hosted-style requests in the format
9601
+ # `https://bucket_name.s3express-az_id.region.amazonaws.com`.
9602
+ # Path-style requests are not supported. For more information, see
9603
+ # [Regional and Zonal endpoints][5] in the *Amazon S3 User Guide*.
9604
+ #
9605
+ # </note>
9011
9606
  #
9012
9607
  #
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
9608
+ #
9609
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html
9610
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html
9611
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam-example-bucket-policies.html
9612
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam-identity-policies.html
9613
+ # [5]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-Regions-and-Zones.html
9018
9614
  #
9019
9615
  # @option params [required, String] :bucket
9020
9616
  # The bucket name.
@@ -9122,7 +9718,7 @@ module Aws::S3
9122
9718
  # returning the object itself. This operation is useful if you're
9123
9719
  # interested only in an object's metadata.
9124
9720
  #
9125
- # A `HEAD` request has the same options as a `GET` operation on an
9721
+ # <note markdown="1"> A `HEAD` request has the same options as a `GET` operation on an
9126
9722
  # object. The response is identical to the `GET` response except that
9127
9723
  # there is no response body. Because of this, if the `HEAD` request
9128
9724
  # generates an error, it returns a generic code, such as `400 Bad
@@ -9130,18 +9726,11 @@ module Aws::S3
9130
9726
  # `412 Precondition Failed`, or `304 Not Modified`. It's not possible
9131
9727
  # to retrieve the exact exception of these error codes.
9132
9728
  #
9729
+ # </note>
9730
+ #
9133
9731
  # Request headers are limited to 8 KB in size. For more information, see
9134
9732
  # [Common Request Headers][1].
9135
9733
  #
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
9734
  # Permissions
9146
9735
  #
9147
9736
  # :
@@ -9150,7 +9739,11 @@ module Aws::S3
9150
9739
  # have the `s3:GetObject` permission. You need the relevant read
9151
9740
  # object (or version) permission for this operation. For more
9152
9741
  # information, see [Actions, resources, and condition keys for
9153
- # Amazon S3][3] in the *Amazon S3 User Guide*.
9742
+ # Amazon S3][2] in the *Amazon S3 User Guide*. For more information
9743
+ # about the permissions to S3 API operations by S3 resource types,
9744
+ # see [Required permissions for Amazon S3 API
9745
+ # operations](/AmazonS3/latest/userguide/using-with-s3-policy-actions.html)
9746
+ # in the *Amazon S3 User Guide*.
9154
9747
  #
9155
9748
  # If the object you request doesn't exist, the error that Amazon S3
9156
9749
  # returns depends on whether you also have the `s3:ListBucket`
@@ -9164,7 +9757,7 @@ module Aws::S3
9164
9757
  #
9165
9758
  # * **Directory bucket permissions** - To grant access to this API
9166
9759
  # operation on a directory bucket, we recommend that you use the [
9167
- # `CreateSession` ][4] API operation for session-based
9760
+ # `CreateSession` ][3] API operation for session-based
9168
9761
  # authorization. Specifically, you grant the
9169
9762
  # `s3express:CreateSession` permission to the directory bucket in a
9170
9763
  # bucket policy or an IAM identity-based policy. Then, you make the
@@ -9175,7 +9768,14 @@ module Aws::S3
9175
9768
  # token for use. Amazon Web Services CLI or SDKs create session and
9176
9769
  # refresh the session token automatically to avoid service
9177
9770
  # interruptions when a session expires. For more information about
9178
- # authorization, see [ `CreateSession` ][4].
9771
+ # authorization, see [ `CreateSession` ][3].
9772
+ #
9773
+ # If you enable `x-amz-checksum-mode` in the request and the object
9774
+ # is encrypted with Amazon Web Services Key Management Service
9775
+ # (Amazon Web Services KMS), you must also have the
9776
+ # `kms:GenerateDataKey` and `kms:Decrypt` permissions in IAM
9777
+ # identity-based policies and KMS key policies for the KMS key to
9778
+ # retrieve the checksum of the object.
9179
9779
  #
9180
9780
  # Encryption
9181
9781
  # : <note markdown="1"> Encryption request headers, like `x-amz-server-side-encryption`,
@@ -9207,12 +9807,13 @@ module Aws::S3
9207
9807
  # * `x-amz-server-side-encryption-customer-key-MD5`
9208
9808
  #
9209
9809
  # For more information about SSE-C, see [Server-Side Encryption (Using
9210
- # Customer-Provided Encryption Keys)][5] in the *Amazon S3 User
9810
+ # Customer-Provided Encryption Keys)][4] in the *Amazon S3 User
9211
9811
  # Guide*.
9212
9812
  #
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.
9813
+ # <note markdown="1"> <b>Directory bucket </b> - For directory buckets, there are only two
9814
+ # supported options for server-side encryption: SSE-S3 and SSE-KMS.
9815
+ # SSE-C isn't supported. For more information, see [Protecting data
9816
+ # with server-side encryption][5] in the *Amazon S3 User Guide*.
9216
9817
  #
9217
9818
  # </note>
9218
9819
  #
@@ -9241,21 +9842,31 @@ module Aws::S3
9241
9842
  # : <b>Directory buckets </b> - The HTTP Host header syntax is `
9242
9843
  # Bucket_name.s3express-az_id.region.amazonaws.com`.
9243
9844
  #
9845
+ # <note markdown="1"> For directory buckets, you must make requests for this API operation
9846
+ # to the Zonal endpoint. These endpoints support virtual-hosted-style
9847
+ # requests in the format
9848
+ # `https://bucket_name.s3express-az_id.region.amazonaws.com/key-name
9849
+ # `. Path-style requests are not supported. For more information, see
9850
+ # [Regional and Zonal endpoints][6] in the *Amazon S3 User Guide*.
9851
+ #
9852
+ # </note>
9853
+ #
9244
9854
  # The following actions are related to `HeadObject`:
9245
9855
  #
9246
- # * [GetObject][6]
9856
+ # * [GetObject][7]
9247
9857
  #
9248
- # * [GetObjectAttributes][7]
9858
+ # * [GetObjectAttributes][8]
9249
9859
  #
9250
9860
  #
9251
9861
  #
9252
9862
  # [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
9863
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/dev/list_amazons3.html
9864
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html
9865
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html
9866
+ # [5]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html
9867
+ # [6]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-Regions-and-Zones.html
9868
+ # [7]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html
9869
+ # [8]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObjectAttributes.html
9259
9870
  #
9260
9871
  # @option params [required, String] :bucket
9261
9872
  # The name of the bucket that contains the object.
@@ -9386,6 +9997,24 @@ module Aws::S3
9386
9997
  # the Range is not satisfiable, S3 returns a `416 - Requested Range Not
9387
9998
  # Satisfiable` error.
9388
9999
  #
10000
+ # @option params [String] :response_cache_control
10001
+ # Sets the `Cache-Control` header of the response.
10002
+ #
10003
+ # @option params [String] :response_content_disposition
10004
+ # Sets the `Content-Disposition` header of the response.
10005
+ #
10006
+ # @option params [String] :response_content_encoding
10007
+ # Sets the `Content-Encoding` header of the response.
10008
+ #
10009
+ # @option params [String] :response_content_language
10010
+ # Sets the `Content-Language` header of the response.
10011
+ #
10012
+ # @option params [String] :response_content_type
10013
+ # Sets the `Content-Type` header of the response.
10014
+ #
10015
+ # @option params [Time,DateTime,Date,Integer,String] :response_expires
10016
+ # Sets the `Expires` header of the response.
10017
+ #
9389
10018
  # @option params [String] :version_id
9390
10019
  # Version ID used to reference a specific version of the object.
9391
10020
  #
@@ -9453,10 +10082,20 @@ module Aws::S3
9453
10082
  # @option params [String] :checksum_mode
9454
10083
  # To retrieve the checksum, this parameter must be enabled.
9455
10084
  #
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.
10085
+ # **General purpose buckets** - If you enable checksum mode and the
10086
+ # object is uploaded with a [checksum][1] and encrypted with an Key
10087
+ # Management Service (KMS) key, you must have permission to use the
10088
+ # `kms:Decrypt` action to retrieve the checksum.
10089
+ #
10090
+ # **Directory buckets** - If you enable `ChecksumMode` and the object is
10091
+ # encrypted with Amazon Web Services Key Management Service (Amazon Web
10092
+ # Services KMS), you must also have the `kms:GenerateDataKey` and
10093
+ # `kms:Decrypt` permissions in IAM identity-based policies and KMS key
10094
+ # policies for the KMS key to retrieve the checksum of the object.
10095
+ #
10096
+ #
10097
+ #
10098
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_Checksum.html
9460
10099
  #
9461
10100
  # @return [Types::HeadObjectOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
9462
10101
  #
@@ -9528,6 +10167,12 @@ module Aws::S3
9528
10167
  # if_unmodified_since: Time.now,
9529
10168
  # key: "ObjectKey", # required
9530
10169
  # range: "Range",
10170
+ # response_cache_control: "ResponseCacheControl",
10171
+ # response_content_disposition: "ResponseContentDisposition",
10172
+ # response_content_encoding: "ResponseContentEncoding",
10173
+ # response_content_language: "ResponseContentLanguage",
10174
+ # response_content_type: "ResponseContentType",
10175
+ # response_expires: Time.now,
9531
10176
  # version_id: "ObjectVersionId",
9532
10177
  # sse_customer_algorithm: "SSECustomerAlgorithm",
9533
10178
  # sse_customer_key: "SSECustomerKey",
@@ -10004,10 +10649,28 @@ module Aws::S3
10004
10649
  #
10005
10650
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/creating-buckets-s3.html
10006
10651
  #
10652
+ # @option params [Integer] :max_buckets
10653
+ # Maximum number of buckets to be returned in response. When the number
10654
+ # is more than the count of buckets that are owned by an Amazon Web
10655
+ # Services account, return all the buckets in response.
10656
+ #
10657
+ # @option params [String] :continuation_token
10658
+ # `ContinuationToken` indicates to Amazon S3 that the list is being
10659
+ # continued on this bucket with a token. `ContinuationToken` is
10660
+ # obfuscated and is not a real key. You can use this `ContinuationToken`
10661
+ # for pagination of the list results.
10662
+ #
10663
+ # Length Constraints: Minimum length of 0. Maximum length of 1024.
10664
+ #
10665
+ # Required: No.
10666
+ #
10007
10667
  # @return [Types::ListBucketsOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
10008
10668
  #
10009
10669
  # * {Types::ListBucketsOutput#buckets #buckets} => Array&lt;Types::Bucket&gt;
10010
10670
  # * {Types::ListBucketsOutput#owner #owner} => Types::Owner
10671
+ # * {Types::ListBucketsOutput#continuation_token #continuation_token} => String
10672
+ #
10673
+ # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}.
10011
10674
  #
10012
10675
  #
10013
10676
  # @example Example: To list all buckets
@@ -10039,6 +10702,13 @@ module Aws::S3
10039
10702
  # },
10040
10703
  # }
10041
10704
  #
10705
+ # @example Request syntax with placeholder values
10706
+ #
10707
+ # resp = client.list_buckets({
10708
+ # max_buckets: 1,
10709
+ # continuation_token: "Token",
10710
+ # })
10711
+ #
10042
10712
  # @example Response structure
10043
10713
  #
10044
10714
  # resp.buckets #=> Array
@@ -10046,6 +10716,7 @@ module Aws::S3
10046
10716
  # resp.buckets[0].creation_date #=> Time
10047
10717
  # resp.owner.display_name #=> String
10048
10718
  # resp.owner.id #=> String
10719
+ # resp.continuation_token #=> String
10049
10720
  #
10050
10721
  # @see http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/ListBuckets AWS API Documentation
10051
10722
  #
@@ -10094,9 +10765,9 @@ module Aws::S3
10094
10765
  #
10095
10766
  # @option params [String] :continuation_token
10096
10767
  # `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.
10768
+ # continued on buckets in this account with a token. `ContinuationToken`
10769
+ # is obfuscated and is not a real bucket name. You can use this
10770
+ # `ContinuationToken` for the pagination of the list results.
10100
10771
  #
10101
10772
  # @option params [Integer] :max_directory_buckets
10102
10773
  # Maximum number of buckets to be returned in response. When the number
@@ -10140,7 +10811,11 @@ module Aws::S3
10140
10811
  #
10141
10812
  # <note markdown="1"> **Directory buckets** - If multipart uploads in a directory bucket are
10142
10813
  # in progress, you can't delete the bucket until all the in-progress
10143
- # multipart uploads are aborted or completed.
10814
+ # multipart uploads are aborted or completed. To delete these
10815
+ # in-progress multipart uploads, use the `ListMultipartUploads`
10816
+ # operation to list the in-progress multipart uploads in the bucket and
10817
+ # use the `AbortMultupartUpload` operation to abort all the in-progress
10818
+ # multipart uploads.
10144
10819
  #
10145
10820
  # </note>
10146
10821
  #
@@ -10306,12 +10981,26 @@ module Aws::S3
10306
10981
  # </note>
10307
10982
  #
10308
10983
  # @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.
10984
+ # Encoding type used by Amazon S3 to encode the [object keys][1] in the
10985
+ # response. Responses are encoded only in UTF-8. An object key can
10986
+ # contain any Unicode character. However, the XML 1.0 parser can't
10987
+ # parse certain characters, such as characters with an ASCII value from
10988
+ # 0 to 10. For characters that aren't supported in XML 1.0, you can add
10989
+ # this parameter to request that Amazon S3 encode the keys in the
10990
+ # response. For more information about characters to avoid in object key
10991
+ # names, see [Object key naming guidelines][2].
10992
+ #
10993
+ # <note markdown="1"> When using the URL encoding type, non-ASCII characters that are used
10994
+ # in an object's key name will be percent-encoded according to UTF-8
10995
+ # code values. For example, the object `test_file(3).png` will appear as
10996
+ # `test_file%283%29.png`.
10997
+ #
10998
+ # </note>
10999
+ #
11000
+ #
11001
+ #
11002
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html
11003
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-guidelines
10315
11004
  #
10316
11005
  # @option params [String] :key_marker
10317
11006
  # Specifies the multipart upload after which listing should begin.
@@ -10603,12 +11292,26 @@ module Aws::S3
10603
11292
  # the response.
10604
11293
  #
10605
11294
  # @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.
11295
+ # Encoding type used by Amazon S3 to encode the [object keys][1] in the
11296
+ # response. Responses are encoded only in UTF-8. An object key can
11297
+ # contain any Unicode character. However, the XML 1.0 parser can't
11298
+ # parse certain characters, such as characters with an ASCII value from
11299
+ # 0 to 10. For characters that aren't supported in XML 1.0, you can add
11300
+ # this parameter to request that Amazon S3 encode the keys in the
11301
+ # response. For more information about characters to avoid in object key
11302
+ # names, see [Object key naming guidelines][2].
11303
+ #
11304
+ # <note markdown="1"> When using the URL encoding type, non-ASCII characters that are used
11305
+ # in an object's key name will be percent-encoded according to UTF-8
11306
+ # code values. For example, the object `test_file(3).png` will appear as
11307
+ # `test_file%283%29.png`.
11308
+ #
11309
+ # </note>
11310
+ #
11311
+ #
11312
+ #
11313
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html
11314
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-guidelines
10612
11315
  #
10613
11316
  # @option params [String] :key_marker
10614
11317
  # Specifies the key to start with when listing objects in a bucket.
@@ -10862,12 +11565,26 @@ module Aws::S3
10862
11565
  # A delimiter is a character that you use to group keys.
10863
11566
  #
10864
11567
  # @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.
11568
+ # Encoding type used by Amazon S3 to encode the [object keys][1] in the
11569
+ # response. Responses are encoded only in UTF-8. An object key can
11570
+ # contain any Unicode character. However, the XML 1.0 parser can't
11571
+ # parse certain characters, such as characters with an ASCII value from
11572
+ # 0 to 10. For characters that aren't supported in XML 1.0, you can add
11573
+ # this parameter to request that Amazon S3 encode the keys in the
11574
+ # response. For more information about characters to avoid in object key
11575
+ # names, see [Object key naming guidelines][2].
11576
+ #
11577
+ # <note markdown="1"> When using the URL encoding type, non-ASCII characters that are used
11578
+ # in an object's key name will be percent-encoded according to UTF-8
11579
+ # code values. For example, the object `test_file(3).png` will appear as
11580
+ # `test_file%283%29.png`.
11581
+ #
11582
+ # </note>
11583
+ #
11584
+ #
11585
+ #
11586
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html
11587
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-guidelines
10871
11588
  #
10872
11589
  # @option params [String] :marker
10873
11590
  # Marker is where you want Amazon S3 to start listing from. Amazon S3
@@ -11009,12 +11726,20 @@ module Aws::S3
11009
11726
  # programmatically][1] in the *Amazon S3 User Guide*. To get a list of
11010
11727
  # your buckets, see [ListBuckets][2].
11011
11728
  #
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*.
11729
+ # <note markdown="1"> * **General purpose bucket** - For general purpose buckets,
11730
+ # `ListObjectsV2` doesn't return prefixes that are related only to
11731
+ # in-progress multipart uploads.
11732
+ #
11733
+ # * **Directory buckets** - For directory buckets, `ListObjectsV2`
11734
+ # response includes the prefixes that are related only to in-progress
11735
+ # multipart uploads.
11736
+ #
11737
+ # * **Directory buckets** - For directory buckets, you must make
11738
+ # requests for this API operation to the Zonal endpoint. These
11739
+ # endpoints support virtual-hosted-style requests in the format
11740
+ # `https://bucket_name.s3express-az_id.region.amazonaws.com/key-name
11741
+ # `. Path-style requests are not supported. For more information, see
11742
+ # [Regional and Zonal endpoints][3] in the *Amazon S3 User Guide*.
11018
11743
  #
11019
11744
  # </note>
11020
11745
  #
@@ -11143,10 +11868,26 @@ module Aws::S3
11143
11868
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html
11144
11869
  #
11145
11870
  # @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.
11871
+ # Encoding type used by Amazon S3 to encode the [object keys][1] in the
11872
+ # response. Responses are encoded only in UTF-8. An object key can
11873
+ # contain any Unicode character. However, the XML 1.0 parser can't
11874
+ # parse certain characters, such as characters with an ASCII value from
11875
+ # 0 to 10. For characters that aren't supported in XML 1.0, you can add
11876
+ # this parameter to request that Amazon S3 encode the keys in the
11877
+ # response. For more information about characters to avoid in object key
11878
+ # names, see [Object key naming guidelines][2].
11879
+ #
11880
+ # <note markdown="1"> When using the URL encoding type, non-ASCII characters that are used
11881
+ # in an object's key name will be percent-encoded according to UTF-8
11882
+ # code values. For example, the object `test_file(3).png` will appear as
11883
+ # `test_file%283%29.png`.
11884
+ #
11885
+ # </note>
11886
+ #
11887
+ #
11888
+ #
11889
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html
11890
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-guidelines
11150
11891
  #
11151
11892
  # @option params [Integer] :max_keys
11152
11893
  # Sets the maximum number of keys returned in the response. By default,
@@ -12346,66 +13087,156 @@ module Aws::S3
12346
13087
  req.send_request(options)
12347
13088
  end
12348
13089
 
12349
- # <note markdown="1"> This operation is not supported by directory buckets.
13090
+ # This operation configures default encryption and Amazon S3 Bucket Keys
13091
+ # for an existing bucket.
13092
+ #
13093
+ # <note markdown="1"> <b>Directory buckets </b> - For directory buckets, you must make
13094
+ # requests for this API operation to the Regional endpoint. These
13095
+ # endpoints support path-style requests in the format
13096
+ # `https://s3express-control.region_code.amazonaws.com/bucket-name `.
13097
+ # Virtual-hosted-style requests aren't supported. For more information,
13098
+ # see [Regional and Zonal endpoints][1] in the *Amazon S3 User Guide*.
13099
+ #
13100
+ # </note>
13101
+ #
13102
+ # By default, all buckets have a default encryption configuration that
13103
+ # uses server-side encryption with Amazon S3 managed keys (SSE-S3).
13104
+ #
13105
+ # <note markdown="1"> * **General purpose buckets**
13106
+ #
13107
+ # * You can optionally configure default encryption for a bucket by
13108
+ # using server-side encryption with Key Management Service (KMS)
13109
+ # keys (SSE-KMS) or dual-layer server-side encryption with Amazon
13110
+ # Web Services KMS keys (DSSE-KMS). If you specify default
13111
+ # encryption by using SSE-KMS, you can also configure [Amazon S3
13112
+ # Bucket Keys][2]. For information about the bucket default
13113
+ # encryption feature, see [Amazon S3 Bucket Default Encryption][3]
13114
+ # in the *Amazon S3 User Guide*.
13115
+ #
13116
+ # * If you use PutBucketEncryption to set your [default bucket
13117
+ # encryption][3] to SSE-KMS, you should verify that your KMS key ID
13118
+ # is correct. Amazon S3 doesn't validate the KMS key ID provided in
13119
+ # PutBucketEncryption requests.
13120
+ #
13121
+ # * <b>Directory buckets </b> - You can optionally configure default
13122
+ # encryption for a bucket by using server-side encryption with Key
13123
+ # Management Service (KMS) keys (SSE-KMS).
13124
+ #
13125
+ # * We recommend that the bucket's default encryption uses the
13126
+ # desired encryption configuration and you don't override the
13127
+ # bucket default encryption in your `CreateSession` requests or
13128
+ # `PUT` object requests. Then, new objects are automatically
13129
+ # encrypted with the desired encryption settings. For more
13130
+ # information about the encryption overriding behaviors in directory
13131
+ # buckets, see [Specifying server-side encryption with KMS for new
13132
+ # object uploads][4].
13133
+ #
13134
+ # * Your SSE-KMS configuration can only support 1 [customer managed
13135
+ # key][5] per directory bucket for the lifetime of the bucket.
13136
+ # [Amazon Web Services managed key][6] (`aws/s3`) isn't supported.
13137
+ #
13138
+ # * S3 Bucket Keys are always enabled for `GET` and `PUT` operations
13139
+ # in a directory bucket and can’t be disabled. S3 Bucket Keys
13140
+ # aren't supported, when you copy SSE-KMS encrypted objects from
13141
+ # general purpose buckets to directory buckets, from directory
13142
+ # buckets to general purpose buckets, or between directory buckets,
13143
+ # through [CopyObject][7], [UploadPartCopy][8], [the Copy operation
13144
+ # in Batch Operations][9], or [the import jobs][10]. In this case,
13145
+ # Amazon S3 makes a call to KMS every time a copy request is made
13146
+ # for a KMS-encrypted object.
13147
+ #
13148
+ # * When you specify an [KMS customer managed key][5] for encryption
13149
+ # in your directory bucket, only use the key ID or key ARN. The key
13150
+ # alias format of the KMS key isn't supported.
13151
+ #
13152
+ # * For directory buckets, if you use PutBucketEncryption to set your
13153
+ # [default bucket encryption][3] to SSE-KMS, Amazon S3 validates the
13154
+ # KMS key ID provided in PutBucketEncryption requests.
12350
13155
  #
12351
13156
  # </note>
12352
13157
  #
12353
- # This action uses the `encryption` subresource to configure default
12354
- # encryption and Amazon S3 Bucket Keys for an existing bucket.
13158
+ # If you're specifying a customer managed KMS key, we recommend using a
13159
+ # fully qualified KMS key ARN. If you use a KMS key alias instead, then
13160
+ # KMS resolves the key within the requester’s account. This behavior can
13161
+ # result in data that's encrypted with a KMS key that belongs to the
13162
+ # requester, and not the bucket owner.
13163
+ #
13164
+ # Also, this action requires Amazon Web Services Signature Version 4.
13165
+ # For more information, see [ Authenticating Requests (Amazon Web
13166
+ # Services Signature Version 4)][11].
13167
+ #
13168
+ # Permissions
13169
+ # : * **General purpose bucket permissions** - The
13170
+ # `s3:PutEncryptionConfiguration` permission is required in a
13171
+ # policy. The bucket owner has this permission by default. The
13172
+ # bucket owner can grant this permission to others. For more
13173
+ # information about permissions, see [Permissions Related to Bucket
13174
+ # Operations][12] and [Managing Access Permissions to Your Amazon S3
13175
+ # Resources][13] in the *Amazon S3 User Guide*.
13176
+ #
13177
+ # * **Directory bucket permissions** - To grant access to this API
13178
+ # operation, you must have the
13179
+ # `s3express:PutEncryptionConfiguration` permission in an IAM
13180
+ # identity-based policy instead of a bucket policy. Cross-account
13181
+ # access to this API operation isn't supported. This operation can
13182
+ # only be performed by the Amazon Web Services account that owns the
13183
+ # resource. For more information about directory bucket policies and
13184
+ # permissions, see [Amazon Web Services Identity and Access
13185
+ # Management (IAM) for S3 Express One Zone][14] in the *Amazon S3
13186
+ # User Guide*.
13187
+ #
13188
+ # To set a directory bucket default encryption with SSE-KMS, you
13189
+ # must also have the `kms:GenerateDataKey` and the `kms:Decrypt`
13190
+ # permissions in IAM identity-based policies and KMS key policies
13191
+ # for the target KMS key.
12355
13192
  #
12356
- # 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].
13193
+ # HTTP Host header syntax
12371
13194
  #
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*.
13195
+ # : <b>Directory buckets </b> - The HTTP Host header syntax is
13196
+ # `s3express-control.region.amazonaws.com`.
12379
13197
  #
12380
13198
  # The following operations are related to `PutBucketEncryption`:
12381
13199
  #
12382
- # * [GetBucketEncryption][6]
13200
+ # * [GetBucketEncryption][15]
12383
13201
  #
12384
- # * [DeleteBucketEncryption][7]
13202
+ # * [DeleteBucketEncryption][16]
12385
13203
  #
12386
13204
  #
12387
13205
  #
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
13206
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-Regions-and-Zones.html
13207
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-key.html
13208
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html
13209
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html
13210
+ # [5]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk
13211
+ # [6]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk
13212
+ # [7]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
13213
+ # [8]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
13214
+ # [9]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-buckets-objects-Batch-Ops
13215
+ # [10]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-import-job
13216
+ # [11]: https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html
13217
+ # [12]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources
13218
+ # [13]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html
13219
+ # [14]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam.html
13220
+ # [15]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketEncryption.html
13221
+ # [16]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteBucketEncryption.html
12395
13222
  #
12396
13223
  # @option params [required, String] :bucket
12397
13224
  # 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*.
13225
+ # with different key options.
13226
+ #
13227
+ # <b>Directory buckets </b> - When you use this operation with a
13228
+ # directory bucket, you must use path-style requests in the format
13229
+ # `https://s3express-control.region_code.amazonaws.com/bucket-name `.
13230
+ # Virtual-hosted-style requests aren't supported. Directory bucket
13231
+ # names must be unique in the chosen Availability Zone. Bucket names
13232
+ # must also follow the format ` bucket_base_name--az_id--x-s3` (for
13233
+ # example, ` DOC-EXAMPLE-BUCKET--usw2-az1--x-s3`). For information about
13234
+ # bucket naming restrictions, see [Directory bucket naming rules][1] in
13235
+ # the *Amazon S3 User Guide*
12405
13236
  #
12406
13237
  #
12407
13238
  #
12408
- # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/bucket-encryption.html
13239
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-bucket-naming-rules.html
12409
13240
  #
12410
13241
  # @option params [String] :content_md5
12411
13242
  # The base64-encoded 128-bit MD5 digest of the server-side encryption
@@ -12415,6 +13246,10 @@ module Aws::S3
12415
13246
  # (CLI) or Amazon Web Services SDKs, this field is calculated
12416
13247
  # automatically.
12417
13248
  #
13249
+ # <note markdown="1"> This functionality is not supported for directory buckets.
13250
+ #
13251
+ # </note>
13252
+ #
12418
13253
  # @option params [String] :checksum_algorithm
12419
13254
  # Indicates the algorithm used to create the checksum for the object
12420
13255
  # when you use the SDK. This header will not provide any additional
@@ -12427,6 +13262,11 @@ module Aws::S3
12427
13262
  # If you provide an individual checksum, Amazon S3 ignores any provided
12428
13263
  # `ChecksumAlgorithm` parameter.
12429
13264
  #
13265
+ # <note markdown="1"> For directory buckets, when you use Amazon Web Services SDKs, `CRC32`
13266
+ # is the default checksum algorithm that's used for performance.
13267
+ #
13268
+ # </note>
13269
+ #
12430
13270
  #
12431
13271
  #
12432
13272
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
@@ -12439,6 +13279,12 @@ module Aws::S3
12439
13279
  # you provide does not match the actual owner of the bucket, the request
12440
13280
  # fails with the HTTP status code `403 Forbidden` (access denied).
12441
13281
  #
13282
+ # <note markdown="1"> For directory buckets, this header is not supported in this API
13283
+ # operation. If you specify this header, the request fails with the HTTP
13284
+ # status code `501 Not Implemented`.
13285
+ #
13286
+ # </note>
13287
+ #
12442
13288
  # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
12443
13289
  #
12444
13290
  # @example Request syntax with placeholder values
@@ -12909,23 +13755,22 @@ module Aws::S3
12909
13755
  # lifecycle configuration. For information about lifecycle
12910
13756
  # configuration, see [Managing your storage lifecycle][1].
12911
13757
  #
12912
- # <note markdown="1"> Bucket lifecycle configuration now supports specifying a lifecycle
12913
- # rule using an object key name prefix, one or more object tags, object
12914
- # size, or any combination of these. Accordingly, this section describes
12915
- # the latest API. The previous version of the API supported filtering
12916
- # based only on an object key name prefix, which is supported for
12917
- # backward compatibility. For the related API description, see
12918
- # [PutBucketLifecycle][2].
12919
- #
12920
- # </note>
12921
- #
12922
13758
  # Rules
12923
13759
  #
12924
13760
  # : You specify the lifecycle configuration in your request body. The
12925
13761
  # lifecycle configuration is specified as XML consisting of one or
12926
13762
  # more rules. An Amazon S3 Lifecycle configuration can have up to
12927
- # 1,000 rules. This limit is not adjustable. Each rule consists of the
12928
- # following:
13763
+ # 1,000 rules. This limit is not adjustable.
13764
+ #
13765
+ # Bucket lifecycle configuration supports specifying a lifecycle rule
13766
+ # using an object key name prefix, one or more object tags, object
13767
+ # size, or any combination of these. Accordingly, this section
13768
+ # describes the latest API. The previous version of the API supported
13769
+ # filtering based only on an object key name prefix, which is
13770
+ # supported for backward compatibility. For the related API
13771
+ # description, see [PutBucketLifecycle][2].
13772
+ #
13773
+ # A lifecycle rule consists of the following:
12929
13774
  #
12930
13775
  # * A filter identifying a subset of objects to which the rule
12931
13776
  # applies. The filter can be based on a key name prefix, object
@@ -13016,7 +13861,26 @@ module Aws::S3
13016
13861
  # you provide does not match the actual owner of the bucket, the request
13017
13862
  # fails with the HTTP status code `403 Forbidden` (access denied).
13018
13863
  #
13019
- # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
13864
+ # @option params [String] :transition_default_minimum_object_size
13865
+ # Indicates which default minimum object size behavior is applied to the
13866
+ # lifecycle configuration.
13867
+ #
13868
+ # * `all_storage_classes_128K` - Objects smaller than 128 KB will not
13869
+ # transition to any storage class by default.
13870
+ #
13871
+ # * `varies_by_storage_class` - Objects smaller than 128 KB will
13872
+ # transition to Glacier Flexible Retrieval or Glacier Deep Archive
13873
+ # storage classes. By default, all other storage classes will prevent
13874
+ # transitions smaller than 128 KB.
13875
+ #
13876
+ # To customize the minimum object size for any transition you can add a
13877
+ # filter that specifies a custom `ObjectSizeGreaterThan` or
13878
+ # `ObjectSizeLessThan` in the body of your transition rule. Custom
13879
+ # filters always take precedence over the default transition behavior.
13880
+ #
13881
+ # @return [Types::PutBucketLifecycleConfigurationOutput] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
13882
+ #
13883
+ # * {Types::PutBucketLifecycleConfigurationOutput#transition_default_minimum_object_size #transition_default_minimum_object_size} => String
13020
13884
  #
13021
13885
  #
13022
13886
  # @example Example: Put bucket lifecycle
@@ -13108,8 +13972,13 @@ module Aws::S3
13108
13972
  # ],
13109
13973
  # },
13110
13974
  # expected_bucket_owner: "AccountId",
13975
+ # transition_default_minimum_object_size: "varies_by_storage_class", # accepts varies_by_storage_class, all_storage_classes_128K
13111
13976
  # })
13112
13977
  #
13978
+ # @example Response structure
13979
+ #
13980
+ # resp.transition_default_minimum_object_size #=> String, one of "varies_by_storage_class", "all_storage_classes_128K"
13981
+ #
13113
13982
  # @see http://docs.aws.amazon.com/goto/WebAPI/s3-2006-03-01/PutBucketLifecycleConfiguration AWS API Documentation
13114
13983
  #
13115
13984
  # @overload put_bucket_lifecycle_configuration(params = {})
@@ -13862,13 +14731,13 @@ module Aws::S3
13862
14731
  # For the `x-amz-checksum-algorithm ` header, replace ` algorithm ` with
13863
14732
  # the supported algorithm from the following list:
13864
14733
  #
13865
- # * CRC32
14734
+ # * `CRC32`
13866
14735
  #
13867
- # * CRC32C
14736
+ # * `CRC32C`
13868
14737
  #
13869
- # * SHA1
14738
+ # * `SHA1`
13870
14739
  #
13871
- # * SHA256
14740
+ # * `SHA256`
13872
14741
  #
13873
14742
  # For more information, see [Checking object integrity][1] in the
13874
14743
  # *Amazon S3 User Guide*.
@@ -14435,6 +15304,14 @@ module Aws::S3
14435
15304
  #
14436
15305
  # </note>
14437
15306
  #
15307
+ # <note markdown="1"> When you enable versioning on a bucket for the first time, it might
15308
+ # take a short amount of time for the change to be fully propagated. We
15309
+ # recommend that you wait for 15 minutes after enabling versioning
15310
+ # before issuing write operations (`PUT` or `DELETE`) on objects in the
15311
+ # bucket.
15312
+ #
15313
+ # </note>
15314
+ #
14438
15315
  # Sets the versioning state of an existing bucket.
14439
15316
  #
14440
15317
  # You can set the versioning state with one of the following values:
@@ -14828,6 +15705,10 @@ module Aws::S3
14828
15705
  # interruptions when a session expires. For more information about
14829
15706
  # authorization, see [ `CreateSession` ][5].
14830
15707
  #
15708
+ # If the object is encrypted with SSE-KMS, you must also have the
15709
+ # `kms:GenerateDataKey` and `kms:Decrypt` permissions in IAM
15710
+ # identity-based policies and KMS key policies for the KMS key.
15711
+ #
14831
15712
  # Data integrity with Content-MD5
14832
15713
  # : * **General purpose bucket** - To ensure that data is not corrupted
14833
15714
  # traversing the network, use the `Content-MD5` header. When you use
@@ -15031,13 +15912,13 @@ module Aws::S3
15031
15912
  # For the `x-amz-checksum-algorithm ` header, replace ` algorithm ` with
15032
15913
  # the supported algorithm from the following list:
15033
15914
  #
15034
- # * CRC32
15915
+ # * `CRC32`
15035
15916
  #
15036
- # * CRC32C
15917
+ # * `CRC32C`
15037
15918
  #
15038
- # * SHA1
15919
+ # * `SHA1`
15039
15920
  #
15040
- # * SHA256
15921
+ # * `SHA256`
15041
15922
  #
15042
15923
  # For more information, see [Checking object integrity][1] in the
15043
15924
  # *Amazon S3 User Guide*.
@@ -15060,9 +15941,9 @@ module Aws::S3
15060
15941
  # @option params [String] :checksum_crc32
15061
15942
  # This header can be used as a data integrity check to verify that the
15062
15943
  # data received is the same data that was originally sent. This header
15063
- # specifies the base64-encoded, 32-bit CRC32 checksum of the object. For
15064
- # more information, see [Checking object integrity][1] in the *Amazon S3
15065
- # User Guide*.
15944
+ # specifies the base64-encoded, 32-bit CRC-32 checksum of the object.
15945
+ # For more information, see [Checking object integrity][1] in the
15946
+ # *Amazon S3 User Guide*.
15066
15947
  #
15067
15948
  #
15068
15949
  #
@@ -15071,7 +15952,7 @@ module Aws::S3
15071
15952
  # @option params [String] :checksum_crc32c
15072
15953
  # This header can be used as a data integrity check to verify that the
15073
15954
  # data received is the same data that was originally sent. This header
15074
- # specifies the base64-encoded, 32-bit CRC32C checksum of the object.
15955
+ # specifies the base64-encoded, 32-bit CRC-32C checksum of the object.
15075
15956
  # For more information, see [Checking object integrity][1] in the
15076
15957
  # *Amazon S3 User Guide*.
15077
15958
  #
@@ -15110,6 +15991,25 @@ module Aws::S3
15110
15991
  #
15111
15992
  # [1]: https://www.rfc-editor.org/rfc/rfc7234#section-5.3
15112
15993
  #
15994
+ # @option params [String] :if_none_match
15995
+ # Uploads the object only if the object key name does not already exist
15996
+ # in the bucket specified. Otherwise, Amazon S3 returns a `412
15997
+ # Precondition Failed` error.
15998
+ #
15999
+ # If a conflicting operation occurs during the upload S3 returns a `409
16000
+ # ConditionalRequestConflict` response. On a 409 failure you should
16001
+ # retry the upload.
16002
+ #
16003
+ # Expects the '*' (asterisk) character.
16004
+ #
16005
+ # For more information about conditional requests, see [RFC 7232][1], or
16006
+ # [Conditional requests][2] in the *Amazon S3 User Guide*.
16007
+ #
16008
+ #
16009
+ #
16010
+ # [1]: https://tools.ietf.org/html/rfc7232
16011
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/conditional-requests.html
16012
+ #
15113
16013
  # @option params [String] :grant_full_control
15114
16014
  # Gives the grantee READ, READ\_ACP, and WRITE\_ACP permissions on the
15115
16015
  # object.
@@ -15158,25 +16058,65 @@ module Aws::S3
15158
16058
  # object in Amazon S3 (for example, `AES256`, `aws:kms`,
15159
16059
  # `aws:kms:dsse`).
15160
16060
  #
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*.
16061
+ # * <b>General purpose buckets </b> - You have four mutually exclusive
16062
+ # options to protect data using server-side encryption in Amazon S3,
16063
+ # depending on how you choose to manage the encryption keys.
16064
+ # Specifically, the encryption key options are Amazon S3 managed keys
16065
+ # (SSE-S3), Amazon Web Services KMS keys (SSE-KMS or DSSE-KMS), and
16066
+ # customer-provided keys (SSE-C). Amazon S3 encrypts data with
16067
+ # server-side encryption by using Amazon S3 managed keys (SSE-S3) by
16068
+ # default. You can optionally tell Amazon S3 to encrypt data at rest
16069
+ # by using server-side encryption with other key options. For more
16070
+ # information, see [Using Server-Side Encryption][1] in the *Amazon S3
16071
+ # User Guide*.
15172
16072
  #
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.
16073
+ # * <b>Directory buckets </b> - For directory buckets, there are only
16074
+ # two supported options for server-side encryption: server-side
16075
+ # encryption with Amazon S3 managed keys (SSE-S3) (`AES256`) and
16076
+ # server-side encryption with KMS keys (SSE-KMS) (`aws:kms`). We
16077
+ # recommend that the bucket's default encryption uses the desired
16078
+ # encryption configuration and you don't override the bucket default
16079
+ # encryption in your `CreateSession` requests or `PUT` object
16080
+ # requests. Then, new objects are automatically encrypted with the
16081
+ # desired encryption settings. For more information, see [Protecting
16082
+ # data with server-side encryption][2] in the *Amazon S3 User Guide*.
16083
+ # For more information about the encryption overriding behaviors in
16084
+ # directory buckets, see [Specifying server-side encryption with KMS
16085
+ # for new object uploads][3].
16086
+ #
16087
+ # In the Zonal endpoint API calls (except [CopyObject][4] and
16088
+ # [UploadPartCopy][5]) using the REST API, the encryption request
16089
+ # headers must match the encryption settings that are specified in the
16090
+ # `CreateSession` request. You can't override the values of the
16091
+ # encryption settings (`x-amz-server-side-encryption`,
16092
+ # `x-amz-server-side-encryption-aws-kms-key-id`,
16093
+ # `x-amz-server-side-encryption-context`, and
16094
+ # `x-amz-server-side-encryption-bucket-key-enabled`) that are
16095
+ # specified in the `CreateSession` request. You don't need to
16096
+ # explicitly specify these encryption settings values in Zonal
16097
+ # endpoint API calls, and Amazon S3 will use the encryption settings
16098
+ # values from the `CreateSession` request to protect new objects in
16099
+ # the directory bucket.
16100
+ #
16101
+ # <note markdown="1"> When you use the CLI or the Amazon Web Services SDKs, for
16102
+ # `CreateSession`, the session token refreshes automatically to avoid
16103
+ # service interruptions when a session expires. The CLI or the Amazon
16104
+ # Web Services SDKs use the bucket's default encryption configuration
16105
+ # for the `CreateSession` request. It's not supported to override the
16106
+ # encryption settings values in the `CreateSession` request. So in the
16107
+ # Zonal endpoint API calls (except [CopyObject][4] and
16108
+ # [UploadPartCopy][5]), the encryption request headers must match the
16109
+ # default encryption configuration of the directory bucket.
16110
+ #
16111
+ # </note>
15176
16112
  #
15177
16113
  #
15178
16114
  #
15179
16115
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html
16116
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html
16117
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html
16118
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
16119
+ # [5]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
15180
16120
  #
15181
16121
  # @option params [String] :storage_class
15182
16122
  # By default, Amazon S3 uses the STANDARD Storage Class to store newly
@@ -15256,46 +16196,83 @@ module Aws::S3
15256
16196
  # </note>
15257
16197
  #
15258
16198
  # @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.
16199
+ # Specifies the KMS key ID (Key ID, Key ARN, or Key Alias) to use for
16200
+ # object encryption. If the KMS key doesn't exist in the same account
16201
+ # that's issuing the command, you must use the full Key ARN not the Key
16202
+ # ID.
16203
+ #
16204
+ # **General purpose buckets** - If you specify
16205
+ # `x-amz-server-side-encryption` with `aws:kms` or `aws:kms:dsse`, this
16206
+ # header specifies the ID (Key ID, Key ARN, or Key Alias) of the KMS key
16207
+ # to use. If you specify `x-amz-server-side-encryption:aws:kms` or
16208
+ # `x-amz-server-side-encryption:aws:kms:dsse`, but do not provide
16209
+ # `x-amz-server-side-encryption-aws-kms-key-id`, Amazon S3 uses the
16210
+ # Amazon Web Services managed key (`aws/s3`) to protect the data.
16211
+ #
16212
+ # **Directory buckets** - If you specify `x-amz-server-side-encryption`
16213
+ # with `aws:kms`, you must specify the `
16214
+ # x-amz-server-side-encryption-aws-kms-key-id` header with the ID (Key
16215
+ # ID or Key ARN) of the KMS symmetric encryption customer managed key to
16216
+ # use. Otherwise, you get an HTTP `400 Bad Request` error. Only use the
16217
+ # key ID or key ARN. The key alias format of the KMS key isn't
16218
+ # supported. Your SSE-KMS configuration can only support 1 [customer
16219
+ # managed key][1] per directory bucket for the lifetime of the bucket.
16220
+ # [Amazon Web Services managed key][2] (`aws/s3`) isn't supported.
16221
+ #
16222
+ #
16223
+ #
16224
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk
16225
+ # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk
15269
16226
  #
15270
- # <note markdown="1"> This functionality is not supported for directory buckets.
16227
+ # @option params [String] :ssekms_encryption_context
16228
+ # Specifies the Amazon Web Services KMS Encryption Context as an
16229
+ # additional encryption context to use for object encryption. The value
16230
+ # of this header is a Base64-encoded string of a UTF-8 encoded JSON,
16231
+ # which contains the encryption context as key-value pairs. This value
16232
+ # is stored as object metadata and automatically gets passed on to
16233
+ # Amazon Web Services KMS for future `GetObject` operations on this
16234
+ # object.
15271
16235
  #
15272
- # </note>
16236
+ # **General purpose buckets** - This value must be explicitly added
16237
+ # during `CopyObject` operations if you want an additional encryption
16238
+ # context for your object. For more information, see [Encryption
16239
+ # context][1] in the *Amazon S3 User Guide*.
15273
16240
  #
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.
16241
+ # **Directory buckets** - You can optionally provide an explicit
16242
+ # encryption context value. The value must match the default encryption
16243
+ # context - the bucket Amazon Resource Name (ARN). An additional
16244
+ # encryption context value is not supported.
15282
16245
  #
15283
- # <note markdown="1"> This functionality is not supported for directory buckets.
15284
16246
  #
15285
- # </note>
16247
+ #
16248
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html#encryption-context
15286
16249
  #
15287
16250
  # @option params [Boolean] :bucket_key_enabled
15288
16251
  # Specifies whether Amazon S3 should use an S3 Bucket Key for object
15289
16252
  # 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.
16253
+ # (KMS) keys (SSE-KMS).
16254
+ #
16255
+ # **General purpose buckets** - Setting this header to `true` causes
16256
+ # Amazon S3 to use an S3 Bucket Key for object encryption with SSE-KMS.
16257
+ # Also, specifying this header with a PUT action doesn't affect
16258
+ # bucket-level settings for S3 Bucket Key.
15292
16259
  #
15293
- # Specifying this header with a PUT action doesn’t affect bucket-level
15294
- # settings for S3 Bucket Key.
16260
+ # **Directory buckets** - S3 Bucket Keys are always enabled for `GET`
16261
+ # and `PUT` operations in a directory bucket and can’t be disabled. S3
16262
+ # Bucket Keys aren't supported, when you copy SSE-KMS encrypted objects
16263
+ # from general purpose buckets to directory buckets, from directory
16264
+ # buckets to general purpose buckets, or between directory buckets,
16265
+ # through [CopyObject][1], [UploadPartCopy][2], [the Copy operation in
16266
+ # Batch Operations][3], or [the import jobs][4]. In this case, Amazon S3
16267
+ # makes a call to KMS every time a copy request is made for a
16268
+ # KMS-encrypted object.
15295
16269
  #
15296
- # <note markdown="1"> This functionality is not supported for directory buckets.
15297
16270
  #
15298
- # </note>
16271
+ #
16272
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
16273
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
16274
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-buckets-objects-Batch-Ops
16275
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-import-job
15299
16276
  #
15300
16277
  # @option params [String] :request_payer
15301
16278
  # Confirms that the requester knows that they will be charged for the
@@ -15373,134 +16350,134 @@ module Aws::S3
15373
16350
  # * {Types::PutObjectOutput#request_charged #request_charged} => String
15374
16351
  #
15375
16352
  #
15376
- # @example Example: To upload an object
16353
+ # @example Example: To upload an object and specify canned ACL.
15377
16354
  #
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.
16355
+ # # The following example uploads and object. The request specifies optional canned ACL (access control list) to all READ
16356
+ # # access to authenticated users. If the bucket is versioning enabled, S3 returns version ID in response.
15380
16357
  #
15381
16358
  # resp = client.put_object({
15382
- # body: "HappyFace.jpg",
16359
+ # acl: "authenticated-read",
16360
+ # body: "filetoupload",
15383
16361
  # bucket: "examplebucket",
15384
- # key: "HappyFace.jpg",
16362
+ # key: "exampleobject",
15385
16363
  # })
15386
16364
  #
15387
16365
  # resp.to_h outputs the following:
15388
16366
  # {
15389
16367
  # etag: "\"6805f2cfc46c0f04559748bb039d69ae\"",
15390
- # version_id: "tpf3zF08nBplQK1XLOefGskR7mGDwcDk",
16368
+ # version_id: "Kirh.unyZwjQ69YxcQLA8z4F5j3kJJKr",
15391
16369
  # }
15392
16370
  #
15393
- # @example Example: To upload an object (specify optional headers)
16371
+ # @example Example: To create an object.
15394
16372
  #
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.
16373
+ # # The following example creates an object. If the bucket is versioning enabled, S3 returns version ID in response.
15397
16374
  #
15398
16375
  # resp = client.put_object({
15399
- # body: "HappyFace.jpg",
16376
+ # body: "filetoupload",
15400
16377
  # bucket: "examplebucket",
15401
- # key: "HappyFace.jpg",
15402
- # server_side_encryption: "AES256",
15403
- # storage_class: "STANDARD_IA",
16378
+ # key: "objectkey",
15404
16379
  # })
15405
16380
  #
15406
16381
  # resp.to_h outputs the following:
15407
16382
  # {
15408
16383
  # etag: "\"6805f2cfc46c0f04559748bb039d69ae\"",
15409
- # server_side_encryption: "AES256",
15410
- # version_id: "CG612hodqujkf8FaaNfp8U..FIhLROcp",
16384
+ # version_id: "Bvq0EDKxOcXLJXNo_Lkz37eM3R4pfzyQ",
15411
16385
  # }
15412
16386
  #
15413
- # @example Example: To upload object and specify user-defined metadata
16387
+ # @example Example: To upload an object
15414
16388
  #
15415
- # # The following example creates an object. The request also specifies optional metadata. If the bucket is versioning
15416
- # # enabled, S3 returns version ID in response.
16389
+ # # The following example uploads an object to a versioning-enabled bucket. The source file is specified using Windows file
16390
+ # # syntax. S3 returns VersionId of the newly created object.
15417
16391
  #
15418
16392
  # resp = client.put_object({
15419
- # body: "filetoupload",
16393
+ # body: "HappyFace.jpg",
15420
16394
  # bucket: "examplebucket",
15421
- # key: "exampleobject",
15422
- # metadata: {
15423
- # "metadata1" => "value1",
15424
- # "metadata2" => "value2",
15425
- # },
16395
+ # key: "HappyFace.jpg",
15426
16396
  # })
15427
16397
  #
15428
16398
  # resp.to_h outputs the following:
15429
16399
  # {
15430
16400
  # etag: "\"6805f2cfc46c0f04559748bb039d69ae\"",
15431
- # version_id: "pSKidl4pHBiNwukdbcPXAIs.sshFFOc0",
16401
+ # version_id: "tpf3zF08nBplQK1XLOefGskR7mGDwcDk",
15432
16402
  # }
15433
16403
  #
15434
- # @example Example: To upload an object and specify canned ACL.
16404
+ # @example Example: To upload an object and specify optional tags
15435
16405
  #
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.
16406
+ # # The following example uploads an object. The request specifies optional object tags. The bucket is versioned, therefore
16407
+ # # S3 returns version ID of the newly created object.
15438
16408
  #
15439
16409
  # resp = client.put_object({
15440
- # acl: "authenticated-read",
15441
- # body: "filetoupload",
16410
+ # body: "c:\\HappyFace.jpg",
15442
16411
  # bucket: "examplebucket",
15443
- # key: "exampleobject",
16412
+ # key: "HappyFace.jpg",
16413
+ # tagging: "key1=value1&key2=value2",
15444
16414
  # })
15445
16415
  #
15446
16416
  # resp.to_h outputs the following:
15447
16417
  # {
15448
16418
  # etag: "\"6805f2cfc46c0f04559748bb039d69ae\"",
15449
- # version_id: "Kirh.unyZwjQ69YxcQLA8z4F5j3kJJKr",
16419
+ # version_id: "psM2sYY4.o1501dSx8wMvnkOzSBB.V4a",
15450
16420
  # }
15451
16421
  #
15452
- # @example Example: To create an object.
16422
+ # @example Example: To upload an object and specify server-side encryption and object tags
15453
16423
  #
15454
- # # The following example creates an object. If the bucket is versioning enabled, S3 returns version ID in response.
16424
+ # # The following example uploads an object. The request specifies the optional server-side encryption option. The request
16425
+ # # also specifies optional object tags. If the bucket is versioning enabled, S3 returns version ID in response.
15455
16426
  #
15456
16427
  # resp = client.put_object({
15457
16428
  # body: "filetoupload",
15458
16429
  # bucket: "examplebucket",
15459
- # key: "objectkey",
16430
+ # key: "exampleobject",
16431
+ # server_side_encryption: "AES256",
16432
+ # tagging: "key1=value1&key2=value2",
15460
16433
  # })
15461
16434
  #
15462
16435
  # resp.to_h outputs the following:
15463
16436
  # {
15464
16437
  # etag: "\"6805f2cfc46c0f04559748bb039d69ae\"",
15465
- # version_id: "Bvq0EDKxOcXLJXNo_Lkz37eM3R4pfzyQ",
16438
+ # server_side_encryption: "AES256",
16439
+ # version_id: "Ri.vC6qVlA4dEnjgRV4ZHsHoFIjqEMNt",
15466
16440
  # }
15467
16441
  #
15468
- # @example Example: To upload an object and specify server-side encryption and object tags
16442
+ # @example Example: To upload an object (specify optional headers)
15469
16443
  #
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.
16444
+ # # The following example uploads an object. The request specifies optional request headers to directs S3 to use specific
16445
+ # # storage class and use server-side encryption.
15472
16446
  #
15473
16447
  # resp = client.put_object({
15474
- # body: "filetoupload",
16448
+ # body: "HappyFace.jpg",
15475
16449
  # bucket: "examplebucket",
15476
- # key: "exampleobject",
16450
+ # key: "HappyFace.jpg",
15477
16451
  # server_side_encryption: "AES256",
15478
- # tagging: "key1=value1&key2=value2",
16452
+ # storage_class: "STANDARD_IA",
15479
16453
  # })
15480
16454
  #
15481
16455
  # resp.to_h outputs the following:
15482
16456
  # {
15483
16457
  # etag: "\"6805f2cfc46c0f04559748bb039d69ae\"",
15484
16458
  # server_side_encryption: "AES256",
15485
- # version_id: "Ri.vC6qVlA4dEnjgRV4ZHsHoFIjqEMNt",
16459
+ # version_id: "CG612hodqujkf8FaaNfp8U..FIhLROcp",
15486
16460
  # }
15487
16461
  #
15488
- # @example Example: To upload an object and specify optional tags
16462
+ # @example Example: To upload object and specify user-defined metadata
15489
16463
  #
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.
16464
+ # # The following example creates an object. The request also specifies optional metadata. If the bucket is versioning
16465
+ # # enabled, S3 returns version ID in response.
15492
16466
  #
15493
16467
  # resp = client.put_object({
15494
- # body: "c:\\HappyFace.jpg",
16468
+ # body: "filetoupload",
15495
16469
  # bucket: "examplebucket",
15496
- # key: "HappyFace.jpg",
15497
- # tagging: "key1=value1&key2=value2",
16470
+ # key: "exampleobject",
16471
+ # metadata: {
16472
+ # "metadata1" => "value1",
16473
+ # "metadata2" => "value2",
16474
+ # },
15498
16475
  # })
15499
16476
  #
15500
16477
  # resp.to_h outputs the following:
15501
16478
  # {
15502
16479
  # etag: "\"6805f2cfc46c0f04559748bb039d69ae\"",
15503
- # version_id: "psM2sYY4.o1501dSx8wMvnkOzSBB.V4a",
16480
+ # version_id: "pSKidl4pHBiNwukdbcPXAIs.sshFFOc0",
15504
16481
  # }
15505
16482
  #
15506
16483
  # @example Streaming a file from disk
@@ -15528,6 +16505,7 @@ module Aws::S3
15528
16505
  # checksum_sha1: "ChecksumSHA1",
15529
16506
  # checksum_sha256: "ChecksumSHA256",
15530
16507
  # expires: Time.now,
16508
+ # if_none_match: "IfNoneMatch",
15531
16509
  # grant_full_control: "GrantFullControl",
15532
16510
  # grant_read: "GrantRead",
15533
16511
  # grant_read_acp: "GrantReadACP",
@@ -16627,6 +17605,10 @@ module Aws::S3
16627
17605
  #
16628
17606
  # </note>
16629
17607
  #
17608
+ # The `SELECT` job type for the RestoreObject operation is no longer
17609
+ # available to new customers. Existing customers of Amazon S3 Select can
17610
+ # continue to use the feature as usual. [Learn more][1]
17611
+ #
16630
17612
  # Restores an archived copy of an object back into Amazon S3
16631
17613
  #
16632
17614
  # This functionality is not supported for Amazon S3 on Outposts.
@@ -16640,11 +17622,11 @@ module Aws::S3
16640
17622
  # For more information about the `S3` structure in the request body, see
16641
17623
  # the following:
16642
17624
  #
16643
- # * [PutObject][1]
17625
+ # * [PutObject][2]
16644
17626
  #
16645
- # * [Managing Access with ACLs][2] in the *Amazon S3 User Guide*
17627
+ # * [Managing Access with ACLs][3] in the *Amazon S3 User Guide*
16646
17628
  #
16647
- # * [Protecting Data Using Server-Side Encryption][3] in the *Amazon S3
17629
+ # * [Protecting Data Using Server-Side Encryption][4] in the *Amazon S3
16648
17630
  # User Guide*
16649
17631
  #
16650
17632
  # Permissions
@@ -16653,8 +17635,8 @@ module Aws::S3
16653
17635
  # `s3:RestoreObject` action. The bucket owner has this permission by
16654
17636
  # default and can grant this permission to others. For more
16655
17637
  # 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*.
17638
+ # Subresource Operations][5] and [Managing Access Permissions to Your
17639
+ # Amazon S3 Resources][6] in the *Amazon S3 User Guide*.
16658
17640
  #
16659
17641
  # Restoring objects
16660
17642
  #
@@ -16717,11 +17699,11 @@ module Aws::S3
16717
17699
  #
16718
17700
  # For more information about archive retrieval options and provisioned
16719
17701
  # capacity for `Expedited` data access, see [Restoring Archived
16720
- # Objects][6] in the *Amazon S3 User Guide*.
17702
+ # Objects][7] in the *Amazon S3 User Guide*.
16721
17703
  #
16722
17704
  # You can use Amazon S3 restore speed upgrade to change the restore
16723
17705
  # speed to a faster speed while it is in progress. For more
16724
- # information, see [ Upgrading the speed of an in-progress restore][7]
17706
+ # information, see [ Upgrading the speed of an in-progress restore][8]
16725
17707
  # in the *Amazon S3 User Guide*.
16726
17708
  #
16727
17709
  # To get the status of object restoration, you can send a `HEAD`
@@ -16729,7 +17711,7 @@ module Aws::S3
16729
17711
  # provides information about the restoration status, in the response.
16730
17712
  # You can use Amazon S3 event notifications to notify you when a
16731
17713
  # restore is initiated or completed. For more information, see
16732
- # [Configuring Amazon S3 Event Notifications][8] in the *Amazon S3
17714
+ # [Configuring Amazon S3 Event Notifications][9] in the *Amazon S3
16733
17715
  # User Guide*.
16734
17716
  #
16735
17717
  # After restoring an archived object, you can update the restoration
@@ -16745,8 +17727,8 @@ module Aws::S3
16745
17727
  # restore an object copy for 10 days, but the object is scheduled to
16746
17728
  # expire in 3 days, Amazon S3 deletes the object in 3 days. For more
16747
17729
  # information about lifecycle configuration, see
16748
- # [PutBucketLifecycleConfiguration][9] and [Object Lifecycle
16749
- # Management][10] in *Amazon S3 User Guide*.
17730
+ # [PutBucketLifecycleConfiguration][10] and [Object Lifecycle
17731
+ # Management][11] in *Amazon S3 User Guide*.
16750
17732
  #
16751
17733
  # Responses
16752
17734
  #
@@ -16784,23 +17766,24 @@ module Aws::S3
16784
17766
  #
16785
17767
  # The following operations are related to `RestoreObject`:
16786
17768
  #
16787
- # * [PutBucketLifecycleConfiguration][9]
17769
+ # * [PutBucketLifecycleConfiguration][10]
16788
17770
  #
16789
- # * [GetBucketNotificationConfiguration][11]
17771
+ # * [GetBucketNotificationConfiguration][12]
16790
17772
  #
16791
17773
  #
16792
17774
  #
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
17775
+ # [1]: http://aws.amazon.com/blogs/storage/how-to-optimize-querying-your-data-in-amazon-s3/
17776
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html
17777
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/dev/S3_ACLs_UsingACLs.html
17778
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html
17779
+ # [5]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/using-with-s3-actions.html#using-with-s3-actions-related-to-bucket-subresources
17780
+ # [6]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-access-control.html
17781
+ # [7]: https://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html
17782
+ # [8]: https://docs.aws.amazon.com/AmazonS3/latest/dev/restoring-objects.html#restoring-objects-upgrade-tier.title.html
17783
+ # [9]: https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html
17784
+ # [10]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html
17785
+ # [11]: https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html
17786
+ # [12]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketNotificationConfiguration.html
16804
17787
  #
16805
17788
  # @option params [required, String] :bucket
16806
17789
  # The bucket name containing the object to restore.
@@ -17012,6 +17995,10 @@ module Aws::S3
17012
17995
  #
17013
17996
  # </note>
17014
17997
  #
17998
+ # The SelectObjectContent operation is no longer available to new
17999
+ # customers. Existing customers of Amazon S3 Select can continue to use
18000
+ # the operation as usual. [Learn more][1]
18001
+ #
17015
18002
  # This action filters the contents of an Amazon S3 object based on a
17016
18003
  # simple structured query language (SQL) statement. In the request,
17017
18004
  # along with the SQL expression, you must also specify a data
@@ -17023,7 +18010,7 @@ module Aws::S3
17023
18010
  # This functionality is not supported for Amazon S3 on Outposts.
17024
18011
  #
17025
18012
  # For more information about Amazon S3 Select, see [Selecting Content
17026
- # from Objects][1] and [SELECT Command][2] in the *Amazon S3 User
18013
+ # from Objects][2] and [SELECT Command][3] in the *Amazon S3 User
17027
18014
  # Guide*.
17028
18015
  #
17029
18016
  #
@@ -17033,7 +18020,7 @@ module Aws::S3
17033
18020
  # : You must have the `s3:GetObject` permission for this
17034
18021
  # operation. Amazon S3 Select does not support anonymous access. For
17035
18022
  # more information about permissions, see [Specifying Permissions in a
17036
- # Policy][3] in the *Amazon S3 User Guide*.
18023
+ # Policy][4] in the *Amazon S3 User Guide*.
17037
18024
  #
17038
18025
  # Object Data Formats
17039
18026
  #
@@ -17058,31 +18045,31 @@ module Aws::S3
17058
18045
  #
17059
18046
  # For objects that are encrypted with customer-provided encryption
17060
18047
  # keys (SSE-C), you must use HTTPS, and you must use the headers
17061
- # that are documented in the [GetObject][4]. For more information
18048
+ # that are documented in the [GetObject][5]. For more information
17062
18049
  # about SSE-C, see [Server-Side Encryption (Using Customer-Provided
17063
- # Encryption Keys)][5] in the *Amazon S3 User Guide*.
18050
+ # Encryption Keys)][6] in the *Amazon S3 User Guide*.
17064
18051
  #
17065
18052
  # For objects that are encrypted with Amazon S3 managed keys
17066
18053
  # (SSE-S3) and Amazon Web Services KMS keys (SSE-KMS), server-side
17067
18054
  # encryption is handled transparently, so you don't need to specify
17068
18055
  # anything. For more information about server-side encryption,
17069
18056
  # including SSE-S3 and SSE-KMS, see [Protecting Data Using
17070
- # Server-Side Encryption][6] in the *Amazon S3 User Guide*.
18057
+ # Server-Side Encryption][7] in the *Amazon S3 User Guide*.
17071
18058
  #
17072
18059
  # Working with the Response Body
17073
18060
  #
17074
18061
  # : Given the response size is unknown, Amazon S3 Select streams the
17075
18062
  # response as a series of messages and includes a `Transfer-Encoding`
17076
18063
  # header with `chunked` as its value in the response. For more
17077
- # information, see [Appendix: SelectObjectContent Response][7].
18064
+ # information, see [Appendix: SelectObjectContent Response][8].
17078
18065
  #
17079
18066
  # GetObject Support
17080
18067
  #
17081
18068
  # : The `SelectObjectContent` action does not support the following
17082
- # `GetObject` functionality. For more information, see [GetObject][4].
18069
+ # `GetObject` functionality. For more information, see [GetObject][5].
17083
18070
  #
17084
18071
  # * `Range`: Although you can specify a scan range for an Amazon S3
17085
- # Select request (see [SelectObjectContentRequest - ScanRange][8] in
18072
+ # Select request (see [SelectObjectContentRequest - ScanRange][9] in
17086
18073
  # the request parameters), you cannot specify the range of bytes of
17087
18074
  # an object to return.
17088
18075
  #
@@ -17093,36 +18080,37 @@ module Aws::S3
17093
18080
  # storage classes, nor objects in the `ARCHIVE_ACCESS` or
17094
18081
  # `DEEP_ARCHIVE_ACCESS` access tiers of the `INTELLIGENT_TIERING`
17095
18082
  # storage class. For more information about storage classes, see
17096
- # [Using Amazon S3 storage classes][9] in the *Amazon S3 User
18083
+ # [Using Amazon S3 storage classes][10] in the *Amazon S3 User
17097
18084
  # Guide*.
17098
18085
  #
17099
18086
  # Special Errors
17100
18087
  #
17101
18088
  # : For a list of special errors for this operation, see [List of SELECT
17102
- # Object Content Error Codes][10]
18089
+ # Object Content Error Codes][11]
17103
18090
  #
17104
18091
  # The following operations are related to `SelectObjectContent`:
17105
18092
  #
17106
- # * [GetObject][4]
18093
+ # * [GetObject][5]
17107
18094
  #
17108
- # * [GetBucketLifecycleConfiguration][11]
18095
+ # * [GetBucketLifecycleConfiguration][12]
17109
18096
  #
17110
- # * [PutBucketLifecycleConfiguration][12]
18097
+ # * [PutBucketLifecycleConfiguration][13]
17111
18098
  #
17112
18099
  #
17113
18100
  #
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
18101
+ # [1]: http://aws.amazon.com/blogs/storage/how-to-optimize-querying-your-data-in-amazon-s3/
18102
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/dev/selecting-content-from-objects.html
18103
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-glacier-select-sql-reference-select.html
18104
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html
18105
+ # [5]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html
18106
+ # [6]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html
18107
+ # [7]: https://docs.aws.amazon.com/AmazonS3/latest/dev/serv-side-encryption.html
18108
+ # [8]: https://docs.aws.amazon.com/AmazonS3/latest/API/RESTSelectObjectAppendix.html
18109
+ # [9]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_SelectObjectContent.html#AmazonS3-SelectObjectContent-request-ScanRange
18110
+ # [10]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-class-intro.html
18111
+ # [11]: https://docs.aws.amazon.com/AmazonS3/latest/API/ErrorResponses.html#SelectObjectContentErrorCodeList
18112
+ # [12]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetBucketLifecycleConfiguration.html
18113
+ # [13]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutBucketLifecycleConfiguration.html
17126
18114
  #
17127
18115
  # @option params [required, String] :bucket
17128
18116
  # The S3 bucket.
@@ -17206,22 +18194,22 @@ module Aws::S3
17206
18194
  #
17207
18195
  # @example EventStream Operation Example
17208
18196
  #
17209
- # You can process event once it arrives immediately, or wait until
17210
- # full response complete and iterate through eventstream enumerator.
18197
+ # You can process the event once it arrives immediately, or wait until the
18198
+ # full response is complete and iterate through the eventstream enumerator.
17211
18199
  #
17212
18200
  # 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.
18201
+ # with callbacks. Callbacks can be registered for specific events or for all
18202
+ # events, including error events.
17215
18203
  #
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.
18204
+ # Callbacks can be passed into the `:event_stream_handler` option or within a
18205
+ # block statement attached to the #select_object_content call directly. Hybrid
18206
+ # pattern of both is also supported.
17219
18207
  #
17220
- # `:event_stream_handler` option takes in either Proc object or
18208
+ # `:event_stream_handler` option takes in either a Proc object or
17221
18209
  # Aws::S3::EventStreams::SelectObjectContentEventStream object.
17222
18210
  #
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
18211
+ # Usage pattern a): Callbacks with a block attached to #select_object_content
18212
+ # Example for registering callbacks for all event types and an error event
17225
18213
  #
17226
18214
  # client.select_object_content( # params input# ) do |stream|
17227
18215
  # stream.on_error_event do |event|
@@ -17241,9 +18229,9 @@ module Aws::S3
17241
18229
  #
17242
18230
  # end
17243
18231
  #
17244
- # Usage pattern b): pass in `:event_stream_handler` for #select_object_content
18232
+ # Usage pattern b): Pass in `:event_stream_handler` for #select_object_content
17245
18233
  #
17246
- # 1) create a Aws::S3::EventStreams::SelectObjectContentEventStream object
18234
+ # 1) Create a Aws::S3::EventStreams::SelectObjectContentEventStream object
17247
18235
  # Example for registering callbacks with specific events
17248
18236
  #
17249
18237
  # handler = Aws::S3::EventStreams::SelectObjectContentEventStream.new
@@ -17265,7 +18253,7 @@ module Aws::S3
17265
18253
  #
17266
18254
  # client.select_object_content( # params input #, event_stream_handler: handler)
17267
18255
  #
17268
- # 2) use a Ruby Proc object
18256
+ # 2) Use a Ruby Proc object
17269
18257
  # Example for registering callbacks with specific events
17270
18258
  #
17271
18259
  # handler = Proc.new do |stream|
@@ -17288,7 +18276,7 @@ module Aws::S3
17288
18276
  #
17289
18277
  # client.select_object_content( # params input #, event_stream_handler: handler)
17290
18278
  #
17291
- # Usage pattern c): hybird pattern of a) and b)
18279
+ # Usage pattern c): Hybrid pattern of a) and b)
17292
18280
  #
17293
18281
  # handler = Aws::S3::EventStreams::SelectObjectContentEventStream.new
17294
18282
  # handler.on_records_event do |event|
@@ -17318,8 +18306,7 @@ module Aws::S3
17318
18306
  # end
17319
18307
  # end
17320
18308
  #
17321
- # Besides above usage patterns for process events when they arrive immediately, you can also
17322
- # iterate through events after response complete.
18309
+ # You can also iterate through events after the response complete.
17323
18310
  #
17324
18311
  # Events are available at resp.payload # => Enumerator
17325
18312
  # For parameter input example, please refer to following request syntax
@@ -17470,14 +18457,27 @@ module Aws::S3
17470
18457
  # </note>
17471
18458
  #
17472
18459
  # 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*.
18460
+ # : * **General purpose bucket permissions** - To perform a multipart
18461
+ # upload with encryption using an Key Management Service key, the
18462
+ # requester must have permission to the `kms:Decrypt` and
18463
+ # `kms:GenerateDataKey` actions on the key. The requester must also
18464
+ # have permissions for the `kms:GenerateDataKey` action for the
18465
+ # `CreateMultipartUpload` API. Then, the requester needs permissions
18466
+ # for the `kms:Decrypt` action on the `UploadPart` and
18467
+ # `UploadPartCopy` APIs.
18468
+ #
18469
+ # These permissions are required because Amazon S3 must decrypt and
18470
+ # read data from the encrypted file parts before it completes the
18471
+ # multipart upload. For more information about KMS permissions, see
18472
+ # [Protecting data using server-side encryption with KMS][6] in the
18473
+ # *Amazon S3 User Guide*. For information about the permissions
18474
+ # required to use the multipart upload API, see [Multipart upload
18475
+ # and permissions][7] and [Multipart upload API and permissions][8]
18476
+ # in the *Amazon S3 User Guide*.
17477
18477
  #
17478
18478
  # * **Directory bucket permissions** - To grant access to this API
17479
18479
  # operation on a directory bucket, we recommend that you use the [
17480
- # `CreateSession` ][7] API operation for session-based
18480
+ # `CreateSession` ][9] API operation for session-based
17481
18481
  # authorization. Specifically, you grant the
17482
18482
  # `s3express:CreateSession` permission to the directory bucket in a
17483
18483
  # bucket policy or an IAM identity-based policy. Then, you make the
@@ -17488,7 +18488,11 @@ module Aws::S3
17488
18488
  # token for use. Amazon Web Services CLI or SDKs create session and
17489
18489
  # refresh the session token automatically to avoid service
17490
18490
  # interruptions when a session expires. For more information about
17491
- # authorization, see [ `CreateSession` ][7].
18491
+ # authorization, see [ `CreateSession` ][9].
18492
+ #
18493
+ # If the object is encrypted with SSE-KMS, you must also have the
18494
+ # `kms:GenerateDataKey` and `kms:Decrypt` permissions in IAM
18495
+ # identity-based policies and KMS key policies for the KMS key.
17492
18496
  #
17493
18497
  # Data integrity
17494
18498
  #
@@ -17500,7 +18504,7 @@ module Aws::S3
17500
18504
  # then Amazon Web Services S3 uses the `x-amz-content-sha256` header
17501
18505
  # as a checksum instead of `Content-MD5`. For more information see
17502
18506
  # [Authenticating Requests: Using the Authorization Header (Amazon Web
17503
- # Services Signature Version 4)][8].
18507
+ # Services Signature Version 4)][10].
17504
18508
  #
17505
18509
  # <note markdown="1"> **Directory buckets** - MD5 is not supported by directory buckets.
17506
18510
  # You can use checksum algorithms to check object integrity.
@@ -17541,12 +18545,13 @@ module Aws::S3
17541
18545
  #
17542
18546
  # * x-amz-server-side-encryption-customer-key-MD5
17543
18547
  #
17544
- # * **Directory bucket** - For directory buckets, only server-side
17545
- # encryption with Amazon S3 managed keys (SSE-S3) (`AES256`) is
17546
- # supported.
18548
+ # For more information, see [Using Server-Side Encryption][11] in
18549
+ # the *Amazon S3 User Guide*.
17547
18550
  #
17548
- # For more information, see [Using Server-Side Encryption][9] in the
17549
- # *Amazon S3 User Guide*.
18551
+ # * <b>Directory buckets </b> - For directory buckets, there are only
18552
+ # two supported options for server-side encryption: server-side
18553
+ # encryption with Amazon S3 managed keys (SSE-S3) (`AES256`) and
18554
+ # server-side encryption with KMS keys (SSE-KMS) (`aws:kms`).
17550
18555
  #
17551
18556
  # Special errors
17552
18557
  # : * Error Code: `NoSuchUpload`
@@ -17568,13 +18573,13 @@ module Aws::S3
17568
18573
  #
17569
18574
  # * [CreateMultipartUpload][2]
17570
18575
  #
17571
- # * [CompleteMultipartUpload][10]
18576
+ # * [CompleteMultipartUpload][12]
17572
18577
  #
17573
- # * [AbortMultipartUpload][11]
18578
+ # * [AbortMultipartUpload][13]
17574
18579
  #
17575
- # * [ListParts][12]
18580
+ # * [ListParts][14]
17576
18581
  #
17577
- # * [ListMultipartUploads][13]
18582
+ # * [ListMultipartUploads][15]
17578
18583
  #
17579
18584
  #
17580
18585
  #
@@ -17583,14 +18588,16 @@ module Aws::S3
17583
18588
  # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/qfacts.html
17584
18589
  # [4]: https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html
17585
18590
  # [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
18591
+ # [6]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html
18592
+ # [7]: https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html
18593
+ # [8]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html#mpuAndPermissions
18594
+ # [9]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateSession.html
18595
+ # [10]: https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-auth-using-authorization-header.html
18596
+ # [11]: https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html
18597
+ # [12]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html
18598
+ # [13]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html
18599
+ # [14]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html
18600
+ # [15]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html
17594
18601
  #
17595
18602
  # @option params [String, StringIO, File] :body
17596
18603
  # Object data.
@@ -17674,9 +18681,9 @@ module Aws::S3
17674
18681
  # @option params [String] :checksum_crc32
17675
18682
  # This header can be used as a data integrity check to verify that the
17676
18683
  # data received is the same data that was originally sent. This header
17677
- # specifies the base64-encoded, 32-bit CRC32 checksum of the object. For
17678
- # more information, see [Checking object integrity][1] in the *Amazon S3
17679
- # User Guide*.
18684
+ # specifies the base64-encoded, 32-bit CRC-32 checksum of the object.
18685
+ # For more information, see [Checking object integrity][1] in the
18686
+ # *Amazon S3 User Guide*.
17680
18687
  #
17681
18688
  #
17682
18689
  #
@@ -17685,7 +18692,7 @@ module Aws::S3
17685
18692
  # @option params [String] :checksum_crc32c
17686
18693
  # This header can be used as a data integrity check to verify that the
17687
18694
  # data received is the same data that was originally sent. This header
17688
- # specifies the base64-encoded, 32-bit CRC32C checksum of the object.
18695
+ # specifies the base64-encoded, 32-bit CRC-32C checksum of the object.
17689
18696
  # For more information, see [Checking object integrity][1] in the
17690
18697
  # *Amazon S3 User Guide*.
17691
18698
  #
@@ -17923,9 +18930,21 @@ module Aws::S3
17923
18930
  # have the <b> <code>s3:PutObject</code> </b> permission to write
17924
18931
  # the object copy to the destination bucket.
17925
18932
  #
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*.
18933
+ # * To perform a multipart upload with encryption using an Key
18934
+ # Management Service key, the requester must have permission to
18935
+ # the `kms:Decrypt` and `kms:GenerateDataKey` actions on the key.
18936
+ # The requester must also have permissions for the
18937
+ # `kms:GenerateDataKey` action for the `CreateMultipartUpload`
18938
+ # API. Then, the requester needs permissions for the `kms:Decrypt`
18939
+ # action on the `UploadPart` and `UploadPartCopy` APIs. These
18940
+ # permissions are required because Amazon S3 must decrypt and read
18941
+ # data from the encrypted file parts before it completes the
18942
+ # multipart upload. For more information about KMS permissions,
18943
+ # see [Protecting data using server-side encryption with KMS][7]
18944
+ # in the *Amazon S3 User Guide*. For information about the
18945
+ # permissions required to use the multipart upload API, see
18946
+ # [Multipart upload and permissions][8] and [Multipart upload API
18947
+ # and permissions][9] in the *Amazon S3 User Guide*.
17929
18948
  #
17930
18949
  # * **Directory bucket permissions** - You must have permissions in a
17931
18950
  # bucket policy or an IAM identity-based policy based on the source
@@ -17934,9 +18953,9 @@ module Aws::S3
17934
18953
  # * If the source object that you want to copy is in a directory
17935
18954
  # bucket, you must have the <b>
17936
18955
  # <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`
18956
+ # `Action` element of a policy to read the object. By default, the
18957
+ # session is in the `ReadWrite` mode. If you want to restrict the
18958
+ # access, you can explicitly set the `s3express:SessionMode`
17940
18959
  # condition key to `ReadOnly` on the copy source bucket.
17941
18960
  #
17942
18961
  # * If the copy destination is a directory bucket, you must have the
@@ -17945,20 +18964,41 @@ module Aws::S3
17945
18964
  # destination. The `s3express:SessionMode` condition key cannot be
17946
18965
  # set to `ReadOnly` on the copy destination.
17947
18966
  #
18967
+ # If the object is encrypted with SSE-KMS, you must also have the
18968
+ # `kms:GenerateDataKey` and `kms:Decrypt` permissions in IAM
18969
+ # identity-based policies and KMS key policies for the KMS key.
18970
+ #
17948
18971
  # For example policies, see [Example bucket policies for S3 Express
17949
- # One Zone][8] and [Amazon Web Services Identity and Access
18972
+ # One Zone][10] and [Amazon Web Services Identity and Access
17950
18973
  # Management (IAM) identity-based policies for S3 Express One
17951
- # Zone][9] in the *Amazon S3 User Guide*.
18974
+ # Zone][11] in the *Amazon S3 User Guide*.
17952
18975
  #
17953
18976
  # Encryption
17954
18977
  # : * <b>General purpose buckets </b> - For information about using
17955
18978
  # server-side encryption with customer-provided encryption keys with
17956
- # the `UploadPartCopy` operation, see [CopyObject][10] and
18979
+ # the `UploadPartCopy` operation, see [CopyObject][12] and
17957
18980
  # [UploadPart][2].
17958
18981
  #
17959
- # * <b>Directory buckets </b> - For directory buckets, only
17960
- # server-side encryption with Amazon S3 managed keys (SSE-S3)
17961
- # (`AES256`) is supported.
18982
+ # * <b>Directory buckets </b> - For directory buckets, there are only
18983
+ # two supported options for server-side encryption: server-side
18984
+ # encryption with Amazon S3 managed keys (SSE-S3) (`AES256`) and
18985
+ # server-side encryption with KMS keys (SSE-KMS) (`aws:kms`). For
18986
+ # more information, see [Protecting data with server-side
18987
+ # encryption][13] in the *Amazon S3 User Guide*.
18988
+ #
18989
+ # <note markdown="1"> For directory buckets, when you perform a `CreateMultipartUpload`
18990
+ # operation and an `UploadPartCopy` operation, the request headers
18991
+ # you provide in the `CreateMultipartUpload` request must match the
18992
+ # default encryption configuration of the destination bucket.
18993
+ #
18994
+ # </note>
18995
+ #
18996
+ # S3 Bucket Keys aren't supported, when you copy SSE-KMS encrypted
18997
+ # objects from general purpose buckets to directory buckets, from
18998
+ # directory buckets to general purpose buckets, or between directory
18999
+ # buckets, through [UploadPartCopy][14]. In this case, Amazon S3
19000
+ # makes a call to KMS every time a copy request is made for a
19001
+ # KMS-encrypted object.
17962
19002
  #
17963
19003
  # Special errors
17964
19004
  # : * Error Code: `NoSuchUpload`
@@ -17983,17 +19023,17 @@ module Aws::S3
17983
19023
  #
17984
19024
  # The following operations are related to `UploadPartCopy`:
17985
19025
  #
17986
- # * [CreateMultipartUpload][11]
19026
+ # * [CreateMultipartUpload][15]
17987
19027
  #
17988
19028
  # * [UploadPart][2]
17989
19029
  #
17990
- # * [CompleteMultipartUpload][12]
19030
+ # * [CompleteMultipartUpload][16]
17991
19031
  #
17992
- # * [AbortMultipartUpload][13]
19032
+ # * [AbortMultipartUpload][17]
17993
19033
  #
17994
- # * [ListParts][14]
19034
+ # * [ListParts][18]
17995
19035
  #
17996
- # * [ListMultipartUploads][15]
19036
+ # * [ListMultipartUploads][19]
17997
19037
  #
17998
19038
  #
17999
19039
  #
@@ -18003,15 +19043,19 @@ module Aws::S3
18003
19043
  # [4]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectOperations.html
18004
19044
  # [5]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-Regions-and-Zones.html
18005
19045
  # [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
19046
+ # [7]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html
19047
+ # [8]: https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuAndPermissions.html
19048
+ # [9]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html#mpuAndPermissions
19049
+ # [10]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam-example-bucket-policies.html
19050
+ # [11]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-security-iam-identity-policies.html
19051
+ # [12]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
19052
+ # [13]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html
19053
+ # [14]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
19054
+ # [15]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CreateMultipartUpload.html
19055
+ # [16]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CompleteMultipartUpload.html
19056
+ # [17]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_AbortMultipartUpload.html
19057
+ # [18]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListParts.html
19058
+ # [19]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListMultipartUploads.html
18015
19059
  #
18016
19060
  # @option params [required, String] :bucket
18017
19061
  # The bucket name.
@@ -18534,7 +19578,7 @@ module Aws::S3
18534
19578
  # @option params [String] :checksum_crc32
18535
19579
  # This header can be used as a data integrity check to verify that the
18536
19580
  # data received is the same data that was originally sent. This
18537
- # specifies the base64-encoded, 32-bit CRC32 checksum of the object
19581
+ # specifies the base64-encoded, 32-bit CRC-32 checksum of the object
18538
19582
  # returned by the Object Lambda function. This may not match the
18539
19583
  # checksum for the object stored in Amazon S3. Amazon S3 will perform
18540
19584
  # validation of the checksum values only when the original `GetObject`
@@ -18554,7 +19598,7 @@ module Aws::S3
18554
19598
  # @option params [String] :checksum_crc32c
18555
19599
  # This header can be used as a data integrity check to verify that the
18556
19600
  # data received is the same data that was originally sent. This
18557
- # specifies the base64-encoded, 32-bit CRC32C checksum of the object
19601
+ # specifies the base64-encoded, 32-bit CRC-32C checksum of the object
18558
19602
  # returned by the Object Lambda function. This may not match the
18559
19603
  # checksum for the object stored in Amazon S3. Amazon S3 will perform
18560
19604
  # validation of the checksum values only when the original `GetObject`
@@ -18785,14 +19829,19 @@ module Aws::S3
18785
19829
  # @api private
18786
19830
  def build_request(operation_name, params = {})
18787
19831
  handlers = @handlers.for(operation_name)
19832
+ tracer = config.telemetry_provider.tracer_provider.tracer(
19833
+ Aws::Telemetry.module_to_tracer_name('Aws::S3')
19834
+ )
18788
19835
  context = Seahorse::Client::RequestContext.new(
18789
19836
  operation_name: operation_name,
18790
19837
  operation: config.api.operation(operation_name),
18791
19838
  client: self,
18792
19839
  params: params,
18793
- config: config)
19840
+ config: config,
19841
+ tracer: tracer
19842
+ )
18794
19843
  context[:gem_name] = 'aws-sdk-s3'
18795
- context[:gem_version] = '1.147.0'
19844
+ context[:gem_version] = '1.167.0'
18796
19845
  Seahorse::Client::Request.new(handlers, context)
18797
19846
  end
18798
19847