aws-sdk-s3control 1.39.0 → 1.42.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.
@@ -21,6 +21,14 @@ module Aws::S3Control
21
21
  AccountLevel = Shapes::StructureShape.new(name: 'AccountLevel')
22
22
  ActivityMetrics = Shapes::StructureShape.new(name: 'ActivityMetrics')
23
23
  Alias = Shapes::StringShape.new(name: 'Alias')
24
+ AsyncCreationTimestamp = Shapes::TimestampShape.new(name: 'AsyncCreationTimestamp')
25
+ AsyncErrorDetails = Shapes::StructureShape.new(name: 'AsyncErrorDetails')
26
+ AsyncOperation = Shapes::StructureShape.new(name: 'AsyncOperation')
27
+ AsyncOperationName = Shapes::StringShape.new(name: 'AsyncOperationName')
28
+ AsyncRequestParameters = Shapes::StructureShape.new(name: 'AsyncRequestParameters')
29
+ AsyncRequestStatus = Shapes::StringShape.new(name: 'AsyncRequestStatus')
30
+ AsyncRequestTokenARN = Shapes::StringShape.new(name: 'AsyncRequestTokenARN')
31
+ AsyncResponseDetails = Shapes::StructureShape.new(name: 'AsyncResponseDetails')
24
32
  AwsLambdaTransformation = Shapes::StructureShape.new(name: 'AwsLambdaTransformation')
25
33
  AwsLambdaTransformationPayload = Shapes::StringShape.new(name: 'AwsLambdaTransformationPayload')
26
34
  AwsOrgArn = Shapes::StringShape.new(name: 'AwsOrgArn')
@@ -46,7 +54,11 @@ module Aws::S3Control
46
54
  CreateBucketResult = Shapes::StructureShape.new(name: 'CreateBucketResult')
47
55
  CreateJobRequest = Shapes::StructureShape.new(name: 'CreateJobRequest')
48
56
  CreateJobResult = Shapes::StructureShape.new(name: 'CreateJobResult')
57
+ CreateMultiRegionAccessPointInput = Shapes::StructureShape.new(name: 'CreateMultiRegionAccessPointInput')
58
+ CreateMultiRegionAccessPointRequest = Shapes::StructureShape.new(name: 'CreateMultiRegionAccessPointRequest')
59
+ CreateMultiRegionAccessPointResult = Shapes::StructureShape.new(name: 'CreateMultiRegionAccessPointResult')
49
60
  CreationDate = Shapes::TimestampShape.new(name: 'CreationDate')
61
+ CreationTimestamp = Shapes::TimestampShape.new(name: 'CreationTimestamp')
50
62
  Date = Shapes::TimestampShape.new(name: 'Date')
51
63
  Days = Shapes::IntegerShape.new(name: 'Days')
52
64
  DaysAfterInitiation = Shapes::IntegerShape.new(name: 'DaysAfterInitiation')
@@ -60,13 +72,19 @@ module Aws::S3Control
60
72
  DeleteBucketTaggingRequest = Shapes::StructureShape.new(name: 'DeleteBucketTaggingRequest')
61
73
  DeleteJobTaggingRequest = Shapes::StructureShape.new(name: 'DeleteJobTaggingRequest')
62
74
  DeleteJobTaggingResult = Shapes::StructureShape.new(name: 'DeleteJobTaggingResult')
75
+ DeleteMultiRegionAccessPointInput = Shapes::StructureShape.new(name: 'DeleteMultiRegionAccessPointInput')
76
+ DeleteMultiRegionAccessPointRequest = Shapes::StructureShape.new(name: 'DeleteMultiRegionAccessPointRequest')
77
+ DeleteMultiRegionAccessPointResult = Shapes::StructureShape.new(name: 'DeleteMultiRegionAccessPointResult')
63
78
  DeletePublicAccessBlockRequest = Shapes::StructureShape.new(name: 'DeletePublicAccessBlockRequest')
64
79
  DeleteStorageLensConfigurationRequest = Shapes::StructureShape.new(name: 'DeleteStorageLensConfigurationRequest')
65
80
  DeleteStorageLensConfigurationTaggingRequest = Shapes::StructureShape.new(name: 'DeleteStorageLensConfigurationTaggingRequest')
66
81
  DeleteStorageLensConfigurationTaggingResult = Shapes::StructureShape.new(name: 'DeleteStorageLensConfigurationTaggingResult')
67
82
  DescribeJobRequest = Shapes::StructureShape.new(name: 'DescribeJobRequest')
68
83
  DescribeJobResult = Shapes::StructureShape.new(name: 'DescribeJobResult')
84
+ DescribeMultiRegionAccessPointOperationRequest = Shapes::StructureShape.new(name: 'DescribeMultiRegionAccessPointOperationRequest')
85
+ DescribeMultiRegionAccessPointOperationResult = Shapes::StructureShape.new(name: 'DescribeMultiRegionAccessPointOperationResult')
69
86
  Endpoints = Shapes::MapShape.new(name: 'Endpoints')
87
+ EstablishedMultiRegionAccessPointPolicy = Shapes::StructureShape.new(name: 'EstablishedMultiRegionAccessPointPolicy')
70
88
  ExceptionMessage = Shapes::StringShape.new(name: 'ExceptionMessage')
71
89
  Exclude = Shapes::StructureShape.new(name: 'Exclude')
72
90
  ExpirationStatus = Shapes::StringShape.new(name: 'ExpirationStatus')
@@ -97,6 +115,12 @@ module Aws::S3Control
97
115
  GetBucketTaggingResult = Shapes::StructureShape.new(name: 'GetBucketTaggingResult')
98
116
  GetJobTaggingRequest = Shapes::StructureShape.new(name: 'GetJobTaggingRequest')
99
117
  GetJobTaggingResult = Shapes::StructureShape.new(name: 'GetJobTaggingResult')
118
+ GetMultiRegionAccessPointPolicyRequest = Shapes::StructureShape.new(name: 'GetMultiRegionAccessPointPolicyRequest')
119
+ GetMultiRegionAccessPointPolicyResult = Shapes::StructureShape.new(name: 'GetMultiRegionAccessPointPolicyResult')
120
+ GetMultiRegionAccessPointPolicyStatusRequest = Shapes::StructureShape.new(name: 'GetMultiRegionAccessPointPolicyStatusRequest')
121
+ GetMultiRegionAccessPointPolicyStatusResult = Shapes::StructureShape.new(name: 'GetMultiRegionAccessPointPolicyStatusResult')
122
+ GetMultiRegionAccessPointRequest = Shapes::StructureShape.new(name: 'GetMultiRegionAccessPointRequest')
123
+ GetMultiRegionAccessPointResult = Shapes::StructureShape.new(name: 'GetMultiRegionAccessPointResult')
100
124
  GetPublicAccessBlockOutput = Shapes::StructureShape.new(name: 'GetPublicAccessBlockOutput')
