aws-sdk-s3 1.61.1 → 1.166.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 (135) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1255 -0
  3. data/LICENSE.txt +202 -0
  4. data/VERSION +1 -0
  5. data/lib/aws-sdk-s3/access_grants_credentials.rb +57 -0
  6. data/lib/aws-sdk-s3/access_grants_credentials_provider.rb +250 -0
  7. data/lib/aws-sdk-s3/bucket.rb +814 -112
  8. data/lib/aws-sdk-s3/bucket_acl.rb +54 -17
  9. data/lib/aws-sdk-s3/bucket_cors.rb +63 -20
  10. data/lib/aws-sdk-s3/bucket_lifecycle.rb +63 -19
  11. data/lib/aws-sdk-s3/bucket_lifecycle_configuration.rb +64 -19
  12. data/lib/aws-sdk-s3/bucket_logging.rb +58 -17
  13. data/lib/aws-sdk-s3/bucket_notification.rb +47 -20
  14. data/lib/aws-sdk-s3/bucket_policy.rb +104 -17
  15. data/lib/aws-sdk-s3/bucket_region_cache.rb +11 -5
  16. data/lib/aws-sdk-s3/bucket_request_payment.rb +53 -19
  17. data/lib/aws-sdk-s3/bucket_tagging.rb +60 -17
  18. data/lib/aws-sdk-s3/bucket_versioning.rb +106 -17
  19. data/lib/aws-sdk-s3/bucket_website.rb +64 -19
  20. data/lib/aws-sdk-s3/client.rb +11280 -3232
  21. data/lib/aws-sdk-s3/client_api.rb +1078 -197
  22. data/lib/aws-sdk-s3/customizations/bucket.rb +33 -45
  23. data/lib/aws-sdk-s3/customizations/errors.rb +40 -0
  24. data/lib/aws-sdk-s3/customizations/multipart_upload.rb +2 -0
  25. data/lib/aws-sdk-s3/customizations/object.rb +237 -39
  26. data/lib/aws-sdk-s3/customizations/object_summary.rb +10 -0
  27. data/lib/aws-sdk-s3/customizations/object_version.rb +13 -0
  28. data/lib/aws-sdk-s3/customizations/types/list_object_versions_output.rb +2 -0
  29. data/lib/aws-sdk-s3/customizations/types/permanent_redirect.rb +26 -0
  30. data/lib/aws-sdk-s3/customizations.rb +27 -28
  31. data/lib/aws-sdk-s3/encryption/client.rb +25 -8
  32. data/lib/aws-sdk-s3/encryption/decrypt_handler.rb +71 -29
  33. data/lib/aws-sdk-s3/encryption/default_cipher_provider.rb +43 -5
  34. data/lib/aws-sdk-s3/encryption/default_key_provider.rb +2 -0
  35. data/lib/aws-sdk-s3/encryption/encrypt_handler.rb +13 -2
  36. data/lib/aws-sdk-s3/encryption/errors.rb +2 -0
  37. data/lib/aws-sdk-s3/encryption/io_auth_decrypter.rb +2 -0
  38. data/lib/aws-sdk-s3/encryption/io_decrypter.rb +11 -3
  39. data/lib/aws-sdk-s3/encryption/io_encrypter.rb +2 -0
  40. data/lib/aws-sdk-s3/encryption/key_provider.rb +2 -0
  41. data/lib/aws-sdk-s3/encryption/kms_cipher_provider.rb +46 -11
  42. data/lib/aws-sdk-s3/encryption/materials.rb +8 -6
  43. data/lib/aws-sdk-s3/encryption/utils.rb +25 -0
  44. data/lib/aws-sdk-s3/encryption.rb +4 -0
  45. data/lib/aws-sdk-s3/encryptionV2/client.rb +570 -0
  46. data/lib/aws-sdk-s3/encryptionV2/decrypt_handler.rb +223 -0
  47. data/lib/aws-sdk-s3/encryptionV2/default_cipher_provider.rb +170 -0
  48. data/lib/aws-sdk-s3/encryptionV2/default_key_provider.rb +40 -0
  49. data/lib/aws-sdk-s3/encryptionV2/encrypt_handler.rb +65 -0
  50. data/lib/aws-sdk-s3/encryptionV2/errors.rb +37 -0
  51. data/lib/aws-sdk-s3/encryptionV2/io_auth_decrypter.rb +58 -0
  52. data/lib/aws-sdk-s3/encryptionV2/io_decrypter.rb +37 -0
  53. data/lib/aws-sdk-s3/encryptionV2/io_encrypter.rb +73 -0
  54. data/lib/aws-sdk-s3/encryptionV2/key_provider.rb +31 -0
  55. data/lib/aws-sdk-s3/encryptionV2/kms_cipher_provider.rb +173 -0
  56. data/lib/aws-sdk-s3/encryptionV2/materials.rb +60 -0
  57. data/lib/aws-sdk-s3/encryptionV2/utils.rb +103 -0
  58. data/lib/aws-sdk-s3/encryption_v2.rb +23 -0
  59. data/lib/aws-sdk-s3/endpoint_parameters.rb +186 -0
  60. data/lib/aws-sdk-s3/endpoint_provider.rb +592 -0
  61. data/lib/aws-sdk-s3/endpoints.rb +2392 -0
  62. data/lib/aws-sdk-s3/errors.rb +27 -1
  63. data/lib/aws-sdk-s3/event_streams.rb +8 -1
  64. data/lib/aws-sdk-s3/express_credentials.rb +55 -0
  65. data/lib/aws-sdk-s3/express_credentials_provider.rb +59 -0
  66. data/lib/aws-sdk-s3/file_downloader.rb +176 -44
  67. data/lib/aws-sdk-s3/file_part.rb +2 -0
  68. data/lib/aws-sdk-s3/file_uploader.rb +28 -8
  69. data/lib/aws-sdk-s3/legacy_signer.rb +17 -25
  70. data/lib/aws-sdk-s3/multipart_file_uploader.rb +69 -13
  71. data/lib/aws-sdk-s3/multipart_stream_uploader.rb +49 -18
  72. data/lib/aws-sdk-s3/multipart_upload.rb +242 -25
  73. data/lib/aws-sdk-s3/multipart_upload_error.rb +2 -0
  74. data/lib/aws-sdk-s3/multipart_upload_part.rb +343 -31
  75. data/lib/aws-sdk-s3/object.rb +2240 -218
  76. data/lib/aws-sdk-s3/object_acl.rb +80 -21
  77. data/lib/aws-sdk-s3/object_copier.rb +9 -5
  78. data/lib/aws-sdk-s3/object_multipart_copier.rb +48 -22
  79. data/lib/aws-sdk-s3/object_summary.rb +1900 -178
  80. data/lib/aws-sdk-s3/object_version.rb +449 -59
  81. data/lib/aws-sdk-s3/plugins/accelerate.rb +17 -64
  82. data/lib/aws-sdk-s3/plugins/access_grants.rb +178 -0
  83. data/lib/aws-sdk-s3/plugins/arn.rb +70 -0
  84. data/lib/aws-sdk-s3/plugins/bucket_dns.rb +5 -41
  85. data/lib/aws-sdk-s3/plugins/bucket_name_restrictions.rb +3 -6
  86. data/lib/aws-sdk-s3/plugins/dualstack.rb +7 -50
  87. data/lib/aws-sdk-s3/plugins/endpoints.rb +289 -0
  88. data/lib/aws-sdk-s3/plugins/expect_100_continue.rb +5 -4
  89. data/lib/aws-sdk-s3/plugins/express_session_auth.rb +97 -0
  90. data/lib/aws-sdk-s3/plugins/get_bucket_location_fix.rb +3 -1
  91. data/lib/aws-sdk-s3/plugins/http_200_errors.rb +60 -15
  92. data/lib/aws-sdk-s3/plugins/iad_regional_endpoint.rb +11 -27
  93. data/lib/aws-sdk-s3/plugins/location_constraint.rb +5 -1
  94. data/lib/aws-sdk-s3/plugins/md5s.rb +32 -26
  95. data/lib/aws-sdk-s3/plugins/redirects.rb +2 -0
  96. data/lib/aws-sdk-s3/plugins/s3_host_id.rb +2 -0
  97. data/lib/aws-sdk-s3/plugins/s3_signer.rb +50 -88
  98. data/lib/aws-sdk-s3/plugins/skip_whole_multipart_get_checksums.rb +31 -0
  99. data/lib/aws-sdk-s3/plugins/sse_cpk.rb +3 -1
  100. data/lib/aws-sdk-s3/plugins/streaming_retry.rb +139 -0
  101. data/lib/aws-sdk-s3/plugins/url_encoded_keys.rb +2 -0
  102. data/lib/aws-sdk-s3/presigned_post.rb +160 -103
  103. data/lib/aws-sdk-s3/presigner.rb +136 -61
  104. data/lib/aws-sdk-s3/resource.rb +120 -15
  105. data/lib/aws-sdk-s3/types.rb +9683 -4358
  106. data/lib/aws-sdk-s3/waiters.rb +67 -1
  107. data/lib/aws-sdk-s3.rb +40 -29
  108. data/sig/bucket.rbs +213 -0
  109. data/sig/bucket_acl.rbs +78 -0
  110. data/sig/bucket_cors.rbs +69 -0
  111. data/sig/bucket_lifecycle.rbs +88 -0
  112. data/sig/bucket_lifecycle_configuration.rbs +111 -0
  113. data/sig/bucket_logging.rbs +76 -0
  114. data/sig/bucket_notification.rbs +114 -0
  115. data/sig/bucket_policy.rbs +59 -0
  116. data/sig/bucket_request_payment.rbs +54 -0
  117. data/sig/bucket_tagging.rbs +65 -0
  118. data/sig/bucket_versioning.rbs +77 -0
  119. data/sig/bucket_website.rbs +93 -0
  120. data/sig/client.rbs +2397 -0
  121. data/sig/customizations/bucket.rbs +19 -0
  122. data/sig/customizations/object.rbs +38 -0
  123. data/sig/customizations/object_summary.rbs +35 -0
  124. data/sig/errors.rbs +34 -0
  125. data/sig/multipart_upload.rbs +111 -0
  126. data/sig/multipart_upload_part.rbs +105 -0
  127. data/sig/object.rbs +443 -0
  128. data/sig/object_acl.rbs +86 -0
  129. data/sig/object_summary.rbs +335 -0
  130. data/sig/object_version.rbs +137 -0
  131. data/sig/resource.rbs +130 -0
  132. data/sig/types.rbs +2585 -0
  133. data/sig/waiters.rbs +95 -0
  134. metadata +73 -15
  135. data/lib/aws-sdk-s3/plugins/bucket_arn.rb +0 -211
