aws-sdk-s3 1.140.0 → 1.141.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +8 -0
  3. data/VERSION +1 -1
  4. data/lib/aws-sdk-s3/bucket.rb +423 -93
  5. data/lib/aws-sdk-s3/bucket_acl.rb +9 -9
  6. data/lib/aws-sdk-s3/bucket_cors.rb +12 -12
  7. data/lib/aws-sdk-s3/bucket_lifecycle.rb +12 -12
  8. data/lib/aws-sdk-s3/bucket_lifecycle_configuration.rb +12 -12
  9. data/lib/aws-sdk-s3/bucket_logging.rb +9 -9
  10. data/lib/aws-sdk-s3/bucket_notification.rb +3 -3
  11. data/lib/aws-sdk-s3/bucket_policy.rb +58 -14
  12. data/lib/aws-sdk-s3/bucket_request_payment.rb +9 -9
  13. data/lib/aws-sdk-s3/bucket_tagging.rb +12 -12
  14. data/lib/aws-sdk-s3/bucket_versioning.rb +27 -27
  15. data/lib/aws-sdk-s3/bucket_website.rb +12 -12
  16. data/lib/aws-sdk-s3/client.rb +5620 -2534
  17. data/lib/aws-sdk-s3/client_api.rb +82 -1
  18. data/lib/aws-sdk-s3/customizations.rb +5 -0
  19. data/lib/aws-sdk-s3/endpoint_parameters.rb +16 -0
  20. data/lib/aws-sdk-s3/endpoint_provider.rb +80 -0
  21. data/lib/aws-sdk-s3/endpoints.rb +246 -0
  22. data/lib/aws-sdk-s3/express_credentials.rb +55 -0
  23. data/lib/aws-sdk-s3/express_credentials_cache.rb +30 -0
  24. data/lib/aws-sdk-s3/express_credentials_provider.rb +36 -0
  25. data/lib/aws-sdk-s3/multipart_upload.rb +70 -24
  26. data/lib/aws-sdk-s3/multipart_upload_part.rb +164 -43
  27. data/lib/aws-sdk-s3/object.rb +1496 -248
  28. data/lib/aws-sdk-s3/object_acl.rb +31 -19
  29. data/lib/aws-sdk-s3/object_summary.rb +1366 -272
  30. data/lib/aws-sdk-s3/object_version.rb +304 -57
  31. data/lib/aws-sdk-s3/plugins/endpoints.rb +13 -2
  32. data/lib/aws-sdk-s3/plugins/express_session_auth.rb +90 -0
  33. data/lib/aws-sdk-s3/plugins/location_constraint.rb +3 -1
  34. data/lib/aws-sdk-s3/plugins/md5s.rb +2 -1
  35. data/lib/aws-sdk-s3/presigner.rb +2 -2
  36. data/lib/aws-sdk-s3/resource.rb +83 -11
  37. data/lib/aws-sdk-s3/types.rb +4261 -1238
  38. data/lib/aws-sdk-s3.rb +1 -1
  39. metadata +10 -6
@@ -22,6 +22,8 @@ module Aws::S3
22
22
  AcceptRanges = Shapes::StringShape.new(name: 'AcceptRanges')
23
23
  AccessControlPolicy = Shapes::StructureShape.new(name: 'AccessControlPolicy')
24
24
  AccessControlTranslation = Shapes::StructureShape.new(name: 'AccessControlTranslation')
25
+ AccessKeyIdValue = Shapes::StringShape.new(name: 'AccessKeyIdValue')
26
+ AccessPointAlias = Shapes::BooleanShape.new(name: 'AccessPointAlias')
25
27
  AccessPointArn = Shapes::StringShape.new(name: 'AccessPointArn')
26
28
  AccountId = Shapes::StringShape.new(name: 'AccountId')
27
29
  AllowQuotedRecordDelimiter = Shapes::BooleanShape.new(name: 'AllowQuotedRecordDelimiter')
@@ -46,12 +48,15 @@ module Aws::S3
46
48
  BucketAlreadyExists = Shapes::StructureShape.new(name: 'BucketAlreadyExists')
47
49
  BucketAlreadyOwnedByYou = Shapes::StructureShape.new(name: 'BucketAlreadyOwnedByYou')
48
50
  BucketCannedACL = Shapes::StringShape.new(name: 'BucketCannedACL')
51
+ BucketInfo = Shapes::StructureShape.new(name: 'BucketInfo')
49
52
  BucketKeyEnabled = Shapes::BooleanShape.new(name: 'BucketKeyEnabled')
50
53
  BucketLifecycleConfiguration = Shapes::StructureShape.new(name: 'BucketLifecycleConfiguration')
51
54
  BucketLocationConstraint = Shapes::StringShape.new(name: 'BucketLocationConstraint')
55
+ BucketLocationName = Shapes::StringShape.new(name: 'BucketLocationName')
52
56
  BucketLoggingStatus = Shapes::StructureShape.new(name: 'BucketLoggingStatus')
53
57
  BucketLogsPermission = Shapes::StringShape.new(name: 'BucketLogsPermission')
54
58
  BucketName = Shapes::StringShape.new(name: 'BucketName')
