aws-sdk-s3 1.61.1 → 1.166.0

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # WARNING ABOUT GENERATED CODE
2
4
  #
3
5
  # This file is generated. See the contributing guide for more information:
4
- # https://github.com/aws/aws-sdk-ruby/blob/master/CONTRIBUTING.md
6
+ # https://github.com/aws/aws-sdk-ruby/blob/version-3/CONTRIBUTING.md
5
7
  #
6
8
  # WARNING ABOUT GENERATED CODE
7
9
 
@@ -54,6 +56,12 @@ module Aws::S3
54
56
  data[:etag]
55
57
  end
56
58
 
59
+ # The algorithm that was used to create a checksum of the object.
60
+ # @return [Array<String>]
61
+ def checksum_algorithm
62
+ data[:checksum_algorithm]
63
+ end
64
+
57
65
  # Size in bytes of the object.
58
66
  # @return [Integer]
59
67
  def size
@@ -85,7 +93,7 @@ module Aws::S3
85
93
  data[:is_latest]
86
94
  end
87
95
 
88
- # Date and time the object was last modified.
96
+ # Date and time when the object was last modified.
89
97
  # @return [Time]
90
98
  def last_modified
91
99
  data[:last_modified]
@@ -97,6 +105,20 @@ module Aws::S3
97
105
  data[:owner]
98
106
  end
99
107
 
108
+ # Specifies the restoration status of an object. Objects in certain
109
+ # storage classes must be restored before they can be retrieved. For
110
+ # more information about these storage classes and how to work with
111
+ # archived objects, see [ Working with archived objects][1] in the
112
+ # *Amazon S3 User Guide*.
113
+ #
114
+ #
115
+ #
116
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/archived-objects.html
117
+ # @return [Types::RestoreStatus]
118
+ def restore_status
119
+ data[:restore_status]
120
+ end
121
+
100
122
  # @!endgroup
101
123
 
102
124
  # @return [Client]
@@ -132,7 +154,8 @@ module Aws::S3
132
154
  # Waiter polls an API operation until a resource enters a desired
133
155
  # state.
134
156
  #
135
- # @note The waiting operation is performed on a copy. The original resource remains unchanged
157
+ # @note The waiting operation is performed on a copy. The original resource
158
+ # remains unchanged.
136
159
  #
137
160
  # ## Basic Usage
138
161
  #
@@ -145,13 +168,15 @@ module Aws::S3
145
168
  #
146
169
  # ## Example
147
170
  #
148
- # instance.wait_until(max_attempts:10, delay:5) {|instance| instance.state.name == 'running' }
171
+ # instance.wait_until(max_attempts:10, delay:5) do |instance|
172
+ # instance.state.name == 'running'
173
+ # end
149
174
  #
150
175
  # ## Configuration
151
176
  #
152
177
  # You can configure the maximum number of polling attempts, and the
153
- # delay (in seconds) between each polling attempt. The waiting condition is set
154
- # by passing a block to {#wait_until}:
178
+ # delay (in seconds) between each polling attempt. The waiting condition is
179
+ # set by passing a block to {#wait_until}:
155
180
  #
156
181
  # # poll for ~25 seconds
157
182
  # resource.wait_until(max_attempts:5,delay:5) {|resource|...}
@@ -182,17 +207,16 @@ module Aws::S3
182
207
  # # resource did not enter the desired state in time
183
208
  # end
184
209
  #
210
+ # @yieldparam [Resource] resource to be used in the waiting condition.
185
211
  #
186
- # @yield param [Resource] resource to be used in the waiting condition
187
- #
188
- # @raise [Aws::Waiters::Errors::FailureStateError] Raised when the waiter terminates
189
- # because the waiter has entered a state that it will not transition
190
- # out of, preventing success.
212
+ # @raise [Aws::Waiters::Errors::FailureStateError] Raised when the waiter
213
+ # terminates because the waiter has entered a state that it will not
214
+ # transition out of, preventing success.
191
215
  #
192
216
  # yet successful.
193
217
  #
194
- # @raise [Aws::Waiters::Errors::UnexpectedError] Raised when an error is encountered
195
- # while polling for a resource that is not expected.
218
+ # @raise [Aws::Waiters::Errors::UnexpectedError] Raised when an error is
219
+ # encountered while polling for a resource that is not expected.
196
220
  #