data/sig/waiters.rbs ADDED
@@ -0,0 +1,95 @@
1
+ # WARNING ABOUT GENERATED CODE
2
+ #
3
+ # This file is generated. See the contributing guide for more information:
4
+ # https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md
5
+ #
6
+ # WARNING ABOUT GENERATED CODE
7
+
8
+ module Aws
9
+ module S3
10
+ module Waiters
11
+
12
+ class BucketExists
13
+ def initialize: (?client: Client, ?max_attempts: Integer, ?delay: Integer, ?before_attempt: Proc, ?before_wait: Proc) -> void
14
+ | (?Hash[Symbol, untyped]) -> void
15
+
16
+ def wait: (
17
+ bucket: ::String,
18
+ ?expected_bucket_owner: ::String
19
+ ) -> Client::_HeadBucketResponseSuccess
20
+ | (Hash[Symbol, untyped]) -> Client::_HeadBucketResponseSuccess
21
+ end
22
+
23
+ class BucketNotExists
24
+ def initialize: (?client: Client, ?max_attempts: Integer, ?delay: Integer, ?before_attempt: Proc, ?before_wait: Proc) -> void
25
+ | (?Hash[Symbol, untyped]) -> void
26
+
27
+ def wait: (
28
+ bucket: ::String,
29
+ ?expected_bucket_owner: ::String
30
+ ) -> Client::_HeadBucketResponseSuccess
31
+ | (Hash[Symbol, untyped]) -> Client::_HeadBucketResponseSuccess
32
+ end
33
+
34
+ class ObjectExists
35
+ def initialize: (?client: Client, ?max_attempts: Integer, ?delay: Integer, ?before_attempt: Proc, ?before_wait: Proc) -> void
36
+ | (?Hash[Symbol, untyped]) -> void
37
+
38
+ def wait: (
39
+ bucket: ::String,
40
+ ?if_match: ::String,
41
+ ?if_modified_since: ::Time,
42
+ ?if_none_match: ::String,
43
+ ?if_unmodified_since: ::Time,
44
+ key: ::String,
45
+ ?range: ::String,
46
+ ?response_cache_control: ::String,
47
+ ?response_content_disposition: ::String,
48
+ ?response_content_encoding: ::String,
49
+ ?response_content_language: ::String,
50
+ ?response_content_type: ::String,
51
+ ?response_expires: ::Time,
52
+ ?version_id: ::String,
53
+ ?sse_customer_algorithm: ::String,
54
+ ?sse_customer_key: ::String,
55
+ ?sse_customer_key_md5: ::String,
56
+ ?request_payer: ("requester"),
57
+ ?part_number: ::Integer,
58
+ ?expected_bucket_owner: ::String,
59
+ ?checksum_mode: ("ENABLED")
60
+ ) -> Client::_HeadObjectResponseSuccess
61
+ | (Hash[Symbol, untyped]) -> Client::_HeadObjectResponseSuccess
62
+ end
63
+
64
+ class ObjectNotExists
65
+ def initialize: (?client: Client, ?max_attempts: Integer, ?delay: Integer, ?before_attempt: Proc, ?before_wait: Proc) -> void
66
+ | (?Hash[Symbol, untyped]) -> void
67
+
68
+ def wait: (
69
+ bucket: ::String,
70
+ ?if_match: ::String,
71
+ ?if_modified_since: ::Time,
72
+ ?if_none_match: ::String,
73
+ ?if_unmodified_since: ::Time,
74
+ key: ::String,
75
+ ?range: ::String,
76
+ ?response_cache_control: ::String,
77
+ ?response_content_disposition: ::String,
78
+ ?response_content_encoding: ::String,
79
+ ?response_content_language: ::String,
80
+ ?response_content_type: ::String,
81
+ ?response_expires: ::Time,
82
+ ?version_id: ::String,
83
+ ?sse_customer_algorithm: ::String,
84
+ ?sse_customer_key: ::String,
85
+ ?sse_customer_key_md5: ::String,
86
+ ?request_payer: ("requester"),
87
+ ?part_number: ::Integer,
88
+ ?expected_bucket_owner: ::String,
89
+ ?checksum_mode: ("ENABLED")
90
+ ) -> Client::_HeadObjectResponseSuccess
91
+ | (Hash[Symbol, untyped]) -> Client::_HeadObjectResponseSuccess
92
+ end
93
+ end
94
+ end
95
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws-sdk-s3
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.61.1
4
+ version: 1.166.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Amazon Web Services
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-16 00:00:00.000000000 Z
11
+ date: 2024-09-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-kms
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '1.1'
33
+ version: '1.5'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '1.1'
40
+ version: '1.5'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: aws-sdk-core
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -47,7 +47,7 @@ dependencies:
47
47
  version: '3'