59
+ BucketType = Shapes::StringShape.new(name: 'BucketType')
55
60
  BucketVersioningStatus = Shapes::StringShape.new(name: 'BucketVersioningStatus')
56
61
  Buckets = Shapes::ListShape.new(name: 'Buckets')
57
62
  BypassGovernanceRetention = Shapes::BooleanShape.new(name: 'BypassGovernanceRetention')
@@ -114,7 +119,10 @@ module Aws::S3
114
119
  CreateBucketRequest = Shapes::StructureShape.new(name: 'CreateBucketRequest')
115
120
  CreateMultipartUploadOutput = Shapes::StructureShape.new(name: 'CreateMultipartUploadOutput')
116
121
  CreateMultipartUploadRequest = Shapes::StructureShape.new(name: 'CreateMultipartUploadRequest')
122
+ CreateSessionOutput = Shapes::StructureShape.new(name: 'CreateSessionOutput')
123
+ CreateSessionRequest = Shapes::StructureShape.new(name: 'CreateSessionRequest')
117
124
  CreationDate = Shapes::TimestampShape.new(name: 'CreationDate')
125
+ DataRedundancy = Shapes::StringShape.new(name: 'DataRedundancy')
118
126
  Date = Shapes::TimestampShape.new(name: 'Date', timestampFormat: "iso8601")
119
127
  Days = Shapes::IntegerShape.new(name: 'Days')
120
128
  DaysAfterInitiation = Shapes::IntegerShape.new(name: 'DaysAfterInitiation')
@@ -151,6 +159,7 @@ module Aws::S3
151
159
  Delimiter = Shapes::StringShape.new(name: 'Delimiter')
152
160
  Description = Shapes::StringShape.new(name: 'Description')
153
161
  Destination = Shapes::StructureShape.new(name: 'Destination')
162
+ DirectoryBucketToken = Shapes::StringShape.new(name: 'DirectoryBucketToken')
154
163
  DisplayName = Shapes::StringShape.new(name: 'DisplayName')
155
164
  ETag = Shapes::StringShape.new(name: 'ETag')
156
165
  EmailAddress = Shapes::StringShape.new(name: 'EmailAddress')
@@ -256,6 +265,7 @@ module Aws::S3
256
265
  GrantWriteACP = Shapes::StringShape.new(name: 'GrantWriteACP')
257
266
  Grantee = Shapes::StructureShape.new(name: 'Grantee', xmlNamespace: {"prefix"=>"xsi", "uri"=>"http://www.w3.org/2001/XMLSchema-instance"})
258
267
  Grants = Shapes::ListShape.new(name: 'Grants')
268
+ HeadBucketOutput = Shapes::StructureShape.new(name: 'HeadBucketOutput')
259
269
  HeadBucketRequest = Shapes::StructureShape.new(name: 'HeadBucketRequest')
260
270
  HeadObjectOutput = Shapes::StructureShape.new(name: 'HeadObjectOutput')
261
271
  HeadObjectRequest = Shapes::StructureShape.new(name: 'HeadObjectRequest')
@@ -324,6 +334,8 @@ module Aws::S3
324
334
  ListBucketMetricsConfigurationsOutput = Shapes::StructureShape.new(name: 'ListBucketMetricsConfigurationsOutput')
325
335
  ListBucketMetricsConfigurationsRequest = Shapes::StructureShape.new(name: 'ListBucketMetricsConfigurationsRequest')
326
336
  ListBucketsOutput = Shapes::StructureShape.new(name: 'ListBucketsOutput')
337
+ ListDirectoryBucketsOutput = Shapes::StructureShape.new(name: 'ListDirectoryBucketsOutput')
338
+ ListDirectoryBucketsRequest = Shapes::StructureShape.new(name: 'ListDirectoryBucketsRequest')
327
339
  ListMultipartUploadsOutput = Shapes::StructureShape.new(name: 'ListMultipartUploadsOutput')
328
340
  ListMultipartUploadsRequest = Shapes::StructureShape.new(name: 'ListMultipartUploadsRequest')
329
341
  ListObjectVersionsOutput = Shapes::StructureShape.new(name: 'ListObjectVersionsOutput')
@@ -335,13 +347,17 @@ module Aws::S3
335
347
  ListPartsOutput = Shapes::StructureShape.new(name: 'ListPartsOutput')
336
348
  ListPartsRequest = Shapes::StructureShape.new(name: 'ListPartsRequest')
337
349
  Location = Shapes::StringShape.new(name: 'Location')
350
+ LocationInfo = Shapes::StructureShape.new(name: 'LocationInfo')
351
+ LocationNameAsString = Shapes::StringShape.new(name: 'LocationNameAsString')
338
352
  LocationPrefix = Shapes::StringShape.new(name: 'LocationPrefix')
353
+ LocationType = Shapes::StringShape.new(name: 'LocationType')
339
354
  LoggingEnabled = Shapes::StructureShape.new(name: 'LoggingEnabled')
340
355
  MFA = Shapes::StringShape.new(name: 'MFA')
341
356
  MFADelete = Shapes::StringShape.new(name: 'MFADelete')
342
357
  MFADeleteStatus = Shapes::StringShape.new(name: 'MFADeleteStatus')
