aws-sdk-s3 1.176.1 → 1.178.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +12 -0
  3. data/VERSION +1 -1
  4. data/lib/aws-sdk-s3/bucket.rb +38 -24
  5. data/lib/aws-sdk-s3/bucket_acl.rb +5 -4
  6. data/lib/aws-sdk-s3/bucket_cors.rb +5 -4
  7. data/lib/aws-sdk-s3/bucket_lifecycle.rb +1 -1
  8. data/lib/aws-sdk-s3/bucket_lifecycle_configuration.rb +2 -2
  9. data/lib/aws-sdk-s3/bucket_logging.rb +1 -1
  10. data/lib/aws-sdk-s3/bucket_policy.rb +9 -8
  11. data/lib/aws-sdk-s3/bucket_request_payment.rb +2 -2
  12. data/lib/aws-sdk-s3/bucket_tagging.rb +2 -2
  13. data/lib/aws-sdk-s3/bucket_versioning.rb +6 -6
  14. data/lib/aws-sdk-s3/bucket_website.rb +2 -2
  15. data/lib/aws-sdk-s3/client.rb +346 -204
  16. data/lib/aws-sdk-s3/client_api.rb +34 -2
  17. data/lib/aws-sdk-s3/file_downloader.rb +4 -21
  18. data/lib/aws-sdk-s3/multipart_file_uploader.rb +31 -13
  19. data/lib/aws-sdk-s3/multipart_upload.rb +48 -6
  20. data/lib/aws-sdk-s3/multipart_upload_part.rb +52 -36
  21. data/lib/aws-sdk-s3/object.rb +108 -58
  22. data/lib/aws-sdk-s3/object_acl.rb +4 -4
  23. data/lib/aws-sdk-s3/object_summary.rb +63 -28
  24. data/lib/aws-sdk-s3/object_version.rb +21 -8
  25. data/lib/aws-sdk-s3/plugins/checksum_algorithm.rb +31 -0
  26. data/lib/aws-sdk-s3/plugins/express_session_auth.rb +11 -20
  27. data/lib/aws-sdk-s3/plugins/md5s.rb +10 -71
  28. data/lib/aws-sdk-s3/presigner.rb +4 -5
  29. data/lib/aws-sdk-s3/types.rb +725 -405
  30. data/lib/aws-sdk-s3.rb +1 -1
  31. data/sig/bucket.rbs +3 -2
  32. data/sig/bucket_acl.rbs +1 -1
  33. data/sig/bucket_cors.rbs +1 -1
  34. data/sig/bucket_lifecycle.rbs +1 -1
  35. data/sig/bucket_lifecycle_configuration.rbs +1 -1
  36. data/sig/bucket_logging.rbs +1 -1
  37. data/sig/bucket_policy.rbs +1 -1
  38. data/sig/bucket_request_payment.rbs +1 -1
  39. data/sig/bucket_tagging.rbs +1 -1
  40. data/sig/bucket_versioning.rbs +3 -3
  41. data/sig/bucket_website.rbs +1 -1
  42. data/sig/client.rbs +50 -29
  43. data/sig/multipart_upload.rbs +8 -1
  44. data/sig/multipart_upload_part.rbs +5 -1
  45. data/sig/object.rbs +13 -5
  46. data/sig/object_acl.rbs +1 -1
  47. data/sig/object_summary.rbs +11 -6
  48. data/sig/object_version.rbs +5 -2
  49. data/sig/resource.rbs +2 -0
  50. data/sig/types.rbs +61 -32
  51. metadata +5 -5
  52. data/lib/aws-sdk-s3/plugins/skip_whole_multipart_get_checksums.rb +0 -31
@@ -76,9 +76,11 @@ module Aws::S3
76
76
  ChecksumAlgorithmList = Shapes::ListShape.new(name: 'ChecksumAlgorithmList', flattened: true)
77
77
  ChecksumCRC32 = Shapes::StringShape.new(name: 'ChecksumCRC32')
78
78
  ChecksumCRC32C = Shapes::StringShape.new(name: 'ChecksumCRC32C')
79
+ ChecksumCRC64NVME = Shapes::StringShape.new(name: 'ChecksumCRC64NVME')
79
80
  ChecksumMode = Shapes::StringShape.new(name: 'ChecksumMode')
80
81
  ChecksumSHA1 = Shapes::StringShape.new(name: 'ChecksumSHA1')
81
82
  ChecksumSHA256 = Shapes::StringShape.new(name: 'ChecksumSHA256')
83
+ ChecksumType = Shapes::StringShape.new(name: 'ChecksumType')
82
84
  CloudFunction = Shapes::StringShape.new(name: 'CloudFunction')
83
85
  CloudFunctionConfiguration = Shapes::StructureShape.new(name: 'CloudFunctionConfiguration')
84
86
  CloudFunctionInvocationRole = Shapes::StringShape.new(name: 'CloudFunctionInvocationRole')
@@ -396,6 +398,7 @@ module Aws::S3
396
398
  MetricsStatus = Shapes::StringShape.new(name: 'MetricsStatus')
397
399
  Minutes = Shapes::IntegerShape.new(name: 'Minutes')
398
400
  MissingMeta = Shapes::IntegerShape.new(name: 'MissingMeta')
401
+ MpuObjectSize = Shapes::IntegerShape.new(name: 'MpuObjectSize')
399
402
  MultipartUpload = Shapes::StructureShape.new(name: 'MultipartUpload')
400
403
  MultipartUploadId = Shapes::StringShape.new(name: 'MultipartUploadId')
401
404
  MultipartUploadList = Shapes::ListShape.new(name: 'MultipartUploadList', flattened: true)
@@ -756,8 +759,10 @@ module Aws::S3
756
759
 
757
760
  Checksum.add_member(:checksum_crc32, Shapes::ShapeRef.new(shape: ChecksumCRC32, location_name: "ChecksumCRC32"))
758
761
  Checksum.add_member(:checksum_crc32c, Shapes::ShapeRef.new(shape: ChecksumCRC32C, location_name: "ChecksumCRC32C"))