101
125
  GetPublicAccessBlockRequest = Shapes::StructureShape.new(name: 'GetPublicAccessBlockRequest')
102
126
  GetStorageLensConfigurationRequest = Shapes::StructureShape.new(name: 'GetStorageLensConfigurationRequest')
@@ -161,6 +185,8 @@ module Aws::S3Control
161
185
  ListAccessPointsResult = Shapes::StructureShape.new(name: 'ListAccessPointsResult')
162
186
  ListJobsRequest = Shapes::StructureShape.new(name: 'ListJobsRequest')
163
187
  ListJobsResult = Shapes::StructureShape.new(name: 'ListJobsResult')
188
+ ListMultiRegionAccessPointsRequest = Shapes::StructureShape.new(name: 'ListMultiRegionAccessPointsRequest')
189
+ ListMultiRegionAccessPointsResult = Shapes::StructureShape.new(name: 'ListMultiRegionAccessPointsResult')
164
190
  ListRegionalBucketsRequest = Shapes::StructureShape.new(name: 'ListRegionalBucketsRequest')
165
191
  ListRegionalBucketsResult = Shapes::StructureShape.new(name: 'ListRegionalBucketsResult')
166
192
  ListStorageLensConfigurationEntry = Shapes::StructureShape.new(name: 'ListStorageLensConfigurationEntry')
@@ -170,6 +196,16 @@ module Aws::S3Control
170
196
  MaxLength1024String = Shapes::StringShape.new(name: 'MaxLength1024String')
171
197
  MaxResults = Shapes::IntegerShape.new(name: 'MaxResults')
172
198
  MinStorageBytesPercentage = Shapes::FloatShape.new(name: 'MinStorageBytesPercentage')
199
+ MultiRegionAccessPointAlias = Shapes::StringShape.new(name: 'MultiRegionAccessPointAlias')
200
+ MultiRegionAccessPointClientToken = Shapes::StringShape.new(name: 'MultiRegionAccessPointClientToken')
201
+ MultiRegionAccessPointName = Shapes::StringShape.new(name: 'MultiRegionAccessPointName')
202
+ MultiRegionAccessPointPolicyDocument = Shapes::StructureShape.new(name: 'MultiRegionAccessPointPolicyDocument')
203
+ MultiRegionAccessPointRegionalResponse = Shapes::StructureShape.new(name: 'MultiRegionAccessPointRegionalResponse')
204
+ MultiRegionAccessPointRegionalResponseList = Shapes::ListShape.new(name: 'MultiRegionAccessPointRegionalResponseList')
205
+ MultiRegionAccessPointReport = Shapes::StructureShape.new(name: 'MultiRegionAccessPointReport')
206
+ MultiRegionAccessPointReportList = Shapes::ListShape.new(name: 'MultiRegionAccessPointReportList')
207
+ MultiRegionAccessPointStatus = Shapes::StringShape.new(name: 'MultiRegionAccessPointStatus')
208
+ MultiRegionAccessPointsAsyncResponse = Shapes::StructureShape.new(name: 'MultiRegionAccessPointsAsyncResponse')
173
209
  NetworkOrigin = Shapes::StringShape.new(name: 'NetworkOrigin')
174
210
  NoSuchPublicAccessBlockConfiguration = Shapes::StructureShape.new(name: 'NoSuchPublicAccessBlockConfiguration')
175
211
  NoSuchPublicAccessBlockConfigurationMessage = Shapes::StringShape.new(name: 'NoSuchPublicAccessBlockConfigurationMessage')
@@ -203,6 +239,7 @@ module Aws::S3Control
203
239
  Prefix = Shapes::StringShape.new(name: 'Prefix')
204
240
  PrefixLevel = Shapes::StructureShape.new(name: 'PrefixLevel')
205
241
  PrefixLevelStorageMetrics = Shapes::StructureShape.new(name: 'PrefixLevelStorageMetrics')
242
+ ProposedMultiRegionAccessPointPolicy = Shapes::StructureShape.new(name: 'ProposedMultiRegionAccessPointPolicy')
206
243
  PublicAccessBlockConfiguration = Shapes::StructureShape.new(name: 'PublicAccessBlockConfiguration')
207
244
  PublicAccessBlockEnabled = Shapes::BooleanShape.new(name: 'PublicAccessBlockEnabled')
208
245
  PutAccessPointConfigurationForObjectLambdaRequest = Shapes::StructureShape.new(name: 'PutAccessPointConfigurationForObjectLambdaRequest')
@@ -213,10 +250,18 @@ module Aws::S3Control
213
250
  PutBucketTaggingRequest = Shapes::StructureShape.new(name: 'PutBucketTaggingRequest')
214
251
  PutJobTaggingRequest = Shapes::StructureShape.new(name: 'PutJobTaggingRequest')
215
252
  PutJobTaggingResult = Shapes::StructureShape.new(name: 'PutJobTaggingResult')
253
+ PutMultiRegionAccessPointPolicyInput = Shapes::StructureShape.new(name: 'PutMultiRegionAccessPointPolicyInput')
254
+ PutMultiRegionAccessPointPolicyRequest = Shapes::StructureShape.new(name: 'PutMultiRegionAccessPointPolicyRequest')
255
+ PutMultiRegionAccessPointPolicyResult = Shapes::StructureShape.new(name: 'PutMultiRegionAccessPointPolicyResult')
216
256
  PutPublicAccessBlockRequest = Shapes::StructureShape.new(name: 'PutPublicAccessBlockRequest')
217
257
  PutStorageLensConfigurationRequest = Shapes::StructureShape.new(name: 'PutStorageLensConfigurationRequest')
218
258
  PutStorageLensConfigurationTaggingRequest = Shapes::StructureShape.new(name: 'PutStorageLensConfigurationTaggingRequest')
219
259
  PutStorageLensConfigurationTaggingResult = Shapes::StructureShape.new(name: 'PutStorageLensConfigurationTaggingResult')
260
+ Region = Shapes::StructureShape.new(name: 'Region')
261
+ RegionCreationList = Shapes::ListShape.new(name: 'RegionCreationList')
262
+ RegionName = Shapes::StringShape.new(name: 'RegionName')
263
+ RegionReport = Shapes::StructureShape.new(name: 'RegionReport')
264
+ RegionReportList = Shapes::ListShape.new(name: 'RegionReportList')
220
265
  RegionalBucket = Shapes::StructureShape.new(name: 'RegionalBucket')
221
266
  RegionalBucketList = Shapes::ListShape.new(name: 'RegionalBucketList')
222
267
  Regions = Shapes::ListShape.new(name: 'Regions')
@@ -314,6 +359,29 @@ module Aws::S3Control
314
359
  ActivityMetrics.add_member(:is_enabled, Shapes::ShapeRef.new(shape: IsEnabled, location_name: "IsEnabled"))
315
360
  ActivityMetrics.struct_class = Types::ActivityMetrics
316
361
 