48
48
  - - ">="
49
49
  - !ruby/object:Gem::Version
50
- version: 3.83.0
50
+ version: 3.207.0
51
51
  type: :runtime
52
52
  prerelease: false
53
53
  version_requirements: !ruby/object:Gem::Requirement
@@ -57,16 +57,21 @@ dependencies:
57
57
  version: '3'
58
58
  - - ">="
59
59
  - !ruby/object:Gem::Version
60
- version: 3.83.0
60
+ version: 3.207.0
61
61
  description: Official AWS Ruby gem for Amazon Simple Storage Service (Amazon S3).
62
62
  This gem is part of the AWS SDK for Ruby.
63
63
  email:
64
- - trevrowe@amazon.com
64
+ - aws-dr-rubygems@amazon.com
65
65
  executables: []
66
66
  extensions: []
67
67
  extra_rdoc_files: []
68
68
  files:
69
+ - CHANGELOG.md
70
+ - LICENSE.txt
71
+ - VERSION
69
72
  - lib/aws-sdk-s3.rb
73
+ - lib/aws-sdk-s3/access_grants_credentials.rb
74
+ - lib/aws-sdk-s3/access_grants_credentials_provider.rb
70
75
  - lib/aws-sdk-s3/bucket.rb
71
76
  - lib/aws-sdk-s3/bucket_acl.rb
