aws-sdk-s3 1.9.0 → 1.40.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/lib/aws-sdk-s3/bucket.rb +22 -3
  3. data/lib/aws-sdk-s3/bucket_acl.rb +1 -0
  4. data/lib/aws-sdk-s3/bucket_cors.rb +1 -0
  5. data/lib/aws-sdk-s3/bucket_lifecycle.rb +3 -2
  6. data/lib/aws-sdk-s3/bucket_lifecycle_configuration.rb +3 -2
  7. data/lib/aws-sdk-s3/bucket_notification.rb +9 -5
  8. data/lib/aws-sdk-s3/bucket_tagging.rb +1 -0
  9. data/lib/aws-sdk-s3/bucket_website.rb +4 -0
  10. data/lib/aws-sdk-s3/client.rb +1303 -351
  11. data/lib/aws-sdk-s3/client_api.rb +352 -2
  12. data/lib/aws-sdk-s3/customizations/bucket.rb +2 -2
  13. data/lib/aws-sdk-s3/customizations/object.rb +60 -0
  14. data/lib/aws-sdk-s3/customizations/object_summary.rb +7 -0
  15. data/lib/aws-sdk-s3/customizations.rb +1 -0
  16. data/lib/aws-sdk-s3/encryption/client.rb +1 -1
  17. data/lib/aws-sdk-s3/encryption/io_auth_decrypter.rb +9 -3
  18. data/lib/aws-sdk-s3/event_streams.rb +62 -0
  19. data/lib/aws-sdk-s3/file_downloader.rb +10 -9
  20. data/lib/aws-sdk-s3/file_part.rb +5 -7
  21. data/lib/aws-sdk-s3/file_uploader.rb +1 -3
  22. data/lib/aws-sdk-s3/multipart_stream_uploader.rb +162 -0
  23. data/lib/aws-sdk-s3/multipart_upload.rb +1 -0
  24. data/lib/aws-sdk-s3/multipart_upload_part.rb +2 -2
  25. data/lib/aws-sdk-s3/object.rb +71 -7
  26. data/lib/aws-sdk-s3/object_acl.rb +1 -0
  27. data/lib/aws-sdk-s3/object_summary.rb +54 -7
  28. data/lib/aws-sdk-s3/object_version.rb +11 -0
  29. data/lib/aws-sdk-s3/plugins/accelerate.rb +4 -0
  30. data/lib/aws-sdk-s3/plugins/md5s.rb +4 -1
  31. data/lib/aws-sdk-s3/plugins/redirects.rb +3 -1
  32. data/lib/aws-sdk-s3/plugins/s3_signer.rb +6 -1
  33. data/lib/aws-sdk-s3/presigner.rb +4 -0
  34. data/lib/aws-sdk-s3/resource.rb +4 -0
  35. data/lib/aws-sdk-s3/types.rb +1539 -227
  36. data/lib/aws-sdk-s3.rb +2 -1
  37. metadata +12 -4
@@ -46,6 +46,7 @@ module Aws::S3
46
46
  data[:delete_marker]
47
47
  end
48
48
 
49
+
49
50
  # @return [String]
50
51
  def accept_ranges
51
52
  data[:accept_ranges]
@@ -190,6 +191,7 @@ module Aws::S3
190
191
  data[:ssekms_key_id]
191
192
  end
192
193
 
194
+
193
195
  # @return [String]
194
196
  def storage_class
195
197
  data[:storage_class]
@@ -202,6 +204,7 @@ module Aws::S3
202
204
  data[:request_charged]
203
205
  end
204
206
 
207
+
205
208
  # @return [String]
206
209
  def replication_status
207
210
  data[:replication_status]
@@ -213,6 +216,24 @@ module Aws::S3
213
216
  data[:parts_count]
214
217
  end
215
218
 