362
+ AsyncErrorDetails.add_member(:code, Shapes::ShapeRef.new(shape: MaxLength1024String, location_name: "Code"))
363
+ AsyncErrorDetails.add_member(:message, Shapes::ShapeRef.new(shape: MaxLength1024String, location_name: "Message"))
364
+ AsyncErrorDetails.add_member(:resource, Shapes::ShapeRef.new(shape: MaxLength1024String, location_name: "Resource"))
365
+ AsyncErrorDetails.add_member(:request_id, Shapes::ShapeRef.new(shape: MaxLength1024String, location_name: "RequestId"))
366
+ AsyncErrorDetails.struct_class = Types::AsyncErrorDetails
367
+
368
+ AsyncOperation.add_member(:creation_time, Shapes::ShapeRef.new(shape: AsyncCreationTimestamp, location_name: "CreationTime"))
369
+ AsyncOperation.add_member(:operation, Shapes::ShapeRef.new(shape: AsyncOperationName, location_name: "Operation"))
370
+ AsyncOperation.add_member(:request_token_arn, Shapes::ShapeRef.new(shape: AsyncRequestTokenARN, location_name: "RequestTokenARN"))
371
+ AsyncOperation.add_member(:request_parameters, Shapes::ShapeRef.new(shape: AsyncRequestParameters, location_name: "RequestParameters"))
372
+ AsyncOperation.add_member(:request_status, Shapes::ShapeRef.new(shape: AsyncRequestStatus, location_name: "RequestStatus"))
373
+ AsyncOperation.add_member(:response_details, Shapes::ShapeRef.new(shape: AsyncResponseDetails, location_name: "ResponseDetails"))
374
+ AsyncOperation.struct_class = Types::AsyncOperation
375
+
376
+ AsyncRequestParameters.add_member(:create_multi_region_access_point_request, Shapes::ShapeRef.new(shape: CreateMultiRegionAccessPointInput, location_name: "CreateMultiRegionAccessPointRequest"))
377
+ AsyncRequestParameters.add_member(:delete_multi_region_access_point_request, Shapes::ShapeRef.new(shape: DeleteMultiRegionAccessPointInput, location_name: "DeleteMultiRegionAccessPointRequest"))
378
+ AsyncRequestParameters.add_member(:put_multi_region_access_point_policy_request, Shapes::ShapeRef.new(shape: PutMultiRegionAccessPointPolicyInput, location_name: "PutMultiRegionAccessPointPolicyRequest"))
379
+ AsyncRequestParameters.struct_class = Types::AsyncRequestParameters
380
+
381
+ AsyncResponseDetails.add_member(:multi_region_access_point_details, Shapes::ShapeRef.new(shape: MultiRegionAccessPointsAsyncResponse, location_name: "MultiRegionAccessPointDetails"))
382
+ AsyncResponseDetails.add_member(:error_details, Shapes::ShapeRef.new(shape: AsyncErrorDetails, location_name: "ErrorDetails"))
383
+ AsyncResponseDetails.struct_class = Types::AsyncResponseDetails
384
+
317
385
  AwsLambdaTransformation.add_member(:function_arn, Shapes::ShapeRef.new(shape: FunctionArnString, required: true, location_name: "FunctionArn"))
318
386
  AwsLambdaTransformation.add_member(:function_payload, Shapes::ShapeRef.new(shape: AwsLambdaTransformationPayload, location_name: "FunctionPayload"))
319
387
  AwsLambdaTransformation.struct_class = Types::AwsLambdaTransformation
@@ -386,6 +454,19 @@ module Aws::S3Control
386
454
  CreateJobResult.add_member(:job_id, Shapes::ShapeRef.new(shape: JobId, location_name: "JobId"))
387
455
  CreateJobResult.struct_class = Types::CreateJobResult
388
456
 
457
+ CreateMultiRegionAccessPointInput.add_member(:name, Shapes::ShapeRef.new(shape: MultiRegionAccessPointName, required: true, location_name: "Name"))
458
+ CreateMultiRegionAccessPointInput.add_member(:public_access_block, Shapes::ShapeRef.new(shape: PublicAccessBlockConfiguration, location_name: "PublicAccessBlock"))
459
+ CreateMultiRegionAccessPointInput.add_member(:regions, Shapes::ShapeRef.new(shape: RegionCreationList, required: true, location_name: "Regions"))
460
+ CreateMultiRegionAccessPointInput.struct_class = Types::CreateMultiRegionAccessPointInput
461
+
462
+ CreateMultiRegionAccessPointRequest.add_member(:account_id, Shapes::ShapeRef.new(shape: AccountId, required: true, location: "header", location_name: "x-amz-account-id", metadata: {"hostLabel"=>true, "hostLabelName"=>"AccountId"}))
463
+ CreateMultiRegionAccessPointRequest.add_member(:client_token, Shapes::ShapeRef.new(shape: MultiRegionAccessPointClientToken, required: true, location_name: "ClientToken", metadata: {"idempotencyToken"=>true}))
464
+ CreateMultiRegionAccessPointRequest.add_member(:details, Shapes::ShapeRef.new(shape: CreateMultiRegionAccessPointInput, required: true, location_name: "Details"))
465
+ CreateMultiRegionAccessPointRequest.struct_class = Types::CreateMultiRegionAccessPointRequest
466
+
467
+ CreateMultiRegionAccessPointResult.add_member(:request_token_arn, Shapes::ShapeRef.new(shape: AsyncRequestTokenARN, location_name: "RequestTokenARN"))
468
+ CreateMultiRegionAccessPointResult.struct_class = Types::CreateMultiRegionAccessPointResult
469
+
389
470
  DeleteAccessPointForObjectLambdaRequest.add_member(:account_id, Shapes::ShapeRef.new(shape: AccountId, required: true, location: "header", location_name: "x-amz-account-id", metadata: {"hostLabel"=>true, "hostLabelName"=>"AccountId"}))
390
471
  DeleteAccessPointForObjectLambdaRequest.add_member(:name, Shapes::ShapeRef.new(shape: ObjectLambdaAccessPointName, required: true, location: "uri", location_name: "name"))
391
472
  DeleteAccessPointForObjectLambdaRequest.struct_class = Types::DeleteAccessPointForObjectLambdaRequest
@@ -424,6 +505,17 @@ module Aws::S3Control
424
505
 
425
506
  DeleteJobTaggingResult.struct_class = Types::DeleteJobTaggingResult
426
507
 
