aws-sdk-s3 1.150.0 → 1.169.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +110 -0
  3. data/VERSION +1 -1
  4. data/lib/aws-sdk-s3/access_grants_credentials_provider.rb +12 -3
  5. data/lib/aws-sdk-s3/bucket.rb +252 -88
  6. data/lib/aws-sdk-s3/bucket_acl.rb +3 -3
  7. data/lib/aws-sdk-s3/bucket_cors.rb +4 -4
  8. data/lib/aws-sdk-s3/bucket_lifecycle.rb +4 -4
  9. data/lib/aws-sdk-s3/bucket_lifecycle_configuration.rb +42 -5
  10. data/lib/aws-sdk-s3/bucket_logging.rb +3 -3
  11. data/lib/aws-sdk-s3/bucket_notification.rb +3 -3
  12. data/lib/aws-sdk-s3/bucket_policy.rb +8 -8
  13. data/lib/aws-sdk-s3/bucket_request_payment.rb +3 -3
  14. data/lib/aws-sdk-s3/bucket_tagging.rb +4 -4
  15. data/lib/aws-sdk-s3/bucket_versioning.rb +5 -5
  16. data/lib/aws-sdk-s3/bucket_website.rb +4 -4
  17. data/lib/aws-sdk-s3/client.rb +1685 -668
  18. data/lib/aws-sdk-s3/client_api.rb +49 -4
  19. data/lib/aws-sdk-s3/customizations/bucket.rb +1 -1
  20. data/lib/aws-sdk-s3/customizations/object.rb +11 -5
  21. data/lib/aws-sdk-s3/customizations/object_summary.rb +5 -0
  22. data/lib/aws-sdk-s3/customizations/object_version.rb +13 -0
  23. data/lib/aws-sdk-s3/customizations.rb +24 -38
  24. data/lib/aws-sdk-s3/encryption/client.rb +2 -2
  25. data/lib/aws-sdk-s3/encryption/kms_cipher_provider.rb +2 -2
  26. data/lib/aws-sdk-s3/encryptionV2/client.rb +2 -2
  27. data/lib/aws-sdk-s3/encryptionV2/kms_cipher_provider.rb +2 -2
  28. data/lib/aws-sdk-s3/endpoint_parameters.rb +21 -18
  29. data/lib/aws-sdk-s3/endpoint_provider.rb +1 -0
  30. data/lib/aws-sdk-s3/endpoints.rb +416 -1614
  31. data/lib/aws-sdk-s3/errors.rb +3 -0
  32. data/lib/aws-sdk-s3/file_downloader.rb +1 -1
  33. data/lib/aws-sdk-s3/file_uploader.rb +1 -1
  34. data/lib/aws-sdk-s3/multipart_stream_uploader.rb +1 -1
  35. data/lib/aws-sdk-s3/multipart_upload.rb +31 -8
  36. data/lib/aws-sdk-s3/multipart_upload_part.rb +11 -11
  37. data/lib/aws-sdk-s3/object.rb +441 -158
  38. data/lib/aws-sdk-s3/object_acl.rb +3 -3
  39. data/lib/aws-sdk-s3/object_copier.rb +1 -1
  40. data/lib/aws-sdk-s3/object_summary.rb +403 -134
  41. data/lib/aws-sdk-s3/object_version.rb +53 -13
  42. data/lib/aws-sdk-s3/plugins/access_grants.rb +75 -5
  43. data/lib/aws-sdk-s3/plugins/endpoints.rb +24 -212
  44. data/lib/aws-sdk-s3/plugins/express_session_auth.rb +7 -1
  45. data/lib/aws-sdk-s3/plugins/http_200_errors.rb +53 -16
  46. data/lib/aws-sdk-s3/resource.rb +37 -11
  47. data/lib/aws-sdk-s3/types.rb +1106 -401
  48. data/lib/aws-sdk-s3.rb +35 -31
  49. data/sig/bucket.rbs +4 -0
  50. data/sig/bucket_lifecycle_configuration.rbs +7 -3
  51. data/sig/client.rbs +49 -5
  52. data/sig/multipart_upload.rbs +1 -0
  53. data/sig/object.rbs +7 -0
  54. data/sig/object_summary.rbs +1 -0
  55. data/sig/object_version.rbs +6 -0
  56. data/sig/resource.rbs +7 -1
  57. data/sig/types.rbs +36 -2
  58. data/sig/waiters.rbs +12 -0
  59. metadata +7 -6
@@ -41,6 +41,14 @@ module Aws::S3
41
41
  data[:creation_date]