762
+ Checksum.add_member(:checksum_crc64nvme, Shapes::ShapeRef.new(shape: ChecksumCRC64NVME, location_name: "ChecksumCRC64NVME"))
759
763
  Checksum.add_member(:checksum_sha1, Shapes::ShapeRef.new(shape: ChecksumSHA1, location_name: "ChecksumSHA1"))
760
764
  Checksum.add_member(:checksum_sha256, Shapes::ShapeRef.new(shape: ChecksumSHA256, location_name: "ChecksumSHA256"))
765
+ Checksum.add_member(:checksum_type, Shapes::ShapeRef.new(shape: ChecksumType, location_name: "ChecksumType"))
761
766
  Checksum.struct_class = Types::Checksum
762
767
 
763
768
  ChecksumAlgorithmList.member = Shapes::ShapeRef.new(shape: ChecksumAlgorithm)
@@ -781,8 +786,10 @@ module Aws::S3
781
786
  CompleteMultipartUploadOutput.add_member(:etag, Shapes::ShapeRef.new(shape: ETag, location_name: "ETag"))
782
787
  CompleteMultipartUploadOutput.add_member(:checksum_crc32, Shapes::ShapeRef.new(shape: ChecksumCRC32, location_name: "ChecksumCRC32"))
783
788
  CompleteMultipartUploadOutput.add_member(:checksum_crc32c, Shapes::ShapeRef.new(shape: ChecksumCRC32C, location_name: "ChecksumCRC32C"))
789
+ CompleteMultipartUploadOutput.add_member(:checksum_crc64nvme, Shapes::ShapeRef.new(shape: ChecksumCRC64NVME, location_name: "ChecksumCRC64NVME"))
784
790
  CompleteMultipartUploadOutput.add_member(:checksum_sha1, Shapes::ShapeRef.new(shape: ChecksumSHA1, location_name: "ChecksumSHA1"))
785
791
  CompleteMultipartUploadOutput.add_member(:checksum_sha256, Shapes::ShapeRef.new(shape: ChecksumSHA256, location_name: "ChecksumSHA256"))
792
+ CompleteMultipartUploadOutput.add_member(:checksum_type, Shapes::ShapeRef.new(shape: ChecksumType, location_name: "ChecksumType"))
786
793
  CompleteMultipartUploadOutput.add_member(:server_side_encryption, Shapes::ShapeRef.new(shape: ServerSideEncryption, location: "header", location_name: "x-amz-server-side-encryption"))
787
794
  CompleteMultipartUploadOutput.add_member(:version_id, Shapes::ShapeRef.new(shape: ObjectVersionId, location: "header", location_name: "x-amz-version-id"))
788
795
  CompleteMultipartUploadOutput.add_member(:ssekms_key_id, Shapes::ShapeRef.new(shape: SSEKMSKeyId, location: "header", location_name: "x-amz-server-side-encryption-aws-kms-key-id"))
@@ -796,8 +803,11 @@ module Aws::S3
796
803
  CompleteMultipartUploadRequest.add_member(:upload_id, Shapes::ShapeRef.new(shape: MultipartUploadId, required: true, location: "querystring", location_name: "uploadId"))
797
804
  CompleteMultipartUploadRequest.add_member(:checksum_crc32, Shapes::ShapeRef.new(shape: ChecksumCRC32, location: "header", location_name: "x-amz-checksum-crc32"))
798
805
  CompleteMultipartUploadRequest.add_member(:checksum_crc32c, Shapes::ShapeRef.new(shape: ChecksumCRC32C, location: "header", location_name: "x-amz-checksum-crc32c"))
806
+ CompleteMultipartUploadRequest.add_member(:checksum_crc64nvme, Shapes::ShapeRef.new(shape: ChecksumCRC64NVME, location: "header", location_name: "x-amz-checksum-crc64nvme"))
799
807
  CompleteMultipartUploadRequest.add_member(:checksum_sha1, Shapes::ShapeRef.new(shape: ChecksumSHA1, location: "header", location_name: "x-amz-checksum-sha1"))
800
808
  CompleteMultipartUploadRequest.add_member(:checksum_sha256, Shapes::ShapeRef.new(shape: ChecksumSHA256, location: "header", location_name: "x-amz-checksum-sha256"))
809
+ CompleteMultipartUploadRequest.add_member(:checksum_type, Shapes::ShapeRef.new(shape: ChecksumType, location: "header", location_name: "x-amz-checksum-type"))
810
+ CompleteMultipartUploadRequest.add_member(:mpu_object_size, Shapes::ShapeRef.new(shape: MpuObjectSize, location: "header", location_name: "x-amz-mp-object-size"))
801
811
  CompleteMultipartUploadRequest.add_member(:request_payer, Shapes::ShapeRef.new(shape: RequestPayer, location: "header", location_name: "x-amz-request-payer"))
802
812
  CompleteMultipartUploadRequest.add_member(:expected_bucket_owner, Shapes::ShapeRef.new(shape: AccountId, location: "header", location_name: "x-amz-expected-bucket-owner"))
803
813
  CompleteMultipartUploadRequest.add_member(:if_match, Shapes::ShapeRef.new(shape: IfMatch, location: "header", location_name: "If-Match"))
@@ -815,6 +825,7 @@ module Aws::S3
815
825
  CompletedPart.add_member(:etag, Shapes::ShapeRef.new(shape: ETag, location_name: "ETag"))
816
826
  CompletedPart.add_member(:checksum_crc32, Shapes::ShapeRef.new(shape: ChecksumCRC32, location_name: "ChecksumCRC32"))
817
827
  CompletedPart.add_member(:checksum_crc32c, Shapes::ShapeRef.new(shape: ChecksumCRC32C, location_name: "ChecksumCRC32C"))
828
+ CompletedPart.add_member(:checksum_crc64nvme, Shapes::ShapeRef.new(shape: ChecksumCRC64NVME, location_name: "ChecksumCRC64NVME"))
818
829
  CompletedPart.add_member(:checksum_sha1, Shapes::ShapeRef.new(shape: ChecksumSHA1, location_name: "ChecksumSHA1"))
819
830
  CompletedPart.add_member(:checksum_sha256, Shapes::ShapeRef.new(shape: ChecksumSHA256, location_name: "ChecksumSHA256"))