508
+ DeleteMultiRegionAccessPointInput.add_member(:name, Shapes::ShapeRef.new(shape: MultiRegionAccessPointName, required: true, location_name: "Name"))
509
+ DeleteMultiRegionAccessPointInput.struct_class = Types::DeleteMultiRegionAccessPointInput
510
+
511
+ DeleteMultiRegionAccessPointRequest.add_member(:account_id, Shapes::ShapeRef.new(shape: AccountId, required: true, location: "header", location_name: "x-amz-account-id", metadata: {"hostLabel"=>true, "hostLabelName"=>"AccountId"}))
512
+ DeleteMultiRegionAccessPointRequest.add_member(:client_token, Shapes::ShapeRef.new(shape: MultiRegionAccessPointClientToken, required: true, location_name: "ClientToken", metadata: {"idempotencyToken"=>true}))
513
+ DeleteMultiRegionAccessPointRequest.add_member(:details, Shapes::ShapeRef.new(shape: DeleteMultiRegionAccessPointInput, required: true, location_name: "Details"))
514
+ DeleteMultiRegionAccessPointRequest.struct_class = Types::DeleteMultiRegionAccessPointRequest
515
+
516
+ DeleteMultiRegionAccessPointResult.add_member(:request_token_arn, Shapes::ShapeRef.new(shape: AsyncRequestTokenARN, location_name: "RequestTokenARN"))
517
+ DeleteMultiRegionAccessPointResult.struct_class = Types::DeleteMultiRegionAccessPointResult
518
+
427
519
  DeletePublicAccessBlockRequest.add_member(:account_id, Shapes::ShapeRef.new(shape: AccountId, required: true, location: "header", location_name: "x-amz-account-id", metadata: {"hostLabel"=>true, "hostLabelName"=>"AccountId"}))
428
520
  DeletePublicAccessBlockRequest.struct_class = Types::DeletePublicAccessBlockRequest
429
521
 
@@ -444,9 +536,19 @@ module Aws::S3Control
444
536
  DescribeJobResult.add_member(:job, Shapes::ShapeRef.new(shape: JobDescriptor, location_name: "Job"))
445
537
  DescribeJobResult.struct_class = Types::DescribeJobResult
446
538
 
539
+ DescribeMultiRegionAccessPointOperationRequest.add_member(:account_id, Shapes::ShapeRef.new(shape: AccountId, required: true, location: "header", location_name: "x-amz-account-id", metadata: {"hostLabel"=>true, "hostLabelName"=>"AccountId"}))
540
+ DescribeMultiRegionAccessPointOperationRequest.add_member(:request_token_arn, Shapes::ShapeRef.new(shape: AsyncRequestTokenARN, required: true, location: "uri", location_name: "request_token"))
541
+ DescribeMultiRegionAccessPointOperationRequest.struct_class = Types::DescribeMultiRegionAccessPointOperationRequest
542
+
543
+ DescribeMultiRegionAccessPointOperationResult.add_member(:async_operation, Shapes::ShapeRef.new(shape: AsyncOperation, location_name: "AsyncOperation"))
544
+ DescribeMultiRegionAccessPointOperationResult.struct_class = Types::DescribeMultiRegionAccessPointOperationResult
545
+
447
546
  Endpoints.key = Shapes::ShapeRef.new(shape: NonEmptyMaxLength64String)
448
547
  Endpoints.value = Shapes::ShapeRef.new(shape: NonEmptyMaxLength1024String)
449
548
 
549
+ EstablishedMultiRegionAccessPointPolicy.add_member(:policy, Shapes::ShapeRef.new(shape: Policy, location_name: "Policy"))
550
+ EstablishedMultiRegionAccessPointPolicy.struct_class = Types::EstablishedMultiRegionAccessPointPolicy
551
+
450
552
  Exclude.add_member(:buckets, Shapes::ShapeRef.new(shape: Buckets, location_name: "Buckets"))
451
553
  Exclude.add_member(:regions, Shapes::ShapeRef.new(shape: Regions, location_name: "Regions"))
452
554
  Exclude.struct_class = Types::Exclude
@@ -547,6 +649,27 @@ module Aws::S3Control
547
649
  GetJobTaggingResult.add_member(:tags, Shapes::ShapeRef.new(shape: S3TagSet, location_name: "Tags"))
548
650
  GetJobTaggingResult.struct_class = Types::GetJobTaggingResult
549
651
 
652
+ GetMultiRegionAccessPointPolicyRequest.add_member(:account_id, Shapes::ShapeRef.new(shape: AccountId, required: true, location: "header", location_name: "x-amz-account-id", metadata: {"hostLabel"=>true, "hostLabelName"=>"AccountId"}))
653
+ GetMultiRegionAccessPointPolicyRequest.add_member(:name, Shapes::ShapeRef.new(shape: MultiRegionAccessPointName, required: true, location: "uri", location_name: "name"))
654
+ GetMultiRegionAccessPointPolicyRequest.struct_class = Types::GetMultiRegionAccessPointPolicyRequest
655
+
656
+ GetMultiRegionAccessPointPolicyResult.add_member(:policy, Shapes::ShapeRef.new(shape: MultiRegionAccessPointPolicyDocument, location_name: "Policy"))
657
+ GetMultiRegionAccessPointPolicyResult.struct_class = Types::GetMultiRegionAccessPointPolicyResult
658
+
659
+ GetMultiRegionAccessPointPolicyStatusRequest.add_member(:account_id, Shapes::ShapeRef.new(shape: AccountId, required: true, location: "header", location_name: "x-amz-account-id", metadata: {"hostLabel"=>true, "hostLabelName"=>"AccountId"}))
660
+ GetMultiRegionAccessPointPolicyStatusRequest.add_member(:name, Shapes::ShapeRef.new(shape: MultiRegionAccessPointName, required: true, location: "uri", location_name: "name"))
661
+ GetMultiRegionAccessPointPolicyStatusRequest.struct_class = Types::GetMultiRegionAccessPointPolicyStatusRequest
662
+
663
+ GetMultiRegionAccessPointPolicyStatusResult.add_member(:established, Shapes::ShapeRef.new(shape: PolicyStatus, location_name: "Established"))
664
+ GetMultiRegionAccessPointPolicyStatusResult.struct_class = Types::GetMultiRegionAccessPointPolicyStatusResult
665
+
666
+ GetMultiRegionAccessPointRequest.add_member(:account_id, Shapes::ShapeRef.new(shape: AccountId, required: true, location: "header", location_name: "x-amz-account-id", metadata: {"hostLabel"=>true, "hostLabelName"=>"AccountId"}))
667
+ GetMultiRegionAccessPointRequest.add_member(:name, Shapes::ShapeRef.new(shape: MultiRegionAccessPointName, required: true, location: "uri", location_name: "name"))
668
+ GetMultiRegionAccessPointRequest.struct_class = Types::GetMultiRegionAccessPointRequest
669
+
670
+ GetMultiRegionAccessPointResult.add_member(:access_point, Shapes::ShapeRef.new(shape: MultiRegionAccessPointReport, location_name: "AccessPoint"))
671
+ GetMultiRegionAccessPointResult.struct_class = Types::GetMultiRegionAccessPointResult
672
+
550
673
  GetPublicAccessBlockOutput.add_member(:public_access_block_configuration, Shapes::ShapeRef.new(shape: PublicAccessBlockConfiguration, location_name: "PublicAccessBlockConfiguration"))