219
+ # The Object Lock mode currently in place for this object.
220
+ # @return [String]
221
+ def object_lock_mode
222
+ data[:object_lock_mode]
223
+ end
224
+
225
+ # The date and time when this object's Object Lock will expire.
226
+ # @return [Time]
227
+ def object_lock_retain_until_date
228
+ data[:object_lock_retain_until_date]
229
+ end
230
+
231
+ # The Legal Hold status for the specified object.
232
+ # @return [String]
233
+ def object_lock_legal_hold_status
234
+ data[:object_lock_legal_hold_status]
235
+ end
236
+
216
237
  # @!endgroup
217
238
 
218
239
  # @return [Client]
@@ -425,7 +446,7 @@ module Aws::S3
425
446
  # metadata_directive: "COPY", # accepts COPY, REPLACE
426
447
  # tagging_directive: "COPY", # accepts COPY, REPLACE
427
448
  # server_side_encryption: "AES256", # accepts AES256, aws:kms
428
- # storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA
449
+ # storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE
429
450
  # website_redirect_location: "WebsiteRedirectLocation",
430
451
  # sse_customer_algorithm: "SSECustomerAlgorithm",
431
452
  # sse_customer_key: "SSECustomerKey",
@@ -436,6 +457,9 @@ module Aws::S3
436
457
  # copy_source_sse_customer_key_md5: "CopySourceSSECustomerKeyMD5",
437
458
  # request_payer: "requester", # accepts requester
438
459
  # tagging: "TaggingHeader",
460
+ # object_lock_mode: "GOVERNANCE", # accepts GOVERNANCE, COMPLIANCE
461
+ # object_lock_retain_until_date: Time.now,
462
+ # object_lock_legal_hold_status: "ON", # accepts ON, OFF
439
463
  # })
440
464
  # @param [Hash] options ({})
441
465
  # @option options [String] :acl
@@ -533,6 +557,13 @@ module Aws::S3
533
557
  # The tag-set for the object destination object this value must be used
534
558
  # in conjunction with the TaggingDirective. The tag-set must be encoded
535
559
  # as URL Query parameters
560
+ # @option options [String] :object_lock_mode
561
+ # The Object Lock mode that you want to apply to the copied object.
562
+ # @option options [Time,DateTime,Date,Integer,String] :object_lock_retain_until_date
563
+ # The date and time when you want the copied object's Object Lock to
564
+ # expire.
565
+ # @option options [String] :object_lock_legal_hold_status
566
+ # Specifies whether you want to apply a Legal Hold to the copied object.
536
567
  # @return [Types::CopyObjectOutput]
537
568
  def copy_from(options = {})