820
831
  CompletedPart.add_member(:part_number, Shapes::ShapeRef.new(shape: PartNumber, location_name: "PartNumber"))
@@ -888,8 +899,10 @@ module Aws::S3
888
899
 
889
900
  CopyObjectResult.add_member(:etag, Shapes::ShapeRef.new(shape: ETag, location_name: "ETag"))
890
901
  CopyObjectResult.add_member(:last_modified, Shapes::ShapeRef.new(shape: LastModified, location_name: "LastModified"))
902
+ CopyObjectResult.add_member(:checksum_type, Shapes::ShapeRef.new(shape: ChecksumType, location_name: "ChecksumType"))
891
903
  CopyObjectResult.add_member(:checksum_crc32, Shapes::ShapeRef.new(shape: ChecksumCRC32, location_name: "ChecksumCRC32"))
892
904
  CopyObjectResult.add_member(:checksum_crc32c, Shapes::ShapeRef.new(shape: ChecksumCRC32C, location_name: "ChecksumCRC32C"))
905
+ CopyObjectResult.add_member(:checksum_crc64nvme, Shapes::ShapeRef.new(shape: ChecksumCRC64NVME, location_name: "ChecksumCRC64NVME"))
893
906
  CopyObjectResult.add_member(:checksum_sha1, Shapes::ShapeRef.new(shape: ChecksumSHA1, location_name: "ChecksumSHA1"))
894
907
  CopyObjectResult.add_member(:checksum_sha256, Shapes::ShapeRef.new(shape: ChecksumSHA256, location_name: "ChecksumSHA256"))
895
908
  CopyObjectResult.struct_class = Types::CopyObjectResult
@@ -898,6 +911,7 @@ module Aws::S3
898
911
  CopyPartResult.add_member(:last_modified, Shapes::ShapeRef.new(shape: LastModified, location_name: "LastModified"))
899
912
  CopyPartResult.add_member(:checksum_crc32, Shapes::ShapeRef.new(shape: ChecksumCRC32, location_name: "ChecksumCRC32"))
900
913
  CopyPartResult.add_member(:checksum_crc32c, Shapes::ShapeRef.new(shape: ChecksumCRC32C, location_name: "ChecksumCRC32C"))
914
+ CopyPartResult.add_member(:checksum_crc64nvme, Shapes::ShapeRef.new(shape: ChecksumCRC64NVME, location_name: "ChecksumCRC64NVME"))
901
915
  CopyPartResult.add_member(:checksum_sha1, Shapes::ShapeRef.new(shape: ChecksumSHA1, location_name: "ChecksumSHA1"))
902
916
  CopyPartResult.add_member(:checksum_sha256, Shapes::ShapeRef.new(shape: ChecksumSHA256, location_name: "ChecksumSHA256"))
903
917
  CopyPartResult.struct_class = Types::CopyPartResult
@@ -946,6 +960,7 @@ module Aws::S3
946
960
  CreateMultipartUploadOutput.add_member(:bucket_key_enabled, Shapes::ShapeRef.new(shape: BucketKeyEnabled, location: "header", location_name: "x-amz-server-side-encryption-bucket-key-enabled"))
947
961
  CreateMultipartUploadOutput.add_member(:request_charged, Shapes::ShapeRef.new(shape: RequestCharged, location: "header", location_name: "x-amz-request-charged"))
948
962
  CreateMultipartUploadOutput.add_member(:checksum_algorithm, Shapes::ShapeRef.new(shape: ChecksumAlgorithm, location: "header", location_name: "x-amz-checksum-algorithm"))
963
+ CreateMultipartUploadOutput.add_member(:checksum_type, Shapes::ShapeRef.new(shape: ChecksumType, location: "header", location_name: "x-amz-checksum-type"))
949
964
  CreateMultipartUploadOutput.struct_class = Types::CreateMultipartUploadOutput
950
965
 
951
966
  CreateMultipartUploadRequest.add_member(:acl, Shapes::ShapeRef.new(shape: ObjectCannedACL, location: "header", location_name: "x-amz-acl"))
@@ -978,6 +993,7 @@ module Aws::S3
978
993
  CreateMultipartUploadRequest.add_member(:object_lock_legal_hold_status, Shapes::ShapeRef.new(shape: ObjectLockLegalHoldStatus, location: "header", location_name: "x-amz-object-lock-legal-hold"))
979
994
  CreateMultipartUploadRequest.add_member(:expected_bucket_owner, Shapes::ShapeRef.new(shape: AccountId, location: "header", location_name: "x-amz-expected-bucket-owner"))
980
995
  CreateMultipartUploadRequest.add_member(:checksum_algorithm, Shapes::ShapeRef.new(shape: ChecksumAlgorithm, location: "header", location_name: "x-amz-checksum-algorithm"))
996
+ CreateMultipartUploadRequest.add_member(:checksum_type, Shapes::ShapeRef.new(shape: ChecksumType, location: "header", location_name: "x-amz-checksum-type"))
981
997
  CreateMultipartUploadRequest.struct_class = Types::CreateMultipartUploadRequest
982
998
 
983
999
  CreateSessionOutput.add_member(:server_side_encryption, Shapes::ShapeRef.new(shape: ServerSideEncryption, location: "header", location_name: "x-amz-server-side-encryption"))
@@ -1442,8 +1458,10 @@ module Aws::S3
1442
1458
  GetObjectOutput.add_member(:etag, Shapes::ShapeRef.new(shape: ETag, location: "header", location_name: "ETag"))
1443
1459
  GetObjectOutput.add_member(:checksum_crc32, Shapes::ShapeRef.new(shape: ChecksumCRC32, location: "header", location_name: "x-amz-checksum-crc32"))
1444
1460
  GetObjectOutput.add_member(:checksum_crc32c, Shapes::ShapeRef.new(shape: ChecksumCRC32C, location: "header", location_name: "x-amz-checksum-crc32c"))
1461
+ GetObjectOutput.add_member(:checksum_crc64nvme, Shapes::ShapeRef.new(shape: ChecksumCRC64NVME, location: "header", location_name: "x-amz-checksum-crc64nvme"))
1445
1462
  GetObjectOutput.add_member(:checksum_sha1, Shapes::ShapeRef.new(shape: ChecksumSHA1, location: "header", location_name: "x-amz-checksum-sha1"))