72
77
  - lib/aws-sdk-s3/bucket_cors.rb
@@ -84,10 +89,13 @@ files:
84
89
  - lib/aws-sdk-s3/client_api.rb
85
90
  - lib/aws-sdk-s3/customizations.rb
86
91
  - lib/aws-sdk-s3/customizations/bucket.rb
92
+ - lib/aws-sdk-s3/customizations/errors.rb
87
93
  - lib/aws-sdk-s3/customizations/multipart_upload.rb
88
94
  - lib/aws-sdk-s3/customizations/object.rb
89
95
  - lib/aws-sdk-s3/customizations/object_summary.rb
96
+ - lib/aws-sdk-s3/customizations/object_version.rb
90
97
  - lib/aws-sdk-s3/customizations/types/list_object_versions_output.rb
98
+ - lib/aws-sdk-s3/customizations/types/permanent_redirect.rb
91
99
  - lib/aws-sdk-s3/encryption.rb
92
100
  - lib/aws-sdk-s3/encryption/client.rb
93
101
  - lib/aws-sdk-s3/encryption/decrypt_handler.rb
@@ -102,8 +110,27 @@ files:
102
110
  - lib/aws-sdk-s3/encryption/kms_cipher_provider.rb
103
111
  - lib/aws-sdk-s3/encryption/materials.rb