343
358
  Marker = Shapes::StringShape.new(name: 'Marker')
344
359
  MaxAgeSeconds = Shapes::IntegerShape.new(name: 'MaxAgeSeconds')
360
+ MaxDirectoryBuckets = Shapes::IntegerShape.new(name: 'MaxDirectoryBuckets')
345
361
  MaxKeys = Shapes::IntegerShape.new(name: 'MaxKeys')
346
362
  MaxParts = Shapes::IntegerShape.new(name: 'MaxParts')
347
363
  MaxUploads = Shapes::IntegerShape.new(name: 'MaxUploads')
@@ -484,6 +500,7 @@ module Aws::S3
484
500
  RecordsEvent = Shapes::StructureShape.new(name: 'RecordsEvent')
485
501
  Redirect = Shapes::StructureShape.new(name: 'Redirect')
486
502
  RedirectAllRequestsTo = Shapes::StructureShape.new(name: 'RedirectAllRequestsTo')
503
+ Region = Shapes::StringShape.new(name: 'Region')
487
504
  ReplaceKeyPrefixWith = Shapes::StringShape.new(name: 'ReplaceKeyPrefixWith')
488
505
  ReplaceKeyWith = Shapes::StringShape.new(name: 'ReplaceKeyWith')
489
506
  ReplicaKmsKeyID = Shapes::StringShape.new(name: 'ReplicaKmsKeyID')
@@ -543,6 +560,10 @@ module Aws::S3
543
560
  ServerSideEncryptionConfiguration = Shapes::StructureShape.new(name: 'ServerSideEncryptionConfiguration')
544
561
  ServerSideEncryptionRule = Shapes::StructureShape.new(name: 'ServerSideEncryptionRule')
545
562
  ServerSideEncryptionRules = Shapes::ListShape.new(name: 'ServerSideEncryptionRules', flattened: true)
563
+ SessionCredentialValue = Shapes::StringShape.new(name: 'SessionCredentialValue')
564
+ SessionCredentials = Shapes::StructureShape.new(name: 'SessionCredentials')
565
+ SessionExpiration = Shapes::TimestampShape.new(name: 'SessionExpiration')
566
+ SessionMode = Shapes::StringShape.new(name: 'SessionMode')
546
567
  Setting = Shapes::BooleanShape.new(name: 'Setting')
547
568
  SimplePrefix = Shapes::StructureShape.new(name: 'SimplePrefix')
548
569
  Size = Shapes::IntegerShape.new(name: 'Size')
@@ -660,6 +681,10 @@ module Aws::S3
660
681
 
661
682
  BucketAlreadyOwnedByYou.struct_class = Types::BucketAlreadyOwnedByYou
662
683
 
684
+ BucketInfo.add_member(:data_redundancy, Shapes::ShapeRef.new(shape: DataRedundancy, location_name: "DataRedundancy"))
685
+ BucketInfo.add_member(:type, Shapes::ShapeRef.new(shape: BucketType, location_name: "Type"))
686
+ BucketInfo.struct_class = Types::BucketInfo
687
+
663
688
  BucketLifecycleConfiguration.add_member(:rules, Shapes::ShapeRef.new(shape: LifecycleRules, required: true, location_name: "Rule"))
664
689
  BucketLifecycleConfiguration.struct_class = Types::BucketLifecycleConfiguration
665
690
 
@@ -844,6 +869,8 @@ module Aws::S3
844
869
  CopyPartResult.struct_class = Types::CopyPartResult
845
870
 
846
871
  CreateBucketConfiguration.add_member(:location_constraint, Shapes::ShapeRef.new(shape: BucketLocationConstraint, location_name: "LocationConstraint"))
872
+ CreateBucketConfiguration.add_member(:location, Shapes::ShapeRef.new(shape: LocationInfo, location_name: "Location"))
873
+ CreateBucketConfiguration.add_member(:bucket, Shapes::ShapeRef.new(shape: BucketInfo, location_name: "Bucket"))
847
874
  CreateBucketConfiguration.struct_class = Types::CreateBucketConfiguration
848
875
 
849
876
  CreateBucketOutput.add_member(:location, Shapes::ShapeRef.new(shape: Location, location: "header", location_name: "Location"))
@@ -910,6 +937,13 @@ module Aws::S3
910
937
  CreateMultipartUploadRequest.add_member(:checksum_algorithm, Shapes::ShapeRef.new(shape: ChecksumAlgorithm, location: "header", location_name: "x-amz-checksum-algorithm"))
911
938
  CreateMultipartUploadRequest.struct_class = Types::CreateMultipartUploadRequest
912
939
 
940
+ CreateSessionOutput.add_member(:credentials, Shapes::ShapeRef.new(shape: SessionCredentials, required: true, location_name: "Credentials"))
941
+ CreateSessionOutput.struct_class = Types::CreateSessionOutput
942
+
943
+ CreateSessionRequest.add_member(:session_mode, Shapes::ShapeRef.new(shape: SessionMode, location: "header", location_name: "x-amz-create-session-mode"))
944
+ CreateSessionRequest.add_member(:bucket, Shapes::ShapeRef.new(shape: BucketName, required: true, location: "uri", location_name: "Bucket", metadata: {"contextParam"=>{"name"=>"Bucket"}}))
945
+ CreateSessionRequest.struct_class = Types::CreateSessionRequest
946
+
913
947
  DefaultRetention.add_member(:mode, Shapes::ShapeRef.new(shape: ObjectLockRetentionMode, location_name: "Mode"))