197
221
  # @raise [NotImplementedError] Raised when the resource does not
198
222
  #
@@ -219,7 +243,9 @@ module Aws::S3
219
243
  :retry
220
244
  end
221
245
  end
222
- Aws::Waiters::Waiter.new(options).wait({})
246
+ Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
247
+ Aws::Waiters::Waiter.new(options).wait({})
248
+ end
223
249
  end
224
250
 
225
251
  # @!group Actions
@@ -230,6 +256,7 @@ module Aws::S3
230
256
  # mfa: "MFA",
231
257
  # request_payer: "requester", # accepts requester
232
258
  # bypass_governance_retention: false,
259
+ # expected_bucket_owner: "AccountId",
233
260
  # })
234
261
  # @param [Hash] options ({})
235
262
  # @option options [String] :mfa
@@ -237,19 +264,38 @@ module Aws::S3
237
264
  # space, and the value that is displayed on your authentication device.
238
265
  # Required to permanently delete a versioned object if versioning is
239
266
  # configured with MFA delete enabled.
267
+ #
268
+ # <note markdown="1"> This functionality is not supported for directory buckets.
269
+ #
270
+ # </note>
240
271
  # @option options [String] :request_payer
241
272
  # Confirms that the requester knows that they will be charged for the
242
273
  # request. Bucket owners need not specify this parameter in their
243
- # requests. For information about downloading objects from requester
244
- # pays buckets, see [Downloading Objects in Requestor Pays Buckets][1]
245
- # in the *Amazon S3 Developer Guide*.
274
+ # requests. If either the source or destination S3 bucket has Requester
275
+ # Pays enabled, the requester will pay for corresponding charges to copy
276
+ # the object. For information about downloading objects from Requester
277
+ # Pays buckets, see [Downloading Objects in Requester Pays Buckets][1]
278
+ # in the *Amazon S3 User Guide*.
279
+ #
280
+ # <note markdown="1"> This functionality is not supported for directory buckets.
281
+ #
282
+ # </note>
246
283
  #
247
284
  #
248
285
  #
249
286
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
250
287
  # @option options [Boolean] :bypass_governance_retention
251
288
  # Indicates whether S3 Object Lock should bypass Governance-mode
252
- # restrictions to process this operation.
289
+ # restrictions to process this operation. To use this header, you must
290
+ # have the `s3:BypassGovernanceRetention` permission.
291
+ #
292
+ # <note markdown="1"> This functionality is not supported for directory buckets.
293
+ #
294
+ # </note>
295
+ # @option options [String] :expected_bucket_owner
296
+ # The account ID of the expected bucket owner. If the account ID that
297
+ # you provide does not match the actual owner of the bucket, the request
298
+ # fails with the HTTP status code `403 Forbidden` (access denied).
253
299
  # @return [Types::DeleteObjectOutput]
254
300
  def delete(options = {})
255
301
  options = options.merge(
@@ -257,7 +303,9 @@ module Aws::S3
257
303
  key: @object_key,
258
304
  version_id: @id
259
305
  )
260
- resp = @client.delete_object(options)
306
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
307
+ @client.delete_object(options)
308
+ end
261
309
  resp.data
262
310
  end
263
311
 
@@ -280,28 +328,85 @@ module Aws::S3
280
328
  # sse_customer_key_md5: "SSECustomerKeyMD5",
281
329
  # request_payer: "requester", # accepts requester
282
330
  # part_number: 1,
331
+ # expected_bucket_owner: "AccountId",
332
+ # checksum_mode: "ENABLED", # accepts ENABLED
283
333
  # })
284
334
  # @param [Hash] options ({})
285
335
  # @option options [String] :if_match
286
336
  # Return the object only if its entity tag (ETag) is the same as the one
287
- # specified, otherwise return a 412 (precondition failed).
337
+ # specified in this header; otherwise, return a `412 Precondition
338
+ # Failed` error.
339
+ #
340
+ # If both of the `If-Match` and `If-Unmodified-Since` headers are
341
+ # present in the request as follows: `If-Match` condition evaluates to
342
+ # `true`, and; `If-Unmodified-Since` condition evaluates to `false`;
343
+ # then, S3 returns `200 OK` and the data requested.
344
+ #
345
+ # For more information about conditional requests, see [RFC 7232][1].
346
+ #
347
+ #
348
+ #
349
+ # [1]: https://tools.ietf.org/html/rfc7232
288
350
  # @option options [Time,DateTime,Date,Integer,String] :if_modified_since