551
674
  GetPublicAccessBlockOutput.struct_class = Types::GetPublicAccessBlockOutput
552
675
  GetPublicAccessBlockOutput[:payload] = :public_access_block_configuration
@@ -727,6 +850,15 @@ module Aws::S3Control
727
850
  ListJobsResult.add_member(:jobs, Shapes::ShapeRef.new(shape: JobListDescriptorList, location_name: "Jobs"))
728
851
  ListJobsResult.struct_class = Types::ListJobsResult
729
852
 
853
+ ListMultiRegionAccessPointsRequest.add_member(:account_id, Shapes::ShapeRef.new(shape: AccountId, required: true, location: "header", location_name: "x-amz-account-id", metadata: {"hostLabel"=>true, "hostLabelName"=>"AccountId"}))
854
+ ListMultiRegionAccessPointsRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: NonEmptyMaxLength1024String, location: "querystring", location_name: "nextToken"))
855
+ ListMultiRegionAccessPointsRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: MaxResults, location: "querystring", location_name: "maxResults"))
856
+ ListMultiRegionAccessPointsRequest.struct_class = Types::ListMultiRegionAccessPointsRequest
857
+
858
+ ListMultiRegionAccessPointsResult.add_member(:access_points, Shapes::ShapeRef.new(shape: MultiRegionAccessPointReportList, location_name: "AccessPoints"))
859
+ ListMultiRegionAccessPointsResult.add_member(:next_token, Shapes::ShapeRef.new(shape: NonEmptyMaxLength1024String, location_name: "NextToken"))
860
+ ListMultiRegionAccessPointsResult.struct_class = Types::ListMultiRegionAccessPointsResult
861
+
730
862
  ListRegionalBucketsRequest.add_member(:account_id, Shapes::ShapeRef.new(shape: AccountId, required: true, location: "header", location_name: "x-amz-account-id", metadata: {"hostLabel"=>true, "hostLabelName"=>"AccountId"}))
731
863
  ListRegionalBucketsRequest.add_member(:next_token, Shapes::ShapeRef.new(shape: NonEmptyMaxLength1024String, location: "querystring", location_name: "nextToken"))
732
864
  ListRegionalBucketsRequest.add_member(:max_results, Shapes::ShapeRef.new(shape: MaxResults, location: "querystring", location_name: "maxResults"))
@@ -751,6 +883,29 @@ module Aws::S3Control
751
883
  ListStorageLensConfigurationsResult.add_member(:storage_lens_configuration_list, Shapes::ShapeRef.new(shape: StorageLensConfigurationList, location_name: "StorageLensConfigurationList"))
752
884
  ListStorageLensConfigurationsResult.struct_class = Types::ListStorageLensConfigurationsResult
753
885
 
886
+ MultiRegionAccessPointPolicyDocument.add_member(:established, Shapes::ShapeRef.new(shape: EstablishedMultiRegionAccessPointPolicy, location_name: "Established"))
887
+ MultiRegionAccessPointPolicyDocument.add_member(:proposed, Shapes::ShapeRef.new(shape: ProposedMultiRegionAccessPointPolicy, location_name: "Proposed"))
888
+ MultiRegionAccessPointPolicyDocument.struct_class = Types::MultiRegionAccessPointPolicyDocument
889
+
890
+ MultiRegionAccessPointRegionalResponse.add_member(:name, Shapes::ShapeRef.new(shape: RegionName, location_name: "Name"))
891
+ MultiRegionAccessPointRegionalResponse.add_member(:request_status, Shapes::ShapeRef.new(shape: AsyncRequestStatus, location_name: "RequestStatus"))
892
+ MultiRegionAccessPointRegionalResponse.struct_class = Types::MultiRegionAccessPointRegionalResponse
893
+
894
+ MultiRegionAccessPointRegionalResponseList.member = Shapes::ShapeRef.new(shape: MultiRegionAccessPointRegionalResponse, location_name: "Region")
895
+
896
+ MultiRegionAccessPointReport.add_member(:name, Shapes::ShapeRef.new(shape: MultiRegionAccessPointName, location_name: "Name"))
897
+ MultiRegionAccessPointReport.add_member(:alias, Shapes::ShapeRef.new(shape: MultiRegionAccessPointAlias, location_name: "Alias"))
898
+ MultiRegionAccessPointReport.add_member(:created_at, Shapes::ShapeRef.new(shape: CreationTimestamp, location_name: "CreatedAt"))
899
+ MultiRegionAccessPointReport.add_member(:public_access_block, Shapes::ShapeRef.new(shape: PublicAccessBlockConfiguration, location_name: "PublicAccessBlock"))
900
+ MultiRegionAccessPointReport.add_member(:status, Shapes::ShapeRef.new(shape: MultiRegionAccessPointStatus, location_name: "Status"))
901
+ MultiRegionAccessPointReport.add_member(:regions, Shapes::ShapeRef.new(shape: RegionReportList, location_name: "Regions"))
902
+ MultiRegionAccessPointReport.struct_class = Types::MultiRegionAccessPointReport
903
+
904
+ MultiRegionAccessPointReportList.member = Shapes::ShapeRef.new(shape: MultiRegionAccessPointReport, location_name: "AccessPoint")
905
+
906
+ MultiRegionAccessPointsAsyncResponse.add_member(:regions, Shapes::ShapeRef.new(shape: MultiRegionAccessPointRegionalResponseList, location_name: "Regions"))
907
+ MultiRegionAccessPointsAsyncResponse.struct_class = Types::MultiRegionAccessPointsAsyncResponse
908
+
754
909
  NoSuchPublicAccessBlockConfiguration.add_member(:message, Shapes::ShapeRef.new(shape: NoSuchPublicAccessBlockConfigurationMessage, location_name: "Message"))
755
910
  NoSuchPublicAccessBlockConfiguration.struct_class = Types::NoSuchPublicAccessBlockConfiguration
756
911
 
@@ -804,6 +959,9 @@ module Aws::S3Control
804
959
  PrefixLevelStorageMetrics.add_member(:selection_criteria, Shapes::ShapeRef.new(shape: SelectionCriteria, location_name: "SelectionCriteria"))
805
960
  PrefixLevelStorageMetrics.struct_class = Types::PrefixLevelStorageMetrics
806
961
 
962
+ ProposedMultiRegionAccessPointPolicy.add_member(:policy, Shapes::ShapeRef.new(shape: Policy, location_name: "Policy"))
963
+ ProposedMultiRegionAccessPointPolicy.struct_class = Types::ProposedMultiRegionAccessPointPolicy
964
+
807
965
  PublicAccessBlockConfiguration.add_member(:block_public_acls, Shapes::ShapeRef.new(shape: Setting, location_name: "BlockPublicAcls"))
808
966
  PublicAccessBlockConfiguration.add_member(:ignore_public_acls, Shapes::ShapeRef.new(shape: Setting, location_name: "IgnorePublicAcls"))