1446
1463
  GetObjectOutput.add_member(:checksum_sha256, Shapes::ShapeRef.new(shape: ChecksumSHA256, location: "header", location_name: "x-amz-checksum-sha256"))
1464
+ GetObjectOutput.add_member(:checksum_type, Shapes::ShapeRef.new(shape: ChecksumType, location: "header", location_name: "x-amz-checksum-type"))
1447
1465
  GetObjectOutput.add_member(:missing_meta, Shapes::ShapeRef.new(shape: MissingMeta, location: "header", location_name: "x-amz-missing-meta"))
1448
1466
  GetObjectOutput.add_member(:version_id, Shapes::ShapeRef.new(shape: ObjectVersionId, location: "header", location_name: "x-amz-version-id"))
1449
1467
  GetObjectOutput.add_member(:cache_control, Shapes::ShapeRef.new(shape: CacheControl, location: "header", location_name: "Cache-Control"))
@@ -1575,8 +1593,10 @@ module Aws::S3
1575
1593
  HeadObjectOutput.add_member(:content_length, Shapes::ShapeRef.new(shape: ContentLength, location: "header", location_name: "Content-Length"))
1576
1594
  HeadObjectOutput.add_member(:checksum_crc32, Shapes::ShapeRef.new(shape: ChecksumCRC32, location: "header", location_name: "x-amz-checksum-crc32"))
1577
1595
  HeadObjectOutput.add_member(:checksum_crc32c, Shapes::ShapeRef.new(shape: ChecksumCRC32C, location: "header", location_name: "x-amz-checksum-crc32c"))
1596
+ HeadObjectOutput.add_member(:checksum_crc64nvme, Shapes::ShapeRef.new(shape: ChecksumCRC64NVME, location: "header", location_name: "x-amz-checksum-crc64nvme"))
1578
1597
  HeadObjectOutput.add_member(:checksum_sha1, Shapes::ShapeRef.new(shape: ChecksumSHA1, location: "header", location_name: "x-amz-checksum-sha1"))
1579
1598
  HeadObjectOutput.add_member(:checksum_sha256, Shapes::ShapeRef.new(shape: ChecksumSHA256, location: "header", location_name: "x-amz-checksum-sha256"))
1599
+ HeadObjectOutput.add_member(:checksum_type, Shapes::ShapeRef.new(shape: ChecksumType, location: "header", location_name: "x-amz-checksum-type"))
1580
1600
  HeadObjectOutput.add_member(:etag, Shapes::ShapeRef.new(shape: ETag, location: "header", location_name: "ETag"))
1581
1601
  HeadObjectOutput.add_member(:missing_meta, Shapes::ShapeRef.new(shape: MissingMeta, location: "header", location_name: "x-amz-missing-meta"))
1582
1602
  HeadObjectOutput.add_member(:version_id, Shapes::ShapeRef.new(shape: ObjectVersionId, location: "header", location_name: "x-amz-version-id"))
@@ -1929,6 +1949,7 @@ module Aws::S3
1929
1949
  ListPartsOutput.add_member(:storage_class, Shapes::ShapeRef.new(shape: StorageClass, location_name: "StorageClass"))
1930
1950
  ListPartsOutput.add_member(:request_charged, Shapes::ShapeRef.new(shape: RequestCharged, location: "header", location_name: "x-amz-request-charged"))
1931
1951
  ListPartsOutput.add_member(:checksum_algorithm, Shapes::ShapeRef.new(shape: ChecksumAlgorithm, location_name: "ChecksumAlgorithm"))
1952
+ ListPartsOutput.add_member(:checksum_type, Shapes::ShapeRef.new(shape: ChecksumType, location_name: "ChecksumType"))
1932
1953
  ListPartsOutput.struct_class = Types::ListPartsOutput
1933
1954
 
1934
1955
  ListPartsRequest.add_member(:bucket, Shapes::ShapeRef.new(shape: BucketName, required: true, location: "uri", location_name: "Bucket", metadata: {"contextParam"=>{"name"=>"Bucket"}}))
@@ -1994,6 +2015,7 @@ module Aws::S3
1994
2015
  MultipartUpload.add_member(:owner, Shapes::ShapeRef.new(shape: Owner, location_name: "Owner"))
1995
2016
  MultipartUpload.add_member(:initiator, Shapes::ShapeRef.new(shape: Initiator, location_name: "Initiator"))
1996
2017
  MultipartUpload.add_member(:checksum_algorithm, Shapes::ShapeRef.new(shape: ChecksumAlgorithm, location_name: "ChecksumAlgorithm"))
2018
+ MultipartUpload.add_member(:checksum_type, Shapes::ShapeRef.new(shape: ChecksumType, location_name: "ChecksumType"))
1997
2019
  MultipartUpload.struct_class = Types::MultipartUpload
1998
2020
 
1999
2021
  MultipartUploadList.member = Shapes::ShapeRef.new(shape: MultipartUpload)
@@ -2033,6 +2055,7 @@ module Aws::S3
2033
2055
  Object.add_member(:last_modified, Shapes::ShapeRef.new(shape: LastModified, location_name: "LastModified"))
2034
2056
  Object.add_member(:etag, Shapes::ShapeRef.new(shape: ETag, location_name: "ETag"))
2035
2057
  Object.add_member(:checksum_algorithm, Shapes::ShapeRef.new(shape: ChecksumAlgorithmList, location_name: "ChecksumAlgorithm"))
2058
+ Object.add_member(:checksum_type, Shapes::ShapeRef.new(shape: ChecksumType, location_name: "ChecksumType"))
2036
2059
  Object.add_member(:size, Shapes::ShapeRef.new(shape: Size, location_name: "Size"))
2037
2060
  Object.add_member(:storage_class, Shapes::ShapeRef.new(shape: ObjectStorageClass, location_name: "StorageClass"))
2038
2061
  Object.add_member(:owner, Shapes::ShapeRef.new(shape: Owner, location_name: "Owner"))