289
351
  # Return the object only if it has been modified since the specified
290
- # time, otherwise return a 304 (not modified).
352
+ # time; otherwise, return a `304 Not Modified` error.
353
+ #
354
+ # If both of the `If-None-Match` and `If-Modified-Since` headers are
355
+ # present in the request as follows:` If-None-Match` condition evaluates
356
+ # to `false`, and; `If-Modified-Since` condition evaluates to `true`;
357
+ # then, S3 returns `304 Not Modified` status code.
358
+ #
359
+ # For more information about conditional requests, see [RFC 7232][1].
360
+ #
361
+ #
362
+ #
363
+ # [1]: https://tools.ietf.org/html/rfc7232
291
364
  # @option options [String] :if_none_match
292
365
  # Return the object only if its entity tag (ETag) is different from the
293
- # one specified, otherwise return a 304 (not modified).
366
+ # one specified in this header; otherwise, return a `304 Not Modified`
367
+ # error.
368
+ #
369
+ # If both of the `If-None-Match` and `If-Modified-Since` headers are
370
+ # present in the request as follows:` If-None-Match` condition evaluates
371
+ # to `false`, and; `If-Modified-Since` condition evaluates to `true`;
372
+ # then, S3 returns `304 Not Modified` HTTP status code.
373
+ #
374
+ # For more information about conditional requests, see [RFC 7232][1].
375
+ #
376
+ #
377
+ #
378
+ # [1]: https://tools.ietf.org/html/rfc7232
294
379
  # @option options [Time,DateTime,Date,Integer,String] :if_unmodified_since
295
380
  # Return the object only if it has not been modified since the specified
296
- # time, otherwise return a 412 (precondition failed).
381
+ # time; otherwise, return a `412 Precondition Failed` error.
382
+ #
383
+ # If both of the `If-Match` and `If-Unmodified-Since` headers are
384
+ # present in the request as follows: `If-Match` condition evaluates to
385
+ # `true`, and; `If-Unmodified-Since` condition evaluates to `false`;
386
+ # then, S3 returns `200 OK` and the data requested.
387
+ #
388
+ # For more information about conditional requests, see [RFC 7232][1].
389
+ #
390
+ #
391
+ #
392
+ # [1]: https://tools.ietf.org/html/rfc7232
297
393
  # @option options [String] :range
298
- # Downloads the specified range bytes of an object. For more information
394
+ # Downloads the specified byte range of an object. For more information
299
395
  # about the HTTP Range header, see
300
- # [http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35]().
396
+ # [https://www.rfc-editor.org/rfc/rfc9110.html#name-range][1].
397
+ #
398
+ # <note markdown="1"> Amazon S3 doesn't support retrieving multiple ranges of data per
399
+ # `GET` request.
400
+ #
401
+ # </note>
402
+ #
403
+ #
404
+ #
405
+ # [1]: https://www.rfc-editor.org/rfc/rfc9110.html#name-range
301
406
  # @option options [String] :response_cache_control
302
407
  # Sets the `Cache-Control` header of the response.
303
408
  # @option options [String] :response_content_disposition
304
- # Sets the `Content-Disposition` header of the response
409
+ # Sets the `Content-Disposition` header of the response.
305
410
  # @option options [String] :response_content_encoding
306
411
  # Sets the `Content-Encoding` header of the response.
307
412
  # @option options [String] :response_content_language
@@ -311,24 +416,98 @@ module Aws::S3
311
416
  # @option options [Time,DateTime,Date,Integer,String] :response_expires
312
417
  # Sets the `Expires` header of the response.
313
418
  # @option options [String] :sse_customer_algorithm