42
42
  end
43
43
 
44
+ # `BucketRegion` indicates the Amazon Web Services region where the
45
+ # bucket is located. If the request contains at least one valid
46
+ # parameter, it is included in the response.
47
+ # @return [String]
48
+ def bucket_region
49
+ data[:bucket_region]
50
+ end
51
+
44
52
  # @!endgroup
45
53
 
46
54
  # @return [Client]
@@ -95,7 +103,7 @@ module Aws::S3
95
103
  options, params = separate_params_and_options(options)
96
104
  waiter = Waiters::BucketExists.new(options)
97
105
  yield_waiter_and_warn(waiter, &block) if block_given?
98
- Aws::Plugins::UserAgent.feature('resource') do
106
+ Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
99
107
  waiter.wait(params.merge(bucket: @name))
100
108
  end
101
109
  Bucket.new({
@@ -114,7 +122,7 @@ module Aws::S3
114
122
  options, params = separate_params_and_options(options)
115
123
  waiter = Waiters::BucketNotExists.new(options)
116
124
  yield_waiter_and_warn(waiter, &block) if block_given?
117
- Aws::Plugins::UserAgent.feature('resource') do
125
+ Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
118
126
  waiter.wait(params.merge(bucket: @name))
119
127
  end
120
128
  Bucket.new({
@@ -217,7 +225,7 @@ module Aws::S3
217
225
  :retry
218
226
  end
219
227
  end
220
- Aws::Plugins::UserAgent.feature('resource') do
228
+ Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
221
229
  Aws::Waiters::Waiter.new(options).wait({})
222
230
  end
223
231
  end
@@ -334,7 +342,7 @@ module Aws::S3
334
342
  # @return [Types::CreateBucketOutput]
335
343
  def create(options = {})
336
344
  options = options.merge(bucket: @name)
337
- resp = Aws::Plugins::UserAgent.feature('resource') do
345
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
338
346
  @client.create_bucket(options)
339
347
  end
340
348
  resp.data
@@ -359,7 +367,7 @@ module Aws::S3
359
367
  # @return [EmptyStructure]
360
368
  def delete(options = {})
361
369
  options = options.merge(bucket: @name)
362
- resp = Aws::Plugins::UserAgent.feature('resource') do
370
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
363
371
  @client.delete_bucket(options)
364
372
  end
365
373
  resp.data
@@ -447,13 +455,13 @@ module Aws::S3
447
455
  # For the `x-amz-checksum-algorithm ` header, replace ` algorithm ` with
448
456
  # the supported algorithm from the following list:
449
457
  #
450
- # * CRC32
458
+ # * `CRC32`
451
459
  #
452
- # * CRC32C
460
+ # * `CRC32C`
453
461
  #
454
- # * SHA1
462
+ # * `SHA1`
455
463
  #
456
- # * SHA256
464
+ # * `SHA256`
457
465
  #
458
466
  # For more information, see [Checking object integrity][1] in the
459
467
  # *Amazon S3 User Guide*.
@@ -473,7 +481,7 @@ module Aws::S3
473
481
  # @return [Types::DeleteObjectsOutput]
474
482
  def delete_objects(options = {})
475
483
  options = options.merge(bucket: @name)
476
- resp = Aws::Plugins::UserAgent.feature('resource') do
484
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
477
485
  @client.delete_objects(options)
478
486
  end
479
487
  resp.data
@@ -497,6 +505,7 @@ module Aws::S3
497
505
  # checksum_sha1: "ChecksumSHA1",
498
506
  # checksum_sha256: "ChecksumSHA256",
499
507
  # expires: Time.now,
508
+ # if_none_match: "IfNoneMatch",
500
509
  # grant_full_control: "GrantFullControl",
501
510
  # grant_read: "GrantRead",
502
511
  # grant_read_acp: "GrantReadACP",
@@ -605,10 +614,11 @@ module Aws::S3
605
614
  # information about REST request authentication, see [REST
606
615
  # Authentication][1].
607
616
  #
608
- # <note markdown="1"> The `Content-MD5` header is required for any request to upload an
609
- # object with a retention period configured using Amazon S3 Object Lock.
610
- # For more information about Amazon S3 Object Lock, see [Amazon S3
611
- # Object Lock Overview][2] in the *Amazon S3 User Guide*.
617
+ # <note markdown="1"> The `Content-MD5` or `x-amz-sdk-checksum-algorithm` header is required
618
+ # for any request to upload an object with a retention period configured
619
+ # using Amazon S3 Object Lock. For more information, see [Uploading
620
+ # objects to an Object Lock enabled bucket ][2] in the *Amazon S3 User
621
+ # Guide*.
612
622
  #
613
623
  # </note>
614
624
  #
@@ -619,7 +629,7 @@ module Aws::S3
619
629
  #
620
630
  #
621
631
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html
622
- # [2]: https://docs.aws.amazon.com/AmazonS3/latest/dev/object-lock-overview.html
632
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-managing.html#object-lock-put-object
623
633
  # @option options [String] :content_type
624
634
  # A standard MIME type describing the format of the contents. For more
625
635
  # information, see
@@ -639,13 +649,13 @@ module Aws::S3
639
649
  # For the `x-amz-checksum-algorithm ` header, replace ` algorithm ` with
640
650
  # the supported algorithm from the following list:
641
651
  #
642
- # * CRC32
652
+ # * `CRC32`
643
653
  #
644
- # * CRC32C
654
+ # * `CRC32C`
645
655
  #
646
- # * SHA1
656
+ # * `SHA1`
647
657
  #
648
- # * SHA256
658
+ # * `SHA256`
649
659
  #
650
660
  # For more information, see [Checking object integrity][1] in the
651
661
  # *Amazon S3 User Guide*.
@@ -656,20 +666,27 @@ module Aws::S3
656
666
  # provided `ChecksumAlgorithm` parameter and uses the checksum algorithm
657
667
  # that matches the provided value in `x-amz-checksum-algorithm `.
658
668
  #
659
- # <note markdown="1"> For directory buckets, when you use Amazon Web Services SDKs, `CRC32`
660
- # is the default checksum algorithm that's used for performance.
669
+ # <note markdown="1"> The `Content-MD5` or `x-amz-sdk-checksum-algorithm` header is required
670
+ # for any request to upload an object with a retention period configured
671
+ # using Amazon S3 Object Lock. For more information, see [Uploading
672
+ # objects to an Object Lock enabled bucket ][2] in the *Amazon S3 User
673
+ # Guide*.
661
674
  #
662
675
  # </note>
663
676
  #
677
+ # For directory buckets, when you use Amazon Web Services SDKs, `CRC32`
678
+ # is the default checksum algorithm that's used for performance.
679
+ #
664
680
  #
665
681
  #
666
682
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
683
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-managing.html#object-lock-put-object
667
684
  # @option options [String] :checksum_crc32
668
685
  # This header can be used as a data integrity check to verify that the
669
686
  # data received is the same data that was originally sent. This header
670
- # specifies the base64-encoded, 32-bit CRC32 checksum of the object. For
671
- # more information, see [Checking object integrity][1] in the *Amazon S3
672
- # User Guide*.
687
+ # specifies the base64-encoded, 32-bit CRC-32 checksum of the object.
688
+ # For more information, see [Checking object integrity][1] in the
689
+ # *Amazon S3 User Guide*.
673
690
  #
674
691
  #
675
692
  #
@@ -677,7 +694,7 @@ module Aws::S3
677
694
  # @option options [String] :checksum_crc32c
678
695
  # This header can be used as a data integrity check to verify that the
679
696
  # data received is the same data that was originally sent. This header
680
- # specifies the base64-encoded, 32-bit CRC32C checksum of the object.
697
+ # specifies the base64-encoded, 32-bit CRC-32C checksum of the object.
681
698
  # For more information, see [Checking object integrity][1] in the
682
699
  # *Amazon S3 User Guide*.
683
700
  #
@@ -712,6 +729,24 @@ module Aws::S3
712
729
  #
713
730
  #
714
731
  # [1]: https://www.rfc-editor.org/rfc/rfc7234#section-5.3
732
+ # @option options [String] :if_none_match
733
+ # Uploads the object only if the object key name does not already exist
734
+ # in the bucket specified. Otherwise, Amazon S3 returns a `412
735
+ # Precondition Failed` error.
736
+ #
737
+ # If a conflicting operation occurs during the upload S3 returns a `409
738
+ # ConditionalRequestConflict` response. On a 409 failure you should
739
+ # retry the upload.
740
+ #
741
+ # Expects the '*' (asterisk) character.
742
+ #
743
+ # For more information about conditional requests, see [RFC 7232][1], or
744
+ # [Conditional requests][2] in the *Amazon S3 User Guide*.
745
+ #
746
+ #
747
+ #
748
+ # [1]: https://tools.ietf.org/html/rfc7232
749
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/conditional-requests.html
715
750
  # @option options [String] :grant_full_control
716
751
  # Gives the grantee READ, READ\_ACP, and WRITE\_ACP permissions on the
717
752
  # object.
@@ -754,25 +789,65 @@ module Aws::S3
754
789
  # object in Amazon S3 (for example, `AES256`, `aws:kms`,
755
790
  # `aws:kms:dsse`).
756
791
  #
757
- # <b>General purpose buckets </b> - You have four mutually exclusive
758
- # options to protect data using server-side encryption in Amazon S3,
759
- # depending on how you choose to manage the encryption keys.
760
- # Specifically, the encryption key options are Amazon S3 managed keys
761
- # (SSE-S3), Amazon Web Services KMS keys (SSE-KMS or DSSE-KMS), and
762
- # customer-provided keys (SSE-C). Amazon S3 encrypts data with
763
- # server-side encryption by using Amazon S3 managed keys (SSE-S3) by
764
- # default. You can optionally tell Amazon S3 to encrypt data at rest by
765
- # using server-side encryption with other key options. For more
766
- # information, see [Using Server-Side Encryption][1] in the *Amazon S3
767
- # User Guide*.
768
- #
769
- # <b>Directory buckets </b> - For directory buckets, only the
770
- # server-side encryption with Amazon S3 managed keys (SSE-S3) (`AES256`)
771
- # value is supported.
792
+ # * <b>General purpose buckets </b> - You have four mutually exclusive
793
+ # options to protect data using server-side encryption in Amazon S3,
794
+ # depending on how you choose to manage the encryption keys.
795
+ # Specifically, the encryption key options are Amazon S3 managed keys
796
+ # (SSE-S3), Amazon Web Services KMS keys (SSE-KMS or DSSE-KMS), and
797
+ # customer-provided keys (SSE-C). Amazon S3 encrypts data with
798
+ # server-side encryption by using Amazon S3 managed keys (SSE-S3) by
799
+ # default. You can optionally tell Amazon S3 to encrypt data at rest
800
+ # by using server-side encryption with other key options. For more
801
+ # information, see [Using Server-Side Encryption][1] in the *Amazon S3
802
+ # User Guide*.
803
+ #
804
+ # * <b>Directory buckets </b> - For directory buckets, there are only
805
+ # two supported options for server-side encryption: server-side
806
+ # encryption with Amazon S3 managed keys (SSE-S3) (`AES256`) and
807
+ # server-side encryption with KMS keys (SSE-KMS) (`aws:kms`). We
808
+ # recommend that the bucket's default encryption uses the desired
809
+ # encryption configuration and you don't override the bucket default
810
+ # encryption in your `CreateSession` requests or `PUT` object
811
+ # requests. Then, new objects are automatically encrypted with the
812
+ # desired encryption settings. For more information, see [Protecting
813
+ # data with server-side encryption][2] in the *Amazon S3 User Guide*.
814
+ # For more information about the encryption overriding behaviors in
815
+ # directory buckets, see [Specifying server-side encryption with KMS
816
+ # for new object uploads][3].
817
+ #
818
+ # In the Zonal endpoint API calls (except [CopyObject][4] and
819
+ # [UploadPartCopy][5]) using the REST API, the encryption request
820
+ # headers must match the encryption settings that are specified in the
821
+ # `CreateSession` request. You can't override the values of the
822
+ # encryption settings (`x-amz-server-side-encryption`,
823
+ # `x-amz-server-side-encryption-aws-kms-key-id`,
824
+ # `x-amz-server-side-encryption-context`, and
825
+ # `x-amz-server-side-encryption-bucket-key-enabled`) that are
826
+ # specified in the `CreateSession` request. You don't need to
827
+ # explicitly specify these encryption settings values in Zonal
828
+ # endpoint API calls, and Amazon S3 will use the encryption settings
829
+ # values from the `CreateSession` request to protect new objects in
830
+ # the directory bucket.
831
+ #
832
+ # <note markdown="1"> When you use the CLI or the Amazon Web Services SDKs, for
833
+ # `CreateSession`, the session token refreshes automatically to avoid
834
+ # service interruptions when a session expires. The CLI or the Amazon
835
+ # Web Services SDKs use the bucket's default encryption configuration
836
+ # for the `CreateSession` request. It's not supported to override the
837
+ # encryption settings values in the `CreateSession` request. So in the
838
+ # Zonal endpoint API calls (except [CopyObject][4] and
839
+ # [UploadPartCopy][5]), the encryption request headers must match the
840
+ # default encryption configuration of the directory bucket.
841
+ #
842
+ # </note>
772
843
  #
773
844
  #
774
845
  #
775
846
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingServerSideEncryption.html
847
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-serv-side-encryption.html
848
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-express-specifying-kms-encryption.html
849
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
850
+ # [5]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
776
851
  # @option options [String] :storage_class
777
852
  # By default, Amazon S3 uses the STANDARD Storage Class to store newly
778
853
  # created objects. The STANDARD storage class provides high durability
@@ -846,44 +921,86 @@ module Aws::S3
846
921
  #
847
922
  # </note>
848
923
  # @option options [String] :ssekms_key_id
849
- # If `x-amz-server-side-encryption` has a valid value of `aws:kms` or
850
- # `aws:kms:dsse`, this header specifies the ID (Key ID, Key ARN, or Key
851
- # Alias) of the Key Management Service (KMS) symmetric encryption
852
- # customer managed key that was used for the object. If you specify
853
- # `x-amz-server-side-encryption:aws:kms` or
854
- # `x-amz-server-side-encryption:aws:kms:dsse`, but do not provide`
855
- # x-amz-server-side-encryption-aws-kms-key-id`, Amazon S3 uses the
856
- # Amazon Web Services managed key (`aws/s3`) to protect the data. If the
857
- # KMS key does not exist in the same account that's issuing the
858
- # command, you must use the full ARN and not just the ID.
924
+ # Specifies the KMS key ID (Key ID, Key ARN, or Key Alias) to use for
925
+ # object encryption. If the KMS key doesn't exist in the same account
926
+ # that's issuing the command, you must use the full Key ARN not the Key
927
+ # ID.
928
+ #
929
+ # **General purpose buckets** - If you specify
930
+ # `x-amz-server-side-encryption` with `aws:kms` or `aws:kms:dsse`, this
931
+ # header specifies the ID (Key ID, Key ARN, or Key Alias) of the KMS key
932
+ # to use. If you specify `x-amz-server-side-encryption:aws:kms` or
933
+ # `x-amz-server-side-encryption:aws:kms:dsse`, but do not provide
934
+ # `x-amz-server-side-encryption-aws-kms-key-id`, Amazon S3 uses the
935
+ # Amazon Web Services managed key (`aws/s3`) to protect the data.
936
+ #
937
+ # **Directory buckets** - If you specify `x-amz-server-side-encryption`
938
+ # with `aws:kms`, the ` x-amz-server-side-encryption-aws-kms-key-id`
939
+ # header is implicitly assigned the ID of the KMS symmetric encryption
940
+ # customer managed key that's configured for your directory bucket's
941
+ # default encryption setting. If you want to specify the `
942
+ # x-amz-server-side-encryption-aws-kms-key-id` header explicitly, you
943
+ # can only specify it with the ID (Key ID or Key ARN) of the KMS
944
+ # customer managed key that's configured for your directory bucket's
945
+ # default encryption setting. Otherwise, you get an HTTP `400 Bad
946
+ # Request` error. Only use the key ID or key ARN. The key alias format
947
+ # of the KMS key isn't supported. Your SSE-KMS configuration can only
948
+ # support 1 [customer managed key][1] per directory bucket for the
949
+ # lifetime of the bucket. The [Amazon Web Services managed key][2]
950
+ # (`aws/s3`) isn't supported.
951
+ #
952
+ #
953
+ #
954
+ # [1]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk
955
+ # [2]: https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk
956
+ # @option options [String] :ssekms_encryption_context
957
+ # Specifies the Amazon Web Services KMS Encryption Context as an
958
+ # additional encryption context to use for object encryption. The value
959
+ # of this header is a Base64-encoded string of a UTF-8 encoded JSON,
960
+ # which contains the encryption context as key-value pairs. This value
961
+ # is stored as object metadata and automatically gets passed on to
962
+ # Amazon Web Services KMS for future `GetObject` operations on this
963
+ # object.
859
964
  #
860
- # <note markdown="1"> This functionality is not supported for directory buckets.
965
+ # **General purpose buckets** - This value must be explicitly added
966
+ # during `CopyObject` operations if you want an additional encryption
967
+ # context for your object. For more information, see [Encryption
968
+ # context][1] in the *Amazon S3 User Guide*.
861
969
  #
862
- # </note>
863
- # @option options [String] :ssekms_encryption_context
864
- # Specifies the Amazon Web Services KMS Encryption Context to use for
865
- # object encryption. The value of this header is a base64-encoded UTF-8
866
- # string holding JSON with the encryption context key-value pairs. This
867
- # value is stored as object metadata and automatically gets passed on to
868
- # Amazon Web Services KMS for future `GetObject` or `CopyObject`
869
- # operations on this object. This value must be explicitly added during
870
- # `CopyObject` operations.
970
+ # **Directory buckets** - You can optionally provide an explicit
971
+ # encryption context value. The value must match the default encryption
972
+ # context - the bucket Amazon Resource Name (ARN). An additional
973
+ # encryption context value is not supported.
871
974
  #
872
- # <note markdown="1"> This functionality is not supported for directory buckets.
873
975
  #
874
- # </note>
976
+ #
977
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingKMSEncryption.html#encryption-context
875
978
  # @option options [Boolean] :bucket_key_enabled
876
979
  # Specifies whether Amazon S3 should use an S3 Bucket Key for object
877
980
  # encryption with server-side encryption using Key Management Service
878
- # (KMS) keys (SSE-KMS). Setting this header to `true` causes Amazon S3
879
- # to use an S3 Bucket Key for object encryption with SSE-KMS.
981
+ # (KMS) keys (SSE-KMS).
880
982
  #
881
- # Specifying this header with a PUT action doesn’t affect bucket-level
882
- # settings for S3 Bucket Key.
983
+ # **General purpose buckets** - Setting this header to `true` causes
984
+ # Amazon S3 to use an S3 Bucket Key for object encryption with SSE-KMS.
985
+ # Also, specifying this header with a PUT action doesn't affect
986
+ # bucket-level settings for S3 Bucket Key.
883
987
  #
884
- # <note markdown="1"> This functionality is not supported for directory buckets.
988
+ # **Directory buckets** - S3 Bucket Keys are always enabled for `GET`
989
+ # and `PUT` operations in a directory bucket and can’t be disabled. S3
990
+ # Bucket Keys aren't supported, when you copy SSE-KMS encrypted objects
991
+ # from general purpose buckets to directory buckets, from directory
992
+ # buckets to general purpose buckets, or between directory buckets,
993
+ # through [CopyObject][1], [UploadPartCopy][2], [the Copy operation in
994
+ # Batch Operations][3], or [the import jobs][4]. In this case, Amazon S3
995
+ # makes a call to KMS every time a copy request is made for a
996
+ # KMS-encrypted object.
885
997
  #
886
- # </note>
998
+ #
999
+ #
1000
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_CopyObject.html
1001
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
1002
+ # [3]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-buckets-objects-Batch-Ops
1003
+ # [4]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/create-import-job
887
1004
  # @option options [String] :request_payer
888
1005
  # Confirms that the requester knows that they will be charged for the
889
1006
  # request. Bucket owners need not specify this parameter in their
@@ -939,7 +1056,7 @@ module Aws::S3
939
1056
  # @return [Object]
940
1057
  def put_object(options = {})
941
1058
  options = options.merge(bucket: @name)
942
- Aws::Plugins::UserAgent.feature('resource') do
1059
+ Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
943
1060
  @client.put_object(options)
944
1061
  end
945
1062
  Object.new(
@@ -1018,12 +1135,26 @@ module Aws::S3
1018
1135
  #
1019
1136
  # </note>
1020
1137
  # @option options [String] :encoding_type
1021
- # Requests Amazon S3 to encode the object keys in the response and
1022
- # specifies the encoding method to use. An object key can contain any
1023
- # Unicode character; however, the XML 1.0 parser cannot parse some
1024
- # characters, such as characters with an ASCII value from 0 to 10. For
1025
- # characters that are not supported in XML 1.0, you can add this
1026
- # parameter to request that Amazon S3 encode the keys in the response.
1138
+ # Encoding type used by Amazon S3 to encode the [object keys][1] in the
1139
+ # response. Responses are encoded only in UTF-8. An object key can
1140
+ # contain any Unicode character. However, the XML 1.0 parser can't
1141
+ # parse certain characters, such as characters with an ASCII value from
1142
+ # 0 to 10. For characters that aren't supported in XML 1.0, you can add
1143
+ # this parameter to request that Amazon S3 encode the keys in the
1144
+ # response. For more information about characters to avoid in object key
1145
+ # names, see [Object key naming guidelines][2].
1146
+ #
1147
+ # <note markdown="1"> When using the URL encoding type, non-ASCII characters that are used
1148
+ # in an object's key name will be percent-encoded according to UTF-8
1149
+ # code values. For example, the object `test_file(3).png` will appear as
1150
+ # `test_file%283%29.png`.
1151
+ #
1152
+ # </note>
1153
+ #
1154
+ #
1155
+ #
1156
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html
1157
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-guidelines
1027
1158
  # @option options [String] :key_marker
1028
1159
  # Specifies the multipart upload after which listing should begin.
1029
1160
  #
@@ -1097,7 +1228,7 @@ module Aws::S3
1097
1228
  def multipart_uploads(options = {})
1098
1229
  batches = Enumerator.new do |y|
1099
1230
  options = options.merge(bucket: @name)
1100
- resp = Aws::Plugins::UserAgent.feature('resource') do
1231
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
1101
1232
  @client.list_multipart_uploads(options)
1102
1233
  end
1103
1234
  resp.each_page do |page|
@@ -1156,12 +1287,26 @@ module Aws::S3
1156
1287
  # the `max-keys` limitation. These keys are not returned elsewhere in
1157
1288
  # the response.
1158
1289
  # @option options [String] :encoding_type
1159
- # Requests Amazon S3 to encode the object keys in the response and
1160
- # specifies the encoding method to use. An object key can contain any
1161
- # Unicode character; however, the XML 1.0 parser cannot parse some
1162
- # characters, such as characters with an ASCII value from 0 to 10. For
1163
- # characters that are not supported in XML 1.0, you can add this
1164
- # parameter to request that Amazon S3 encode the keys in the response.
1290
+ # Encoding type used by Amazon S3 to encode the [object keys][1] in the
1291
+ # response. Responses are encoded only in UTF-8. An object key can
1292
+ # contain any Unicode character. However, the XML 1.0 parser can't
1293
+ # parse certain characters, such as characters with an ASCII value from
1294
+ # 0 to 10. For characters that aren't supported in XML 1.0, you can add
1295
+ # this parameter to request that Amazon S3 encode the keys in the
1296
+ # response. For more information about characters to avoid in object key
1297
+ # names, see [Object key naming guidelines][2].
1298
+ #
1299
+ # <note markdown="1"> When using the URL encoding type, non-ASCII characters that are used
1300
+ # in an object's key name will be percent-encoded according to UTF-8
1301
+ # code values. For example, the object `test_file(3).png` will appear as
1302
+ # `test_file%283%29.png`.
1303
+ #
1304
+ # </note>
1305
+ #
1306
+ #
1307
+ #
1308
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html
1309
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-guidelines
1165
1310
  # @option options [String] :key_marker
1166
1311
  # Specifies the key to start with when listing objects in a bucket.
1167
1312
  # @option options [String] :prefix
@@ -1200,7 +1345,7 @@ module Aws::S3
1200
1345
  def object_versions(options = {})
1201
1346
  batches = Enumerator.new do |y|
1202
1347
  options = options.merge(bucket: @name)
1203
- resp = Aws::Plugins::UserAgent.feature('resource') do
1348
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
1204
1349
  @client.list_object_versions(options)
1205
1350
  end
1206
1351
  resp.each_page do |page|
@@ -1252,10 +1397,26 @@ module Aws::S3
1252
1397
  #
1253
1398
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html
1254
1399
  # @option options [String] :encoding_type
1255
- # Encoding type used by Amazon S3 to encode object keys in the response.
1256
- # If using `url`, non-ASCII characters used in an object's key name
1257
- # will be URL encoded. For example, the object test\_file(3).png will
1258
- # appear as test\_file%283%29.png.
1400
+ # Encoding type used by Amazon S3 to encode the [object keys][1] in the
1401
+ # response. Responses are encoded only in UTF-8. An object key can
1402
+ # contain any Unicode character. However, the XML 1.0 parser can't
1403
+ # parse certain characters, such as characters with an ASCII value from
1404
+ # 0 to 10. For characters that aren't supported in XML 1.0, you can add
1405
+ # this parameter to request that Amazon S3 encode the keys in the
1406
+ # response. For more information about characters to avoid in object key
1407
+ # names, see [Object key naming guidelines][2].
1408
+ #
1409
+ # <note markdown="1"> When using the URL encoding type, non-ASCII characters that are used
1410
+ # in an object's key name will be percent-encoded according to UTF-8
1411
+ # code values. For example, the object `test_file(3).png` will appear as
1412
+ # `test_file%283%29.png`.
1413
+ #
1414
+ # </note>
1415
+ #
1416
+ #
1417
+ #
1418
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html
1419
+ # [2]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html#object-key-guidelines
1259
1420
  # @option options [String] :prefix
1260
1421
  # Limits the response to keys that begin with the specified prefix.
1261
1422
  #
@@ -1303,7 +1464,7 @@ module Aws::S3
1303
1464
  def objects(options = {})
1304
1465
  batches = Enumerator.new do |y|
1305
1466
  options = options.merge(bucket: @name)
1306
- resp = Aws::Plugins::UserAgent.feature('resource') do
1467
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
1307
1468
  @client.list_objects_v2(options)
1308
1469
  end
1309
1470
  resp.each_page do |page|
@@ -1412,3 +1573,6 @@ module Aws::S3
1412
1573
  class Collection < Aws::Resources::Collection; end
1413
1574
  end
1414
1575
  end
1576
+
1577
+ # Load customizations if they exist
1578
+ require 'aws-sdk-s3/customizations/bucket'
@@ -60,7 +60,7 @@ module Aws::S3
60
60
  #
61
61
  # @return [self]
62
62
  def load
63
- resp = Aws::Plugins::UserAgent.feature('resource') do
63
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
64
64
  @client.get_bucket_acl(bucket: @bucket_name)
65
65
  end
66
66
  @data = resp.data
@@ -177,7 +177,7 @@ module Aws::S3
177
177
  :retry
178
178
  end
179
179
  end
180
- Aws::Plugins::UserAgent.feature('resource') do
180
+ Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
181
181
  Aws::Waiters::Waiter.new(options).wait({})
182
182
  end
183
183
  end
@@ -269,7 +269,7 @@ module Aws::S3
269
269
  # @return [EmptyStructure]
270
270
  def put(options = {})
271
271
  options = options.merge(bucket: @bucket_name)
272
- resp = Aws::Plugins::UserAgent.feature('resource') do
272
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
273
273
  @client.put_bucket_acl(options)
274
274
  end
275
275
  resp.data
@@ -55,7 +55,7 @@ module Aws::S3
55
55
  #
56
56
  # @return [self]
57
57
  def load
58
- resp = Aws::Plugins::UserAgent.feature('resource') do
58
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
59
59
  @client.get_bucket_cors(bucket: @bucket_name)
60
60
  end
61
61
  @data = resp.data
@@ -172,7 +172,7 @@ module Aws::S3
172
172
  :retry
173
173
  end
174
174
  end
175
- Aws::Plugins::UserAgent.feature('resource') do
175
+ Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
176
176
  Aws::Waiters::Waiter.new(options).wait({})
177
177
  end
178
178
  end
@@ -192,7 +192,7 @@ module Aws::S3
192
192
  # @return [EmptyStructure]
193
193
  def delete(options = {})
194
194
  options = options.merge(bucket: @bucket_name)
195
- resp = Aws::Plugins::UserAgent.feature('resource') do
195
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
196
196
  @client.delete_bucket_cors(options)
197
197
  end
198
198
  resp.data
@@ -260,7 +260,7 @@ module Aws::S3
260
260
  # @return [EmptyStructure]
261
261
  def put(options = {})
262
262
  options = options.merge(bucket: @bucket_name)
263
- resp = Aws::Plugins::UserAgent.feature('resource') do
263
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
264
264
  @client.put_bucket_cors(options)
265
265
  end
266
266
  resp.data
@@ -54,7 +54,7 @@ module Aws::S3
54
54
  #
55
55
  # @return [self]
56
56
  def load
57
- resp = Aws::Plugins::UserAgent.feature('resource') do
57
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
58
58
  @client.get_bucket_lifecycle(bucket: @bucket_name)
59
59
  end
60
60
  @data = resp.data
@@ -171,7 +171,7 @@ module Aws::S3
171
171
  :retry
172
172
  end
173
173
  end
174
- Aws::Plugins::UserAgent.feature('resource') do
174
+ Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
175
175
  Aws::Waiters::Waiter.new(options).wait({})
176
176
  end
177
177
  end
@@ -191,7 +191,7 @@ module Aws::S3
191
191
  # @return [EmptyStructure]
192
192
  def delete(options = {})
193
193
  options = options.merge(bucket: @bucket_name)
194
- resp = Aws::Plugins::UserAgent.feature('resource') do
194
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
195
195
  @client.delete_bucket_lifecycle(options)
196
196
  end
197
197
  resp.data
@@ -263,7 +263,7 @@ module Aws::S3
263
263
  # @return [EmptyStructure]
264
264
  def put(options = {})
265
265
  options = options.merge(bucket: @bucket_name)
266
- resp = Aws::Plugins::UserAgent.feature('resource') do
266
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
267
267
  @client.put_bucket_lifecycle(options)
268
268
  end
269
269
  resp.data