538
569
  options = options.merge(
@@ -549,6 +580,7 @@ module Aws::S3
549
580
  # mfa: "MFA",
550
581
  # version_id: "ObjectVersionId",
551
582
  # request_payer: "requester", # accepts requester
583
+ # bypass_governance_retention: false,
552
584
  # })
553
585
  # @param [Hash] options ({})
554
586
  # @option options [String] :mfa
@@ -562,6 +594,9 @@ module Aws::S3
562
594
  # requests. Documentation on downloading objects from requester pays
563
595
  # buckets can be found at
564
596
  # http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
597
+ # @option options [Boolean] :bypass_governance_retention
598
+ # Indicates whether S3 Object Lock should bypass Governance-mode
599
+ # restrictions to process this operation.
565
600
  # @return [Types::DeleteObjectOutput]
566
601
  def delete(options = {})
567
602
  options = options.merge(
@@ -676,7 +711,7 @@ module Aws::S3
676
711
  # "MetadataKey" => "MetadataValue",
677
712
  # },
678
713
  # server_side_encryption: "AES256", # accepts AES256, aws:kms
679
- # storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA
714
+ # storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE
680
715
  # website_redirect_location: "WebsiteRedirectLocation",
681
716
  # sse_customer_algorithm: "SSECustomerAlgorithm",
682
717
  # sse_customer_key: "SSECustomerKey",
@@ -684,6 +719,9 @@ module Aws::S3
684
719
  # ssekms_key_id: "SSEKMSKeyId",
685
720
  # request_payer: "requester", # accepts requester
686
721
  # tagging: "TaggingHeader",
722
+ # object_lock_mode: "GOVERNANCE", # accepts GOVERNANCE, COMPLIANCE
723
+ # object_lock_retain_until_date: Time.now,
724
+ # object_lock_legal_hold_status: "ON", # accepts ON, OFF
687
725
  # })
688
726
  # @param [Hash] options ({})
689
727
  # @option options [String] :acl
@@ -750,6 +788,14 @@ module Aws::S3
750
788
  # @option options [String] :tagging
751
789
  # The tag-set for the object. The tag-set must be encoded as URL Query
752
790
  # parameters
791
+ # @option options [String] :object_lock_mode
792
+ # Specifies the Object Lock mode that you want to apply to the uploaded
793
+ # object.
794
+ # @option options [Time,DateTime,Date,Integer,String] :object_lock_retain_until_date
795
+ # Specifies the date and time when you want the Object Lock to expire.
796
+ # @option options [String] :object_lock_legal_hold_status
797
+ # Specifies whether you want to apply a Legal Hold to the uploaded
798
+ # object.
753
799
  # @return [MultipartUpload]
754
800
  def initiate_multipart_upload(options = {})
755
801
  options = options.merge(
@@ -786,7 +832,7 @@ module Aws::S3
786
832
  # "MetadataKey" => "MetadataValue",
787
833
  # },
788
834
  # server_side_encryption: "AES256", # accepts AES256, aws:kms
789
- # storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA
835
+ # storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE
790
836
  # website_redirect_location: "WebsiteRedirectLocation",
791
837
  # sse_customer_algorithm: "SSECustomerAlgorithm",
792
838
  # sse_customer_key: "SSECustomerKey",
@@ -794,6 +840,9 @@ module Aws::S3
794
840
  # ssekms_key_id: "SSEKMSKeyId",
795
841
  # request_payer: "requester", # accepts requester
796
842
  # tagging: "TaggingHeader",
843
+ # object_lock_mode: "GOVERNANCE", # accepts GOVERNANCE, COMPLIANCE
844
+ # object_lock_retain_until_date: Time.now,
845
+ # object_lock_legal_hold_status: "ON", # accepts ON, OFF
797
846
  # })
798
847
  # @param [Hash] options ({})
799
848
  # @option options [String] :acl
@@ -814,7 +863,8 @@ module Aws::S3
814
863
  # Size of the body in bytes. This parameter is useful when the size of
815
864
  # the body cannot be determined automatically.
816
865
  # @option options [String] :content_md5
817
- # The base64-encoded 128-bit MD5 digest of the part data.
866
+ # The base64-encoded 128-bit MD5 digest of the part data. This parameter
867
+ # is auto-populated when using the command from the CLI
818
868
  # @option options [String] :content_type
819
869
  # A standard MIME type describing the format of the object data.
820
870
  # @option options [Time,DateTime,Date,Integer,String] :expires
@@ -866,7 +916,13 @@ module Aws::S3
866
916
  # http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
867
917
  # @option options [String] :tagging
868
918
  # The tag-set for the object. The tag-set must be encoded as URL Query
869
- # parameters
919
+ # parameters. (For example, "Key1=Value1")
920
+ # @option options [String] :object_lock_mode
921
+ # The Object Lock mode that you want to apply to this object.
922
+ # @option options [Time,DateTime,Date,Integer,String] :object_lock_retain_until_date
923
+ # The date and time when you want this object's Object Lock to expire.
924
+ # @option options [String] :object_lock_legal_hold_status
925
+ # The Legal Hold status that you want to apply to the specified object.
870
926
  # @return [Types::PutObjectOutput]
871
927
  def put(options = {})
872
928
  options = options.merge(
@@ -898,11 +954,14 @@ module Aws::S3
898
954
  # record_delimiter: "RecordDelimiter",
899
955
  # field_delimiter: "FieldDelimiter",
900
956
  # quote_character: "QuoteCharacter",
957
+ # allow_quoted_record_delimiter: false,
901
958
  # },
902
- # compression_type: "NONE", # accepts NONE, GZIP
959
+ # compression_type: "NONE", # accepts NONE, GZIP, BZIP2
903
960
  # json: {
904
961
  # type: "DOCUMENT", # accepts DOCUMENT, LINES
905
962
  # },
963
+ # parquet: {
964
+ # },
906
965
  # },
907
966
  # expression_type: "SQL", # required, accepts SQL
908
967
  # expression: "Expression", # required
@@ -955,7 +1014,7 @@ module Aws::S3
955
1014
  # value: "MetadataValue",
956
1015
  # },
957
1016
  # ],
958
- # storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA
1017
+ # storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE
959
1018
  # },
960
1019
  # },
961
1020
  # },
@@ -1090,6 +1149,7 @@ module Aws::S3
1090
1149
  # object.batch_delete!({
1091
1150
  # mfa: "MFA",
1092
1151
  # request_payer: "requester", # accepts requester
1152
+ # bypass_governance_retention: false,
1093
1153
  # })
1094
1154
  # @param options ({})
1095
1155
  # @option options [String] :mfa
@@ -1101,6 +1161,10 @@ module Aws::S3
1101
1161
  # requests. Documentation on downloading objects from requester pays
1102
1162
  # buckets can be found at
1103
1163
  # http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
1164
+ # @option options [Boolean] :bypass_governance_retention
1165
+ # Specifies whether you want to delete this object even if it has a
1166
+ # Governance-type Object Lock in place. You must have sufficient
1167
+ # permissions to perform this operation.
1104
1168
  # @return [void]
1105
1169
  def batch_delete!(options = {})
1106
1170
  batch_enum.each do |batch|
@@ -38,6 +38,7 @@ module Aws::S3
38
38
  @object_key
39
39
  end
40
40
 
41
+
41
42
  # @return [Types::Owner]
42
43
  def owner
43
44
  data[:owner]
@@ -38,16 +38,19 @@ module Aws::S3
38
38
  @key
39
39
  end
40
40
 
41
+
41
42
  # @return [Time]
42
43
  def last_modified
43
44
  data[:last_modified]
44
45
  end
45
46
 
47
+
46
48
  # @return [String]
47
49
  def etag
48
50
  data[:etag]
49
51
  end
50
52
 
53
+
51
54
  # @return [Integer]
52
55
  def size
53
56
  data[:size]
@@ -59,6 +62,7 @@ module Aws::S3
59
62
  data[:storage_class]
60
63
  end
61
64
 
65
+
62
66
  # @return [Types::Owner]
63
67
  def owner
64
68
  data[:owner]
@@ -268,7 +272,7 @@ module Aws::S3
268
272
  # metadata_directive: "COPY", # accepts COPY, REPLACE
269
273
  # tagging_directive: "COPY", # accepts COPY, REPLACE
270
274
  # server_side_encryption: "AES256", # accepts AES256, aws:kms
271
- # storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA
275
+ # storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE
272
276
  # website_redirect_location: "WebsiteRedirectLocation",
273
277
  # sse_customer_algorithm: "SSECustomerAlgorithm",
274
278
  # sse_customer_key: "SSECustomerKey",
@@ -279,6 +283,9 @@ module Aws::S3
279
283
  # copy_source_sse_customer_key_md5: "CopySourceSSECustomerKeyMD5",
280
284
  # request_payer: "requester", # accepts requester
281
285
  # tagging: "TaggingHeader",
286
+ # object_lock_mode: "GOVERNANCE", # accepts GOVERNANCE, COMPLIANCE
287
+ # object_lock_retain_until_date: Time.now,
288
+ # object_lock_legal_hold_status: "ON", # accepts ON, OFF
282
289
  # })
283
290
  # @param [Hash] options ({})
284
291
  # @option options [String] :acl
@@ -376,6 +383,13 @@ module Aws::S3
376
383
  # The tag-set for the object destination object this value must be used
377
384
  # in conjunction with the TaggingDirective. The tag-set must be encoded
378
385
  # as URL Query parameters
386
+ # @option options [String] :object_lock_mode
387
+ # The Object Lock mode that you want to apply to the copied object.
388
+ # @option options [Time,DateTime,Date,Integer,String] :object_lock_retain_until_date
389
+ # The date and time when you want the copied object's Object Lock to
390
+ # expire.
391
+ # @option options [String] :object_lock_legal_hold_status
392
+ # Specifies whether you want to apply a Legal Hold to the copied object.
379
393
  # @return [Types::CopyObjectOutput]
380
394
  def copy_from(options = {})
381
395
  options = options.merge(
@@ -392,6 +406,7 @@ module Aws::S3
392
406
  # mfa: "MFA",
393
407
  # version_id: "ObjectVersionId",
394
408
  # request_payer: "requester", # accepts requester
409
+ # bypass_governance_retention: false,
395
410
  # })
396
411
  # @param [Hash] options ({})
397
412
  # @option options [String] :mfa
@@ -405,6 +420,9 @@ module Aws::S3
405
420
  # requests. Documentation on downloading objects from requester pays
406
421
  # buckets can be found at
407
422
  # http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
423
+ # @option options [Boolean] :bypass_governance_retention
424
+ # Indicates whether S3 Object Lock should bypass Governance-mode
425
+ # restrictions to process this operation.
408
426
  # @return [Types::DeleteObjectOutput]
409
427
  def delete(options = {})
410
428
  options = options.merge(
@@ -519,7 +537,7 @@ module Aws::S3
519
537
  # "MetadataKey" => "MetadataValue",
520
538
  # },
521
539
  # server_side_encryption: "AES256", # accepts AES256, aws:kms
522
- # storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA
540
+ # storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE
523
541
  # website_redirect_location: "WebsiteRedirectLocation",
524
542
  # sse_customer_algorithm: "SSECustomerAlgorithm",
525
543
  # sse_customer_key: "SSECustomerKey",
@@ -527,6 +545,9 @@ module Aws::S3
527
545
  # ssekms_key_id: "SSEKMSKeyId",
528
546
  # request_payer: "requester", # accepts requester
529
547
  # tagging: "TaggingHeader",
548
+ # object_lock_mode: "GOVERNANCE", # accepts GOVERNANCE, COMPLIANCE
549
+ # object_lock_retain_until_date: Time.now,
550
+ # object_lock_legal_hold_status: "ON", # accepts ON, OFF
530
551
  # })
531
552
  # @param [Hash] options ({})
532
553
  # @option options [String] :acl
@@ -593,6 +614,14 @@ module Aws::S3
593
614
  # @option options [String] :tagging
594
615
  # The tag-set for the object. The tag-set must be encoded as URL Query
595
616
  # parameters
617
+ # @option options [String] :object_lock_mode
618
+ # Specifies the Object Lock mode that you want to apply to the uploaded
619
+ # object.
620
+ # @option options [Time,DateTime,Date,Integer,String] :object_lock_retain_until_date
621
+ # Specifies the date and time when you want the Object Lock to expire.
622
+ # @option options [String] :object_lock_legal_hold_status
623
+ # Specifies whether you want to apply a Legal Hold to the uploaded
624
+ # object.
596
625
  # @return [MultipartUpload]
597
626
  def initiate_multipart_upload(options = {})
598
627
  options = options.merge(
@@ -629,7 +658,7 @@ module Aws::S3
629
658
  # "MetadataKey" => "MetadataValue",
630
659
  # },
631
660
  # server_side_encryption: "AES256", # accepts AES256, aws:kms
632
- # storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA
661
+ # storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE
633
662
  # website_redirect_location: "WebsiteRedirectLocation",
634
663
  # sse_customer_algorithm: "SSECustomerAlgorithm",
635
664
  # sse_customer_key: "SSECustomerKey",
@@ -637,6 +666,9 @@ module Aws::S3
637
666
  # ssekms_key_id: "SSEKMSKeyId",
638
667
  # request_payer: "requester", # accepts requester
639
668
  # tagging: "TaggingHeader",
669
+ # object_lock_mode: "GOVERNANCE", # accepts GOVERNANCE, COMPLIANCE
670
+ # object_lock_retain_until_date: Time.now,
671
+ # object_lock_legal_hold_status: "ON", # accepts ON, OFF
640
672
  # })
641
673
  # @param [Hash] options ({})
642
674
  # @option options [String] :acl
@@ -657,7 +689,8 @@ module Aws::S3
657
689
  # Size of the body in bytes. This parameter is useful when the size of
658
690
  # the body cannot be determined automatically.
659
691
  # @option options [String] :content_md5
660
- # The base64-encoded 128-bit MD5 digest of the part data.
692
+ # The base64-encoded 128-bit MD5 digest of the part data. This parameter
693
+ # is auto-populated when using the command from the CLI
661
694
  # @option options [String] :content_type
662
695
  # A standard MIME type describing the format of the object data.
663
696
  # @option options [Time,DateTime,Date,Integer,String] :expires
@@ -709,7 +742,13 @@ module Aws::S3
709
742
  # http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
710
743
  # @option options [String] :tagging
711
744
  # The tag-set for the object. The tag-set must be encoded as URL Query
712
- # parameters
745
+ # parameters. (For example, "Key1=Value1")
746
+ # @option options [String] :object_lock_mode
747
+ # The Object Lock mode that you want to apply to this object.
748
+ # @option options [Time,DateTime,Date,Integer,String] :object_lock_retain_until_date
749
+ # The date and time when you want this object's Object Lock to expire.
750
+ # @option options [String] :object_lock_legal_hold_status
751
+ # The Legal Hold status that you want to apply to the specified object.
713
752
  # @return [Types::PutObjectOutput]
714
753
  def put(options = {})
715
754
  options = options.merge(
@@ -741,11 +780,14 @@ module Aws::S3
741
780
  # record_delimiter: "RecordDelimiter",
742
781
  # field_delimiter: "FieldDelimiter",
743
782
  # quote_character: "QuoteCharacter",
783
+ # allow_quoted_record_delimiter: false,
744
784
  # },
745
- # compression_type: "NONE", # accepts NONE, GZIP
785
+ # compression_type: "NONE", # accepts NONE, GZIP, BZIP2
746
786
  # json: {
747
787
  # type: "DOCUMENT", # accepts DOCUMENT, LINES
748
788
  # },
789
+ # parquet: {
790
+ # },
749
791
  # },
750
792
  # expression_type: "SQL", # required, accepts SQL
751
793
  # expression: "Expression", # required
@@ -798,7 +840,7 @@ module Aws::S3
798
840
  # value: "MetadataValue",
799
841
  # },
800
842
  # ],
801
- # storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA
843
+ # storage_class: "STANDARD", # accepts STANDARD, REDUCED_REDUNDANCY, STANDARD_IA, ONEZONE_IA, INTELLIGENT_TIERING, GLACIER, DEEP_ARCHIVE
802
844
  # },
803
845
  # },
804
846
  # },
@@ -942,6 +984,7 @@ module Aws::S3
942
984
  # object_summary.batch_delete!({
943
985
  # mfa: "MFA",
944
986
  # request_payer: "requester", # accepts requester
987
+ # bypass_governance_retention: false,
945
988
  # })
946
989
  # @param options ({})
947
990
  # @option options [String] :mfa
@@ -953,6 +996,10 @@ module Aws::S3
953
996
  # requests. Documentation on downloading objects from requester pays
954
997
  # buckets can be found at
955
998
  # http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
999
+ # @option options [Boolean] :bypass_governance_retention
1000
+ # Specifies whether you want to delete this object even if it has a
1001
+ # Governance-type Object Lock in place. You must have sufficient
1002
+ # permissions to perform this operation.
956
1003
  # @return [void]
957
1004
  def batch_delete!(options = {})
958
1005
  batch_enum.each do |batch|
@@ -46,6 +46,7 @@ module Aws::S3
46
46
  @id
47
47
  end
48
48
 
49
+
49
50
  # @return [String]
50
51
  def etag
51
52
  data[:etag]
@@ -88,6 +89,7 @@ module Aws::S3
88
89
  data[:last_modified]
89
90
  end
90
91
 
92
+
91
93
  # @return [Types::Owner]
92
94
  def owner
93
95
  data[:owner]
@@ -225,6 +227,7 @@ module Aws::S3
225
227
  # object_version.delete({
226
228
  # mfa: "MFA",
227
229
  # request_payer: "requester", # accepts requester
230
+ # bypass_governance_retention: false,
228
231
  # })
229
232
  # @param [Hash] options ({})
230
233
  # @option options [String] :mfa
@@ -236,6 +239,9 @@ module Aws::S3
236
239
  # requests. Documentation on downloading objects from requester pays
237
240
  # buckets can be found at
238
241
  # http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
242
+ # @option options [Boolean] :bypass_governance_retention
243
+ # Indicates whether S3 Object Lock should bypass Governance-mode
244
+ # restrictions to process this operation.
239
245
  # @return [Types::DeleteObjectOutput]
240
246
  def delete(options = {})
241
247
  options = options.merge(
@@ -463,6 +469,7 @@ module Aws::S3
463
469
  # object_version.batch_delete!({
464
470
  # mfa: "MFA",
465
471
  # request_payer: "requester", # accepts requester
472
+ # bypass_governance_retention: false,
466
473
  # })
467
474
  # @param options ({})
468
475
  # @option options [String] :mfa
@@ -474,6 +481,10 @@ module Aws::S3
474
481
  # requests. Documentation on downloading objects from requester pays
475
482
  # buckets can be found at
476
483
  # http://docs.aws.amazon.com/AmazonS3/latest/dev/ObjectsinRequesterPaysBuckets.html
484
+ # @option options [Boolean] :bypass_governance_retention
485
+ # Specifies whether you want to delete this object even if it has a
486
+ # Governance-type Object Lock in place. You must have sufficient
487
+ # permissions to perform this operation.
477
488
  # @return [void]
478
489
  def batch_delete!(options = {})
479
490
  batch_enum.each do |batch|
@@ -60,6 +60,8 @@ each bucket. [Go here for more information](http://docs.aws.amazon.com/AmazonS3
60
60
  endpoint.port = 443
61
61
  endpoint.host = "#{bucket_name}.s3-accelerate.amazonaws.com"
62
62
  context.http_request.endpoint = endpoint.to_s
63
+ # s3 accelerate endpoint doesn't work with 'expect' header
64
+ context.http_request.headers.delete('expect')
63
65
  end
64
66
 
65
67
  def use_combined_accelerate_dualstack_endpoint(context)
@@ -70,6 +72,8 @@ each bucket. [Go here for more information](http://docs.aws.amazon.com/AmazonS3
70
72
  endpoint.port = 443
71
73
  endpoint.host = "#{bucket_name}.s3-accelerate.dualstack.amazonaws.com"
72
74
  context.http_request.endpoint = endpoint.to_s
75
+ # s3 accelerate endpoint doesn't work with 'expect' header
76
+ context.http_request.headers.delete('expect')
73
77
  end
74
78
 
75
79
  def validate_bucket_name!(bucket_name)
@@ -13,6 +13,9 @@ module Aws
13
13
  :put_bucket_lifecycle,
14
14
  :put_bucket_policy,
15
15
  :put_bucket_tagging,
16
+ :put_object_legal_hold,
17
+ :put_object_lock_configuration,
18
+ :put_object_retention
16
19
  ]
17
20
 
18
21
  # @api private
@@ -45,7 +48,7 @@ module Aws
45
48
  end
46
49
 
47
50
  def update_in_chunks(digest, io)
48
- while chunk = io.read(CHUNK_SIZE)
51
+ while chunk = io.read(CHUNK_SIZE, buffer ||= "")
49
52
  digest.update(chunk)
50
53
  end
51
54
  io.rewind
@@ -18,7 +18,9 @@ by Amazon S3.
18
18
  response = @handler.call(context)
19
19
  if context.http_response.status_code == 307
20
20
  endpoint = context.http_response.headers['location']
21
- context.http_request.endpoint = endpoint
21
+ unless context.http_request.endpoint.host.include?('fips')
22
+ context.http_request.endpoint = endpoint
23
+ end
22
24
  context.http_response.body.truncate(0)
23
25
  @handler.call(context)
24
26
  else
@@ -113,7 +113,7 @@ module Aws
113
113
  private
114
114
 
115
115
  def handle_region_errors(response)
116
- if wrong_sigv4_region?(response)
116
+ if wrong_sigv4_region?(response) && !fips_region?(response)
117
117
  get_region_and_retry(response.context)
118
118
  else
119
119
  response
@@ -133,6 +133,10 @@ module Aws
133
133
  S3::BUCKET_REGIONS[context.params[:bucket]] = actual_region
134
134
  end
135
135
 
136
+ def fips_region?(resp)
137
+ resp.context.http_request.endpoint.host.include?('fips')
138
+ end
139
+
136
140
  def wrong_sigv4_region?(resp)
137
141
  resp.context.http_response.status_code == 400 &&
138
142
  (
@@ -144,6 +148,7 @@ module Aws
144
148
  def resign_with_new_region(context, actual_region)
145
149
  context.http_response.body.truncate(0)
146
150
  context.http_request.endpoint.host = S3Signer.new_hostname(context, actual_region)
151
+ context.metadata[:redirect_region] = actual_region
147
152
  Aws::Plugins::SignatureV4.apply_signature(
148
153
  context: context,
149
154
  signer: S3Signer.build_v4_signer(
@@ -38,6 +38,9 @@ module Aws
38
38
  # bucket name will be used as the hostname. This will cause
39
39
  # the returned URL to be 'http' and not 'https'.
40
40
  #
41
+ # @option params [Boolean] :use_accelerate_endpoint (false) When `true`, Presigner
42
+ # will attempt to use accelerated endpoint
43
+ #
41
44
  # @raise [ArgumentError] Raises an ArgumentError if `:expires_in`
42
45
  # exceeds one week.
43
46
  #
@@ -98,6 +101,7 @@ module Aws
98
101
  req.handlers.remove(Seahorse::Client::Plugins::ContentLength::Handler)
99
102
 
100
103
  signer = build_signer(req.context.config)
104
+ req.context[:presigned_url] = true
101
105
 
102
106
  req.handle(step: :send) do |context|
103
107
 
@@ -34,6 +34,7 @@ module Aws::S3
34
34
  # grant_read_acp: "GrantReadACP",
35
35
  # grant_write: "GrantWrite",
36
36
  # grant_write_acp: "GrantWriteACP",
37
+ # object_lock_enabled_for_bucket: false,
37
38
  # })
38
39
  # @param [Hash] options ({})
39
40
  # @option options [String] :acl
@@ -52,6 +53,9 @@ module Aws::S3
52
53
  # bucket.
53
54
  # @option options [String] :grant_write_acp
54
55
  # Allows grantee to write the ACL for the applicable bucket.
56
+ # @option options [Boolean] :object_lock_enabled_for_bucket
57
+ # Specifies whether you want S3 Object Lock to be enabled for the new
58
+ # bucket.
55
59
  # @return [Bucket]
56
60
  def create_bucket(options = {})
57
61
  resp = @client.create_bucket(options)