314
- # Specifies the algorithm to use to when encrypting the object (for
315
- # example, AES256).
419
+ # Specifies the algorithm to use when decrypting the object (for
420
+ # example, `AES256`).
421
+ #
422
+ # If you encrypt an object by using server-side encryption with
423
+ # customer-provided encryption keys (SSE-C) when you store the object in
424
+ # Amazon S3, then when you GET the object, you must use the following
425
+ # headers:
426
+ #
427
+ # * `x-amz-server-side-encryption-customer-algorithm`
428
+ #
429
+ # * `x-amz-server-side-encryption-customer-key`
430
+ #
431
+ # * `x-amz-server-side-encryption-customer-key-MD5`
432
+ #
433
+ # For more information about SSE-C, see [Server-Side Encryption (Using
434
+ # Customer-Provided Encryption Keys)][1] in the *Amazon S3 User Guide*.
435
+ #
436
+ # <note markdown="1"> This functionality is not supported for directory buckets.
437
+ #
438
+ # </note>
439
+ #
440
+ #
441
+ #
442
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html
316
443
  # @option options [String] :sse_customer_key
317
- # Specifies the customer-provided encryption key for Amazon S3 to use in
318
- # encrypting data. This value is used to store the object and then it is
319
- # discarded; Amazon S3 does not store the encryption key. The key must
320
- # be appropriate for use with the algorithm specified in the
321
- # `x-amz-server-side​-encryption​-customer-algorithm` header.
444
+ # Specifies the customer-provided encryption key that you originally
445
+ # provided for Amazon S3 to encrypt the data before storing it. This
446
+ # value is used to decrypt the object when recovering it and must match
447
+ # the one used when storing the data. The key must be appropriate for
448
+ # use with the algorithm specified in the
449
+ # `x-amz-server-side-encryption-customer-algorithm` header.
450
+ #
451
+ # If you encrypt an object by using server-side encryption with
452
+ # customer-provided encryption keys (SSE-C) when you store the object in
453
+ # Amazon S3, then when you GET the object, you must use the following
454
+ # headers:
455
+ #
456
+ # * `x-amz-server-side-encryption-customer-algorithm`
457
+ #
458
+ # * `x-amz-server-side-encryption-customer-key`
459
+ #
460
+ # * `x-amz-server-side-encryption-customer-key-MD5`
461
+ #
462
+ # For more information about SSE-C, see [Server-Side Encryption (Using
463
+ # Customer-Provided Encryption Keys)][1] in the *Amazon S3 User Guide*.
464
+ #
465
+ # <note markdown="1"> This functionality is not supported for directory buckets.
466
+ #
467
+ # </note>
468
+ #
469
+ #
470
+ #
471
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html
322
472
  # @option options [String] :sse_customer_key_md5
323
- # Specifies the 128-bit MD5 digest of the encryption key according to
324
- # RFC 1321. Amazon S3 uses this header for a message integrity check to
325
- # ensure that the encryption key was transmitted without error.
473
+ # Specifies the 128-bit MD5 digest of the customer-provided encryption
474
+ # key according to RFC 1321. Amazon S3 uses this header for a message
475
+ # integrity check to ensure that the encryption key was transmitted
476
+ # without error.
477
+ #
478
+ # If you encrypt an object by using server-side encryption with
479
+ # customer-provided encryption keys (SSE-C) when you store the object in
480
+ # Amazon S3, then when you GET the object, you must use the following
481
+ # headers:
482
+ #
483
+ # * `x-amz-server-side-encryption-customer-algorithm`
484
+ #
485
+ # * `x-amz-server-side-encryption-customer-key`
486
+ #
487
+ # * `x-amz-server-side-encryption-customer-key-MD5`
488
+ #
489
+ # For more information about SSE-C, see [Server-Side Encryption (Using
490
+ # Customer-Provided Encryption Keys)][1] in the *Amazon S3 User Guide*.
491
+ #
492
+ # <note markdown="1"> This functionality is not supported for directory buckets.
493
+ #
494
+ # </note>
495
+ #
496
+ #
497
+ #
498
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html
326
499
  # @option options [String] :request_payer
327
500
  # Confirms that the requester knows that they will be charged for the
328
501
  # request. Bucket owners need not specify this parameter in their