914
948
  DefaultRetention.add_member(:days, Shapes::ShapeRef.new(shape: Days, location_name: "Days"))
915
949
  DefaultRetention.add_member(:years, Shapes::ShapeRef.new(shape: Years, location_name: "Years"))
@@ -1443,6 +1477,12 @@ module Aws::S3
1443
1477
 
1444
1478
  Grants.member = Shapes::ShapeRef.new(shape: Grant, location_name: "Grant")
1445
1479
 
1480
+ HeadBucketOutput.add_member(:bucket_location_type, Shapes::ShapeRef.new(shape: LocationType, location: "header", location_name: "x-amz-bucket-location-type"))
1481
+ HeadBucketOutput.add_member(:bucket_location_name, Shapes::ShapeRef.new(shape: BucketLocationName, location: "header", location_name: "x-amz-bucket-location-name"))
1482
+ HeadBucketOutput.add_member(:bucket_region, Shapes::ShapeRef.new(shape: Region, location: "header", location_name: "x-amz-bucket-region"))
1483
+ HeadBucketOutput.add_member(:access_point_alias, Shapes::ShapeRef.new(shape: AccessPointAlias, location: "header", location_name: "x-amz-access-point-alias"))
1484
+ HeadBucketOutput.struct_class = Types::HeadBucketOutput
1485
+
1446
1486
  HeadBucketRequest.add_member(:bucket, Shapes::ShapeRef.new(shape: BucketName, required: true, location: "uri", location_name: "Bucket", metadata: {"contextParam"=>{"name"=>"Bucket"}}))
1447
1487
  HeadBucketRequest.add_member(:expected_bucket_owner, Shapes::ShapeRef.new(shape: AccountId, location: "header", location_name: "x-amz-expected-bucket-owner"))
1448
1488
  HeadBucketRequest.struct_class = Types::HeadBucketRequest
@@ -1663,6 +1703,14 @@ module Aws::S3
1663
1703
  ListBucketsOutput.add_member(:owner, Shapes::ShapeRef.new(shape: Owner, location_name: "Owner"))
1664
1704
  ListBucketsOutput.struct_class = Types::ListBucketsOutput
1665
1705
 
1706
+ ListDirectoryBucketsOutput.add_member(:buckets, Shapes::ShapeRef.new(shape: Buckets, location_name: "Buckets"))
1707
+ ListDirectoryBucketsOutput.add_member(:continuation_token, Shapes::ShapeRef.new(shape: DirectoryBucketToken, location_name: "ContinuationToken"))
1708
+ ListDirectoryBucketsOutput.struct_class = Types::ListDirectoryBucketsOutput
1709
+
1710
+ ListDirectoryBucketsRequest.add_member(:continuation_token, Shapes::ShapeRef.new(shape: DirectoryBucketToken, location: "querystring", location_name: "continuation-token"))
1711
+ ListDirectoryBucketsRequest.add_member(:max_directory_buckets, Shapes::ShapeRef.new(shape: MaxDirectoryBuckets, location: "querystring", location_name: "max-directory-buckets"))
1712
+ ListDirectoryBucketsRequest.struct_class = Types::ListDirectoryBucketsRequest
1713
+
1666
1714
  ListMultipartUploadsOutput.add_member(:bucket, Shapes::ShapeRef.new(shape: BucketName, location_name: "Bucket"))
1667
1715
  ListMultipartUploadsOutput.add_member(:key_marker, Shapes::ShapeRef.new(shape: KeyMarker, location_name: "KeyMarker"))
1668
1716
  ListMultipartUploadsOutput.add_member(:upload_id_marker, Shapes::ShapeRef.new(shape: UploadIdMarker, location_name: "UploadIdMarker"))
@@ -1798,6 +1846,10 @@ module Aws::S3
1798
1846
  ListPartsRequest.add_member(:sse_customer_key_md5, Shapes::ShapeRef.new(shape: SSECustomerKeyMD5, location: "header", location_name: "x-amz-server-side-encryption-customer-key-MD5"))
1799
1847
  ListPartsRequest.struct_class = Types::ListPartsRequest
1800
1848
 
1849
+ LocationInfo.add_member(:type, Shapes::ShapeRef.new(shape: LocationType, location_name: "Type"))
1850
+ LocationInfo.add_member(:name, Shapes::ShapeRef.new(shape: LocationNameAsString, location_name: "Name"))
1851
+ LocationInfo.struct_class = Types::LocationInfo
1852
+
1801
1853
  LoggingEnabled.add_member(:target_bucket, Shapes::ShapeRef.new(shape: TargetBucket, required: true, location_name: "TargetBucket"))
1802
1854
  LoggingEnabled.add_member(:target_grants, Shapes::ShapeRef.new(shape: TargetGrants, location_name: "TargetGrants"))