@@ -2074,12 +2097,14 @@ module Aws::S3
2074
2097
  ObjectPart.add_member(:size, Shapes::ShapeRef.new(shape: Size, location_name: "Size"))
2075
2098
  ObjectPart.add_member(:checksum_crc32, Shapes::ShapeRef.new(shape: ChecksumCRC32, location_name: "ChecksumCRC32"))
2076
2099
  ObjectPart.add_member(:checksum_crc32c, Shapes::ShapeRef.new(shape: ChecksumCRC32C, location_name: "ChecksumCRC32C"))
2100
+ ObjectPart.add_member(:checksum_crc64nvme, Shapes::ShapeRef.new(shape: ChecksumCRC64NVME, location_name: "ChecksumCRC64NVME"))
2077
2101
  ObjectPart.add_member(:checksum_sha1, Shapes::ShapeRef.new(shape: ChecksumSHA1, location_name: "ChecksumSHA1"))
2078
2102
  ObjectPart.add_member(:checksum_sha256, Shapes::ShapeRef.new(shape: ChecksumSHA256, location_name: "ChecksumSHA256"))
2079
2103
  ObjectPart.struct_class = Types::ObjectPart
2080
2104
 
2081
2105
  ObjectVersion.add_member(:etag, Shapes::ShapeRef.new(shape: ETag, location_name: "ETag"))
2082
2106
  ObjectVersion.add_member(:checksum_algorithm, Shapes::ShapeRef.new(shape: ChecksumAlgorithmList, location_name: "ChecksumAlgorithm"))
2107
+ ObjectVersion.add_member(:checksum_type, Shapes::ShapeRef.new(shape: ChecksumType, location_name: "ChecksumType"))
2083
2108
  ObjectVersion.add_member(:size, Shapes::ShapeRef.new(shape: Size, location_name: "Size"))
2084
2109
  ObjectVersion.add_member(:storage_class, Shapes::ShapeRef.new(shape: ObjectVersionStorageClass, location_name: "StorageClass"))
2085
2110
  ObjectVersion.add_member(:key, Shapes::ShapeRef.new(shape: ObjectKey, location_name: "Key"))
@@ -2121,6 +2146,7 @@ module Aws::S3
2121
2146
  Part.add_member(:size, Shapes::ShapeRef.new(shape: Size, location_name: "Size"))
2122
2147
  Part.add_member(:checksum_crc32, Shapes::ShapeRef.new(shape: ChecksumCRC32, location_name: "ChecksumCRC32"))
2123
2148
  Part.add_member(:checksum_crc32c, Shapes::ShapeRef.new(shape: ChecksumCRC32C, location_name: "ChecksumCRC32C"))
2149
+ Part.add_member(:checksum_crc64nvme, Shapes::ShapeRef.new(shape: ChecksumCRC64NVME, location_name: "ChecksumCRC64NVME"))
2124
2150
  Part.add_member(:checksum_sha1, Shapes::ShapeRef.new(shape: ChecksumSHA1, location_name: "ChecksumSHA1"))
2125
2151
  Part.add_member(:checksum_sha256, Shapes::ShapeRef.new(shape: ChecksumSHA256, location_name: "ChecksumSHA256"))
2126
2152
  Part.struct_class = Types::Part
@@ -2387,8 +2413,10 @@ module Aws::S3
2387
2413
  PutObjectOutput.add_member(:etag, Shapes::ShapeRef.new(shape: ETag, location: "header", location_name: "ETag"))
2388
2414
  PutObjectOutput.add_member(:checksum_crc32, Shapes::ShapeRef.new(shape: ChecksumCRC32, location: "header", location_name: "x-amz-checksum-crc32"))
2389
2415
  PutObjectOutput.add_member(:checksum_crc32c, Shapes::ShapeRef.new(shape: ChecksumCRC32C, location: "header", location_name: "x-amz-checksum-crc32c"))
2416
+ PutObjectOutput.add_member(:checksum_crc64nvme, Shapes::ShapeRef.new(shape: ChecksumCRC64NVME, location: "header", location_name: "x-amz-checksum-crc64nvme"))
2390
2417
  PutObjectOutput.add_member(:checksum_sha1, Shapes::ShapeRef.new(shape: ChecksumSHA1, location: "header", location_name: "x-amz-checksum-sha1"))
2391
2418
  PutObjectOutput.add_member(:checksum_sha256, Shapes::ShapeRef.new(shape: ChecksumSHA256, location: "header", location_name: "x-amz-checksum-sha256"))
2419
+ PutObjectOutput.add_member(:checksum_type, Shapes::ShapeRef.new(shape: ChecksumType, location: "header", location_name: "x-amz-checksum-type"))
2392
2420
  PutObjectOutput.add_member(:server_side_encryption, Shapes::ShapeRef.new(shape: ServerSideEncryption, location: "header", location_name: "x-amz-server-side-encryption"))
2393
2421
  PutObjectOutput.add_member(:version_id, Shapes::ShapeRef.new(shape: ObjectVersionId, location: "header", location_name: "x-amz-version-id"))
2394
2422
  PutObjectOutput.add_member(:sse_customer_algorithm, Shapes::ShapeRef.new(shape: SSECustomerAlgorithm, location: "header", location_name: "x-amz-server-side-encryption-customer-algorithm"))
@@ -2413,6 +2441,7 @@ module Aws::S3
2413
2441
  PutObjectRequest.add_member(:checksum_algorithm, Shapes::ShapeRef.new(shape: ChecksumAlgorithm, location: "header", location_name: "x-amz-sdk-checksum-algorithm"))
2414
2442
  PutObjectRequest.add_member(:checksum_crc32, Shapes::ShapeRef.new(shape: ChecksumCRC32, location: "header", location_name: "x-amz-checksum-crc32"))
2415
2443
  PutObjectRequest.add_member(:checksum_crc32c, Shapes::ShapeRef.new(shape: ChecksumCRC32C, location: "header", location_name: "x-amz-checksum-crc32c"))