329
- # requests. For information about downloading objects from requester
330
- # pays buckets, see [Downloading Objects in Requestor Pays Buckets][1]
331
- # in the *Amazon S3 Developer Guide*.
502
+ # requests. If either the source or destination S3 bucket has Requester
503
+ # Pays enabled, the requester will pay for corresponding charges to copy
504
+ # the object. For information about downloading objects from Requester
505
+ # Pays buckets, see [Downloading Objects in Requester Pays Buckets][1]
506
+ # in the *Amazon S3 User Guide*.
507
+ #
508
+ # <note markdown="1"> This functionality is not supported for directory buckets.
509
+ #
510
+ # </note>
332
511
  #
333
512
  #
334
513
  #
@@ -338,6 +517,21 @@ module Aws::S3
338
517
  # between 1 and 10,000. Effectively performs a 'ranged' GET request
339
518
  # for the part specified. Useful for downloading just a part of an
340
519
  # object.
520
+ # @option options [String] :expected_bucket_owner
521
+ # The account ID of the expected bucket owner. If the account ID that
522
+ # you provide does not match the actual owner of the bucket, the request
523
+ # fails with the HTTP status code `403 Forbidden` (access denied).
524
+ # @option options [String] :checksum_mode
525
+ # To retrieve the checksum, this mode must be enabled.
526
+ #
527
+ # **General purpose buckets** - In addition, if you enable checksum mode
528
+ # and the object is uploaded with a [checksum][1] and encrypted with an
529
+ # Key Management Service (KMS) key, you must have permission to use the
530
+ # `kms:Decrypt` action to retrieve the checksum.
531
+ #
532
+ #
533
+ #
534
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_Checksum.html
341
535
  # @return [Types::GetObjectOutput]
342
536
  def get(options = {}, &block)
343
537
  options = options.merge(
@@ -345,7 +539,9 @@ module Aws::S3
345
539
  key: @object_key,
346
540
  version_id: @id
347
541
  )
348
- resp = @client.get_object(options, &block)
542
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
543
+ @client.get_object(options, &block)
544
+ end
349
545
  resp.data
350
546
  end
351
547
 
@@ -357,48 +553,147 @@ module Aws::S3
357
553
  # if_none_match: "IfNoneMatch",
358
554
  # if_unmodified_since: Time.now,
359
555
  # range: "Range",
556
+ # response_cache_control: "ResponseCacheControl",
557
+ # response_content_disposition: "ResponseContentDisposition",
558
+ # response_content_encoding: "ResponseContentEncoding",
559
+ # response_content_language: "ResponseContentLanguage",
560
+ # response_content_type: "ResponseContentType",
561
+ # response_expires: Time.now,
360
562
  # sse_customer_algorithm: "SSECustomerAlgorithm",
361
563
  # sse_customer_key: "SSECustomerKey",
362
564
  # sse_customer_key_md5: "SSECustomerKeyMD5",
363
565
  # request_payer: "requester", # accepts requester
364
566
  # part_number: 1,
567
+ # expected_bucket_owner: "AccountId",
568
+ # checksum_mode: "ENABLED", # accepts ENABLED
365
569
  # })
366
570
  # @param [Hash] options ({})
367
571
  # @option options [String] :if_match
368
572
  # Return the object only if its entity tag (ETag) is the same as the one
369
- # specified, otherwise return a 412 (precondition failed).
573
+ # specified; otherwise, return a 412 (precondition failed) error.
574
+ #
575
+ # If both of the `If-Match` and `If-Unmodified-Since` headers are
576
+ # present in the request as follows:
577
+ #
578
+ # * `If-Match` condition evaluates to `true`, and;
579
+ #
580
+ # * `If-Unmodified-Since` condition evaluates to `false`;
581
+ #
582
+ # Then Amazon S3 returns `200 OK` and the data requested.
583
+ #
584
+ # For more information about conditional requests, see [RFC 7232][1].
585
+ #
586
+ #
587
+ #
588
+ # [1]: https://tools.ietf.org/html/rfc7232
370
589
  # @option options [Time,DateTime,Date,Integer,String] :if_modified_since
371
590
  # Return the object only if it has been modified since the specified