809
967
  PublicAccessBlockConfiguration.add_member(:block_public_policy, Shapes::ShapeRef.new(shape: Setting, location_name: "BlockPublicPolicy"))
@@ -852,6 +1010,18 @@ module Aws::S3Control
852
1010
 
853
1011
  PutJobTaggingResult.struct_class = Types::PutJobTaggingResult
854
1012
 
1013
+ PutMultiRegionAccessPointPolicyInput.add_member(:name, Shapes::ShapeRef.new(shape: MultiRegionAccessPointName, required: true, location_name: "Name"))
1014
+ PutMultiRegionAccessPointPolicyInput.add_member(:policy, Shapes::ShapeRef.new(shape: Policy, required: true, location_name: "Policy"))
1015
+ PutMultiRegionAccessPointPolicyInput.struct_class = Types::PutMultiRegionAccessPointPolicyInput
1016
+
1017
+ PutMultiRegionAccessPointPolicyRequest.add_member(:account_id, Shapes::ShapeRef.new(shape: AccountId, required: true, location: "header", location_name: "x-amz-account-id", metadata: {"hostLabel"=>true, "hostLabelName"=>"AccountId"}))
1018
+ PutMultiRegionAccessPointPolicyRequest.add_member(:client_token, Shapes::ShapeRef.new(shape: MultiRegionAccessPointClientToken, required: true, location_name: "ClientToken", metadata: {"idempotencyToken"=>true}))
1019
+ PutMultiRegionAccessPointPolicyRequest.add_member(:details, Shapes::ShapeRef.new(shape: PutMultiRegionAccessPointPolicyInput, required: true, location_name: "Details"))
1020
+ PutMultiRegionAccessPointPolicyRequest.struct_class = Types::PutMultiRegionAccessPointPolicyRequest
1021
+
1022
+ PutMultiRegionAccessPointPolicyResult.add_member(:request_token_arn, Shapes::ShapeRef.new(shape: AsyncRequestTokenARN, location_name: "RequestTokenARN"))
1023
+ PutMultiRegionAccessPointPolicyResult.struct_class = Types::PutMultiRegionAccessPointPolicyResult
1024
+
855
1025
  PutPublicAccessBlockRequest.add_member(:public_access_block_configuration, Shapes::ShapeRef.new(shape: PublicAccessBlockConfiguration, required: true, location_name: "PublicAccessBlockConfiguration", metadata: {"xmlNamespace"=>{"uri"=>"http://awss3control.amazonaws.com/doc/2018-08-20/"}}))
856
1026
  PutPublicAccessBlockRequest.add_member(:account_id, Shapes::ShapeRef.new(shape: AccountId, required: true, location: "header", location_name: "x-amz-account-id", metadata: {"hostLabel"=>true, "hostLabelName"=>"AccountId"}))
857
1027
  PutPublicAccessBlockRequest.struct_class = Types::PutPublicAccessBlockRequest
@@ -871,6 +1041,17 @@ module Aws::S3Control
871
1041
 
872
1042
  PutStorageLensConfigurationTaggingResult.struct_class = Types::PutStorageLensConfigurationTaggingResult
873
1043
 
1044
+ Region.add_member(:bucket, Shapes::ShapeRef.new(shape: BucketName, required: true, location_name: "Bucket"))
1045
+ Region.struct_class = Types::Region
1046
+
1047
+ RegionCreationList.member = Shapes::ShapeRef.new(shape: Region, location_name: "Region")
1048
+
1049
+ RegionReport.add_member(:bucket, Shapes::ShapeRef.new(shape: BucketName, location_name: "Bucket"))
1050
+ RegionReport.add_member(:region, Shapes::ShapeRef.new(shape: RegionName, location_name: "Region"))
1051
+ RegionReport.struct_class = Types::RegionReport
1052
+
1053
+ RegionReportList.member = Shapes::ShapeRef.new(shape: RegionReport, location_name: "Region")
1054
+
874
1055
  RegionalBucket.add_member(:bucket, Shapes::ShapeRef.new(shape: BucketName, required: true, location_name: "Bucket"))
875
1056
  RegionalBucket.add_member(:bucket_arn, Shapes::ShapeRef.new(shape: S3RegionalBucketArn, location_name: "BucketArn"))
876
1057
  RegionalBucket.add_member(:public_access_block_enabled, Shapes::ShapeRef.new(shape: PublicAccessBlockEnabled, required: true, location_name: "PublicAccessBlockEnabled"))
@@ -1137,6 +1318,23 @@ module Aws::S3Control
1137
1318
  o.errors << Shapes::ShapeRef.new(shape: InternalServiceException)
1138
1319
  end)
1139
1320
 
1321
+ api.add_operation(:create_multi_region_access_point, Seahorse::Model::Operation.new.tap do |o|
1322
+ o.name = "CreateMultiRegionAccessPoint"
1323
+ o.http_method = "POST"
1324
+ o.http_request_uri = "/v20180820/async-requests/mrap/create"
1325
+ o.http_checksum_required = true
1326
+ o.endpoint_pattern = {
1327
+ "hostPrefix" => "{AccountId}.",
1328
+ }
1329
+ o.input = Shapes::ShapeRef.new(shape: CreateMultiRegionAccessPointRequest,
1330
+ location_name: "CreateMultiRegionAccessPointRequest",
1331
+ metadata: {
1332
+ "xmlNamespace" => {"uri"=>"http://awss3control.amazonaws.com/doc/2018-08-20/"}
1333
+ }
1334
+ )
1335
+ o.output = Shapes::ShapeRef.new(shape: CreateMultiRegionAccessPointResult)
1336
+ end)
1337
+
1140
1338
  api.add_operation(:delete_access_point, Seahorse::Model::Operation.new.tap do |o|
1141
1339
  o.name = "DeleteAccessPoint"
1142
1340
  o.http_method = "DELETE"
@@ -1239,6 +1437,23 @@ module Aws::S3Control
1239
1437
  o.errors << Shapes::ShapeRef.new(shape: NotFoundException)
1240
1438
  end)
1241
1439
 
1440
+ api.add_operation(:delete_multi_region_access_point, Seahorse::Model::Operation.new.tap do |o|
1441
+ o.name = "DeleteMultiRegionAccessPoint"
1442
+ o.http_method = "POST"
1443
+ o.http_request_uri = "/v20180820/async-requests/mrap/delete"
1444
+ o.http_checksum_required = true
1445
+ o.endpoint_pattern = {
1446
+ "hostPrefix" => "{AccountId}.",
1447
+ }
1448
+ o.input = Shapes::ShapeRef.new(shape: DeleteMultiRegionAccessPointRequest,
1449
+ location_name: "DeleteMultiRegionAccessPointRequest",
1450
+ metadata: {
1451
+ "xmlNamespace" => {"uri"=>"http://awss3control.amazonaws.com/doc/2018-08-20/"}
1452
+ }
1453
+ )
1454
+ o.output = Shapes::ShapeRef.new(shape: DeleteMultiRegionAccessPointResult)
1455
+ end)
1456
+
1242
1457
  api.add_operation(:delete_public_access_block, Seahorse::Model::Operation.new.tap do |o|
1243
1458
  o.name = "DeletePublicAccessBlock"
1244
1459
  o.http_method = "DELETE"
@@ -1287,6 +1502,18 @@ module Aws::S3Control
1287
1502
  o.errors << Shapes::ShapeRef.new(shape: InternalServiceException)
1288
1503
  end)