2444
+ PutObjectRequest.add_member(:checksum_crc64nvme, Shapes::ShapeRef.new(shape: ChecksumCRC64NVME, location: "header", location_name: "x-amz-checksum-crc64nvme"))
2416
2445
  PutObjectRequest.add_member(:checksum_sha1, Shapes::ShapeRef.new(shape: ChecksumSHA1, location: "header", location_name: "x-amz-checksum-sha1"))
2417
2446
  PutObjectRequest.add_member(:checksum_sha256, Shapes::ShapeRef.new(shape: ChecksumSHA256, location: "header", location_name: "x-amz-checksum-sha256"))
2418
2447
  PutObjectRequest.add_member(:expires, Shapes::ShapeRef.new(shape: Expires, location: "header", location_name: "Expires"))
@@ -2792,6 +2821,7 @@ module Aws::S3
2792
2821
  UploadPartOutput.add_member(:etag, Shapes::ShapeRef.new(shape: ETag, location: "header", location_name: "ETag"))
2793
2822
  UploadPartOutput.add_member(:checksum_crc32, Shapes::ShapeRef.new(shape: ChecksumCRC32, location: "header", location_name: "x-amz-checksum-crc32"))
2794
2823
  UploadPartOutput.add_member(:checksum_crc32c, Shapes::ShapeRef.new(shape: ChecksumCRC32C, location: "header", location_name: "x-amz-checksum-crc32c"))
2824
+ UploadPartOutput.add_member(:checksum_crc64nvme, Shapes::ShapeRef.new(shape: ChecksumCRC64NVME, location: "header", location_name: "x-amz-checksum-crc64nvme"))
2795
2825
  UploadPartOutput.add_member(:checksum_sha1, Shapes::ShapeRef.new(shape: ChecksumSHA1, location: "header", location_name: "x-amz-checksum-sha1"))
2796
2826
  UploadPartOutput.add_member(:checksum_sha256, Shapes::ShapeRef.new(shape: ChecksumSHA256, location: "header", location_name: "x-amz-checksum-sha256"))
2797
2827
  UploadPartOutput.add_member(:sse_customer_algorithm, Shapes::ShapeRef.new(shape: SSECustomerAlgorithm, location: "header", location_name: "x-amz-server-side-encryption-customer-algorithm"))
@@ -2808,6 +2838,7 @@ module Aws::S3
2808
2838
  UploadPartRequest.add_member(:checksum_algorithm, Shapes::ShapeRef.new(shape: ChecksumAlgorithm, location: "header", location_name: "x-amz-sdk-checksum-algorithm"))
2809
2839
  UploadPartRequest.add_member(:checksum_crc32, Shapes::ShapeRef.new(shape: ChecksumCRC32, location: "header", location_name: "x-amz-checksum-crc32"))
2810
2840
  UploadPartRequest.add_member(:checksum_crc32c, Shapes::ShapeRef.new(shape: ChecksumCRC32C, location: "header", location_name: "x-amz-checksum-crc32c"))
2841
+ UploadPartRequest.add_member(:checksum_crc64nvme, Shapes::ShapeRef.new(shape: ChecksumCRC64NVME, location: "header", location_name: "x-amz-checksum-crc64nvme"))
2811
2842
  UploadPartRequest.add_member(:checksum_sha1, Shapes::ShapeRef.new(shape: ChecksumSHA1, location: "header", location_name: "x-amz-checksum-sha1"))
2812
2843
  UploadPartRequest.add_member(:checksum_sha256, Shapes::ShapeRef.new(shape: ChecksumSHA256, location: "header", location_name: "x-amz-checksum-sha256"))
2813
2844
  UploadPartRequest.add_member(:key, Shapes::ShapeRef.new(shape: ObjectKey, required: true, location: "uri", location_name: "Key", metadata: {"contextParam"=>{"name"=>"Key"}}))
@@ -2850,6 +2881,7 @@ module Aws::S3
2850
2881
  WriteGetObjectResponseRequest.add_member(:content_type, Shapes::ShapeRef.new(shape: ContentType, location: "header", location_name: "x-amz-fwd-header-Content-Type"))
2851
2882
  WriteGetObjectResponseRequest.add_member(:checksum_crc32, Shapes::ShapeRef.new(shape: ChecksumCRC32, location: "header", location_name: "x-amz-fwd-header-x-amz-checksum-crc32"))
2852
2883
  WriteGetObjectResponseRequest.add_member(:checksum_crc32c, Shapes::ShapeRef.new(shape: ChecksumCRC32C, location: "header", location_name: "x-amz-fwd-header-x-amz-checksum-crc32c"))
2884
+ WriteGetObjectResponseRequest.add_member(:checksum_crc64nvme, Shapes::ShapeRef.new(shape: ChecksumCRC64NVME, location: "header", location_name: "x-amz-fwd-header-x-amz-checksum-crc64nvme"))
2853
2885
  WriteGetObjectResponseRequest.add_member(:checksum_sha1, Shapes::ShapeRef.new(shape: ChecksumSHA1, location: "header", location_name: "x-amz-fwd-header-x-amz-checksum-sha1"))
2854
2886
  WriteGetObjectResponseRequest.add_member(:checksum_sha256, Shapes::ShapeRef.new(shape: ChecksumSHA256, location: "header", location_name: "x-amz-fwd-header-x-amz-checksum-sha256"))
2855
2887
  WriteGetObjectResponseRequest.add_member(:delete_marker, Shapes::ShapeRef.new(shape: DeleteMarker, location: "header", location_name: "x-amz-fwd-header-x-amz-delete-marker"))
@@ -3311,11 +3343,11 @@ module Aws::S3
3311
3343
  o.http_request_uri = "/{Key+}"
3312
3344
  o.http_checksum = {
3313
3345
  "requestValidationModeMember" => "checksum_mode",
3314
- "responseAlgorithms" => ["CRC32", "CRC32C", "SHA256", "SHA1"],
3346
+ "responseAlgorithms" => ["CRC64NVME", "CRC32", "CRC32C", "SHA256", "SHA1"],
3315
3347
  }
3316
3348
  o.http_checksum = {
3317
3349
  "requestValidationModeMember" => "checksum_mode",
3318
- "responseAlgorithms" => ["CRC32", "CRC32C", "SHA256", "SHA1"],
3350
+ "responseAlgorithms" => ["CRC64NVME", "CRC32", "CRC32C", "SHA256", "SHA1"],
3319
3351
  }