372
- # time, otherwise return a 304 (not modified).
591
+ # time; otherwise, return a 304 (not modified) error.
592
+ #
593
+ # If both of the `If-None-Match` and `If-Modified-Since` headers are
594
+ # present in the request as follows:
595
+ #
596
+ # * `If-None-Match` condition evaluates to `false`, and;
597
+ #
598
+ # * `If-Modified-Since` condition evaluates to `true`;
599
+ #
600
+ # Then Amazon S3 returns the `304 Not Modified` response code.
601
+ #
602
+ # For more information about conditional requests, see [RFC 7232][1].
603
+ #
604
+ #
605
+ #
606
+ # [1]: https://tools.ietf.org/html/rfc7232
373
607
  # @option options [String] :if_none_match
374
608
  # Return the object only if its entity tag (ETag) is different from the
375
- # one specified, otherwise return a 304 (not modified).
609
+ # one specified; otherwise, return a 304 (not modified) error.
610
+ #
611
+ # If both of the `If-None-Match` and `If-Modified-Since` headers are
612
+ # present in the request as follows:
613
+ #
614
+ # * `If-None-Match` condition evaluates to `false`, and;
615
+ #
616
+ # * `If-Modified-Since` condition evaluates to `true`;
617
+ #
618
+ # Then Amazon S3 returns the `304 Not Modified` response code.
619
+ #
620
+ # For more information about conditional requests, see [RFC 7232][1].
621
+ #
622
+ #
623
+ #
624
+ # [1]: https://tools.ietf.org/html/rfc7232
376
625
  # @option options [Time,DateTime,Date,Integer,String] :if_unmodified_since
377
626
  # Return the object only if it has not been modified since the specified
378
- # time, otherwise return a 412 (precondition failed).
627
+ # time; otherwise, return a 412 (precondition failed) error.
628
+ #
629
+ # If both of the `If-Match` and `If-Unmodified-Since` headers are
630
+ # present in the request as follows:
631
+ #
632
+ # * `If-Match` condition evaluates to `true`, and;
633
+ #
634
+ # * `If-Unmodified-Since` condition evaluates to `false`;
635
+ #
636
+ # Then Amazon S3 returns `200 OK` and the data requested.
637
+ #
638
+ # For more information about conditional requests, see [RFC 7232][1].
639
+ #
640
+ #
641
+ #
642
+ # [1]: https://tools.ietf.org/html/rfc7232
379
643
  # @option options [String] :range
380
- # Downloads the specified range bytes of an object. For more information
381
- # about the HTTP Range header, see
382
- # [http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35]().
644
+ # HeadObject returns only the metadata for an object. If the Range is
645
+ # satisfiable, only the `ContentLength` is affected in the response. If
646
+ # the Range is not satisfiable, S3 returns a `416 - Requested Range Not
647
+ # Satisfiable` error.
648
+ # @option options [String] :response_cache_control
649
+ # Sets the `Cache-Control` header of the response.
650
+ # @option options [String] :response_content_disposition
651
+ # Sets the `Content-Disposition` header of the response.
652
+ # @option options [String] :response_content_encoding
653
+ # Sets the `Content-Encoding` header of the response.
654
+ # @option options [String] :response_content_language
655
+ # Sets the `Content-Language` header of the response.
656
+ # @option options [String] :response_content_type
657
+ # Sets the `Content-Type` header of the response.
658
+ # @option options [Time,DateTime,Date,Integer,String] :response_expires
659
+ # Sets the `Expires` header of the response.
383
660
  # @option options [String] :sse_customer_algorithm
384
- # Specifies the algorithm to use to when encrypting the object (for
661
+ # Specifies the algorithm to use when encrypting the object (for
385
662
  # example, AES256).
663
+ #
664
+ # <note markdown="1"> This functionality is not supported for directory buckets.
665
+ #
666
+ # </note>
386
667
  # @option options [String] :sse_customer_key
387
668
  # Specifies the customer-provided encryption key for Amazon S3 to use in
388
669
  # encrypting data. This value is used to store the object and then it is
389
670
  # discarded; Amazon S3 does not store the encryption key. The key must
390
671
  # be appropriate for use with the algorithm specified in the
391
- # `x-amz-server-side​-encryption​-customer-algorithm` header.
672
+ # `x-amz-server-side-encryption-customer-algorithm` header.
673
+ #
674
+ # <note markdown="1"> This functionality is not supported for directory buckets.
675
+ #
676
+ # </note>
392
677
  # @option options [String] :sse_customer_key_md5