1803
1855
  LoggingEnabled.add_member(:target_prefix, Shapes::ShapeRef.new(shape: TargetPrefix, required: true, location_name: "TargetPrefix"))
@@ -2501,6 +2553,12 @@ module Aws::S3
2501
2553
 
2502
2554
  ServerSideEncryptionRules.member = Shapes::ShapeRef.new(shape: ServerSideEncryptionRule)
2503
2555
 
2556
+ SessionCredentials.add_member(:access_key_id, Shapes::ShapeRef.new(shape: AccessKeyIdValue, required: true, location_name: "AccessKeyId"))
2557
+ SessionCredentials.add_member(:secret_access_key, Shapes::ShapeRef.new(shape: SessionCredentialValue, required: true, location_name: "SecretAccessKey"))
2558
+ SessionCredentials.add_member(:session_token, Shapes::ShapeRef.new(shape: SessionCredentialValue, required: true, location_name: "SessionToken"))
2559
+ SessionCredentials.add_member(:expiration, Shapes::ShapeRef.new(shape: SessionExpiration, required: true, location_name: "Expiration"))
2560
+ SessionCredentials.struct_class = Types::SessionCredentials
2561
+
2504
2562
  SimplePrefix.struct_class = Types::SimplePrefix
2505
2563
 
2506
2564
  SourceSelectionCriteria.add_member(:sse_kms_encrypted_objects, Shapes::ShapeRef.new(shape: SseKmsEncryptedObjects, location_name: "SseKmsEncryptedObjects"))
@@ -2756,6 +2814,15 @@ module Aws::S3
2756
2814
  o.output = Shapes::ShapeRef.new(shape: CreateMultipartUploadOutput)
2757
2815
  end)
2758
2816
 
2817
+ api.add_operation(:create_session, Seahorse::Model::Operation.new.tap do |o|
2818
+ o.name = "CreateSession"
2819
+ o.http_method = "GET"
2820
+ o.http_request_uri = "/?session"
2821
+ o.input = Shapes::ShapeRef.new(shape: CreateSessionRequest)
2822
+ o.output = Shapes::ShapeRef.new(shape: CreateSessionOutput)
2823
+ o.errors << Shapes::ShapeRef.new(shape: NoSuchBucket)
2824
+ end)
2825
+
2759
2826
  api.add_operation(:delete_bucket, Seahorse::Model::Operation.new.tap do |o|
2760
2827
  o.name = "DeleteBucket"
2761
2828
  o.http_method = "DELETE"
@@ -3167,7 +3234,7 @@ module Aws::S3
3167
3234
  o.http_method = "HEAD"
3168
3235
  o.http_request_uri = "/"
3169
3236
  o.input = Shapes::ShapeRef.new(shape: HeadBucketRequest)
3170
- o.output = Shapes::ShapeRef.new(shape: Shapes::StructureShape.new(struct_class: Aws::EmptyStructure))
3237
+ o.output = Shapes::ShapeRef.new(shape: HeadBucketOutput)
3171
3238
  o.errors << Shapes::ShapeRef.new(shape: NoSuchBucket)
3172
3239
  end)
3173
3240
 
@@ -3220,6 +3287,20 @@ module Aws::S3
3220
3287
  o.output = Shapes::ShapeRef.new(shape: ListBucketsOutput)
3221
3288
  end)
3222
3289
 
3290
+ api.add_operation(:list_directory_buckets, Seahorse::Model::Operation.new.tap do |o|
3291
+ o.name = "ListDirectoryBuckets"
3292
+ o.http_method = "GET"
3293
+ o.http_request_uri = "/"
3294
+ o.input = Shapes::ShapeRef.new(shape: ListDirectoryBucketsRequest)
3295
+ o.output = Shapes::ShapeRef.new(shape: ListDirectoryBucketsOutput)
3296
+ o[:pager] = Aws::Pager.new(
3297
+ limit_key: "max_directory_buckets",
3298
+ tokens: {
3299
+ "continuation_token" => "continuation_token"
3300
+ }
3301
+ )
3302
+ end)
3303
+
3223
3304
  api.add_operation(:list_multipart_uploads, Seahorse::Model::Operation.new.tap do |o|
3224
3305
  o.name = "ListMultipartUploads"
3225
3306
  o.http_method = "GET"
@@ -16,6 +16,11 @@ require 'aws-sdk-s3/object_multipart_copier'
16
16
  require 'aws-sdk-s3/presigned_post'
17
17
  require 'aws-sdk-s3/presigner'
18
18
 
19
+ # s3 express session auth
20
+ require 'aws-sdk-s3/express_credentials'
21
+ require 'aws-sdk-s3/express_credentials_cache'
22
+ require 'aws-sdk-s3/express_credentials_provider'
23
+
19
24
  # customizations to generated classes
20
25
  require 'aws-sdk-s3/customizations/bucket'
21
26
  require 'aws-sdk-s3/customizations/errors'
@@ -80,6 +80,16 @@ module Aws::S3
80
80
  #
81
81
  # @return [Boolean]
82
82
  #
83
+ # @!attribute use_s3_express_control_endpoint
84
+ # Internal parameter to indicate whether S3Express operation should use control plane, (ex. CreateBucket)
85
+ #
86
+ # @return [Boolean]
87
+ #
88
+ # @!attribute disable_s3_express_session_auth
89
+ # Parameter to indicate whether S3Express session auth should be disabled
90
+ #
91
+ # @return [Boolean]
92
+ #
83
93
  EndpointParameters = Struct.new(
84
94
  :bucket,
85
95
  :region,
@@ -95,6 +105,8 @@ module Aws::S3
95
105
  :disable_access_points,
96
106
  :disable_multi_region_access_points,
97
107
  :use_arn_region,
108
+ :use_s3_express_control_endpoint,
109
+ :disable_s3_express_session_auth,
98
110
  ) do
99
111
  include Aws::Structure
100
112
 
@@ -115,6 +127,8 @@ module Aws::S3
115
127
  'DisableAccessPoints' => :disable_access_points,
116
128
  'DisableMultiRegionAccessPoints' => :disable_multi_region_access_points,
117
129
  'UseArnRegion' => :use_arn_region,
130
+ 'UseS3ExpressControlEndpoint' => :use_s3_express_control_endpoint,
131
+ 'DisableS3ExpressSessionAuth' => :disable_s3_express_session_auth,
118
132
  }.freeze
