aws-sdk-s3 1.132.0 → 1.142.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +62 -0
- data/VERSION +1 -1
- data/lib/aws-sdk-s3/bucket.rb +421 -81
- data/lib/aws-sdk-s3/bucket_acl.rb +9 -9
- data/lib/aws-sdk-s3/bucket_cors.rb +12 -12
- data/lib/aws-sdk-s3/bucket_lifecycle.rb +12 -12
- data/lib/aws-sdk-s3/bucket_lifecycle_configuration.rb +12 -12
- data/lib/aws-sdk-s3/bucket_logging.rb +16 -9
- data/lib/aws-sdk-s3/bucket_notification.rb +3 -3
- data/lib/aws-sdk-s3/bucket_policy.rb +58 -14
- data/lib/aws-sdk-s3/bucket_request_payment.rb +9 -9
- data/lib/aws-sdk-s3/bucket_tagging.rb +12 -12
- data/lib/aws-sdk-s3/bucket_versioning.rb +27 -27
- data/lib/aws-sdk-s3/bucket_website.rb +12 -12
- data/lib/aws-sdk-s3/client.rb +5675 -2521
- data/lib/aws-sdk-s3/client_api.rb +111 -16
- data/lib/aws-sdk-s3/customizations/object.rb +45 -2
- data/lib/aws-sdk-s3/customizations.rb +5 -0
- data/lib/aws-sdk-s3/endpoint_parameters.rb +32 -0
- data/lib/aws-sdk-s3/endpoint_provider.rb +82 -0
- data/lib/aws-sdk-s3/endpoints.rb +440 -0
- data/lib/aws-sdk-s3/express_credentials.rb +55 -0
- data/lib/aws-sdk-s3/express_credentials_cache.rb +30 -0
- data/lib/aws-sdk-s3/express_credentials_provider.rb +36 -0
- data/lib/aws-sdk-s3/file_downloader.rb +119 -24
- data/lib/aws-sdk-s3/multipart_file_uploader.rb +0 -1
- data/lib/aws-sdk-s3/multipart_stream_uploader.rb +0 -1
- data/lib/aws-sdk-s3/multipart_upload.rb +69 -16
- data/lib/aws-sdk-s3/multipart_upload_part.rb +160 -35
- data/lib/aws-sdk-s3/object.rb +1504 -235
- data/lib/aws-sdk-s3/object_acl.rb +29 -15
- data/lib/aws-sdk-s3/object_summary.rb +1367 -254
- data/lib/aws-sdk-s3/object_version.rb +297 -42
- data/lib/aws-sdk-s3/plugins/endpoints.rb +13 -2
- data/lib/aws-sdk-s3/plugins/express_session_auth.rb +90 -0
- data/lib/aws-sdk-s3/plugins/location_constraint.rb +3 -1
- data/lib/aws-sdk-s3/plugins/md5s.rb +2 -1
- data/lib/aws-sdk-s3/presigner.rb +2 -2
- data/lib/aws-sdk-s3/resource.rb +83 -11
- data/lib/aws-sdk-s3/types.rb +4500 -1351
- data/lib/aws-sdk-s3.rb +1 -1
- metadata +11 -7
@@ -93,7 +93,7 @@ module Aws::S3
|
|
93
93
|
data[:is_latest]
|
94
94
|
end
|
95
95
|
|
96
|
-
# Date and time the object was last modified.
|
96
|
+
# Date and time when the object was last modified.
|
97
97
|
# @return [Time]
|
98
98
|
def last_modified
|
99
99
|
data[:last_modified]
|
@@ -264,13 +264,23 @@ module Aws::S3
|
|
264
264
|
# space, and the value that is displayed on your authentication device.
|
265
265
|
# Required to permanently delete a versioned object if versioning is
|
266
266
|
# configured with MFA delete enabled.
|
267
|
+
#
|
268
|
+
# <note markdown="1"> This functionality is not supported for directory buckets.
|
269
|
+
#
|
270
|
+
# </note>
|
267
271
|
# @option options [String] :request_payer
|
268
272
|
# Confirms that the requester knows that they will be charged for the
|
269
273
|
# request. Bucket owners need not specify this parameter in their
|
270
|
-
# requests.
|
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
|
271
277
|
# Pays buckets, see [Downloading Objects in Requester Pays Buckets][1]
|
272
278
|
# in the *Amazon S3 User Guide*.
|
273
279
|
#
|
280
|
+
# <note markdown="1"> This functionality is not supported for directory buckets.
|
281
|
+
#
|
282
|
+
# </note>
|
283
|
+
#
|
274
284
|
#
|
275
285
|
#
|
276
286
|
# [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
|
@@ -278,10 +288,14 @@ module Aws::S3
|
|
278
288
|
# Indicates whether S3 Object Lock should bypass Governance-mode
|
279
289
|
# restrictions to process this operation. To use this header, you must
|
280
290
|
# have the `s3:BypassGovernanceRetention` permission.
|
291
|
+
#
|
292
|
+
# <note markdown="1"> This functionality is not supported for directory buckets.
|
293
|
+
#
|
294
|
+
# </note>
|
281
295
|
# @option options [String] :expected_bucket_owner
|
282
|
-
# The account ID of the expected bucket owner. If the
|
283
|
-
#
|
284
|
-
# Forbidden` (access denied).
|
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).
|
285
299
|
# @return [Types::DeleteObjectOutput]
|
286
300
|
def delete(options = {})
|
287
301
|
options = options.merge(
|
@@ -320,18 +334,64 @@ module Aws::S3
|
|
320
334
|
# @param [Hash] options ({})
|
321
335
|
# @option options [String] :if_match
|
322
336
|
# Return the object only if its entity tag (ETag) is the same as the one
|
323
|
-
# specified; otherwise, return a 412
|
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
|
324
350
|
# @option options [Time,DateTime,Date,Integer,String] :if_modified_since
|
325
351
|
# Return the object only if it has been modified since the specified
|
326
|
-
# time; otherwise, return a 304
|
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
|
327
364
|
# @option options [String] :if_none_match
|
328
365
|
# Return the object only if its entity tag (ETag) is different from the
|
329
|
-
# one specified; otherwise, return a 304
|
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
|
330
379
|
# @option options [Time,DateTime,Date,Integer,String] :if_unmodified_since
|
331
380
|
# Return the object only if it has not been modified since the specified
|
332
|
-
# time; otherwise, return a 412
|
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
|
333
393
|
# @option options [String] :range
|
334
|
-
# Downloads the specified range
|
394
|
+
# Downloads the specified byte range of an object. For more information
|
335
395
|
# about the HTTP Range header, see
|
336
396
|
# [https://www.rfc-editor.org/rfc/rfc9110.html#name-range][1].
|
337
397
|
#
|
@@ -346,7 +406,7 @@ module Aws::S3
|
|
346
406
|
# @option options [String] :response_cache_control
|
347
407
|
# Sets the `Cache-Control` header of the response.
|
348
408
|
# @option options [String] :response_content_disposition
|
349
|
-
# Sets the `Content-Disposition` header of the response
|
409
|
+
# Sets the `Content-Disposition` header of the response.
|
350
410
|
# @option options [String] :response_content_encoding
|
351
411
|
# Sets the `Content-Encoding` header of the response.
|
352
412
|
# @option options [String] :response_content_language
|
@@ -356,25 +416,99 @@ module Aws::S3
|
|
356
416
|
# @option options [Time,DateTime,Date,Integer,String] :response_expires
|
357
417
|
# Sets the `Expires` header of the response.
|
358
418
|
# @option options [String] :sse_customer_algorithm
|
359
|
-
# Specifies the algorithm to use
|
360
|
-
# 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
|
361
443
|
# @option options [String] :sse_customer_key
|
362
|
-
# Specifies the customer-provided encryption key
|
363
|
-
#
|
364
|
-
#
|
365
|
-
#
|
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
|
366
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
|
367
472
|
# @option options [String] :sse_customer_key_md5
|
368
|
-
# Specifies the 128-bit MD5 digest of the encryption
|
369
|
-
# RFC 1321. Amazon S3 uses this header for a message
|
370
|
-
# ensure that the encryption key was transmitted
|
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
|
371
499
|
# @option options [String] :request_payer
|
372
500
|
# Confirms that the requester knows that they will be charged for the
|
373
501
|
# request. Bucket owners need not specify this parameter in their
|
374
|
-
# requests.
|
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
|
375
505
|
# Pays buckets, see [Downloading Objects in Requester Pays Buckets][1]
|
376
506
|
# in the *Amazon S3 User Guide*.
|
377
507
|
#
|
508
|
+
# <note markdown="1"> This functionality is not supported for directory buckets.
|
509
|
+
#
|
510
|
+
# </note>
|
511
|
+
#
|
378
512
|
#
|
379
513
|
#
|
380
514
|
# [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
|
@@ -384,9 +518,9 @@ module Aws::S3
|
|
384
518
|
# for the part specified. Useful for downloading just a part of an
|
385
519
|
# object.
|
386
520
|
# @option options [String] :expected_bucket_owner
|
387
|
-
# The account ID of the expected bucket owner. If the
|
388
|
-
#
|
389
|
-
# Forbidden` (access denied).
|
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).
|
390
524
|
# @option options [String] :checksum_mode
|
391
525
|
# To retrieve the checksum, this mode must be enabled.
|
392
526
|
# @return [Types::GetObjectOutput]
|
@@ -422,40 +556,118 @@ module Aws::S3
|
|
422
556
|
# @option options [String] :if_match
|
423
557
|
# Return the object only if its entity tag (ETag) is the same as the one
|
424
558
|
# specified; otherwise, return a 412 (precondition failed) error.
|
559
|
+
#
|
560
|
+
# If both of the `If-Match` and `If-Unmodified-Since` headers are
|
561
|
+
# present in the request as follows:
|
562
|
+
#
|
563
|
+
# * `If-Match` condition evaluates to `true`, and;
|
564
|
+
#
|
565
|
+
# * `If-Unmodified-Since` condition evaluates to `false`;
|
566
|
+
#
|
567
|
+
# Then Amazon S3 returns `200 OK` and the data requested.
|
568
|
+
#
|
569
|
+
# For more information about conditional requests, see [RFC 7232][1].
|
570
|
+
#
|
571
|
+
#
|
572
|
+
#
|
573
|
+
# [1]: https://tools.ietf.org/html/rfc7232
|
425
574
|
# @option options [Time,DateTime,Date,Integer,String] :if_modified_since
|
426
575
|
# Return the object only if it has been modified since the specified
|
427
576
|
# time; otherwise, return a 304 (not modified) error.
|
577
|
+
#
|
578
|
+
# If both of the `If-None-Match` and `If-Modified-Since` headers are
|
579
|
+
# present in the request as follows:
|
580
|
+
#
|
581
|
+
# * `If-None-Match` condition evaluates to `false`, and;
|
582
|
+
#
|
583
|
+
# * `If-Modified-Since` condition evaluates to `true`;
|
584
|
+
#
|
585
|
+
# Then Amazon S3 returns the `304 Not Modified` response code.
|
586
|
+
#
|
587
|
+
# For more information about conditional requests, see [RFC 7232][1].
|
588
|
+
#
|
589
|
+
#
|
590
|
+
#
|
591
|
+
# [1]: https://tools.ietf.org/html/rfc7232
|
428
592
|
# @option options [String] :if_none_match
|
429
593
|
# Return the object only if its entity tag (ETag) is different from the
|
430
594
|
# one specified; otherwise, return a 304 (not modified) error.
|
595
|
+
#
|
596
|
+
# If both of the `If-None-Match` and `If-Modified-Since` headers are
|
597
|
+
# present in the request as follows:
|
598
|
+
#
|
599
|
+
# * `If-None-Match` condition evaluates to `false`, and;
|
600
|
+
#
|
601
|
+
# * `If-Modified-Since` condition evaluates to `true`;
|
602
|
+
#
|
603
|
+
# Then Amazon S3 returns the `304 Not Modified` response code.
|
604
|
+
#
|
605
|
+
# For more information about conditional requests, see [RFC 7232][1].
|
606
|
+
#
|
607
|
+
#
|
608
|
+
#
|
609
|
+
# [1]: https://tools.ietf.org/html/rfc7232
|
431
610
|
# @option options [Time,DateTime,Date,Integer,String] :if_unmodified_since
|
432
611
|
# Return the object only if it has not been modified since the specified
|
433
612
|
# time; otherwise, return a 412 (precondition failed) error.
|
613
|
+
#
|
614
|
+
# If both of the `If-Match` and `If-Unmodified-Since` headers are
|
615
|
+
# present in the request as follows:
|
616
|
+
#
|
617
|
+
# * `If-Match` condition evaluates to `true`, and;
|
618
|
+
#
|
619
|
+
# * `If-Unmodified-Since` condition evaluates to `false`;
|
620
|
+
#
|
621
|
+
# Then Amazon S3 returns `200 OK` and the data requested.
|
622
|
+
#
|
623
|
+
# For more information about conditional requests, see [RFC 7232][1].
|
624
|
+
#
|
625
|
+
#
|
626
|
+
#
|
627
|
+
# [1]: https://tools.ietf.org/html/rfc7232
|
434
628
|
# @option options [String] :range
|
435
629
|
# HeadObject returns only the metadata for an object. If the Range is
|
436
630
|
# satisfiable, only the `ContentLength` is affected in the response. If
|
437
631
|
# the Range is not satisfiable, S3 returns a `416 - Requested Range Not
|
438
632
|
# Satisfiable` error.
|
439
633
|
# @option options [String] :sse_customer_algorithm
|
440
|
-
# Specifies the algorithm to use
|
634
|
+
# Specifies the algorithm to use when encrypting the object (for
|
441
635
|
# example, AES256).
|
636
|
+
#
|
637
|
+
# <note markdown="1"> This functionality is not supported for directory buckets.
|
638
|
+
#
|
639
|
+
# </note>
|
442
640
|
# @option options [String] :sse_customer_key
|
443
641
|
# Specifies the customer-provided encryption key for Amazon S3 to use in
|
444
642
|
# encrypting data. This value is used to store the object and then it is
|
445
643
|
# discarded; Amazon S3 does not store the encryption key. The key must
|
446
644
|
# be appropriate for use with the algorithm specified in the
|
447
645
|
# `x-amz-server-side-encryption-customer-algorithm` header.
|
646
|
+
#
|
647
|
+
# <note markdown="1"> This functionality is not supported for directory buckets.
|
648
|
+
#
|
649
|
+
# </note>
|
448
650
|
# @option options [String] :sse_customer_key_md5
|
449
651
|
# Specifies the 128-bit MD5 digest of the encryption key according to
|
450
652
|
# RFC 1321. Amazon S3 uses this header for a message integrity check to
|
451
653
|
# ensure that the encryption key was transmitted without error.
|
654
|
+
#
|
655
|
+
# <note markdown="1"> This functionality is not supported for directory buckets.
|
656
|
+
#
|
657
|
+
# </note>
|
452
658
|
# @option options [String] :request_payer
|
453
659
|
# Confirms that the requester knows that they will be charged for the
|
454
660
|
# request. Bucket owners need not specify this parameter in their
|
455
|
-
# requests.
|
661
|
+
# requests. If either the source or destination S3 bucket has Requester
|
662
|
+
# Pays enabled, the requester will pay for corresponding charges to copy
|
663
|
+
# the object. For information about downloading objects from Requester
|
456
664
|
# Pays buckets, see [Downloading Objects in Requester Pays Buckets][1]
|
457
665
|
# in the *Amazon S3 User Guide*.
|
458
666
|
#
|
667
|
+
# <note markdown="1"> This functionality is not supported for directory buckets.
|
668
|
+
#
|
669
|
+
# </note>
|
670
|
+
#
|
459
671
|
#
|
460
672
|
#
|
461
673
|
# [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
|
@@ -465,9 +677,9 @@ module Aws::S3
|
|
465
677
|
# for the part specified. Useful querying about the size of the part and
|
466
678
|
# the number of parts in this object.
|
467
679
|
# @option options [String] :expected_bucket_owner
|
468
|
-
# The account ID of the expected bucket owner. If the
|
469
|
-
#
|
470
|
-
# Forbidden` (access denied).
|
680
|
+
# The account ID of the expected bucket owner. If the account ID that
|
681
|
+
# you provide does not match the actual owner of the bucket, the request
|
682
|
+
# fails with the HTTP status code `403 Forbidden` (access denied).
|
471
683
|
# @option options [String] :checksum_mode
|
472
684
|
# To retrieve the checksum, this parameter must be enabled.
|
473
685
|
#
|
@@ -564,13 +776,36 @@ module Aws::S3
|
|
564
776
|
# space, and the value that is displayed on your authentication device.
|
565
777
|
# Required to permanently delete a versioned object if versioning is
|
566
778
|
# configured with MFA delete enabled.
|
779
|
+
#
|
780
|
+
# When performing the `DeleteObjects` operation on an MFA delete enabled
|
781
|
+
# bucket, which attempts to delete the specified versioned objects, you
|
782
|
+
# must include an MFA token. If you don't provide an MFA token, the
|
783
|
+
# entire request will fail, even if there are non-versioned objects that
|
784
|
+
# you are trying to delete. If you provide an invalid token, whether
|
785
|
+
# there are versioned object keys in the request or not, the entire
|
786
|
+
# Multi-Object Delete request will fail. For information about MFA
|
787
|
+
# Delete, see [ MFA Delete][1] in the *Amazon S3 User Guide*.
|
788
|
+
#
|
789
|
+
# <note markdown="1"> This functionality is not supported for directory buckets.
|
790
|
+
#
|
791
|
+
# </note>
|
792
|
+
#
|
793
|
+
#
|
794
|
+
#
|
795
|
+
# [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/Versioning.html#MultiFactorAuthenticationDelete
|
567
796
|
# @option options [String] :request_payer
|
568
797
|
# Confirms that the requester knows that they will be charged for the
|
569
798
|
# request. Bucket owners need not specify this parameter in their
|
570
|
-
# requests.
|
799
|
+
# requests. If either the source or destination S3 bucket has Requester
|
800
|
+
# Pays enabled, the requester will pay for corresponding charges to copy
|
801
|
+
# the object. For information about downloading objects from Requester
|
571
802
|
# Pays buckets, see [Downloading Objects in Requester Pays Buckets][1]
|
572
803
|
# in the *Amazon S3 User Guide*.
|
573
804
|
#
|
805
|
+
# <note markdown="1"> This functionality is not supported for directory buckets.
|
806
|
+
#
|
807
|
+
# </note>
|
808
|
+
#
|
574
809
|
#
|
575
810
|
#
|
576
811
|
# [1]: https://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
|
@@ -578,25 +813,45 @@ module Aws::S3
|
|
578
813
|
# Specifies whether you want to delete this object even if it has a
|
579
814
|
# Governance-type Object Lock in place. To use this header, you must
|
580
815
|
# have the `s3:BypassGovernanceRetention` permission.
|
816
|
+
#
|
817
|
+
# <note markdown="1"> This functionality is not supported for directory buckets.
|
818
|
+
#
|
819
|
+
# </note>
|
581
820
|
# @option options [String] :expected_bucket_owner
|
582
|
-
# The account ID of the expected bucket owner. If the
|
583
|
-
#
|
584
|
-
# Forbidden` (access denied).
|
821
|
+
# The account ID of the expected bucket owner. If the account ID that
|
822
|
+
# you provide does not match the actual owner of the bucket, the request
|
823
|
+
# fails with the HTTP status code `403 Forbidden` (access denied).
|
585
824
|
# @option options [String] :checksum_algorithm
|
586
825
|
# Indicates the algorithm used to create the checksum for the object
|
587
|
-
# when
|
588
|
-
# functionality if
|
589
|
-
# must be a corresponding `x-amz-checksum` or
|
590
|
-
# sent. Otherwise, Amazon S3 fails the request
|
591
|
-
# `400 Bad Request`.
|
592
|
-
#
|
826
|
+
# when you use the SDK. This header will not provide any additional
|
827
|
+
# functionality if you don't use the SDK. When you send this header,
|
828
|
+
# there must be a corresponding `x-amz-checksum-algorithm ` or
|
829
|
+
# `x-amz-trailer` header sent. Otherwise, Amazon S3 fails the request
|
830
|
+
# with the HTTP status code `400 Bad Request`.
|
831
|
+
#
|
832
|
+
# For the `x-amz-checksum-algorithm ` header, replace ` algorithm ` with
|
833
|
+
# the supported algorithm from the following list:
|
834
|
+
#
|
835
|
+
# * CRC32
|
836
|
+
#
|
837
|
+
# * CRC32C
|
838
|
+
#
|
839
|
+
# * SHA1
|
840
|
+
#
|
841
|
+
# * SHA256
|
842
|
+
#
|
843
|
+
# For more information, see [Checking object integrity][1] in the
|
844
|
+
# *Amazon S3 User Guide*.
|
845
|
+
#
|
846
|
+
# If the individual checksum value you provide through
|
847
|
+
# `x-amz-checksum-algorithm ` doesn't match the checksum algorithm you
|
848
|
+
# set through `x-amz-sdk-checksum-algorithm`, Amazon S3 ignores any
|
849
|
+
# provided `ChecksumAlgorithm` parameter and uses the checksum algorithm
|
850
|
+
# that matches the provided value in `x-amz-checksum-algorithm `.
|
593
851
|
#
|
594
852
|
# If you provide an individual checksum, Amazon S3 ignores any provided
|
595
853
|
# `ChecksumAlgorithm` parameter.
|
596
854
|
#
|
597
|
-
# This checksum algorithm must be the same for all parts and it match
|
598
|
-
# the checksum value supplied in the `CreateMultipartUpload` request.
|
599
|
-
#
|
600
855
|
#
|
601
856
|
#
|
602
857
|
# [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
|
@@ -22,19 +22,26 @@ module Aws::S3
|
|
22
22
|
Aws::S3::EndpointProvider.new
|
23
23
|
end
|
24
24
|
|
25
|
+
option(
|
26
|
+
:disable_s3_express_session_auth,
|
27
|
+
doc_type: 'Boolean',
|
28
|
+
default: nil,
|
29
|
+
docstring: "Parameter to indicate whether S3Express session auth should be disabled")
|
30
|
+
|
25
31
|
# @api private
|
26
32
|
class Handler < Seahorse::Client::Handler
|
27
33
|
def call(context)
|
28
|
-
# If endpoint was discovered, do not resolve or apply the endpoint.
|
29
34
|
unless context[:discovered_endpoint]
|
30
35
|
params = parameters_for_operation(context)
|
31
36
|
endpoint = context.config.endpoint_provider.resolve_endpoint(params)
|
32
37
|
|
33
38
|
context.http_request.endpoint = endpoint.url
|
34
39
|
apply_endpoint_headers(context, endpoint.headers)
|
40
|
+
|
41
|
+
context[:endpoint_params] = params
|
42
|
+
context[:endpoint_properties] = endpoint.properties
|
35
43
|
end
|
36
44
|
|
37
|
-
context[:endpoint_params] = params
|
38
45
|
context[:auth_scheme] =
|
39
46
|
Aws::Endpoints.resolve_auth_scheme(context, endpoint)
|
40
47
|
|
@@ -66,6 +73,8 @@ module Aws::S3
|
|
66
73
|
Aws::S3::Endpoints::CreateBucket.build(context)
|
67
74
|
when :create_multipart_upload
|
68
75
|
Aws::S3::Endpoints::CreateMultipartUpload.build(context)
|
76
|
+
when :create_session
|
77
|
+
Aws::S3::Endpoints::CreateSession.build(context)
|
69
78
|
when :delete_bucket
|
70
79
|
Aws::S3::Endpoints::DeleteBucket.build(context)
|
71
80
|
when :delete_bucket_analytics_configuration
|
@@ -176,6 +185,8 @@ module Aws::S3
|
|
176
185
|
Aws::S3::Endpoints::ListBucketMetricsConfigurations.build(context)
|
177
186
|
when :list_buckets
|
178
187
|
Aws::S3::Endpoints::ListBuckets.build(context)
|
188
|
+
when :list_directory_buckets
|
189
|
+
Aws::S3::Endpoints::ListDirectoryBuckets.build(context)
|
179
190
|
when :list_multipart_uploads
|
180
191
|
Aws::S3::Endpoints::ListMultipartUploads.build(context)
|
181
192
|
when :list_object_versions
|
@@ -0,0 +1,90 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Aws
|
4
|
+
module S3
|
5
|
+
module Plugins
|
6
|
+
# @api private
|
7
|
+
class ExpressSessionAuth < Seahorse::Client::Plugin
|
8
|
+
# This should be s3_disable_express_auth instead
|
9
|
+
# But this is not a built in. We're overwriting the generated value
|
10
|
+
option(:disable_s3_express_session_auth,
|
11
|
+
default: false,
|
12
|
+
doc_type: 'Boolean',
|
13
|
+
docstring: <<-DOCS) do |cfg|
|
14
|
+
When `true`, S3 Express session authentication is disabled.
|
15
|
+
DOCS
|
16
|
+
resolve_disable_s3_express_session_auth(cfg)
|
17
|
+
end
|
18
|
+
|
19
|
+
option(:express_credentials_provider,
|
20
|
+
doc_type: 'Aws::S3::ExpressCredentialsProvider',
|
21
|
+
docstring: <<-DOCS) do |_cfg|
|
22
|
+
Credential Provider for S3 Express endpoints. Manages credentials
|
23
|
+
for different buckets.
|
24
|
+
DOCS
|
25
|
+
Aws::S3::ExpressCredentialsProvider.new
|
26
|
+
end
|
27
|
+
|
28
|
+
# @api private
|
29
|
+
class Handler < Seahorse::Client::Handler
|
30
|
+
def call(context)
|
31
|
+
if (props = context[:endpoint_properties])
|
32
|
+
# S3 Express endpoint - turn off md5 and enable crc32 default
|
33
|
+
if (backend = props['backend']) && backend == 'S3Express'
|
34
|
+
if context.operation_name == :put_object || checksum_required?(context)
|
35
|
+
context[:default_request_checksum_algorithm] = 'CRC32'
|
36
|
+
end
|
37
|
+
context[:s3_express_endpoint] = true
|
38
|
+
end
|
39
|
+
|
40
|
+
# if s3 express auth, use new credentials and sign additional header
|
41
|
+
if context[:auth_scheme]['name'] == 'sigv4-s3express' &&
|
42
|
+
!context.config.disable_s3_express_session_auth
|
43
|
+
bucket = context.params[:bucket]
|
44
|
+
credentials_provider = context.config.express_credentials_provider
|
45
|
+
credentials = credentials_provider.express_credentials_for(bucket)
|
46
|
+
context[:sigv4_credentials] = credentials # Sign will use this
|
47
|
+
end
|
48
|
+
end
|
49
|
+
@handler.call(context)
|
50
|
+
end
|
51
|
+
|
52
|
+
private
|
53
|
+
|
54
|
+
def checksum_required?(context)
|
55
|
+
context.operation.http_checksum_required ||
|
56
|
+
(context.operation.http_checksum &&
|
57
|
+
context.operation.http_checksum['requestChecksumRequired'])
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
handler(Handler)
|
62
|
+
|
63
|
+
# Optimization - sets this client as the client to create sessions.
|
64
|
+
def after_initialize(client)
|
65
|
+
provider = client.config.express_credentials_provider
|
66
|
+
provider.client = client unless provider.client
|
67
|
+
end
|
68
|
+
|
69
|
+
class << self
|
70
|
+
private
|
71
|
+
|
72
|
+
def resolve_disable_s3_express_session_auth(cfg)
|
73
|
+
value = ENV['AWS_S3_DISABLE_EXPRESS_SESSION_AUTH'] ||
|
74
|
+
Aws.shared_config.s3_disable_express_session_auth(profile: cfg.profile) ||
|
75
|
+
'false'
|
76
|
+
value = Aws::Util.str_2_bool(value)
|
77
|
+
# Raise if provided value is not true or false
|
78
|
+
if value.nil?
|
79
|
+
raise ArgumentError,
|
80
|
+
'Must provide either `true` or `false` for the '\
|
81
|
+
'`s3_disable_express_session_auth` profile option or for '\
|
82
|
+
"ENV['AWS_S3_DISABLE_EXPRESS_SESSION_AUTH']."
|
83
|
+
end
|
84
|
+
value
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
@@ -22,7 +22,9 @@ module Aws
|
|
22
22
|
|
23
23
|
def populate_location_constraint(params, region)
|
24
24
|
params[:create_bucket_configuration] ||= {}
|
25
|
-
params[:create_bucket_configuration][:
|
25
|
+
unless params[:create_bucket_configuration][:location]
|
26
|
+
params[:create_bucket_configuration][:location_constraint] ||= region
|
27
|
+
end
|
26
28
|
end
|
27
29
|
|
28
30
|
end
|
@@ -22,7 +22,8 @@ module Aws
|
|
22
22
|
CHUNK_SIZE = 1 * 1024 * 1024 # one MB
|
23
23
|
|
24
24
|
def call(context)
|
25
|
-
if !context[:checksum_algorithms] # skip in favor of flexible checksum
|
25
|
+
if !context[:checksum_algorithms] && # skip in favor of flexible checksum
|
26
|
+
!context[:s3_express_endpoint] # s3 express endpoints do not support md5
|
26
27
|
body = context.http_request.body
|
27
28
|
if body.respond_to?(:size) && body.size > 0
|
28
29
|
context.http_request.headers['Content-Md5'] ||= md5(body)
|
data/lib/aws-sdk-s3/presigner.rb
CHANGED
@@ -232,8 +232,8 @@ module Aws
|
|
232
232
|
end
|
233
233
|
signer = Aws::Sigv4::Signer.new(
|
234
234
|
service: auth_scheme['signingName'] || 's3',
|
235
|
-
region: region || context.config.region,
|
236
|
-
credentials_provider: context.config.credentials,
|
235
|
+
region: context[:sigv4_region] || region || context.config.region,
|
236
|
+
credentials_provider: context[:sigv4_credentials] || context.config.credentials,
|
237
237
|
signing_algorithm: scheme_name.to_sym,
|
238
238
|
uri_escape_path: !!!auth_scheme['disableDoubleEncoding'],
|
239
239
|
unsigned_headers: unsigned_headers,
|