393
678
  # Specifies the 128-bit MD5 digest of the encryption key according to
394
679
  # RFC 1321. Amazon S3 uses this header for a message integrity check to
395
680
  # ensure that the encryption key was transmitted without error.
681
+ #
682
+ # <note markdown="1"> This functionality is not supported for directory buckets.
683
+ #
684
+ # </note>
396
685
  # @option options [String] :request_payer
397
686
  # Confirms that the requester knows that they will be charged for the
398
687
  # request. Bucket owners need not specify this parameter in their
399
- # requests. For information about downloading objects from requester
400
- # pays buckets, see [Downloading Objects in Requestor Pays Buckets][1]
401
- # in the *Amazon S3 Developer Guide*.
688
+ # requests. If either the source or destination S3 bucket has Requester
689
+ # Pays enabled, the requester will pay for corresponding charges to copy
690
+ # the object. For information about downloading objects from Requester
691
+ # Pays buckets, see [Downloading Objects in Requester Pays Buckets][1]
692
+ # in the *Amazon S3 User Guide*.
693
+ #
694
+ # <note markdown="1"> This functionality is not supported for directory buckets.
695
+ #
696
+ # </note>
402
697
  #
403
698
  #
404
699
  #
@@ -408,6 +703,27 @@ module Aws::S3
408
703
  # between 1 and 10,000. Effectively performs a 'ranged' HEAD request
409
704
  # for the part specified. Useful querying about the size of the part and
410
705
  # the number of parts in this object.
706
+ # @option options [String] :expected_bucket_owner
707
+ # The account ID of the expected bucket owner. If the account ID that
708
+ # you provide does not match the actual owner of the bucket, the request
709
+ # fails with the HTTP status code `403 Forbidden` (access denied).
710
+ # @option options [String] :checksum_mode
711
+ # To retrieve the checksum, this parameter must be enabled.
712
+ #
713
+ # **General purpose buckets** - If you enable checksum mode and the
714
+ # object is uploaded with a [checksum][1] and encrypted with an Key
715
+ # Management Service (KMS) key, you must have permission to use the
716
+ # `kms:Decrypt` action to retrieve the checksum.
717
+ #
718
+ # **Directory buckets** - If you enable `ChecksumMode` and the object is
719
+ # encrypted with Amazon Web Services Key Management Service (Amazon Web
720
+ # Services KMS), you must also have the `kms:GenerateDataKey` and
721
+ # `kms:Decrypt` permissions in IAM identity-based policies and KMS key
722
+ # policies for the KMS key to retrieve the checksum of the object.
723
+ #
724
+ #
725
+ #
726
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/API/API_Checksum.html
411
727
  # @return [Types::HeadObjectOutput]
412
728
  def head(options = {})
413
729
  options = options.merge(
@@ -415,7 +731,9 @@ module Aws::S3
415
731
  key: @object_key,
416
732
  version_id: @id
417
733
  )
418
- resp = @client.head_object(options)
734
+ resp = Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
735
+ @client.head_object(options)
736
+ end
419
737
  resp.data
420
738
  end
421
739
 
@@ -486,6 +804,8 @@ module Aws::S3
486
804
  # mfa: "MFA",
487
805
  # request_payer: "requester", # accepts requester
488
806
  # bypass_governance_retention: false,
807
+ # expected_bucket_owner: "AccountId",
808
+ # checksum_algorithm: "CRC32", # accepts CRC32, CRC32C, SHA1, SHA256
489
809
  # })
490
810
  # @param options ({})
491
811
  # @option options [String] :mfa
@@ -493,20 +813,85 @@ module Aws::S3
493
813
  # space, and the value that is displayed on your authentication device.
494
814
  # Required to permanently delete a versioned object if versioning is
495
815
  # configured with MFA delete enabled.
816
+ #
817
+ # When performing the `DeleteObjects` operation on an MFA delete enabled
818
+ # bucket, which attempts to delete the specified versioned objects, you
819
+ # must include an MFA token. If you don't provide an MFA token, the
820
+ # entire request will fail, even if there are non-versioned objects that
821
+ # you are trying to delete. If you provide an invalid token, whether
822
+ # there are versioned object keys in the request or not, the entire
823
+ # Multi-Object Delete request will fail. For information about MFA
824
+ # Delete, see [ MFA Delete][1] in the *Amazon S3 User Guide*.
825
+ #
826
+ # <note markdown="1"> This functionality is not supported for directory buckets.
827
+ #
828
+ # </note>
829
+ #
830
+ #
831
+ #
832
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html#MultiFactorAuthenticationDelete
496
833
  # @option options [String] :request_payer