119
133
  end
120
134
 
@@ -157,6 +171,8 @@ module Aws::S3
157
171
  raise ArgumentError, "Missing required EndpointParameter: :disable_multi_region_access_points"
158
172
  end
159
173
  self[:use_arn_region] = options[:use_arn_region]
174
+ self[:use_s3_express_control_endpoint] = options[:use_s3_express_control_endpoint]
175
+ self[:disable_s3_express_session_auth] = options[:disable_s3_express_session_auth]
160
176
  end
161
177
  end
162
178
  end
@@ -24,6 +24,8 @@ module Aws::S3
24
24
  disable_access_points = parameters.disable_access_points
25
25
  disable_multi_region_access_points = parameters.disable_multi_region_access_points
26
26
  use_arn_region = parameters.use_arn_region
27
+ use_s3_express_control_endpoint = parameters.use_s3_express_control_endpoint
28
+ disable_s3_express_session_auth = parameters.disable_s3_express_session_auth
27
29
  if Aws::Endpoints::Matchers.set?(region)
28
30
  if Aws::Endpoints::Matchers.boolean_equals?(accelerate, true) && Aws::Endpoints::Matchers.boolean_equals?(use_fips, true)
29
31
  raise ArgumentError, "Accelerate cannot be used with FIPS"
@@ -40,6 +42,84 @@ module Aws::S3
40
42
  if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true) && (partition_result = Aws::Endpoints::Matchers.aws_partition(region)) && Aws::Endpoints::Matchers.string_equals?(Aws::Endpoints::Matchers.attr(partition_result, "name"), "aws-cn")
41
43
  raise ArgumentError, "Partition does not support FIPS"
42
44
  end