1289
1504
 
1505
+ api.add_operation(:describe_multi_region_access_point_operation, Seahorse::Model::Operation.new.tap do |o|
1506
+ o.name = "DescribeMultiRegionAccessPointOperation"
1507
+ o.http_method = "GET"
1508
+ o.http_request_uri = "/v20180820/async-requests/mrap/{request_token+}"
1509
+ o.http_checksum_required = true
1510
+ o.endpoint_pattern = {
1511
+ "hostPrefix" => "{AccountId}.",
1512
+ }
1513
+ o.input = Shapes::ShapeRef.new(shape: DescribeMultiRegionAccessPointOperationRequest)
1514
+ o.output = Shapes::ShapeRef.new(shape: DescribeMultiRegionAccessPointOperationResult)
1515
+ end)
1516
+
1290
1517
  api.add_operation(:get_access_point, Seahorse::Model::Operation.new.tap do |o|
1291
1518
  o.name = "GetAccessPoint"
1292
1519
  o.http_method = "GET"
@@ -1422,6 +1649,42 @@ module Aws::S3Control
1422
1649
  o.errors << Shapes::ShapeRef.new(shape: NotFoundException)
1423
1650
  end)
1424
1651
 
1652
+ api.add_operation(:get_multi_region_access_point, Seahorse::Model::Operation.new.tap do |o|
1653
+ o.name = "GetMultiRegionAccessPoint"
1654
+ o.http_method = "GET"
1655
+ o.http_request_uri = "/v20180820/mrap/instances/{name}"
1656
+ o.http_checksum_required = true
1657
+ o.endpoint_pattern = {
1658
+ "hostPrefix" => "{AccountId}.",
1659
+ }
1660
+ o.input = Shapes::ShapeRef.new(shape: GetMultiRegionAccessPointRequest)
1661
+ o.output = Shapes::ShapeRef.new(shape: GetMultiRegionAccessPointResult)
1662
+ end)
1663
+
1664
+ api.add_operation(:get_multi_region_access_point_policy, Seahorse::Model::Operation.new.tap do |o|
1665
+ o.name = "GetMultiRegionAccessPointPolicy"
1666
+ o.http_method = "GET"
1667
+ o.http_request_uri = "/v20180820/mrap/instances/{name}/policy"
1668
+ o.http_checksum_required = true
1669
+ o.endpoint_pattern = {
1670
+ "hostPrefix" => "{AccountId}.",
1671
+ }
1672
+ o.input = Shapes::ShapeRef.new(shape: GetMultiRegionAccessPointPolicyRequest)
1673
+ o.output = Shapes::ShapeRef.new(shape: GetMultiRegionAccessPointPolicyResult)
1674
+ end)
1675
+
1676
+ api.add_operation(:get_multi_region_access_point_policy_status, Seahorse::Model::Operation.new.tap do |o|
1677
+ o.name = "GetMultiRegionAccessPointPolicyStatus"
1678
+ o.http_method = "GET"
1679
+ o.http_request_uri = "/v20180820/mrap/instances/{name}/policystatus"
1680
+ o.http_checksum_required = true
1681
+ o.endpoint_pattern = {
1682
+ "hostPrefix" => "{AccountId}.",
1683
+ }
1684
+ o.input = Shapes::ShapeRef.new(shape: GetMultiRegionAccessPointPolicyStatusRequest)
1685
+ o.output = Shapes::ShapeRef.new(shape: GetMultiRegionAccessPointPolicyStatusResult)
1686
+ end)
1687
+
1425
1688
  api.add_operation(:get_public_access_block, Seahorse::Model::Operation.new.tap do |o|
1426
1689
  o.name = "GetPublicAccessBlock"
1427
1690
  o.http_method = "GET"
@@ -1510,6 +1773,24 @@ module Aws::S3Control
1510
1773
  )
1511
1774
  end)
1512
1775
 
1776
+ api.add_operation(:list_multi_region_access_points, Seahorse::Model::Operation.new.tap do |o|
1777
+ o.name = "ListMultiRegionAccessPoints"
1778
+ o.http_method = "GET"
1779
+ o.http_request_uri = "/v20180820/mrap/instances"
1780
+ o.http_checksum_required = true
1781
+ o.endpoint_pattern = {
1782
+ "hostPrefix" => "{AccountId}.",
1783
+ }
1784
+ o.input = Shapes::ShapeRef.new(shape: ListMultiRegionAccessPointsRequest)
1785
+ o.output = Shapes::ShapeRef.new(shape: ListMultiRegionAccessPointsResult)
1786
+ o[:pager] = Aws::Pager.new(
1787
+ limit_key: "max_results",
1788
+ tokens: {
1789
+ "next_token" => "next_token"
1790
+ }
1791
+ )
1792
+ end)
1793
+
1513
1794
  api.add_operation(:list_regional_buckets, Seahorse::Model::Operation.new.tap do |o|
1514
1795
  o.name = "ListRegionalBuckets"
1515
1796
  o.http_method = "GET"
@@ -1652,6 +1933,23 @@ module Aws::S3Control
1652
1933
  o.errors << Shapes::ShapeRef.new(shape: TooManyTagsException)
1653
1934
  end)
1654
1935
 