497
834
  # Confirms that the requester knows that they will be charged for the
498
835
  # request. Bucket owners need not specify this parameter in their
499
- # requests. For information about downloading objects from requester
500
- # pays buckets, see [Downloading Objects in Requestor Pays Buckets][1]
501
- # in the *Amazon S3 Developer Guide*.
836
+ # requests. If either the source or destination S3 bucket has Requester
837
+ # Pays enabled, the requester will pay for corresponding charges to copy
838
+ # the object. For information about downloading objects from Requester
839
+ # Pays buckets, see [Downloading Objects in Requester Pays Buckets][1]
840
+ # in the *Amazon S3 User Guide*.
841
+ #
842
+ # <note markdown="1"> This functionality is not supported for directory buckets.
843
+ #
844
+ # </note>
502
845
  #
503
846
  #
504
847
  #
505
848
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
506
849
  # @option options [Boolean] :bypass_governance_retention
507
850
  # Specifies whether you want to delete this object even if it has a
508
- # Governance-type Object Lock in place. You must have sufficient
509
- # permissions to perform this operation.
851
+ # Governance-type Object Lock in place. To use this header, you must
852
+ # have the `s3:BypassGovernanceRetention` permission.
853
+ #
854
+ # <note markdown="1"> This functionality is not supported for directory buckets.
855
+ #
856
+ # </note>
857
+ # @option options [String] :expected_bucket_owner
858
+ # The account ID of the expected bucket owner. If the account ID that
859
+ # you provide does not match the actual owner of the bucket, the request
860
+ # fails with the HTTP status code `403 Forbidden` (access denied).
861
+ # @option options [String] :checksum_algorithm
862
+ # Indicates the algorithm used to create the checksum for the object
863
+ # when you use the SDK. This header will not provide any additional
864
+ # functionality if you don't use the SDK. When you send this header,
865
+ # there must be a corresponding `x-amz-checksum-algorithm ` or
866
+ # `x-amz-trailer` header sent. Otherwise, Amazon S3 fails the request
867
+ # with the HTTP status code `400 Bad Request`.
868
+ #
869
+ # For the `x-amz-checksum-algorithm ` header, replace ` algorithm ` with
870
+ # the supported algorithm from the following list:
871
+ #
872
+ # * CRC32
873
+ #
874
+ # * CRC32C
875
+ #
876
+ # * SHA1
877
+ #
878
+ # * SHA256
879
+ #
880
+ # For more information, see [Checking object integrity][1] in the
881
+ # *Amazon S3 User Guide*.
882
+ #
883
+ # If the individual checksum value you provide through
884
+ # `x-amz-checksum-algorithm ` doesn't match the checksum algorithm you
885
+ # set through `x-amz-sdk-checksum-algorithm`, Amazon S3 ignores any
886
+ # provided `ChecksumAlgorithm` parameter and uses the checksum algorithm
887
+ # that matches the provided value in `x-amz-checksum-algorithm `.
888
+ #
889
+ # If you provide an individual checksum, Amazon S3 ignores any provided
890
+ # `ChecksumAlgorithm` parameter.
891
+ #
892
+ #
893
+ #
894
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
510
895
  # @return [void]
511
896
  def batch_delete!(options = {})
512
897
  batch_enum.each do |batch|
@@ -520,7 +905,9 @@ module Aws::S3
520
905
  version_id: item.id
521
906
  }
522
907
  end
523
- batch[0].client.delete_objects(params)
908
+ Aws::Plugins::UserAgent.metric('RESOURCE_MODEL') do
909
+ batch[0].client.delete_objects(params)
910
+ end
524
911
  end
525
912
  nil
526
913
  end
@@ -530,3 +917,6 @@ module Aws::S3
530
917
  end
531
918
  end
532
919
  end
920
+
921
+ # Load customizations if they exist
922
+ require 'aws-sdk-s3/customizations/object_version'