104
112
  - lib/aws-sdk-s3/encryption/utils.rb
113
+ - lib/aws-sdk-s3/encryptionV2/client.rb
114
+ - lib/aws-sdk-s3/encryptionV2/decrypt_handler.rb
115
+ - lib/aws-sdk-s3/encryptionV2/default_cipher_provider.rb
116
+ - lib/aws-sdk-s3/encryptionV2/default_key_provider.rb
117
+ - lib/aws-sdk-s3/encryptionV2/encrypt_handler.rb
118
+ - lib/aws-sdk-s3/encryptionV2/errors.rb
119
+ - lib/aws-sdk-s3/encryptionV2/io_auth_decrypter.rb
120
+ - lib/aws-sdk-s3/encryptionV2/io_decrypter.rb
121
+ - lib/aws-sdk-s3/encryptionV2/io_encrypter.rb
122
+ - lib/aws-sdk-s3/encryptionV2/key_provider.rb
123
+ - lib/aws-sdk-s3/encryptionV2/kms_cipher_provider.rb
124
+ - lib/aws-sdk-s3/encryptionV2/materials.rb
125
+ - lib/aws-sdk-s3/encryptionV2/utils.rb
126
+ - lib/aws-sdk-s3/encryption_v2.rb
127
+ - lib/aws-sdk-s3/endpoint_parameters.rb
128
+ - lib/aws-sdk-s3/endpoint_provider.rb
129
+ - lib/aws-sdk-s3/endpoints.rb
105
130
  - lib/aws-sdk-s3/errors.rb
106
131
  - lib/aws-sdk-s3/event_streams.rb
132
+ - lib/aws-sdk-s3/express_credentials.rb
133
+ - lib/aws-sdk-s3/express_credentials_provider.rb
107
134
  - lib/aws-sdk-s3/file_downloader.rb
108
135
  - lib/aws-sdk-s3/file_part.rb
109
136
  - lib/aws-sdk-s3/file_uploader.rb