3320
3352
  o.input = Shapes::ShapeRef.new(shape: GetObjectRequest)
3321
3353
  o.output = Shapes::ShapeRef.new(shape: GetObjectOutput)
@@ -28,18 +28,10 @@ module Aws
28
28
  @chunk_size = options[:chunk_size]
29
29
  @params = {
30
30
  bucket: options[:bucket],
31
- key: options[:key],
31
+ key: options[:key]
32
32
  }
33
33
  @params[:version_id] = options[:version_id] if options[:version_id]
34
-
35
- # checksum_mode only supports the value "ENABLED"
36
- # falsey values (false/nil) or "DISABLED" should be considered
37
- # disabled and the api parameter should be unset.
38
- if (checksum_mode = options.fetch(:checksum_mode, 'ENABLED'))
39
- @params[:checksum_mode] = checksum_mode unless checksum_mode.upcase == 'DISABLED'
40
- end
41
34
  @on_checksum_validated = options[:on_checksum_validated]
42
-
43
35
  @progress_callback = options[:progress_callback]
44
36
 
45
37
  validate!
@@ -67,11 +59,6 @@ module Aws
67
59
  private
68
60
 
69
61
  def validate!
70
- if @on_checksum_validated && @params[:checksum_mode] != 'ENABLED'
71
- raise ArgumentError, "You must set checksum_mode: 'ENABLED' " +
72
- "when providing a on_checksum_validated callback"
73
- end
74
-
75
62
  if @on_checksum_validated && !@on_checksum_validated.respond_to?(:call)
76
63
  raise ArgumentError, 'on_checksum_validated must be callable'
77
64
  end
@@ -164,9 +151,7 @@ module Aws
164
151
 
165
152
  def download_in_threads(pending, total_size)
166
153
  threads = []
167
- if @progress_callback
168
- progress = MultipartProgress.new(pending, total_size, @progress_callback)
169
- end
154
+ progress = MultipartProgress.new(pending, total_size, @progress_callback) if @progress_callback
170
155
  @thread_count.times do
171
156
  thread = Thread.new do
172
157
  begin
@@ -208,9 +193,7 @@ module Aws
208
193
 
209
194
  return resp unless @on_checksum_validated
210
195
 
211
- if resp.checksum_validated
212
- @on_checksum_validated.call(resp.checksum_validated, resp)
213
- end
196
+ @on_checksum_validated.call(resp.checksum_validated, resp) if resp.checksum_validated
214
197
 
215
198
  resp
216
199
  end
@@ -251,7 +234,7 @@ module Aws
251
234
  end
252
235
 
253
236
  # @api private
254
- class MultipartProgress
237
+ class MultipartProgress
255
238
  def initialize(parts, total_size, progress_callback)
256
239
  @bytes_received = Array.new(parts.size, 0)
257
240
  @part_sizes = parts.map(&:size)
@@ -16,7 +16,6 @@ module Aws
16
16
 
17
17
  THREAD_COUNT = 10
18
18
 
19
- # @api private
20
19
  CREATE_OPTIONS = Set.new(
21
20
  Client.api.operation(:create_multipart_upload).input.shape.member_names
22
21
  )
@@ -25,11 +24,16 @@ module Aws
25
24
  Client.api.operation(:complete_multipart_upload).input.shape.member_names
26
25
  )
27
26
 
28
- # @api private
29
27
  UPLOAD_PART_OPTIONS = Set.new(
30
28
  Client.api.operation(:upload_part).input.shape.member_names
31
29
  )
32
30
 
31
+ CHECKSUM_KEYS = Set.new(
32
+ Client.api.operation(:upload_part).input.shape.members.map do |n, s|
33
+ n if s.location == 'header' && s.location_name.start_with?('x-amz-checksum-')
34
+ end.compact
35
+ )
36
+
33
37
  # @option options [Client] :client
34
38
  # @option options [Integer] :thread_count (THREAD_COUNT)
35
39
  def initialize(options = {})
@@ -121,15 +125,27 @@ module Aws
121
125
  parts
122
126
  end
123
127
 
128
+ def checksum_key?(key)
129
+ CHECKSUM_KEYS.include?(key)
130
+ end
131
+
132
+ def has_checksum_key?(keys)
133
+ keys.any? { |key| checksum_key?(key) }
134
+ end
135
+
124
136
  def create_opts(options)
125
- CREATE_OPTIONS.inject({}) do |hash, key|
137
+ opts = { checksum_algorithm: Aws::Plugins::ChecksumAlgorithm::DEFAULT_CHECKSUM }
138
+ opts[:checksum_type] = 'FULL_OBJECT' if has_checksum_key?(options.keys)
139
+ CREATE_OPTIONS.inject(opts) do |hash, key|
126
140
  hash[key] = options[key] if options.key?(key)
127
141
  hash
128
142
  end
129
143
  end
130
144
 
131
145
  def complete_opts(options)
132
- COMPLETE_OPTIONS.inject({}) do |hash, key|
146
+ opts = {}
147
+ opts[:checksum_type] = 'FULL_OBJECT' if has_checksum_key?(options.keys)
148
+ COMPLETE_OPTIONS.inject(opts) do |hash, key|
133
149
  hash[key] = options[key] if options.key?(key)
134
150
  hash
135
151
  end
@@ -137,7 +153,10 @@ module Aws
137
153
 
138
154
  def upload_part_opts(options)
139
155
  UPLOAD_PART_OPTIONS.inject({}) do |hash, key|
140
- hash[key] = options[key] if options.key?(key)
156
+ if options.key?(key)
157
+ # don't pass through checksum calculations
158
+ hash[key] = options[key] unless checksum_key?(key)
159
+ end
141
160
  hash
142
161
  end
143
162
  end
@@ -159,14 +178,13 @@ module Aws
159
178
  end
160
179
  resp = @client.upload_part(part)
161
180
  part[:body].close