45
+ if Aws::Endpoints::Matchers.set?(bucket) && (bucket_suffix = Aws::Endpoints::Matchers.substring(bucket, 0, 6, true)) && Aws::Endpoints::Matchers.string_equals?(bucket_suffix, "--x-s3")
46
+ if Aws::Endpoints::Matchers.boolean_equals?(use_dual_stack, true)
47
+ raise ArgumentError, "S3Express does not support Dual-stack."
48
+ end
49
+ if Aws::Endpoints::Matchers.boolean_equals?(accelerate, true)
50
+ raise ArgumentError, "S3Express does not support S3 Accelerate."
51
+ end
52
+ if Aws::Endpoints::Matchers.set?(endpoint) && (url = Aws::Endpoints::Matchers.parse_url(endpoint))
53
+ if Aws::Endpoints::Matchers.set?(disable_s3_express_session_auth) && Aws::Endpoints::Matchers.boolean_equals?(disable_s3_express_session_auth, true)
54
+ if Aws::Endpoints::Matchers.boolean_equals?(Aws::Endpoints::Matchers.attr(url, "isIp"), true)
55
+ if (uri_encoded_bucket = Aws::Endpoints::Matchers.uri_encode(bucket))
56
+ return Aws::Endpoints::Endpoint.new(url: "#{url['scheme']}://#{url['authority']}/#{uri_encoded_bucket}#{url['path']}", headers: {}, properties: {"backend"=>"S3Express", "authSchemes"=>[{"disableDoubleEncoding"=>true, "name"=>"sigv4", "signingName"=>"s3express", "signingRegion"=>"#{region}"}]})
57
+ end
58
+ end
59
+ if Aws::Endpoints::Matchers.aws_virtual_hostable_s3_bucket?(bucket, false)
60
+ return Aws::Endpoints::Endpoint.new(url: "#{url['scheme']}://#{bucket}.#{url['authority']}#{url['path']}", headers: {}, properties: {"backend"=>"S3Express", "authSchemes"=>[{"disableDoubleEncoding"=>true, "name"=>"sigv4", "signingName"=>"s3express", "signingRegion"=>"#{region}"}]})
61
+ end
62
+ raise ArgumentError, "S3Express bucket name is not a valid virtual hostable name."
63
+ end
64
+ if Aws::Endpoints::Matchers.boolean_equals?(Aws::Endpoints::Matchers.attr(url, "isIp"), true)
65
+ if (uri_encoded_bucket = Aws::Endpoints::Matchers.uri_encode(bucket))
66
+ return Aws::Endpoints::Endpoint.new(url: "#{url['scheme']}://#{url['authority']}/#{uri_encoded_bucket}#{url['path']}", headers: {}, properties: {"backend"=>"S3Express", "authSchemes"=>[{"disableDoubleEncoding"=>true, "name"=>"sigv4-s3express", "signingName"=>"s3express", "signingRegion"=>"#{region}"}]})
67
+ end
68
+ end
69
+ if Aws::Endpoints::Matchers.aws_virtual_hostable_s3_bucket?(bucket, false)
70
+ return Aws::Endpoints::Endpoint.new(url: "#{url['scheme']}://#{bucket}.#{url['authority']}#{url['path']}", headers: {}, properties: {"backend"=>"S3Express", "authSchemes"=>[{"disableDoubleEncoding"=>true, "name"=>"sigv4-s3express", "signingName"=>"s3express", "signingRegion"=>"#{region}"}]})
71
+ end
72
+ raise ArgumentError, "S3Express bucket name is not a valid virtual hostable name."
73
+ end
74
+ if Aws::Endpoints::Matchers.set?(use_s3_express_control_endpoint) && Aws::Endpoints::Matchers.boolean_equals?(use_s3_express_control_endpoint, true)
75
+ if (uri_encoded_bucket = Aws::Endpoints::Matchers.uri_encode(bucket)) && Aws::Endpoints::Matchers.not(Aws::Endpoints::Matchers.set?(endpoint))
76
+ if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true)
77
+ return Aws::Endpoints::Endpoint.new(url: "https://s3express-control-fips.#{region}.amazonaws.com/#{uri_encoded_bucket}", headers: {}, properties: {"backend"=>"S3Express", "authSchemes"=>[{"disableDoubleEncoding"=>true, "name"=>"sigv4", "signingName"=>"s3express", "signingRegion"=>"#{region}"}]})
78
+ end
79
+ return Aws::Endpoints::Endpoint.new(url: "https://s3express-control.#{region}.amazonaws.com/#{uri_encoded_bucket}", headers: {}, properties: {"backend"=>"S3Express", "authSchemes"=>[{"disableDoubleEncoding"=>true, "name"=>"sigv4", "signingName"=>"s3express", "signingRegion"=>"#{region}"}]})
80
+ end
81
+ end
82
+ if Aws::Endpoints::Matchers.aws_virtual_hostable_s3_bucket?(bucket, false)
83
+ if Aws::Endpoints::Matchers.set?(disable_s3_express_session_auth) && Aws::Endpoints::Matchers.boolean_equals?(disable_s3_express_session_auth, true)
84
+ if (s3express_availability_zone_id = Aws::Endpoints::Matchers.substring(bucket, 6, 14, true)) && (s3express_availability_zone_delim = Aws::Endpoints::Matchers.substring(bucket, 14, 16, true)) && Aws::Endpoints::Matchers.string_equals?(s3express_availability_zone_delim, "--")
85
+ if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true)
86
+ return Aws::Endpoints::Endpoint.new(url: "https://#{bucket}.s3express-fips-#{s3express_availability_zone_id}.#{region}.amazonaws.com", headers: {}, properties: {"backend"=>"S3Express", "authSchemes"=>[{"disableDoubleEncoding"=>true, "name"=>"sigv4", "signingName"=>"s3express", "signingRegion"=>"#{region}"}]})
87
+ end
88
+ return Aws::Endpoints::Endpoint.new(url: "https://#{bucket}.s3express-#{s3express_availability_zone_id}.#{region}.amazonaws.com", headers: {}, properties: {"backend"=>"S3Express", "authSchemes"=>[{"disableDoubleEncoding"=>true, "name"=>"sigv4", "signingName"=>"s3express", "signingRegion"=>"#{region}"}]})
89
+ end
90
+ if (s3express_availability_zone_id = Aws::Endpoints::Matchers.substring(bucket, 6, 15, true)) && (s3express_availability_zone_delim = Aws::Endpoints::Matchers.substring(bucket, 15, 17, true)) && Aws::Endpoints::Matchers.string_equals?(s3express_availability_zone_delim, "--")
91
+ if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true)
92
+ return Aws::Endpoints::Endpoint.new(url: "https://#{bucket}.s3express-fips-#{s3express_availability_zone_id}.#{region}.amazonaws.com", headers: {}, properties: {"backend"=>"S3Express", "authSchemes"=>[{"disableDoubleEncoding"=>true, "name"=>"sigv4", "signingName"=>"s3express", "signingRegion"=>"#{region}"}]})
93
+ end
94
+ return Aws::Endpoints::Endpoint.new(url: "https://#{bucket}.s3express-#{s3express_availability_zone_id}.#{region}.amazonaws.com", headers: {}, properties: {"backend"=>"S3Express", "authSchemes"=>[{"disableDoubleEncoding"=>true, "name"=>"sigv4", "signingName"=>"s3express", "signingRegion"=>"#{region}"}]})
95
+ end
96
+ raise ArgumentError, "Unrecognized S3Express bucket name format."
97
+ end
98
+ if (s3express_availability_zone_id = Aws::Endpoints::Matchers.substring(bucket, 6, 14, true)) && (s3express_availability_zone_delim = Aws::Endpoints::Matchers.substring(bucket, 14, 16, true)) && Aws::Endpoints::Matchers.string_equals?(s3express_availability_zone_delim, "--")
99
+ if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true)
100
+ return Aws::Endpoints::Endpoint.new(url: "https://#{bucket}.s3express-fips-#{s3express_availability_zone_id}.#{region}.amazonaws.com", headers: {}, properties: {"backend"=>"S3Express", "authSchemes"=>[{"disableDoubleEncoding"=>true, "name"=>"sigv4-s3express", "signingName"=>"s3express", "signingRegion"=>"#{region}"}]})
101
+ end
102
+ return Aws::Endpoints::Endpoint.new(url: "https://#{bucket}.s3express-#{s3express_availability_zone_id}.#{region}.amazonaws.com", headers: {}, properties: {"backend"=>"S3Express", "authSchemes"=>[{"disableDoubleEncoding"=>true, "name"=>"sigv4-s3express", "signingName"=>"s3express", "signingRegion"=>"#{region}"}]})
103
+ end
104
+ if (s3express_availability_zone_id = Aws::Endpoints::Matchers.substring(bucket, 6, 15, true)) && (s3express_availability_zone_delim = Aws::Endpoints::Matchers.substring(bucket, 15, 17, true)) && Aws::Endpoints::Matchers.string_equals?(s3express_availability_zone_delim, "--")
105
+ if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true)
106
+ return Aws::Endpoints::Endpoint.new(url: "https://#{bucket}.s3express-fips-#{s3express_availability_zone_id}.#{region}.amazonaws.com", headers: {}, properties: {"backend"=>"S3Express", "authSchemes"=>[{"disableDoubleEncoding"=>true, "name"=>"sigv4-s3express", "signingName"=>"s3express", "signingRegion"=>"#{region}"}]})
107
+ end
108
+ return Aws::Endpoints::Endpoint.new(url: "https://#{bucket}.s3express-#{s3express_availability_zone_id}.#{region}.amazonaws.com", headers: {}, properties: {"backend"=>"S3Express", "authSchemes"=>[{"disableDoubleEncoding"=>true, "name"=>"sigv4-s3express", "signingName"=>"s3express", "signingRegion"=>"#{region}"}]})
109
+ end
110
+ raise ArgumentError, "Unrecognized S3Express bucket name format."
111
+ end
112
+ raise ArgumentError, "S3Express bucket name is not a valid virtual hostable name."
113
+ end
114
+ if Aws::Endpoints::Matchers.not(Aws::Endpoints::Matchers.set?(bucket)) && Aws::Endpoints::Matchers.set?(use_s3_express_control_endpoint) && Aws::Endpoints::Matchers.boolean_equals?(use_s3_express_control_endpoint, true)
115
+ if Aws::Endpoints::Matchers.set?(endpoint) && (url = Aws::Endpoints::Matchers.parse_url(endpoint))
116
+ return Aws::Endpoints::Endpoint.new(url: "#{url['scheme']}://#{url['authority']}#{url['path']}", headers: {}, properties: {"backend"=>"S3Express", "authSchemes"=>[{"disableDoubleEncoding"=>true, "name"=>"sigv4", "signingName"=>"s3express", "signingRegion"=>"#{region}"}]})
117
+ end
118
+ if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true)
119
+ return Aws::Endpoints::Endpoint.new(url: "https://s3express-control-fips.#{region}.amazonaws.com", headers: {}, properties: {"backend"=>"S3Express", "authSchemes"=>[{"disableDoubleEncoding"=>true, "name"=>"sigv4", "signingName"=>"s3express", "signingRegion"=>"#{region}"}]})
120
+ end
121
+ return Aws::Endpoints::Endpoint.new(url: "https://s3express-control.#{region}.amazonaws.com", headers: {}, properties: {"backend"=>"S3Express", "authSchemes"=>[{"disableDoubleEncoding"=>true, "name"=>"sigv4", "signingName"=>"s3express", "signingRegion"=>"#{region}"}]})
122
+ end
43
123
  if Aws::Endpoints::Matchers.set?(bucket) && (hardware_type = Aws::Endpoints::Matchers.substring(bucket, 49, 50, true)) && (region_prefix = Aws::Endpoints::Matchers.substring(bucket, 8, 12, true)) && (bucket_alias_suffix = Aws::Endpoints::Matchers.substring(bucket, 0, 7, true)) && (outpost_id = Aws::Endpoints::Matchers.substring(bucket, 32, 49, true)) && (region_partition = Aws::Endpoints::Matchers.aws_partition(region)) && Aws::Endpoints::Matchers.string_equals?(bucket_alias_suffix, "--op-s3")
44
124
  if Aws::Endpoints::Matchers.valid_host_label?(outpost_id, false)
45
125
  if Aws::Endpoints::Matchers.string_equals?(hardware_type, "e")