@@ -120,11 +147,14 @@ files:
120
147
  - lib/aws-sdk-s3/object_summary.rb
121
148
  - lib/aws-sdk-s3/object_version.rb
122
149
  - lib/aws-sdk-s3/plugins/accelerate.rb
123
- - lib/aws-sdk-s3/plugins/bucket_arn.rb
150
+ - lib/aws-sdk-s3/plugins/access_grants.rb
151
+ - lib/aws-sdk-s3/plugins/arn.rb
124
152
  - lib/aws-sdk-s3/plugins/bucket_dns.rb
125
153
  - lib/aws-sdk-s3/plugins/bucket_name_restrictions.rb
126
154
  - lib/aws-sdk-s3/plugins/dualstack.rb
155
+ - lib/aws-sdk-s3/plugins/endpoints.rb
127
156
  - lib/aws-sdk-s3/plugins/expect_100_continue.rb
157
+ - lib/aws-sdk-s3/plugins/express_session_auth.rb
128
158
  - lib/aws-sdk-s3/plugins/get_bucket_location_fix.rb
129
159
  - lib/aws-sdk-s3/plugins/http_200_errors.rb
130
160
  - lib/aws-sdk-s3/plugins/iad_regional_endpoint.rb
@@ -133,20 +163,48 @@ files:
133
163
  - lib/aws-sdk-s3/plugins/redirects.rb
134
164
  - lib/aws-sdk-s3/plugins/s3_host_id.rb
135
165
  - lib/aws-sdk-s3/plugins/s3_signer.rb
166
+ - lib/aws-sdk-s3/plugins/skip_whole_multipart_get_checksums.rb
136
167
  - lib/aws-sdk-s3/plugins/sse_cpk.rb
168
+ - lib/aws-sdk-s3/plugins/streaming_retry.rb
137
169
  - lib/aws-sdk-s3/plugins/url_encoded_keys.rb
138
170
  - lib/aws-sdk-s3/presigned_post.rb
139
171
  - lib/aws-sdk-s3/presigner.rb
140
172
  - lib/aws-sdk-s3/resource.rb
141
173
  - lib/aws-sdk-s3/types.rb
142
174
  - lib/aws-sdk-s3/waiters.rb
175
+ - sig/bucket.rbs
176
+ - sig/bucket_acl.rbs
177
+ - sig/bucket_cors.rbs
178
+ - sig/bucket_lifecycle.rbs
179
+ - sig/bucket_lifecycle_configuration.rbs
180
+ - sig/bucket_logging.rbs
181
+ - sig/bucket_notification.rbs
182
+ - sig/bucket_policy.rbs
183
+ - sig/bucket_request_payment.rbs
184
+ - sig/bucket_tagging.rbs
185
+ - sig/bucket_versioning.rbs
186
+ - sig/bucket_website.rbs
187
+ - sig/client.rbs
188
+ - sig/customizations/bucket.rbs
189
+ - sig/customizations/object.rbs
190
+ - sig/customizations/object_summary.rbs
191
+ - sig/errors.rbs
192
+ - sig/multipart_upload.rbs
193
+ - sig/multipart_upload_part.rbs
194
+ - sig/object.rbs
195
+ - sig/object_acl.rbs
196
+ - sig/object_summary.rbs
197
+ - sig/object_version.rbs
198
+ - sig/resource.rbs
199
+ - sig/types.rbs
200
+ - sig/waiters.rbs
143
201
  homepage: https://github.com/aws/aws-sdk-ruby
144
202
  licenses:
145
203
  - Apache-2.0
146
204
  metadata:
147
- source_code_uri: https://github.com/aws/aws-sdk-ruby/tree/master/gems/aws-sdk-s3
148
- changelog_uri: https://github.com/aws/aws-sdk-ruby/tree/master/gems/aws-sdk-s3/CHANGELOG.md
149
- post_install_message:
205
+ source_code_uri: https://github.com/aws/aws-sdk-ruby/tree/version-3/gems/aws-sdk-s3
206
+ changelog_uri: https://github.com/aws/aws-sdk-ruby/tree/version-3/gems/aws-sdk-s3/CHANGELOG.md
207
+ post_install_message:
150
208
  rdoc_options: []