1936
+ api.add_operation(:put_multi_region_access_point_policy, Seahorse::Model::Operation.new.tap do |o|
1937
+ o.name = "PutMultiRegionAccessPointPolicy"
1938
+ o.http_method = "POST"
1939
+ o.http_request_uri = "/v20180820/async-requests/mrap/put-policy"
1940
+ o.http_checksum_required = true
1941
+ o.endpoint_pattern = {
1942
+ "hostPrefix" => "{AccountId}.",
1943
+ }
1944
+ o.input = Shapes::ShapeRef.new(shape: PutMultiRegionAccessPointPolicyRequest,
1945
+ location_name: "PutMultiRegionAccessPointPolicyRequest",
1946
+ metadata: {
1947
+ "xmlNamespace" => {"uri"=>"http://awss3control.amazonaws.com/doc/2018-08-20/"}
1948
+ }
1949
+ )
1950
+ o.output = Shapes::ShapeRef.new(shape: PutMultiRegionAccessPointPolicyResult)
1951
+ end)
1952
+
1655
1953
  api.add_operation(:put_public_access_block, Seahorse::Model::Operation.new.tap do |o|
1656
1954
  o.name = "PutPublicAccessBlock"
1657
1955
  o.http_method = "PUT"
@@ -39,6 +39,7 @@ client's region instead.
39
39
  context.http_request.endpoint,
40
40
  context.metadata[:s3_arn][:arn],
41
41
  context.metadata[:s3_arn][:resolved_region],
42
+ context.metadata[:s3_arn][:fips],
42
43
  context.metadata[:s3_arn][:dualstack],
43
44
  # if regional_endpoint is false, a custom endpoint was provided
44
45
  # in this case, we want to prefix the endpoint using the ARN
@@ -78,6 +79,7 @@ client's region instead.
78
79
  context.metadata[:s3_arn] = {
79
80
  arn: arn,
80
81
  resolved_region: resolved_region,
82
+ fips: context.config.use_fips_endpoint,
81
83
  dualstack: extract_dualstack_config!(context)
82
84
  }
83
85
  end
@@ -121,8 +123,8 @@ client's region instead.
121
123
  def validate_config!(context, arn)
122
124
  if !arn.support_dualstack? && context[:use_dualstack_endpoint]
123
125
  raise ArgumentError,
124
- 'Cannot provide an Outpost Access Point ARN when '\
125
- '`:use_dualstack_endpoint` is set to true.'
126
+ 'Cannot provide an Outpost Access Point or Bucket ARN '\
127
+ 'when `:use_dualstack_endpoint` is set to true.'
126
128
  end
127
129
  end
128
130
 
@@ -165,9 +167,9 @@ client's region instead.
165
167
  end
166
168
 
167
169
  # @api private
168
- def resolve_url!(url, arn, region, dualstack = false, has_custom_endpoint = false)
170
+ def resolve_url!(url, arn, region, fips = false, dualstack = false, has_custom_endpoint = false)
169
171
  custom_endpoint = url.host if has_custom_endpoint
170
- url.host = arn.host_url(region, dualstack, custom_endpoint)
172
+ url.host = arn.host_url(region, fips, dualstack, custom_endpoint)
171
173
  url
172
174
  end
173
175
 
@@ -189,35 +191,13 @@ client's region instead.
189
191
  end
190
192
 
191
193
  def validate_region_config!(arn, region, use_arn_region)
192
- fips = arn.support_fips?
193
-
194
- # s3-external-1 is specific just to s3 and not part of partitions
195
- # aws-global is a partition region
196
- unless arn.partition == 'aws' &&
197
- (region == 's3-external-1' || region == 'aws-global')
198
- if !fips && arn.region.include?('fips')
199
- raise ArgumentError,
200
- 'FIPS region ARNs are not supported for this type of ARN.'
201
- end
202
-
203
- if !fips && !use_arn_region && region.include?('fips')
204
- raise ArgumentError,
205
- 'FIPS client regions are not supported for this type of '\
206
- 'ARN without `:s3_use_arn_region`.'
207
- end
208
-
209
- # if it's a fips region, attempt to normalize it
210
- if fips || use_arn_region
211
- region = region.gsub('fips-', '').gsub('-fips', '')
212
- end
213
- if use_arn_region &&
214
- !Aws::Partitions.partition(arn.partition).region?(region)
215
- raise Aws::Errors::InvalidARNPartitionError
216
- end
194
+ if use_arn_region &&
195
+ !Aws::Partitions.partition(arn.partition).region?(region)
196
+ raise Aws::Errors::InvalidARNPartitionError
197
+ end
217
198
 
218
- if !use_arn_region && region != arn.region
219
- raise Aws::Errors::InvalidARNRegionError
220
- end
199
+ if !use_arn_region && region != arn.region
200
+ raise Aws::Errors::InvalidARNRegionError
221
201
  end
222
202
  end
223
203
  end
@@ -5,15 +5,6 @@ module Aws
5
5
  module Plugins
6
6
  # @api private
7
7
  class Dualstack < Seahorse::Client::Plugin
8
-
9
- option(:use_dualstack_endpoint,
10
- default: false,
11
- doc_type: 'Boolean',
12
- docstring: <<-DOCS)
13
- When set to `true`, IPv6-compatible bucket endpoints will be used
14
- for all operations.
15
- DOCS
16
-
17
8
  def add_handlers(handlers, config)
18
9
  handlers.add(OptionHandler, step: :initialize)
19
10
  handlers.add(DualstackHandler, step: :build, priority: 11)
@@ -40,23 +31,22 @@ for all operations.
40
31
  # @api private
41
32
  class DualstackHandler < Seahorse::Client::Handler
42
33
  def call(context)
43
- if context.config.regional_endpoint && context[:use_dualstack_endpoint]
44
- apply_dualstack_endpoint(context)
34
+ # if it's a regional endpoint and not an ARN, then construct the
35
+ # endpoint. regional endpoint plugin uses the dualstack config
36
+ if context.config.regional_endpoint && !context.metadata[:s3_arn]
37
+ endpoint = Aws::Partitions::EndpointProvider.resolve(
38
+ context.config.region,
39
+ 's3-control',
40
+ 'regional',
41
+ {
42
+ dualstack: context[:use_dualstack_endpoint],
43
+ fips: context.config.use_fips_endpoint
44
+ }
45
+ )
46
+ context.http_request.endpoint = URI.parse(endpoint)
45
47
  end
46
48
  @handler.call(context)
47
49
  end
48
-
49
- private
50
- def apply_dualstack_endpoint(context)
51
- region = context.config.region
52
- dns_suffix = Aws::Partitions::EndpointProvider.dns_suffix_for(region)
53
- host = "s3-control.dualstack.#{region}.#{dns_suffix}"
54
- endpoint = URI.parse(context.http_request.endpoint.to_s)
55
- endpoint.scheme = context.http_request.endpoint.scheme
56
- endpoint.port = context.http_request.endpoint.port
57
- endpoint.host = host
58
- context.http_request.endpoint = endpoint.to_s
59
- end
60
50
  end
61
51
 
62
52
  end
@@ -24,7 +24,7 @@ module Aws
24
24
  option(:sigv4_region) do |cfg|
25
25
  raise Aws::Errors::MissingRegionError if cfg.region.nil?
26
26
 
27
- Aws::Partitions::EndpointProvider.signing_region(cfg.region, 's3')
27
+ Aws::Partitions::EndpointProvider.signing_region(cfg.region, 's3-control')
28
28
  end
29
29
 
30
30
  def add_handlers(handlers, _cfg)
@@ -54,8 +54,9 @@ module Aws
54
54
  # outpost operations should go to the outposts endpoint only if
55
55
  # it's not a custom endpoint. the ARN class changes this for ARNs
56
56
  if context.config.regional_endpoint
57
+ fips = context.config.use_fips_endpoint
57
58
  context.http_request.endpoint.host =
58
- "s3-outposts.#{context.config.region}.amazonaws.com"
59
+ "s3-outposts#{'-fips' if fips}.#{context.config.region}.amazonaws.com"
59
60
  end
60
61
  S3ControlSigner.build_v4_signer(
61
62
  service: 's3-outposts',