162
- completed_part = {etag: resp.etag, part_number: part[:part_number]}
163
-
164
- # get the requested checksum from the response
165
- if part[:checksum_algorithm]
166
- k = "checksum_#{part[:checksum_algorithm].downcase}".to_sym
167
- completed_part[k] = resp[k]
168
- end
169
-
181
+ completed_part = {
182
+ etag: resp.etag,
183
+ part_number: part[:part_number]
184
+ }
185
+ algorithm = resp.context.params[:checksum_algorithm]
186
+ k = "checksum_#{algorithm.downcase}".to_sym
187
+ completed_part[k] = resp.send(k)
170
188
  completed.push(completed_part)
171
189
  end
172
190
  nil
@@ -103,6 +103,18 @@ module Aws::S3
103
103
  data[:checksum_algorithm]
104
104
  end
105
105
 
106
+ # The checksum type that is used to calculate the object’s checksum
107
+ # value. For more information, see [Checking object integrity][1] in the
108
+ # *Amazon S3 User Guide*.
109
+ #
110
+ #
111
+ #
112
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
113
+ # @return [String]
114
+ def checksum_type
115
+ data[:checksum_type]
116
+ end
117
+
106
118
  # @!endgroup
107
119
 
108
120
  # @return [Client]
@@ -295,6 +307,7 @@ module Aws::S3
295
307
  # etag: "ETag",
296
308
  # checksum_crc32: "ChecksumCRC32",
297
309
  # checksum_crc32c: "ChecksumCRC32C",
310
+ # checksum_crc64nvme: "ChecksumCRC64NVME",
298
311
  # checksum_sha1: "ChecksumSHA1",
299
312
  # checksum_sha256: "ChecksumSHA256",
300
313
  # part_number: 1,
@@ -303,8 +316,11 @@ module Aws::S3
303
316
  # },
304
317
  # checksum_crc32: "ChecksumCRC32",
305
318
  # checksum_crc32c: "ChecksumCRC32C",
319
+ # checksum_crc64nvme: "ChecksumCRC64NVME",
306
320
  # checksum_sha1: "ChecksumSHA1",
307
321
  # checksum_sha256: "ChecksumSHA256",
322
+ # checksum_type: "COMPOSITE", # accepts COMPOSITE, FULL_OBJECT
323
+ # mpu_object_size: 1,
308
324
  # request_payer: "requester", # accepts requester
309
325
  # expected_bucket_owner: "AccountId",
310
326
  # if_match: "IfMatch",
@@ -319,7 +335,7 @@ module Aws::S3
319
335
  # @option options [String] :checksum_crc32
320
336
  # This header can be used as a data integrity check to verify that the
321
337
  # data received is the same data that was originally sent. This header
322
- # specifies the base64-encoded, 32-bit CRC-32 checksum of the object.
338
+ # specifies the Base64 encoded, 32-bit `CRC-32` checksum of the object.
323
339
  # For more information, see [Checking object integrity][1] in the
324
340
  # *Amazon S3 User Guide*.
325
341
  #
@@ -329,19 +345,30 @@ module Aws::S3
329
345
  # @option options [String] :checksum_crc32c
330
346
  # This header can be used as a data integrity check to verify that the
331
347
  # data received is the same data that was originally sent. This header
332
- # specifies the base64-encoded, 32-bit CRC-32C checksum of the object.
348
+ # specifies the Base64 encoded, 32-bit `CRC-32C` checksum of the object.
333
349
  # For more information, see [Checking object integrity][1] in the
334
350
  # *Amazon S3 User Guide*.
335
351
  #
336
352
  #
337
353
  #
338
354
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
355
+ # @option options [String] :checksum_crc64nvme
356
+ # This header can be used as a data integrity check to verify that the
357
+ # data received is the same data that was originally sent. This header
358
+ # specifies the Base64 encoded, 64-bit `CRC-64NVME` checksum of the
359
+ # object. The `CRC-64NVME` checksum is always a full object checksum.
360
+ # For more information, see [Checking object integrity in the Amazon S3
361
+ # User Guide][1].
362
+ #
363
+ #
364
+ #
365
+ # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
339
366
  # @option options [String] :checksum_sha1
340
367
  # This header can be used as a data integrity check to verify that the
341
368
  # data received is the same data that was originally sent. This header
342
- # specifies the base64-encoded, 160-bit SHA-1 digest of the object. For
343
- # more information, see [Checking object integrity][1] in the *Amazon S3
344
- # User Guide*.
369
+ # specifies the Base64 encoded, 160-bit `SHA-1` digest of the object.
370
+ # For more information, see [Checking object integrity][1] in the
371
+ # *Amazon S3 User Guide*.
345
372
  #
346
373
  #
347
374
  #
@@ -349,13 +376,28 @@ module Aws::S3
349
376
  # @option options [String] :checksum_sha256
350
377
  # This header can be used as a data integrity check to verify that the
351
378
  # data received is the same data that was originally sent. This header
352
- # specifies the base64-encoded, 256-bit SHA-256 digest of the object.
379
+ # specifies the Base64 encoded, 256-bit `SHA-256` digest of the object.
353
380
  # For more information, see [Checking object integrity][1] in the
354
381
  # *Amazon S3 User Guide*.
355
382
  #
356
383
  #
357
384
  #
358
385
  # [1]: https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
386
+ # @option options [String] :checksum_type
387
+ # This header specifies the checksum type of the object, which
388
+ # determines how part-level checksums are combined to create an
389
+ # object-level checksum for multipart objects. You can use this header
390
+ # as a data integrity check to verify that the checksum type that is
391
+ # received is the same checksum that was specified. If the checksum type
392
+ # doesn’t match the checksum type that was specified for the object
393
+ # during the `CreateMultipartUpload` request, it’ll result in a
394
+ # `BadDigest` error. For more information, see Checking object integrity
395
+ # in the Amazon S3 User Guide.
396
+ # @option options [Integer] :mpu_object_size
397
+ # The expected total object size of the multipart upload request. If
398
+ # there’s a mismatch between the specified object size value and the
399
+ # actual object size value, it results in an `HTTP 400 InvalidRequest`
400
+ # error.
359
401
  # @option options [String] :request_payer
360
402
  # Confirms that the requester knows that they will be charged for the
361
403
  # request. Bucket owners need not specify this parameter in their