aws-sdk-s3 1.150.0 → 1.169.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +110 -0
  3. data/VERSION +1 -1
  4. data/lib/aws-sdk-s3/access_grants_credentials_provider.rb +12 -3
  5. data/lib/aws-sdk-s3/bucket.rb +252 -88
  6. data/lib/aws-sdk-s3/bucket_acl.rb +3 -3
  7. data/lib/aws-sdk-s3/bucket_cors.rb +4 -4
  8. data/lib/aws-sdk-s3/bucket_lifecycle.rb +4 -4
  9. data/lib/aws-sdk-s3/bucket_lifecycle_configuration.rb +42 -5
  10. data/lib/aws-sdk-s3/bucket_logging.rb +3 -3
  11. data/lib/aws-sdk-s3/bucket_notification.rb +3 -3
  12. data/lib/aws-sdk-s3/bucket_policy.rb +8 -8
  13. data/lib/aws-sdk-s3/bucket_request_payment.rb +3 -3
  14. data/lib/aws-sdk-s3/bucket_tagging.rb +4 -4
  15. data/lib/aws-sdk-s3/bucket_versioning.rb +5 -5
  16. data/lib/aws-sdk-s3/bucket_website.rb +4 -4
  17. data/lib/aws-sdk-s3/client.rb +1685 -668
  18. data/lib/aws-sdk-s3/client_api.rb +49 -4
  19. data/lib/aws-sdk-s3/customizations/bucket.rb +1 -1
  20. data/lib/aws-sdk-s3/customizations/object.rb +11 -5
  21. data/lib/aws-sdk-s3/customizations/object_summary.rb +5 -0
  22. data/lib/aws-sdk-s3/customizations/object_version.rb +13 -0
  23. data/lib/aws-sdk-s3/customizations.rb +24 -38
  24. data/lib/aws-sdk-s3/encryption/client.rb +2 -2
  25. data/lib/aws-sdk-s3/encryption/kms_cipher_provider.rb +2 -2
  26. data/lib/aws-sdk-s3/encryptionV2/client.rb +2 -2
  27. data/lib/aws-sdk-s3/encryptionV2/kms_cipher_provider.rb +2 -2
  28. data/lib/aws-sdk-s3/endpoint_parameters.rb +21 -18
  29. data/lib/aws-sdk-s3/endpoint_provider.rb +1 -0
  30. data/lib/aws-sdk-s3/endpoints.rb +416 -1614
  31. data/lib/aws-sdk-s3/errors.rb +3 -0
  32. data/lib/aws-sdk-s3/file_downloader.rb +1 -1
  33. data/lib/aws-sdk-s3/file_uploader.rb +1 -1
  34. data/lib/aws-sdk-s3/multipart_stream_uploader.rb +1 -1
  35. data/lib/aws-sdk-s3/multipart_upload.rb +31 -8
  36. data/lib/aws-sdk-s3/multipart_upload_part.rb +11 -11
  37. data/lib/aws-sdk-s3/object.rb +441 -158
  38. data/lib/aws-sdk-s3/object_acl.rb +3 -3
  39. data/lib/aws-sdk-s3/object_copier.rb +1 -1
  40. data/lib/aws-sdk-s3/object_summary.rb +403 -134
  41. data/lib/aws-sdk-s3/object_version.rb +53 -13
  42. data/lib/aws-sdk-s3/plugins/access_grants.rb +75 -5
  43. data/lib/aws-sdk-s3/plugins/endpoints.rb +24 -212
  44. data/lib/aws-sdk-s3/plugins/express_session_auth.rb +7 -1
  45. data/lib/aws-sdk-s3/plugins/http_200_errors.rb +53 -16
  46. data/lib/aws-sdk-s3/resource.rb +37 -11
  47. data/lib/aws-sdk-s3/types.rb +1106 -401
  48. data/lib/aws-sdk-s3.rb +35 -31
  49. data/sig/bucket.rbs +4 -0
  50. data/sig/bucket_lifecycle_configuration.rbs +7 -3
  51. data/sig/client.rbs +49 -5
  52. data/sig/multipart_upload.rbs +1 -0
  53. data/sig/object.rbs +7 -0
  54. data/sig/object_summary.rbs +1 -0
  55. data/sig/object_version.rbs +6 -0
  56. data/sig/resource.rbs +7 -1
  57. data/sig/types.rbs +36 -2
  58. data/sig/waiters.rbs +12 -0
  59. metadata +7 -6
@@ -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