151
209
  require_paths:
152
210
  - lib
@@ -154,15 +212,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
154
212
  requirements:
155
213
  - - ">="
156
214
  - !ruby/object:Gem::Version
157
- version: '0'
215
+ version: '2.5'
158
216
  required_rubygems_version: !ruby/object:Gem::Requirement
159
217
  requirements:
160
218
  - - ">="
161
219
  - !ruby/object:Gem::Version
162
220
  version: '0'
163
221
  requirements: []
164
- rubygems_version: 3.0.3
165
- signing_key:
222
+ rubygems_version: 3.4.10
223
+ signing_key:
166
224
  specification_version: 4
167
225
  summary: AWS SDK for Ruby - Amazon S3
168
226
  test_files: []
@@ -1,211 +0,0 @@
1
- module Aws
2
- module S3
3
- module Plugins
4
- # When an accesspoint ARN is provided for :bucket in S3 operations, this
5
- # plugin resolves the request endpoint from the ARN when possible.
6
- class BucketARN < Seahorse::Client::Plugin
7
- option(
8
- :s3_use_arn_region,
9
- default: true,
10
- doc_type: 'Boolean',
11
- docstring: <<-DOCS) do |cfg|
12
- By default, the SDK will use the S3 ARN region, and cross-region
13
- requests could be made. Set to `false` to not use the region from
14
- the S3 ARN.
15
- DOCS
16
- resolve_s3_use_arn_region(cfg)
17
- end
18
-
19
- def add_handlers(handlers, _config)
20
- handlers.add(Handler)
21
- end
22
-
23
- # @api private
24
- class Handler < Seahorse::Client::Handler
25
- def call(context)
26
- bucket_member = _bucket_member(context.operation.input.shape)
27
- if bucket_member && (bucket = context.params[bucket_member])
28
- _resolved_bucket, _resolved_region, arn = BucketARN.resolve_arn!(
29
- bucket,
30
- context.config.region,
31
- context.config.s3_use_arn_region
32
- )
33
- if arn
34
- if arn.resource.start_with?('accesspoint')
35
- validate_config!(context.config)
36
- end
37
-
38
- dualstack = extract_dualstack_config!(context)
39
-
40
- BucketARN.resolve_url!(
41
- context.http_request.endpoint,
42
- arn,
43
- dualstack
44
- )
45
- end
46
- end
47
- @handler.call(context)
48
- end
49
-
50
- private
51
-
52
- def _bucket_member(input)
53
- input.members.each do |member, ref|
54
- return member if ref.shape.name == 'BucketName'
55
- end
56
- nil
57
- end
58
-
59
- # other plugins use dualstack so disable it when we're done
60
- def extract_dualstack_config!(context)
61
- dualstack = context[:use_dualstack_endpoint]
62
- context[:use_dualstack_endpoint] = false if dualstack
63
- dualstack
64
- end
65
-
66
- def validate_config!(config)
67
- unless config.regional_endpoint
68
- raise ArgumentError,
69
- 'Cannot provide both an accesspoint ARN and :endpoint.'
70
- end
71
-
72
- if config.use_accelerate_endpoint
73
- raise ArgumentError,
74
- 'Cannot provide both an accesspoint ARN and setting '\
75
- ':use_accelerate_endpoint to true.'
76
- end
77
-
78
- if config.force_path_style
79
- raise ArgumentError,
80
- 'Cannot provide both an accesspoint ARN and setting '\
81
- ':force_path_style to true.'
82
- end
83
- end
84
- end
85
-
86
- class << self
87
-
88
- # @api private
89
- def resolve_arn!(bucket_name, region, s3_use_arn_region)
90
- if Aws::ARNParser.arn?(bucket_name)
91
- arn = Aws::ARNParser.parse(bucket_name)
92
- validate_s3_arn!(arn)
93
- validate_region!(arn, region, s3_use_arn_region)
94
- if arn.resource.start_with?('accesspoint')
95
- region = arn.region if s3_use_arn_region
96
- [bucket_name, region, arn]
97
- else
98
- raise ArgumentError,
99
- 'Only accesspoint type ARNs are currently supported.'
100
- end
101
- else
102
- [bucket_name, region]
103
- end
104
- end
105
-
106
- # @api private
107
- def resolve_url!(url, arn, dualstack = false)
108
- if arn.resource.start_with?('accesspoint')
109
- url.host = accesspoint_arn_host(arn, dualstack)
110
- else
111
- raise ArgumentError,
112
- 'Only accesspoint type ARNs are currently supported.'
113
- end
114
- url.path = url_path(url.path, arn)
115
- url
116
- end
117
-
118
- private
119
-
120
- def accesspoint_arn_host(arn, dualstack)
121
- _resource_type, resource_name = parse_resource(arn.resource)
122
- accesspoint = "#{resource_name}-#{arn.account_id}"
123
- accesspoint << '.s3-accesspoint'
124
- accesspoint << '.dualstack' if dualstack
125
- sfx = Aws::Partitions::EndpointProvider.dns_suffix_for(arn.region)
126
- accesspoint << ".#{arn.region}.#{sfx}"
127
- accesspoint
128
- end
129
-
130
- def parse_resource(str)
131
- slash = str.index('/') || str.length
132
- colon = str.index(':') || str.length
133
- delimiter = slash < colon ? slash : colon
134
- if delimiter < str.length
135
- [str[0..(delimiter - 1)], str[(delimiter + 1)..-1]]
136
- else
137
- [nil, str]
138
- end
139
- end
140
-
141
- def resolve_s3_use_arn_region(cfg)
142
- value = ENV['AWS_S3_USE_ARN_REGION'] ||
143
- Aws.shared_config.s3_use_arn_region(profile: cfg.profile) ||
144
- 'true'
145
-
146
- # Raise if provided value is not true or false
147
- if value != 'true' && value != 'false'
148
- raise ArgumentError,
149
- 'Must provide either `true` or `false` for '\
150
- 's3_use_arn_region profile option or for '\
151
- 'ENV[\'AWS_S3_USE_ARN_REGION\']'
152
- end
153
-
154
- value == 'true'
155
- end
156
-
157
- def url_path(path, arn)
158
- path = path.sub("/#{Seahorse::Util.uri_escape(arn.to_s)}", '')
159
- .sub("/#{arn}", '')
160
- "/#{path}" unless path.match(/^\//)
161
- path
162
- end
163
-
164
- def validate_s3_arn!(arn)
165
- _resource_type, resource_name = parse_resource(arn.resource)
166
-
167
- unless arn.service == 's3'
168
- raise ArgumentError, 'Must provide an S3 ARN.'
169
- end
170
-
171
- if arn.region.empty? || arn.account_id.empty?
172
- raise ArgumentError,
173
- 'S3 Access Point ARNs must contain both a valid region '\
174
- ' and a valid account id.'
175
- end
176
-
177
- if resource_name.include?(':') || resource_name.include?('/')
178
- raise ArgumentError,
179
- 'ARN resource id must be a single value.'
180
- end
181
-
182
- unless Plugins::BucketDns.valid_subdomain?(
183
- "#{resource_name}-#{arn.account_id}"
184
- )
185
- raise ArgumentError,
186
- "#{resource_name}-#{arn.account_id} is not a "\
187
- 'valid subdomain.'
188
- end
189
- end
190
-
191
- def validate_region!(arn, region, s3_use_arn_region)
192
- if region.include?('fips')
193
- raise ArgumentError,
194
- 'FIPS client regions are currently not supported with '\
195
- 'accesspoint ARNs.'
196
- end
197
-
198
- if s3_use_arn_region &&
199
- !Aws::Partitions.partition(arn.partition).region?(region)
200
- raise Aws::Errors::InvalidARNPartitionError
201
- end
202
-
203
- if !s3_use_arn_region && region != arn.region
204
- raise Aws::Errors::InvalidARNRegionError
205
- end
206
- end
207
- end
208
- end
209
- end
210
- end
211
- end