Adds a new 'S3-Compatible Storage' provider that works with any
S3-API-compatible object storage service, including MinIO, Ceph,
Cloudflare R2, Backblaze B2, and others.
Changes:
- New provider class: classes/providers/storage/s3-compatible-provider.php
- Provider key: s3compatible
- Reads user-configured endpoint URL from settings
- Uses path-style URL access (required by most S3-compatible services)
- Supports credentials via AS3CF_S3COMPAT_ACCESS_KEY_ID /
AS3CF_S3COMPAT_SECRET_ACCESS_KEY wp-config.php constants
- Disables AWS-specific features (Block Public Access, Object Ownership)
- New provider SVG icons (s3compatible.svg, -link.svg, -round.svg)
- Registered provider in main plugin class with endpoint setting support
- Updated StorageProviderSubPage to show endpoint URL input for S3-compatible
- Built pro settings bundle with rollup (Svelte 4.2.19)
- Added package.json and updated rollup.config.mjs for pro-only builds
7 lines
169 KiB
PHP
7 lines
169 KiB
PHP
<?php
|
|
|
|
namespace DeliciousBrains\WP_Offload_Media\Aws3;
|
|
|
|
// This file was auto-generated from sdk-root/src/data/s3/2006-03-01/endpoint-tests-1.json
|
|
return ['testCases' => [['documentation' => 'region is not a valid DNS-suffix', 'expect' => ['error' => 'Invalid region: region was not a valid DNS name.'], 'params' => ['Region' => 'a b', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false]], ['documentation' => 'Invalid access point ARN: Not S3', 'expect' => ['error' => 'Invalid ARN: The ARN was not for the S3 service, found: not-s3'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:not-s3:us-west-2:123456789012:accesspoint:myendpoint', 'Key' => 'key']]], 'params' => ['Region' => 'us-east-1', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'Bucket' => 'arn:aws:not-s3:us-west-2:123456789012:accesspoint:myendpoint']], ['documentation' => 'Invalid access point ARN: invalid resource', 'expect' => ['error' => 'Invalid ARN: The ARN may only contain a single resource component after `accesspoint`.'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3:us-west-2:123456789012:accesspoint:myendpoint:more-data', 'Key' => 'key']]], 'params' => ['Region' => 'us-east-1', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'Bucket' => 'arn:aws:s3:us-west-2:123456789012:accesspoint:myendpoint:more-data']], ['documentation' => 'Invalid access point ARN: invalid no ap name', 'expect' => ['error' => 'Invalid ARN: Expected a resource of the format `accesspoint:<accesspoint name>` but no name was provided'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3:us-west-2:123456789012:accesspoint:', 'Key' => 'key']]], 'params' => ['Region' => 'us-east-1', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'Bucket' => 'arn:aws:s3:us-west-2:123456789012:accesspoint:']], ['documentation' => 'Invalid access point ARN: AccountId is invalid', 'expect' => ['error' => 'Invalid ARN: The account id may only contain a-z, A-Z, 0-9 and `-`. Found: `123456_789012`'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3:us-west-2:123456_789012:accesspoint:apname', 'Key' => 'key']]], 'params' => ['Region' => 'us-east-1', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'Bucket' => 'arn:aws:s3:us-west-2:123456_789012:accesspoint:apname']], ['documentation' => 'Invalid access point ARN: access point name is invalid', 'expect' => ['error' => 'Invalid ARN: The access point name may only contain a-z, A-Z, 0-9 and `-`. Found: `ap_name`'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3:us-west-2:123456789012:accesspoint:ap_name', 'Key' => 'key']]], 'params' => ['Region' => 'us-east-1', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'Bucket' => 'arn:aws:s3:us-west-2:123456789012:accesspoint:ap_name']], ['documentation' => 'Access points (disable access points explicitly false)', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-west-2', 'disableDoubleEncoding' => \true]]], 'url' => 'https://myendpoint-123456789012.s3-accesspoint.us-west-2.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3:us-west-2:123456789012:accesspoint:myendpoint', 'Key' => 'key']]], 'params' => ['Region' => 'us-east-1', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'DisableAccessPoints' => \false, 'Bucket' => 'arn:aws:s3:us-west-2:123456789012:accesspoint:myendpoint']], ['documentation' => 'Access points: partition does not support FIPS', 'expect' => ['error' => 'Partition does not support FIPS'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'cn-north-1', 'AWS::UseFIPS' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3:cn-north-1:123456789012:accesspoint:myendpoint', 'Key' => 'key']]], 'params' => ['Region' => 'cn-north-1', 'UseFIPS' => \true, 'UseDualStack' => \false, 'Accelerate' => \false, 'Bucket' => 'arn:aws:s3:cn-north-1:123456789012:accesspoint:myendpoint']], ['documentation' => 'Bucket region is invalid', 'expect' => ['error' => 'Invalid region in ARN: `us-west -2` (invalid DNS name)'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3:us-west -2:123456789012:accesspoint:myendpoint', 'Key' => 'key']]], 'params' => ['Region' => 'us-east-1', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'DisableAccessPoints' => \false, 'Bucket' => 'arn:aws:s3:us-west -2:123456789012:accesspoint:myendpoint']], ['documentation' => 'Access points when Access points explicitly disabled (used for CreateBucket)', 'expect' => ['error' => 'Access points are not supported for this operation'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1'], 'operationName' => 'CreateBucket', 'operationParams' => ['Bucket' => 'arn:aws:s3:us-west-2:123456789012:accesspoint:myendpoint']]], 'params' => ['Region' => 'us-east-1', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'DisableAccessPoints' => \true, 'Bucket' => 'arn:aws:s3:us-west-2:123456789012:accesspoint:myendpoint']], ['documentation' => 'missing arn type', 'expect' => ['error' => 'Invalid ARN: `arn:aws:s3:us-west-2:123456789012:` was not a valid ARN'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3:us-west-2:123456789012:', 'Key' => 'key']]], 'params' => ['Region' => 'us-east-1', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'DisableAccessPoints' => \true, 'Bucket' => 'arn:aws:s3:us-west-2:123456789012:']], ['documentation' => 'SDK::Host + access point + Dualstack is an error', 'expect' => ['error' => 'Cannot set dual-stack in combination with a custom endpoint.'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'cn-north-1', 'AWS::UseDualStack' => \true, 'SDK::Endpoint' => 'https://beta.example.com'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws-cn:s3:cn-north-1:123456789012:accesspoint:myendpoint', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'arn:aws-cn:s3:cn-north-1:123456789012:accesspoint:myendpoint', 'ForcePathStyle' => \false, 'Endpoint' => 'https://beta.example.com', 'Region' => 'cn-north-1', 'UseDualStack' => \true, 'UseFIPS' => \false]], ['documentation' => 'Access point ARN with FIPS & Dualstack', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-west-2', 'disableDoubleEncoding' => \true]]], 'url' => 'https://myendpoint-123456789012.s3-accesspoint-fips.dualstack.us-west-2.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1', 'AWS::UseFIPS' => \true, 'AWS::UseDualStack' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3:us-west-2:123456789012:accesspoint:myendpoint', 'Key' => 'key']]], 'params' => ['Region' => 'us-east-1', 'UseFIPS' => \true, 'UseDualStack' => \true, 'Accelerate' => \false, 'DisableAccessPoints' => \false, 'Bucket' => 'arn:aws:s3:us-west-2:123456789012:accesspoint:myendpoint']], ['documentation' => 'Access point ARN with Dualstack', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-west-2', 'disableDoubleEncoding' => \true]]], 'url' => 'https://myendpoint-123456789012.s3-accesspoint.dualstack.us-west-2.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1', 'AWS::UseDualStack' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3:us-west-2:123456789012:accesspoint:myendpoint', 'Key' => 'key']]], 'params' => ['Region' => 'us-east-1', 'UseFIPS' => \false, 'UseDualStack' => \true, 'Accelerate' => \false, 'DisableAccessPoints' => \false, 'Bucket' => 'arn:aws:s3:us-west-2:123456789012:accesspoint:myendpoint']], ['documentation' => 'vanilla MRAP', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4a', 'signingRegionSet' => ['*'], 'signingName' => 's3', 'disableDoubleEncoding' => \true]]], 'url' => 'https://mfzwi23gnjvgw.mrap.accesspoint.s3-global.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3::123456789012:accesspoint:mfzwi23gnjvgw.mrap', 'Key' => 'key']]], 'params' => ['Bucket' => 'arn:aws:s3::123456789012:accesspoint:mfzwi23gnjvgw.mrap', 'Region' => 'us-east-1', 'DisableMultiRegionAccessPoints' => \false, 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false]], ['documentation' => 'MRAP does not support FIPS', 'expect' => ['error' => 'S3 MRAP does not support FIPS'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1', 'AWS::UseFIPS' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3::123456789012:accesspoint:mfzwi23gnjvgw.mrap', 'Key' => 'key']]], 'params' => ['Bucket' => 'arn:aws:s3::123456789012:accesspoint:mfzwi23gnjvgw.mrap', 'Region' => 'us-east-1', 'DisableMultiRegionAccessPoints' => \false, 'UseFIPS' => \true, 'UseDualStack' => \false, 'Accelerate' => \false]], ['documentation' => 'MRAP does not support DualStack', 'expect' => ['error' => 'S3 MRAP does not support dual-stack'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1', 'AWS::UseDualStack' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3::123456789012:accesspoint:mfzwi23gnjvgw.mrap', 'Key' => 'key']]], 'params' => ['Bucket' => 'arn:aws:s3::123456789012:accesspoint:mfzwi23gnjvgw.mrap', 'Region' => 'us-east-1', 'DisableMultiRegionAccessPoints' => \false, 'UseFIPS' => \false, 'UseDualStack' => \true, 'Accelerate' => \false]], ['documentation' => 'MRAP does not support S3 Accelerate', 'expect' => ['error' => 'S3 MRAP does not support S3 Accelerate'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1', 'AWS::S3::Accelerate' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3::123456789012:accesspoint:mfzwi23gnjvgw.mrap', 'Key' => 'key']]], 'params' => ['Bucket' => 'arn:aws:s3::123456789012:accesspoint:mfzwi23gnjvgw.mrap', 'Region' => 'us-east-1', 'DisableMultiRegionAccessPoints' => \false, 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \true]], ['documentation' => 'MRAP explicitly disabled', 'expect' => ['error' => 'Invalid configuration: Multi-Region Access Point ARNs are disabled.'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1', 'AWS::S3::DisableMultiRegionAccessPoints' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3::123456789012:accesspoint:mfzwi23gnjvgw.mrap', 'Key' => 'key']]], 'params' => ['Bucket' => 'arn:aws:s3::123456789012:accesspoint:mfzwi23gnjvgw.mrap', 'Region' => 'us-east-1', 'DisableMultiRegionAccessPoints' => \true, 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false]], ['documentation' => 'Dual-stack endpoint with path-style forced', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-west-2', 'disableDoubleEncoding' => \true]]], 'url' => 'https://s3.dualstack.us-west-2.amazonaws.com/bucketname']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2', 'AWS::UseDualStack' => \true, 'AWS::S3::ForcePathStyle' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucketname', 'Key' => 'key']]], 'params' => ['Bucket' => 'bucketname', 'Region' => 'us-west-2', 'ForcePathStyle' => \true, 'UseFIPS' => \false, 'Accelerate' => \false, 'UseDualStack' => \true]], ['documentation' => 'Dual-stack endpoint + SDK::Host is error', 'expect' => ['error' => 'Cannot set dual-stack in combination with a custom endpoint.'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2', 'AWS::UseDualStack' => \true, 'SDK::Endpoint' => 'https://abc.com', 'AWS::S3::ForcePathStyle' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucketname', 'Key' => 'key']]], 'params' => ['Bucket' => 'bucketname', 'Region' => 'us-west-2', 'ForcePathStyle' => \true, 'UseFIPS' => \false, 'Accelerate' => \false, 'UseDualStack' => \true, 'Endpoint' => 'https://abc.com']], ['documentation' => 'path style + ARN bucket', 'expect' => ['error' => 'Path-style addressing cannot be used with ARN buckets'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2', 'AWS::S3::ForcePathStyle' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3::123456789012:accesspoint:mfzwi23gnjvgw.mrap', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'arn:aws:s3::123456789012:accesspoint:mfzwi23gnjvgw.mrap', 'ForcePathStyle' => \true, 'Region' => 'us-west-2', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'implicit path style bucket + dualstack', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-west-2', 'disableDoubleEncoding' => \true]]], 'url' => 'https://s3.dualstack.us-west-2.amazonaws.com/99_ab']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2', 'AWS::UseDualStack' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => '99_ab', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => '99_ab', 'Region' => 'us-west-2', 'UseDualStack' => \true, 'UseFIPS' => \false]], ['documentation' => 'implicit path style bucket + dualstack', 'expect' => ['error' => 'Cannot set dual-stack in combination with a custom endpoint.'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2', 'AWS::UseDualStack' => \true, 'SDK::Endpoint' => 'http://abc.com'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => '99_ab', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => '99_ab', 'Region' => 'us-west-2', 'UseDualStack' => \true, 'UseFIPS' => \false, 'Endpoint' => 'http://abc.com']], ['documentation' => 'don\'t allow URL injections in the bucket', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-west-2', 'disableDoubleEncoding' => \true]]], 'url' => 'https://s3.us-west-2.amazonaws.com/example.com%23']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'example.com#', 'Key' => 'key']]], 'params' => ['Bucket' => 'example.com#', 'Region' => 'us-west-2', 'UseDualStack' => \false, 'UseFIPS' => \false, 'Accelerate' => \false]], ['documentation' => 'URI encode bucket names in the path', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-west-2', 'disableDoubleEncoding' => \true]]], 'url' => 'https://s3.us-west-2.amazonaws.com/bucket%20name']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket name', 'Key' => 'key']]], 'params' => ['Bucket' => 'bucket name', 'Region' => 'us-west-2', 'UseDualStack' => \false, 'UseFIPS' => \false, 'Accelerate' => \false]], ['documentation' => 'scheme is respected', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'af-south-1', 'disableDoubleEncoding' => \true]]], 'url' => 'http://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com/99_ab']], 'params' => ['Accelerate' => \false, 'Bucket' => '99_ab', 'Endpoint' => 'http://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com', 'Region' => 'af-south-1', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'scheme is respected (virtual addressing)', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'af-south-1', 'disableDoubleEncoding' => \true]]], 'url' => 'http://bucketname.control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com/foo']], 'params' => ['Accelerate' => \false, 'Bucket' => 'bucketname', 'Endpoint' => 'http://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com/foo', 'Region' => 'af-south-1', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'path style + implicit private link', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'af-south-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com/99_ab']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'af-south-1', 'SDK::Endpoint' => 'https://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => '99_ab', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => '99_ab', 'Endpoint' => 'https://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com', 'Region' => 'af-south-1', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'invalid Endpoint override', 'expect' => ['error' => 'Custom endpoint `abcde://nota#url` was not a valid URI'], 'params' => ['Accelerate' => \false, 'Bucket' => 'bucketname', 'Endpoint' => 'abcde://nota#url', 'Region' => 'af-south-1', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'using an IPv4 address forces path style', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'af-south-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://123.123.0.1/bucketname']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'af-south-1', 'SDK::Endpoint' => 'https://123.123.0.1'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucketname', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'bucketname', 'Endpoint' => 'https://123.123.0.1', 'Region' => 'af-south-1', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'vanilla access point arn with region mismatch and UseArnRegion=false', 'expect' => ['error' => 'Invalid configuration: region from ARN `us-east-1` does not match client region `us-west-2` and UseArnRegion is `false`'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2', 'AWS::S3::UseArnRegion' => \false], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3:us-east-1:123456789012:accesspoint:myendpoint', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'arn:aws:s3:us-east-1:123456789012:accesspoint:myendpoint', 'ForcePathStyle' => \false, 'UseArnRegion' => \false, 'Region' => 'us-west-2', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'vanilla access point arn with region mismatch and UseArnRegion unset', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-west-2', 'disableDoubleEncoding' => \true]]], 'url' => 'https://myendpoint-123456789012.s3-accesspoint.us-west-2.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3:us-west-2:123456789012:accesspoint:myendpoint', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'arn:aws:s3:us-west-2:123456789012:accesspoint:myendpoint', 'ForcePathStyle' => \false, 'Region' => 'us-east-1', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'vanilla access point arn with region mismatch and UseArnRegion=true', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-west-2', 'disableDoubleEncoding' => \true]]], 'url' => 'https://myendpoint-123456789012.s3-accesspoint.us-west-2.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1', 'AWS::S3::UseArnRegion' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3:us-west-2:123456789012:accesspoint:myendpoint', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'arn:aws:s3:us-west-2:123456789012:accesspoint:myendpoint', 'ForcePathStyle' => \false, 'UseArnRegion' => \true, 'Region' => 'us-east-1', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'subdomains are not allowed in virtual buckets', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'disableDoubleEncoding' => \true, 'signingRegion' => 'us-east-1']]], 'url' => 'https://s3.us-east-1.amazonaws.com/bucket.name']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket.name', 'Key' => 'key']]], 'params' => ['Bucket' => 'bucket.name', 'Region' => 'us-east-1']], ['documentation' => 'bucket names with 3 characters are allowed in virtual buckets', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'disableDoubleEncoding' => \true, 'signingRegion' => 'us-east-1']]], 'url' => 'https://aaa.s3.us-east-1.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'aaa', 'Key' => 'key']]], 'params' => ['Bucket' => 'aaa', 'Region' => 'us-east-1']], ['documentation' => 'bucket names with fewer than 3 characters are not allowed in virtual host', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'disableDoubleEncoding' => \true, 'signingRegion' => 'us-east-1']]], 'url' => 'https://s3.us-east-1.amazonaws.com/aa']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'aa', 'Key' => 'key']]], 'params' => ['Bucket' => 'aa', 'Region' => 'us-east-1']], ['documentation' => 'bucket names with uppercase characters are not allowed in virtual host', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'disableDoubleEncoding' => \true, 'signingRegion' => 'us-east-1']]], 'url' => 'https://s3.us-east-1.amazonaws.com/BucketName']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'BucketName', 'Key' => 'key']]], 'params' => ['Bucket' => 'BucketName', 'Region' => 'us-east-1']], ['documentation' => 'subdomains are allowed in virtual buckets on http endpoints', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'disableDoubleEncoding' => \true, 'signingRegion' => 'us-east-1']]], 'url' => 'http://bucket.name.example.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1', 'SDK::Endpoint' => 'http://example.com'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket.name', 'Key' => 'key']]], 'params' => ['Bucket' => 'bucket.name', 'Region' => 'us-east-1', 'Endpoint' => 'http://example.com']], ['documentation' => 'no region set', 'expect' => ['error' => 'A region must be set when sending requests to S3.'], 'params' => ['Bucket' => 'bucket-name']], ['documentation' => 'UseGlobalEndpoints=true, region=us-east-1 uses the global endpoint', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-east-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://s3.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1', 'AWS::S3::UseGlobalEndpoint' => \true], 'operationName' => 'ListBuckets']], 'params' => ['Region' => 'us-east-1', 'UseGlobalEndpoint' => \true, 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false]], ['documentation' => 'UseGlobalEndpoints=true, region=us-west-2 uses the regional endpoint', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-west-2', 'disableDoubleEncoding' => \true]]], 'url' => 'https://s3.us-west-2.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2', 'AWS::S3::UseGlobalEndpoint' => \true], 'operationName' => 'ListBuckets']], 'params' => ['Region' => 'us-west-2', 'UseGlobalEndpoint' => \true, 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false]], ['documentation' => 'UseGlobalEndpoints=true, region=cn-north-1 uses the regional endpoint', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'cn-north-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://s3.cn-north-1.amazonaws.com.cn']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'cn-north-1', 'AWS::S3::UseGlobalEndpoint' => \true], 'operationName' => 'ListBuckets']], 'params' => ['Region' => 'cn-north-1', 'UseGlobalEndpoint' => \true, 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false]], ['documentation' => 'UseGlobalEndpoints=true, region=us-east-1, fips=true uses the regional endpoint with fips', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-east-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://s3-fips.us-east-1.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1', 'AWS::UseFIPS' => \true, 'AWS::S3::UseGlobalEndpoint' => \true], 'operationName' => 'ListBuckets']], 'params' => ['Region' => 'us-east-1', 'UseGlobalEndpoint' => \true, 'UseFIPS' => \true, 'UseDualStack' => \false, 'Accelerate' => \false]], ['documentation' => 'UseGlobalEndpoints=true, region=us-east-1, dualstack=true uses the regional endpoint with dualstack', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-east-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://s3.dualstack.us-east-1.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1', 'AWS::UseDualStack' => \true, 'AWS::S3::UseGlobalEndpoint' => \true], 'operationName' => 'ListBuckets']], 'params' => ['Region' => 'us-east-1', 'UseGlobalEndpoint' => \true, 'UseFIPS' => \false, 'UseDualStack' => \true, 'Accelerate' => \false]], ['documentation' => 'UseGlobalEndpoints=true, region=us-east-1, dualstack and fips uses the regional endpoint with fips/dualstack', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-east-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://s3-fips.dualstack.us-east-1.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1', 'AWS::UseFIPS' => \true, 'AWS::UseDualStack' => \true, 'AWS::S3::UseGlobalEndpoint' => \true], 'operationName' => 'ListBuckets']], 'params' => ['Region' => 'us-east-1', 'UseGlobalEndpoint' => \true, 'UseFIPS' => \true, 'UseDualStack' => \true, 'Accelerate' => \false]], ['documentation' => 'UseGlobalEndpoints=true, region=us-east-1 with custom endpoint, uses custom', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-east-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://example.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1', 'SDK::Endpoint' => 'https://example.com', 'AWS::S3::UseGlobalEndpoint' => \true], 'operationName' => 'ListBuckets']], 'params' => ['Region' => 'us-east-1', 'Endpoint' => 'https://example.com', 'UseGlobalEndpoint' => \true, 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false]], ['documentation' => 'UseGlobalEndpoints=true, region=us-west-2 with custom endpoint, uses custom', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-west-2', 'disableDoubleEncoding' => \true]]], 'url' => 'https://example.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2', 'SDK::Endpoint' => 'https://example.com', 'AWS::S3::UseGlobalEndpoint' => \true], 'operationName' => 'ListBuckets']], 'params' => ['Region' => 'us-west-2', 'Endpoint' => 'https://example.com', 'UseGlobalEndpoint' => \true, 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false]], ['documentation' => 'UseGlobalEndpoints=true, region=us-east-1 with accelerate on non bucket case uses the global endpoint and ignores accelerate', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-east-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://s3.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1', 'AWS::S3::Accelerate' => \true, 'AWS::S3::UseGlobalEndpoint' => \true], 'operationName' => 'ListBuckets']], 'params' => ['Region' => 'us-east-1', 'UseGlobalEndpoint' => \true, 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \true]], ['documentation' => 'aws-global region uses the global endpoint', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-east-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://s3.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'aws-global'], 'operationName' => 'ListBuckets']], 'params' => ['Region' => 'aws-global', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false]], ['documentation' => 'aws-global region with fips uses the regional endpoint', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-east-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://s3-fips.us-east-1.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'aws-global', 'AWS::UseFIPS' => \true], 'operationName' => 'ListBuckets']], 'params' => ['Region' => 'aws-global', 'UseFIPS' => \true, 'UseDualStack' => \false, 'Accelerate' => \false]], ['documentation' => 'aws-global region with dualstack uses the regional endpoint', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-east-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://s3.dualstack.us-east-1.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'aws-global', 'AWS::UseDualStack' => \true], 'operationName' => 'ListBuckets']], 'params' => ['Region' => 'aws-global', 'UseFIPS' => \false, 'UseDualStack' => \true, 'Accelerate' => \false]], ['documentation' => 'aws-global region with fips and dualstack uses the regional endpoint', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-east-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://s3-fips.dualstack.us-east-1.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'aws-global', 'AWS::UseFIPS' => \true, 'AWS::UseDualStack' => \true], 'operationName' => 'ListBuckets']], 'params' => ['Region' => 'aws-global', 'UseFIPS' => \true, 'UseDualStack' => \true, 'Accelerate' => \false]], ['documentation' => 'aws-global region with accelerate on non-bucket case, uses global endpoint and ignores accelerate', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-east-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://s3.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'aws-global', 'AWS::S3::Accelerate' => \true], 'operationName' => 'ListBuckets']], 'params' => ['Region' => 'aws-global', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \true]], ['documentation' => 'aws-global region with custom endpoint, uses custom', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-east-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://example.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'aws-global', 'SDK::Endpoint' => 'https://example.com'], 'operationName' => 'ListBuckets']], 'params' => ['Region' => 'aws-global', 'Endpoint' => 'https://example.com', 'UseGlobalEndpoint' => \false, 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false]], ['documentation' => 'virtual addressing, aws-global region uses the global endpoint', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-east-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://bucket-name.s3.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'aws-global'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Region' => 'aws-global', 'Bucket' => 'bucket-name', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false]], ['documentation' => 'virtual addressing, aws-global region with Prefix, and Key uses the global endpoint. Prefix and Key parameters should not be used in endpoint evaluation.', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-east-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://bucket-name.s3.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'aws-global'], 'operationName' => 'ListObjects', 'operationParams' => ['Bucket' => 'bucket-name', 'Prefix' => 'prefix']]], 'params' => ['Region' => 'aws-global', 'Bucket' => 'bucket-name', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'Prefix' => 'prefix', 'Key' => 'key']], ['documentation' => 'virtual addressing, aws-global region with Copy Source, and Key uses the global endpoint. Copy Source and Key parameters should not be used in endpoint evaluation.', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-east-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://bucket-name.s3.amazonaws.com']], 'params' => ['Region' => 'aws-global', 'Bucket' => 'bucket-name', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'CopySource' => '/copy/source', 'Key' => 'key']], ['documentation' => 'virtual addressing, aws-global region with fips uses the regional fips endpoint', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-east-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://bucket-name.s3-fips.us-east-1.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'aws-global', 'AWS::UseFIPS' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Region' => 'aws-global', 'Bucket' => 'bucket-name', 'UseFIPS' => \true, 'UseDualStack' => \false, 'Accelerate' => \false]], ['documentation' => 'virtual addressing, aws-global region with dualstack uses the regional dualstack endpoint', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-east-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://bucket-name.s3.dualstack.us-east-1.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'aws-global', 'AWS::UseDualStack' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Region' => 'aws-global', 'Bucket' => 'bucket-name', 'UseFIPS' => \false, 'UseDualStack' => \true, 'Accelerate' => \false]], ['documentation' => 'virtual addressing, aws-global region with fips/dualstack uses the regional fips/dualstack endpoint', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-east-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://bucket-name.s3-fips.dualstack.us-east-1.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'aws-global', 'AWS::UseFIPS' => \true, 'AWS::UseDualStack' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Region' => 'aws-global', 'Bucket' => 'bucket-name', 'UseFIPS' => \true, 'UseDualStack' => \true, 'Accelerate' => \false]], ['documentation' => 'virtual addressing, aws-global region with accelerate uses the global accelerate endpoint', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-east-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://bucket-name.s3-accelerate.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'aws-global', 'AWS::S3::Accelerate' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Region' => 'aws-global', 'Bucket' => 'bucket-name', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \true]], ['documentation' => 'virtual addressing, aws-global region with custom endpoint', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-east-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://bucket-name.example.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'aws-global', 'SDK::Endpoint' => 'https://example.com'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Region' => 'aws-global', 'Endpoint' => 'https://example.com', 'Bucket' => 'bucket-name', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false]], ['documentation' => 'virtual addressing, UseGlobalEndpoint and us-east-1 region uses the global endpoint', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-east-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://bucket-name.s3.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1', 'AWS::S3::UseGlobalEndpoint' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Region' => 'us-east-1', 'UseGlobalEndpoint' => \true, 'Bucket' => 'bucket-name', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false]], ['documentation' => 'virtual addressing, UseGlobalEndpoint and us-west-2 region uses the regional endpoint', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-west-2', 'disableDoubleEncoding' => \true]]], 'url' => 'https://bucket-name.s3.us-west-2.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2', 'AWS::S3::UseGlobalEndpoint' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Region' => 'us-west-2', 'UseGlobalEndpoint' => \true, 'Bucket' => 'bucket-name', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false]], ['documentation' => 'virtual addressing, UseGlobalEndpoint and us-east-1 region and fips uses the regional fips endpoint', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-east-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://bucket-name.s3-fips.us-east-1.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1', 'AWS::UseFIPS' => \true, 'AWS::S3::UseGlobalEndpoint' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Region' => 'us-east-1', 'UseGlobalEndpoint' => \true, 'Bucket' => 'bucket-name', 'UseFIPS' => \true, 'UseDualStack' => \false, 'Accelerate' => \false]], ['documentation' => 'virtual addressing, UseGlobalEndpoint and us-east-1 region and dualstack uses the regional dualstack endpoint', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-east-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://bucket-name.s3.dualstack.us-east-1.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1', 'AWS::UseDualStack' => \true, 'AWS::S3::UseGlobalEndpoint' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Region' => 'us-east-1', 'UseGlobalEndpoint' => \true, 'Bucket' => 'bucket-name', 'UseFIPS' => \false, 'UseDualStack' => \true, 'Accelerate' => \false]], ['documentation' => 'virtual addressing, UseGlobalEndpoint and us-east-1 region and accelerate uses the global accelerate endpoint', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-east-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://bucket-name.s3-accelerate.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1', 'AWS::S3::Accelerate' => \true, 'AWS::S3::UseGlobalEndpoint' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Region' => 'us-east-1', 'UseGlobalEndpoint' => \true, 'Bucket' => 'bucket-name', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \true]], ['documentation' => 'virtual addressing, UseGlobalEndpoint and us-east-1 region with custom endpoint', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-east-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://bucket-name.example.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1', 'SDK::Endpoint' => 'https://example.com', 'AWS::S3::UseGlobalEndpoint' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Region' => 'us-east-1', 'Endpoint' => 'https://example.com', 'UseGlobalEndpoint' => \true, 'Bucket' => 'bucket-name', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false]], ['documentation' => 'ForcePathStyle, aws-global region uses the global endpoint', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-east-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://s3.amazonaws.com/bucket-name']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'aws-global', 'AWS::S3::ForcePathStyle' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Region' => 'aws-global', 'Bucket' => 'bucket-name', 'ForcePathStyle' => \true, 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false]], ['documentation' => 'ForcePathStyle, aws-global region with fips is invalid', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['signingName' => 's3', 'signingRegion' => 'us-east-1', 'disableDoubleEncoding' => \true, 'name' => 'sigv4']]], 'url' => 'https://s3-fips.us-east-1.amazonaws.com/bucket-name']], 'params' => ['Region' => 'aws-global', 'Bucket' => 'bucket-name', 'ForcePathStyle' => \true, 'UseFIPS' => \true, 'UseDualStack' => \false, 'Accelerate' => \false]], ['documentation' => 'ForcePathStyle, aws-global region with dualstack uses regional dualstack endpoint', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-east-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://s3.dualstack.us-east-1.amazonaws.com/bucket-name']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'aws-global', 'AWS::UseDualStack' => \true, 'AWS::S3::ForcePathStyle' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Region' => 'aws-global', 'Bucket' => 'bucket-name', 'ForcePathStyle' => \true, 'UseFIPS' => \false, 'UseDualStack' => \true, 'Accelerate' => \false]], ['documentation' => 'ForcePathStyle, aws-global region custom endpoint uses the custom endpoint', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-east-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://example.com/bucket-name']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'aws-global', 'SDK::Endpoint' => 'https://example.com', 'AWS::S3::ForcePathStyle' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Region' => 'aws-global', 'Endpoint' => 'https://example.com', 'Bucket' => 'bucket-name', 'ForcePathStyle' => \true, 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false]], ['documentation' => 'ForcePathStyle, UseGlobalEndpoint us-east-1 region uses the global endpoint', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-east-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://s3.amazonaws.com/bucket-name']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1', 'AWS::S3::ForcePathStyle' => \true, 'AWS::S3::UseGlobalEndpoint' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Region' => 'us-east-1', 'Bucket' => 'bucket-name', 'UseGlobalEndpoint' => \true, 'ForcePathStyle' => \true, 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false]], ['documentation' => 'ForcePathStyle, UseGlobalEndpoint us-west-2 region uses the regional endpoint', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-west-2', 'disableDoubleEncoding' => \true]]], 'url' => 'https://s3.us-west-2.amazonaws.com/bucket-name']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2', 'AWS::S3::ForcePathStyle' => \true, 'AWS::S3::UseGlobalEndpoint' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Region' => 'us-west-2', 'Bucket' => 'bucket-name', 'UseGlobalEndpoint' => \true, 'ForcePathStyle' => \true, 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false]], ['documentation' => 'ForcePathStyle, UseGlobalEndpoint us-east-1 region, dualstack uses the regional dualstack endpoint', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-east-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://s3.dualstack.us-east-1.amazonaws.com/bucket-name']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1', 'AWS::UseDualStack' => \true, 'AWS::S3::ForcePathStyle' => \true, 'AWS::S3::UseGlobalEndpoint' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Region' => 'us-east-1', 'Bucket' => 'bucket-name', 'UseGlobalEndpoint' => \true, 'ForcePathStyle' => \true, 'UseFIPS' => \false, 'UseDualStack' => \true, 'Accelerate' => \false]], ['documentation' => 'ForcePathStyle, UseGlobalEndpoint us-east-1 region custom endpoint uses the custom endpoint', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-east-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://example.com/bucket-name']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1', 'SDK::Endpoint' => 'https://example.com', 'AWS::S3::ForcePathStyle' => \true, 'AWS::S3::UseGlobalEndpoint' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Region' => 'us-east-1', 'Bucket' => 'bucket-name', 'Endpoint' => 'https://example.com', 'UseGlobalEndpoint' => \true, 'ForcePathStyle' => \true, 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false]], ['documentation' => 'ARN with aws-global region and UseArnRegion uses the regional endpoint', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4a', 'signingName' => 's3-outposts', 'signingRegionSet' => ['*'], 'disableDoubleEncoding' => \true], ['name' => 'sigv4', 'signingName' => 's3-outposts', 'signingRegion' => 'us-east-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://reports-123456789012.op-01234567890123456.s3-outposts.us-east-1.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'aws-global', 'AWS::S3::UseArnRegion' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3-outposts:us-east-1:123456789012:outpost/op-01234567890123456/accesspoint/reports', 'Key' => 'key']]], 'params' => ['Region' => 'aws-global', 'UseArnRegion' => \true, 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'Bucket' => 'arn:aws:s3-outposts:us-east-1:123456789012:outpost/op-01234567890123456/accesspoint/reports']], ['documentation' => 'cross partition MRAP ARN is an error', 'expect' => ['error' => 'Client was configured for partition `aws` but bucket referred to partition `aws-cn`'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-1'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws-cn:s3::123456789012:accesspoint:mfzwi23gnjvgw.mrap', 'Key' => 'key']]], 'params' => ['Bucket' => 'arn:aws-cn:s3::123456789012:accesspoint:mfzwi23gnjvgw.mrap', 'Region' => 'us-west-1']], ['documentation' => 'Endpoint override, accesspoint with HTTP, port', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-west-2', 'disableDoubleEncoding' => \true]]], 'url' => 'http://myendpoint-123456789012.beta.example.com:1234']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2', 'SDK::Endpoint' => 'http://beta.example.com:1234'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3:us-west-2:123456789012:accesspoint:myendpoint', 'Key' => 'key']]], 'params' => ['Endpoint' => 'http://beta.example.com:1234', 'Region' => 'us-west-2', 'Bucket' => 'arn:aws:s3:us-west-2:123456789012:accesspoint:myendpoint']], ['documentation' => 'Endpoint override, accesspoint with http, path, query, and port', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-west-2', 'disableDoubleEncoding' => \true]]], 'url' => 'http://myendpoint-123456789012.beta.example.com:1234/path']], 'params' => ['Region' => 'us-west-2', 'Bucket' => 'arn:aws:s3:us-west-2:123456789012:accesspoint:myendpoint', 'Endpoint' => 'http://beta.example.com:1234/path', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false]], ['documentation' => 'non-bucket endpoint override with FIPS = error', 'expect' => ['error' => 'A custom endpoint cannot be combined with FIPS'], 'params' => ['Region' => 'us-west-2', 'Endpoint' => 'http://beta.example.com:1234/path', 'UseFIPS' => \true, 'UseDualStack' => \false]], ['documentation' => 'FIPS + dualstack + custom endpoint', 'expect' => ['error' => 'Cannot set dual-stack in combination with a custom endpoint.'], 'params' => ['Region' => 'us-west-2', 'Endpoint' => 'http://beta.example.com:1234/path', 'UseFIPS' => \true, 'UseDualStack' => \true]], ['documentation' => 'dualstack + custom endpoint', 'expect' => ['error' => 'Cannot set dual-stack in combination with a custom endpoint.'], 'params' => ['Region' => 'us-west-2', 'Endpoint' => 'http://beta.example.com:1234/path', 'UseFIPS' => \false, 'UseDualStack' => \true]], ['documentation' => 'custom endpoint without FIPS/dualstack', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-west-2', 'disableDoubleEncoding' => \true]]], 'url' => 'http://beta.example.com:1234/path']], 'params' => ['Region' => 'us-west-2', 'Endpoint' => 'http://beta.example.com:1234/path', 'UseFIPS' => \false, 'UseDualStack' => \false]], ['documentation' => 's3 object lambda with access points disabled', 'expect' => ['error' => 'Access points are not supported for this operation'], 'params' => ['Region' => 'us-west-2', 'Bucket' => 'arn:aws:s3-object-lambda:us-west-2:123456789012:accesspoint:myendpoint', 'DisableAccessPoints' => \true]], ['documentation' => 'non bucket + FIPS', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-west-2', 'disableDoubleEncoding' => \true]]], 'url' => 'https://s3-fips.us-west-2.amazonaws.com']], 'params' => ['Region' => 'us-west-2', 'UseFIPS' => \true, 'UseDualStack' => \false]], ['documentation' => 'standard non bucket endpoint', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-west-2', 'disableDoubleEncoding' => \true]]], 'url' => 'https://s3.us-west-2.amazonaws.com']], 'params' => ['Region' => 'us-west-2', 'UseFIPS' => \false, 'UseDualStack' => \false]], ['documentation' => 'non bucket endpoint with FIPS + Dualstack', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-west-2', 'disableDoubleEncoding' => \true]]], 'url' => 'https://s3-fips.dualstack.us-west-2.amazonaws.com']], 'params' => ['Region' => 'us-west-2', 'UseFIPS' => \true, 'UseDualStack' => \true]], ['documentation' => 'non bucket endpoint with dualstack', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-west-2', 'disableDoubleEncoding' => \true]]], 'url' => 'https://s3.dualstack.us-west-2.amazonaws.com']], 'params' => ['Region' => 'us-west-2', 'UseFIPS' => \false, 'UseDualStack' => \true]], ['documentation' => 'use global endpoint + IP address endpoint override', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'disableDoubleEncoding' => \true, 'signingRegion' => 'us-east-1']]], 'url' => 'http://127.0.0.1/bucket']], 'params' => ['Region' => 'us-east-1', 'Bucket' => 'bucket', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Endpoint' => 'http://127.0.0.1', 'UseGlobalEndpoint' => \true]], ['documentation' => 'non-dns endpoint + global endpoint', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'disableDoubleEncoding' => \true, 'signingRegion' => 'us-east-1']]], 'url' => 'https://s3.amazonaws.com/bucket%21']], 'params' => ['Region' => 'us-east-1', 'Bucket' => 'bucket!', 'UseFIPS' => \false, 'UseDualStack' => \false, 'UseGlobalEndpoint' => \true]], ['documentation' => 'endpoint override + use global endpoint', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'disableDoubleEncoding' => \true, 'signingRegion' => 'us-east-1']]], 'url' => 'http://foo.com/bucket%21']], 'params' => ['Region' => 'us-east-1', 'Bucket' => 'bucket!', 'UseFIPS' => \false, 'UseDualStack' => \false, 'UseGlobalEndpoint' => \true, 'Endpoint' => 'http://foo.com']], ['documentation' => 'FIPS + dualstack + non-bucket endpoint', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'disableDoubleEncoding' => \true, 'signingRegion' => 'us-east-1']]], 'url' => 'https://s3-fips.dualstack.us-east-1.amazonaws.com/bucket%21']], 'params' => ['Region' => 'us-east-1', 'Bucket' => 'bucket!', 'UseFIPS' => \true, 'UseDualStack' => \true]], ['documentation' => 'FIPS + dualstack + non-DNS endpoint', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'disableDoubleEncoding' => \true, 'signingRegion' => 'us-east-1']]], 'url' => 'https://s3-fips.dualstack.us-east-1.amazonaws.com/bucket%21']], 'params' => ['Region' => 'us-east-1', 'Bucket' => 'bucket!', 'ForcePathStyle' => \true, 'UseFIPS' => \true, 'UseDualStack' => \true]], ['documentation' => 'endpoint override + FIPS + dualstack (BUG)', 'expect' => ['error' => 'A custom endpoint cannot be combined with FIPS'], 'params' => ['Region' => 'us-east-1', 'Bucket' => 'bucket!', 'ForcePathStyle' => \true, 'UseFIPS' => \true, 'UseDualStack' => \false, 'Endpoint' => 'http://foo.com']], ['documentation' => 'endpoint override + non-dns bucket + FIPS (BUG)', 'expect' => ['error' => 'A custom endpoint cannot be combined with FIPS'], 'params' => ['Region' => 'us-east-1', 'Bucket' => 'bucket!', 'UseFIPS' => \true, 'UseDualStack' => \false, 'Endpoint' => 'http://foo.com']], ['documentation' => 'FIPS + bucket endpoint + force path style', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'disableDoubleEncoding' => \true, 'signingRegion' => 'us-east-1']]], 'url' => 'https://s3-fips.us-east-1.amazonaws.com/bucket%21']], 'params' => ['Region' => 'us-east-1', 'Bucket' => 'bucket!', 'ForcePathStyle' => \true, 'UseFIPS' => \true, 'UseDualStack' => \false, 'UseGlobalEndpoint' => \true]], ['documentation' => 'bucket + FIPS + force path style', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'disableDoubleEncoding' => \true, 'signingRegion' => 'us-east-1']]], 'url' => 'https://s3-fips.dualstack.us-east-1.amazonaws.com/bucket']], 'params' => ['Region' => 'us-east-1', 'Bucket' => 'bucket', 'ForcePathStyle' => \true, 'UseFIPS' => \true, 'UseDualStack' => \true, 'UseGlobalEndpoint' => \true]], ['documentation' => 'FIPS + dualstack + use global endpoint', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'disableDoubleEncoding' => \true, 'signingRegion' => 'us-east-1']]], 'url' => 'https://bucket.s3-fips.dualstack.us-east-1.amazonaws.com']], 'params' => ['Region' => 'us-east-1', 'Bucket' => 'bucket', 'UseFIPS' => \true, 'UseDualStack' => \true, 'UseGlobalEndpoint' => \true]], ['documentation' => 'URI encoded bucket + use global endpoint', 'expect' => ['error' => 'A custom endpoint cannot be combined with FIPS'], 'params' => ['Region' => 'us-east-1', 'Bucket' => 'bucket!', 'UseFIPS' => \true, 'UseDualStack' => \false, 'UseGlobalEndpoint' => \true, 'Endpoint' => 'https://foo.com']], ['documentation' => 'FIPS + path based endpoint', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'disableDoubleEncoding' => \true, 'signingRegion' => 'us-east-1']]], 'url' => 'https://s3-fips.us-east-1.amazonaws.com/bucket%21']], 'params' => ['Region' => 'us-east-1', 'Bucket' => 'bucket!', 'UseFIPS' => \true, 'UseDualStack' => \false, 'Accelerate' => \false, 'UseGlobalEndpoint' => \true]], ['documentation' => 'accelerate + dualstack + global endpoint', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'disableDoubleEncoding' => \true, 'signingRegion' => 'us-east-1']]], 'url' => 'https://bucket.s3-accelerate.dualstack.amazonaws.com']], 'params' => ['Region' => 'us-east-1', 'Bucket' => 'bucket', 'UseFIPS' => \false, 'UseDualStack' => \true, 'Accelerate' => \true, 'UseGlobalEndpoint' => \true]], ['documentation' => 'dualstack + global endpoint + non URI safe bucket', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'disableDoubleEncoding' => \true, 'signingRegion' => 'us-east-1']]], 'url' => 'https://s3.dualstack.us-east-1.amazonaws.com/bucket%21']], 'params' => ['Region' => 'us-east-1', 'Bucket' => 'bucket!', 'Accelerate' => \false, 'UseDualStack' => \true, 'UseFIPS' => \false, 'UseGlobalEndpoint' => \true]], ['documentation' => 'FIPS + uri encoded bucket', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'disableDoubleEncoding' => \true, 'signingRegion' => 'us-east-1']]], 'url' => 'https://s3-fips.us-east-1.amazonaws.com/bucket%21']], 'params' => ['Region' => 'us-east-1', 'Bucket' => 'bucket!', 'ForcePathStyle' => \true, 'Accelerate' => \false, 'UseDualStack' => \false, 'UseFIPS' => \true, 'UseGlobalEndpoint' => \true]], ['documentation' => 'endpoint override + non-uri safe endpoint + force path style', 'expect' => ['error' => 'A custom endpoint cannot be combined with FIPS'], 'params' => ['Region' => 'us-east-1', 'Bucket' => 'bucket!', 'ForcePathStyle' => \true, 'Accelerate' => \false, 'UseDualStack' => \false, 'UseFIPS' => \true, 'Endpoint' => 'http://foo.com', 'UseGlobalEndpoint' => \true]], ['documentation' => 'FIPS + Dualstack + global endpoint + non-dns bucket', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'disableDoubleEncoding' => \true, 'signingRegion' => 'us-east-1']]], 'url' => 'https://s3-fips.dualstack.us-east-1.amazonaws.com/bucket%21']], 'params' => ['Region' => 'us-east-1', 'Bucket' => 'bucket!', 'Accelerate' => \false, 'UseDualStack' => \true, 'UseFIPS' => \true, 'UseGlobalEndpoint' => \true]], ['documentation' => 'endpoint override + FIPS + dualstack', 'expect' => ['error' => 'Cannot set dual-stack in combination with a custom endpoint.'], 'params' => ['Region' => 'us-east-1', 'UseDualStack' => \true, 'UseFIPS' => \true, 'UseGlobalEndpoint' => \true, 'Endpoint' => 'http://foo.com']], ['documentation' => 'non-bucket endpoint override + dualstack + global endpoint', 'expect' => ['error' => 'Cannot set dual-stack in combination with a custom endpoint.'], 'params' => ['Region' => 'us-east-1', 'UseFIPS' => \false, 'UseDualStack' => \true, 'UseGlobalEndpoint' => \true, 'Endpoint' => 'http://foo.com']], ['documentation' => 'Endpoint override + UseGlobalEndpoint + us-east-1', 'expect' => ['error' => 'A custom endpoint cannot be combined with FIPS'], 'params' => ['Region' => 'us-east-1', 'UseFIPS' => \true, 'UseDualStack' => \false, 'UseGlobalEndpoint' => \true, 'Endpoint' => 'http://foo.com']], ['documentation' => 'non-FIPS partition with FIPS set + custom endpoint', 'expect' => ['error' => 'Partition does not support FIPS'], 'params' => ['Region' => 'cn-north-1', 'UseFIPS' => \true, 'UseDualStack' => \false, 'UseGlobalEndpoint' => \true]], ['documentation' => 'aws-global signs as us-east-1', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['signingRegion' => 'us-east-1', 'name' => 'sigv4', 'signingName' => 's3', 'disableDoubleEncoding' => \true]]], 'url' => 'https://s3-fips.dualstack.us-east-1.amazonaws.com/bucket%21']], 'params' => ['Region' => 'aws-global', 'Bucket' => 'bucket!', 'UseFIPS' => \true, 'Accelerate' => \false, 'UseDualStack' => \true]], ['documentation' => 'aws-global signs as us-east-1', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['signingRegion' => 'us-east-1', 'name' => 'sigv4', 'signingName' => 's3', 'disableDoubleEncoding' => \true]]], 'url' => 'https://bucket.foo.com']], 'params' => ['Region' => 'aws-global', 'Bucket' => 'bucket', 'UseDualStack' => \false, 'UseFIPS' => \false, 'Accelerate' => \false, 'Endpoint' => 'https://foo.com']], ['documentation' => 'aws-global + dualstack + path-only bucket', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['signingRegion' => 'us-east-1', 'name' => 'sigv4', 'signingName' => 's3', 'disableDoubleEncoding' => \true]]], 'url' => 'https://s3.dualstack.us-east-1.amazonaws.com/bucket%21']], 'params' => ['Region' => 'aws-global', 'Bucket' => 'bucket!', 'UseDualStack' => \true, 'UseFIPS' => \false, 'Accelerate' => \false]], ['documentation' => 'aws-global + path-only bucket', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['signingRegion' => 'us-east-1', 'name' => 'sigv4', 'signingName' => 's3', 'disableDoubleEncoding' => \true]]], 'url' => 'https://s3.amazonaws.com/bucket%21']], 'params' => ['Region' => 'aws-global', 'Bucket' => 'bucket!']], ['documentation' => 'aws-global + fips + custom endpoint', 'expect' => ['error' => 'A custom endpoint cannot be combined with FIPS'], 'params' => ['Region' => 'aws-global', 'Bucket' => 'bucket!', 'UseDualStack' => \false, 'UseFIPS' => \true, 'Accelerate' => \false, 'Endpoint' => 'http://foo.com']], ['documentation' => 'aws-global, endpoint override & path only-bucket', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['signingRegion' => 'us-east-1', 'name' => 'sigv4', 'signingName' => 's3', 'disableDoubleEncoding' => \true]]], 'url' => 'http://foo.com/bucket%21']], 'params' => ['Region' => 'aws-global', 'Bucket' => 'bucket!', 'UseDualStack' => \false, 'UseFIPS' => \false, 'Accelerate' => \false, 'Endpoint' => 'http://foo.com']], ['documentation' => 'aws-global + dualstack + custom endpoint', 'expect' => ['error' => 'Cannot set dual-stack in combination with a custom endpoint.'], 'params' => ['Region' => 'aws-global', 'UseDualStack' => \true, 'UseFIPS' => \false, 'Accelerate' => \false, 'Endpoint' => 'http://foo.com']], ['documentation' => 'accelerate, dualstack + aws-global', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['signingRegion' => 'us-east-1', 'name' => 'sigv4', 'signingName' => 's3', 'disableDoubleEncoding' => \true]]], 'url' => 'https://bucket.s3-accelerate.dualstack.us-east-1.amazonaws.com']], 'params' => ['Region' => 'aws-global', 'Bucket' => 'bucket', 'UseDualStack' => \true, 'UseFIPS' => \false, 'Accelerate' => \true]], ['documentation' => 'FIPS + aws-global + path only bucket. This is not supported by S3 but we allow garbage in garbage out', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['signingRegion' => 'us-east-1', 'name' => 'sigv4', 'signingName' => 's3', 'disableDoubleEncoding' => \true]]], 'url' => 'https://s3-fips.dualstack.us-east-1.amazonaws.com/bucket%21']], 'params' => ['Region' => 'aws-global', 'Bucket' => 'bucket!', 'ForcePathStyle' => \true, 'UseDualStack' => \true, 'UseFIPS' => \true, 'Accelerate' => \false]], ['documentation' => 'aws-global + FIPS + endpoint override.', 'expect' => ['error' => 'A custom endpoint cannot be combined with FIPS'], 'params' => ['Region' => 'aws-global', 'UseFIPS' => \true, 'Endpoint' => 'http://foo.com']], ['documentation' => 'force path style, FIPS, aws-global & endpoint override', 'expect' => ['error' => 'A custom endpoint cannot be combined with FIPS'], 'params' => ['Region' => 'aws-global', 'Bucket' => 'bucket!', 'ForcePathStyle' => \true, 'UseFIPS' => \true, 'Endpoint' => 'http://foo.com']], ['documentation' => 'ip address causes path style to be forced', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['signingRegion' => 'us-east-1', 'name' => 'sigv4', 'signingName' => 's3', 'disableDoubleEncoding' => \true]]], 'url' => 'http://192.168.1.1/bucket']], 'params' => ['Region' => 'aws-global', 'Bucket' => 'bucket', 'Endpoint' => 'http://192.168.1.1']], ['documentation' => 'endpoint override with aws-global region', 'expect' => ['error' => 'Cannot set dual-stack in combination with a custom endpoint.'], 'params' => ['Region' => 'aws-global', 'UseFIPS' => \true, 'UseDualStack' => \true, 'Endpoint' => 'http://foo.com']], ['documentation' => 'FIPS + path-only (TODO: consider making this an error)', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['signingRegion' => 'us-east-1', 'name' => 'sigv4', 'signingName' => 's3', 'disableDoubleEncoding' => \true]]], 'url' => 'https://s3-fips.us-east-1.amazonaws.com/bucket%21']], 'params' => ['Region' => 'aws-global', 'Bucket' => 'bucket!', 'UseFIPS' => \true]], ['documentation' => 'empty arn type', 'expect' => ['error' => 'Invalid ARN: No ARN type specified'], 'params' => ['Region' => 'us-east-2', 'Bucket' => 'arn:aws:not-s3:us-west-2:123456789012::myendpoint']], ['documentation' => 'path style can\'t be used with accelerate', 'expect' => ['error' => 'Path-style addressing cannot be used with S3 Accelerate'], 'params' => ['Region' => 'us-east-2', 'Bucket' => 'bucket!', 'Accelerate' => \true]], ['documentation' => 'invalid region', 'expect' => ['error' => 'Invalid region: region was not a valid DNS name.'], 'params' => ['Region' => 'us-east-2!', 'Bucket' => 'bucket.subdomain', 'Endpoint' => 'http://foo.com']], ['documentation' => 'invalid region', 'expect' => ['error' => 'Invalid region: region was not a valid DNS name.'], 'params' => ['Region' => 'us-east-2!', 'Bucket' => 'bucket', 'Endpoint' => 'http://foo.com']], ['documentation' => 'empty arn type', 'expect' => ['error' => 'Invalid Access Point Name'], 'params' => ['Region' => 'us-east-2', 'Bucket' => 'arn:aws:s3::123456789012:accesspoint:my_endpoint']], ['documentation' => 'empty arn type', 'expect' => ['error' => 'Client was configured for partition `aws` but ARN (`arn:aws:s3:cn-north-1:123456789012:accesspoint:my-endpoint`) has `aws-cn`'], 'params' => ['Region' => 'us-east-2', 'Bucket' => 'arn:aws:s3:cn-north-1:123456789012:accesspoint:my-endpoint', 'UseArnRegion' => \true]], ['documentation' => 'invalid arn region', 'expect' => ['error' => 'Invalid region in ARN: `us-east_2` (invalid DNS name)'], 'params' => ['Region' => 'us-east-2', 'Bucket' => 'arn:aws:s3-object-lambda:us-east_2:123456789012:accesspoint:my-endpoint', 'UseArnRegion' => \true]], ['documentation' => 'invalid ARN outpost', 'expect' => ['error' => 'Invalid ARN: The outpost Id may only contain a-z, A-Z, 0-9 and `-`. Found: `op_01234567890123456`'], 'params' => ['Region' => 'us-east-2', 'Bucket' => 'arn:aws:s3-outposts:us-east-1:123456789012:outpost/op_01234567890123456/accesspoint/reports', 'UseArnRegion' => \true]], ['documentation' => 'invalid ARN', 'expect' => ['error' => 'Invalid ARN: expected an access point name'], 'params' => ['Region' => 'us-east-2', 'Bucket' => 'arn:aws:s3-outposts:us-east-1:123456789012:outpost/op-01234567890123456/reports']], ['documentation' => 'invalid ARN', 'expect' => ['error' => 'Invalid ARN: Expected a 4-component resource'], 'params' => ['Region' => 'us-east-2', 'Bucket' => 'arn:aws:s3-outposts:us-east-1:123456789012:outpost/op-01234567890123456']], ['documentation' => 'invalid outpost type', 'expect' => ['error' => 'Expected an outpost type `accesspoint`, found not-accesspoint'], 'params' => ['Region' => 'us-east-2', 'Bucket' => 'arn:aws:s3-outposts:us-east-1:123456789012:outpost/op-01234567890123456/not-accesspoint/reports']], ['documentation' => 'invalid outpost type', 'expect' => ['error' => 'Invalid region in ARN: `us-east_1` (invalid DNS name)'], 'params' => ['Region' => 'us-east-2', 'Bucket' => 'arn:aws:s3-outposts:us-east_1:123456789012:outpost/op-01234567890123456/not-accesspoint/reports']], ['documentation' => 'invalid outpost type', 'expect' => ['error' => 'Invalid ARN: The account id may only contain a-z, A-Z, 0-9 and `-`. Found: `12345_789012`'], 'params' => ['Region' => 'us-east-2', 'Bucket' => 'arn:aws:s3-outposts:us-east-1:12345_789012:outpost/op-01234567890123456/not-accesspoint/reports']], ['documentation' => 'invalid outpost type', 'expect' => ['error' => 'Invalid ARN: The Outpost Id was not set'], 'params' => ['Region' => 'us-east-2', 'Bucket' => 'arn:aws:s3-outposts:us-east-1:12345789012:outpost']], ['documentation' => 'use global endpoint virtual addressing', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['signingRegion' => 'us-east-2', 'name' => 'sigv4', 'signingName' => 's3', 'disableDoubleEncoding' => \true]]], 'url' => 'http://bucket.example.com']], 'params' => ['Region' => 'us-east-2', 'Bucket' => 'bucket', 'Endpoint' => 'http://example.com', 'UseGlobalEndpoint' => \true]], ['documentation' => 'global endpoint + ip address', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['signingRegion' => 'us-east-2', 'name' => 'sigv4', 'signingName' => 's3', 'disableDoubleEncoding' => \true]]], 'url' => 'http://192.168.0.1/bucket']], 'params' => ['Region' => 'us-east-2', 'Bucket' => 'bucket', 'Endpoint' => 'http://192.168.0.1', 'UseGlobalEndpoint' => \true]], ['documentation' => 'invalid outpost type', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['signingRegion' => 'us-east-2', 'name' => 'sigv4', 'signingName' => 's3', 'disableDoubleEncoding' => \true]]], 'url' => 'https://s3.us-east-2.amazonaws.com/bucket%21']], 'params' => ['Region' => 'us-east-2', 'Bucket' => 'bucket!', 'UseGlobalEndpoint' => \true]], ['documentation' => 'invalid outpost type', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['signingRegion' => 'us-east-2', 'name' => 'sigv4', 'signingName' => 's3', 'disableDoubleEncoding' => \true]]], 'url' => 'https://bucket.s3-accelerate.amazonaws.com']], 'params' => ['Region' => 'us-east-2', 'Bucket' => 'bucket', 'Accelerate' => \true, 'UseGlobalEndpoint' => \true]], ['documentation' => 'use global endpoint + custom endpoint', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['signingRegion' => 'us-east-2', 'name' => 'sigv4', 'signingName' => 's3', 'disableDoubleEncoding' => \true]]], 'url' => 'http://foo.com/bucket%21']], 'params' => ['Region' => 'us-east-2', 'Bucket' => 'bucket!', 'UseGlobalEndpoint' => \true, 'Endpoint' => 'http://foo.com']], ['documentation' => 'use global endpoint, not us-east-1, force path style', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['signingRegion' => 'us-east-2', 'name' => 'sigv4', 'signingName' => 's3', 'disableDoubleEncoding' => \true]]], 'url' => 'http://foo.com/bucket%21']], 'params' => ['Region' => 'us-east-2', 'Bucket' => 'bucket!', 'UseGlobalEndpoint' => \true, 'ForcePathStyle' => \true, 'Endpoint' => 'http://foo.com']], ['documentation' => 'vanilla virtual addressing@us-west-2', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-west-2', 'disableDoubleEncoding' => \true]]], 'url' => 'https://bucket-name.s3.us-west-2.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'bucket-name', 'ForcePathStyle' => \false, 'Region' => 'us-west-2', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'virtual addressing + dualstack@us-west-2', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-west-2', 'disableDoubleEncoding' => \true]]], 'url' => 'https://bucket-name.s3.dualstack.us-west-2.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2', 'AWS::UseDualStack' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'bucket-name', 'ForcePathStyle' => \false, 'Region' => 'us-west-2', 'UseDualStack' => \true, 'UseFIPS' => \false]], ['documentation' => 'accelerate + dualstack@us-west-2', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-west-2', 'disableDoubleEncoding' => \true]]], 'url' => 'https://bucket-name.s3-accelerate.dualstack.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2', 'AWS::UseDualStack' => \true, 'AWS::S3::Accelerate' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Accelerate' => \true, 'Bucket' => 'bucket-name', 'ForcePathStyle' => \false, 'Region' => 'us-west-2', 'UseDualStack' => \true, 'UseFIPS' => \false]], ['documentation' => 'accelerate (dualstack=false)@us-west-2', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-west-2', 'disableDoubleEncoding' => \true]]], 'url' => 'https://bucket-name.s3-accelerate.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2', 'AWS::S3::Accelerate' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Accelerate' => \true, 'Bucket' => 'bucket-name', 'ForcePathStyle' => \false, 'Region' => 'us-west-2', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'virtual addressing + fips@us-west-2', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-west-2', 'disableDoubleEncoding' => \true]]], 'url' => 'https://bucket-name.s3-fips.us-west-2.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2', 'AWS::UseFIPS' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'bucket-name', 'ForcePathStyle' => \false, 'Region' => 'us-west-2', 'UseDualStack' => \false, 'UseFIPS' => \true]], ['documentation' => 'virtual addressing + dualstack + fips@us-west-2', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-west-2', 'disableDoubleEncoding' => \true]]], 'url' => 'https://bucket-name.s3-fips.dualstack.us-west-2.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2', 'AWS::UseFIPS' => \true, 'AWS::UseDualStack' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'bucket-name', 'ForcePathStyle' => \false, 'Region' => 'us-west-2', 'UseDualStack' => \true, 'UseFIPS' => \true]], ['documentation' => 'accelerate + fips = error@us-west-2', 'expect' => ['error' => 'Accelerate cannot be used with FIPS'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2', 'AWS::UseFIPS' => \true, 'AWS::S3::Accelerate' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Accelerate' => \true, 'Bucket' => 'bucket-name', 'ForcePathStyle' => \false, 'Region' => 'us-west-2', 'UseDualStack' => \false, 'UseFIPS' => \true]], ['documentation' => 'vanilla virtual addressing@cn-north-1', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'cn-north-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://bucket-name.s3.cn-north-1.amazonaws.com.cn']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'cn-north-1'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'bucket-name', 'ForcePathStyle' => \false, 'Region' => 'cn-north-1', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'virtual addressing + dualstack@cn-north-1', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'cn-north-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://bucket-name.s3.dualstack.cn-north-1.amazonaws.com.cn']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'cn-north-1', 'AWS::UseDualStack' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'bucket-name', 'ForcePathStyle' => \false, 'Region' => 'cn-north-1', 'UseDualStack' => \true, 'UseFIPS' => \false]], ['documentation' => 'accelerate (dualstack=false)@cn-north-1', 'expect' => ['error' => 'S3 Accelerate cannot be used in this region'], 'params' => ['Accelerate' => \true, 'Bucket' => 'bucket-name', 'ForcePathStyle' => \false, 'Region' => 'cn-north-1', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'virtual addressing + fips@cn-north-1', 'expect' => ['error' => 'Partition does not support FIPS'], 'params' => ['Accelerate' => \false, 'Bucket' => 'bucket-name', 'ForcePathStyle' => \false, 'Region' => 'cn-north-1', 'UseDualStack' => \false, 'UseFIPS' => \true]], ['documentation' => 'vanilla virtual addressing@af-south-1', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'af-south-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://bucket-name.s3.af-south-1.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'af-south-1'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'bucket-name', 'ForcePathStyle' => \false, 'Region' => 'af-south-1', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'virtual addressing + dualstack@af-south-1', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'af-south-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://bucket-name.s3.dualstack.af-south-1.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'af-south-1', 'AWS::UseDualStack' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'bucket-name', 'ForcePathStyle' => \false, 'Region' => 'af-south-1', 'UseDualStack' => \true, 'UseFIPS' => \false]], ['documentation' => 'accelerate + dualstack@af-south-1', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'af-south-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://bucket-name.s3-accelerate.dualstack.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'af-south-1', 'AWS::UseDualStack' => \true, 'AWS::S3::Accelerate' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Accelerate' => \true, 'Bucket' => 'bucket-name', 'ForcePathStyle' => \false, 'Region' => 'af-south-1', 'UseDualStack' => \true, 'UseFIPS' => \false]], ['documentation' => 'accelerate (dualstack=false)@af-south-1', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'af-south-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://bucket-name.s3-accelerate.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'af-south-1', 'AWS::S3::Accelerate' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Accelerate' => \true, 'Bucket' => 'bucket-name', 'ForcePathStyle' => \false, 'Region' => 'af-south-1', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'virtual addressing + fips@af-south-1', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'af-south-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://bucket-name.s3-fips.af-south-1.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'af-south-1', 'AWS::UseFIPS' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'bucket-name', 'ForcePathStyle' => \false, 'Region' => 'af-south-1', 'UseDualStack' => \false, 'UseFIPS' => \true]], ['documentation' => 'virtual addressing + dualstack + fips@af-south-1', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'af-south-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://bucket-name.s3-fips.dualstack.af-south-1.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'af-south-1', 'AWS::UseFIPS' => \true, 'AWS::UseDualStack' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'bucket-name', 'ForcePathStyle' => \false, 'Region' => 'af-south-1', 'UseDualStack' => \true, 'UseFIPS' => \true]], ['documentation' => 'accelerate + fips = error@af-south-1', 'expect' => ['error' => 'Accelerate cannot be used with FIPS'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'af-south-1', 'AWS::UseFIPS' => \true, 'AWS::S3::Accelerate' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Accelerate' => \true, 'Bucket' => 'bucket-name', 'ForcePathStyle' => \false, 'Region' => 'af-south-1', 'UseDualStack' => \false, 'UseFIPS' => \true]], ['documentation' => 'vanilla path style@us-west-2', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-west-2', 'disableDoubleEncoding' => \true]]], 'url' => 'https://s3.us-west-2.amazonaws.com/bucket-name']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2', 'AWS::S3::ForcePathStyle' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'bucket-name', 'ForcePathStyle' => \true, 'Region' => 'us-west-2', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'fips@us-gov-west-2, bucket is not S3-dns-compatible (subdomains)', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['signingName' => 's3', 'signingRegion' => 'us-gov-west-1', 'disableDoubleEncoding' => \true, 'name' => 'sigv4']]], 'url' => 'https://s3-fips.us-gov-west-1.amazonaws.com/bucket.with.dots']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-gov-west-1', 'AWS::UseFIPS' => \true, 'AWS::S3::ForcePathStyle' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket.with.dots', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'bucket.with.dots', 'Region' => 'us-gov-west-1', 'UseDualStack' => \false, 'UseFIPS' => \true]], ['documentation' => 'path style + accelerate = error@us-west-2', 'expect' => ['error' => 'Path-style addressing cannot be used with S3 Accelerate'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2', 'AWS::S3::ForcePathStyle' => \true, 'AWS::S3::Accelerate' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Accelerate' => \true, 'Bucket' => 'bucket-name', 'ForcePathStyle' => \true, 'Region' => 'us-west-2', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'path style + dualstack@us-west-2', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-west-2', 'disableDoubleEncoding' => \true]]], 'url' => 'https://s3.dualstack.us-west-2.amazonaws.com/bucket-name']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2', 'AWS::UseDualStack' => \true, 'AWS::S3::ForcePathStyle' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'bucket-name', 'ForcePathStyle' => \true, 'Region' => 'us-west-2', 'UseDualStack' => \true, 'UseFIPS' => \false]], ['documentation' => 'path style + arn is error@us-west-2', 'expect' => ['error' => 'Path-style addressing cannot be used with ARN buckets'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2', 'AWS::S3::ForcePathStyle' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:PARTITION:s3-outposts:REGION:123456789012:outpost:op-01234567890123456:bucket:mybucket', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'arn:PARTITION:s3-outposts:REGION:123456789012:outpost:op-01234567890123456:bucket:mybucket', 'ForcePathStyle' => \true, 'Region' => 'us-west-2', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'path style + invalid DNS name@us-west-2', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-west-2', 'disableDoubleEncoding' => \true]]], 'url' => 'https://s3.us-west-2.amazonaws.com/99a_b']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2', 'AWS::S3::ForcePathStyle' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => '99a_b', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => '99a_b', 'ForcePathStyle' => \true, 'Region' => 'us-west-2', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'no path style + invalid DNS name@us-west-2', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-west-2', 'disableDoubleEncoding' => \true]]], 'url' => 'https://s3.us-west-2.amazonaws.com/99a_b']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => '99a_b', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => '99a_b', 'Region' => 'us-west-2', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'vanilla path style@cn-north-1', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'cn-north-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://s3.cn-north-1.amazonaws.com.cn/bucket-name']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'cn-north-1', 'AWS::S3::ForcePathStyle' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'bucket-name', 'ForcePathStyle' => \true, 'Region' => 'cn-north-1', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'path style + fips@cn-north-1', 'expect' => ['error' => 'Partition does not support FIPS'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'cn-north-1', 'AWS::UseFIPS' => \true, 'AWS::S3::ForcePathStyle' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'bucket-name', 'ForcePathStyle' => \true, 'Region' => 'cn-north-1', 'UseDualStack' => \false, 'UseFIPS' => \true]], ['documentation' => 'path style + accelerate = error@cn-north-1', 'expect' => ['error' => 'Path-style addressing cannot be used with S3 Accelerate'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'cn-north-1', 'AWS::S3::ForcePathStyle' => \true, 'AWS::S3::Accelerate' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Accelerate' => \true, 'Bucket' => 'bucket-name', 'ForcePathStyle' => \true, 'Region' => 'cn-north-1', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'path style + dualstack@cn-north-1', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'cn-north-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://s3.dualstack.cn-north-1.amazonaws.com.cn/bucket-name']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'cn-north-1', 'AWS::UseDualStack' => \true, 'AWS::S3::ForcePathStyle' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'bucket-name', 'ForcePathStyle' => \true, 'Region' => 'cn-north-1', 'UseDualStack' => \true, 'UseFIPS' => \false]], ['documentation' => 'path style + arn is error@cn-north-1', 'expect' => ['error' => 'Path-style addressing cannot be used with ARN buckets'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'cn-north-1', 'AWS::S3::ForcePathStyle' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:PARTITION:s3-outposts:REGION:123456789012:outpost:op-01234567890123456:bucket:mybucket', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'arn:PARTITION:s3-outposts:REGION:123456789012:outpost:op-01234567890123456:bucket:mybucket', 'ForcePathStyle' => \true, 'Region' => 'cn-north-1', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'path style + invalid DNS name@cn-north-1', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'cn-north-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://s3.cn-north-1.amazonaws.com.cn/99a_b']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'cn-north-1', 'AWS::S3::ForcePathStyle' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => '99a_b', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => '99a_b', 'ForcePathStyle' => \true, 'Region' => 'cn-north-1', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'no path style + invalid DNS name@cn-north-1', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'cn-north-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://s3.cn-north-1.amazonaws.com.cn/99a_b']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'cn-north-1'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => '99a_b', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => '99a_b', 'Region' => 'cn-north-1', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'vanilla path style@af-south-1', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'af-south-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://s3.af-south-1.amazonaws.com/bucket-name']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'af-south-1', 'AWS::S3::ForcePathStyle' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'bucket-name', 'ForcePathStyle' => \true, 'Region' => 'af-south-1', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'path style + fips@af-south-1', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['signingName' => 's3', 'signingRegion' => 'af-south-1', 'disableDoubleEncoding' => \true, 'name' => 'sigv4']]], 'url' => 'https://s3-fips.af-south-1.amazonaws.com/bucket-name']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'af-south-1', 'AWS::UseFIPS' => \true, 'AWS::S3::ForcePathStyle' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'bucket-name', 'ForcePathStyle' => \true, 'Region' => 'af-south-1', 'UseDualStack' => \false, 'UseFIPS' => \true]], ['documentation' => 'path style + accelerate = error@af-south-1', 'expect' => ['error' => 'Path-style addressing cannot be used with S3 Accelerate'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'af-south-1', 'AWS::S3::ForcePathStyle' => \true, 'AWS::S3::Accelerate' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Accelerate' => \true, 'Bucket' => 'bucket-name', 'ForcePathStyle' => \true, 'Region' => 'af-south-1', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'path style + dualstack@af-south-1', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'af-south-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://s3.dualstack.af-south-1.amazonaws.com/bucket-name']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'af-south-1', 'AWS::UseDualStack' => \true, 'AWS::S3::ForcePathStyle' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'bucket-name', 'ForcePathStyle' => \true, 'Region' => 'af-south-1', 'UseDualStack' => \true, 'UseFIPS' => \false]], ['documentation' => 'path style + arn is error@af-south-1', 'expect' => ['error' => 'Path-style addressing cannot be used with ARN buckets'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'af-south-1', 'AWS::S3::ForcePathStyle' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:PARTITION:s3-outposts:REGION:123456789012:outpost:op-01234567890123456:bucket:mybucket', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'arn:PARTITION:s3-outposts:REGION:123456789012:outpost:op-01234567890123456:bucket:mybucket', 'ForcePathStyle' => \true, 'Region' => 'af-south-1', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'path style + invalid DNS name@af-south-1', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'af-south-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://s3.af-south-1.amazonaws.com/99a_b']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'af-south-1', 'AWS::S3::ForcePathStyle' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => '99a_b', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => '99a_b', 'ForcePathStyle' => \true, 'Region' => 'af-south-1', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'no path style + invalid DNS name@af-south-1', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'af-south-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://s3.af-south-1.amazonaws.com/99a_b']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'af-south-1'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => '99a_b', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => '99a_b', 'Region' => 'af-south-1', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'virtual addressing + private link@us-west-2', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-west-2', 'disableDoubleEncoding' => \true]]], 'url' => 'http://bucket-name.control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2', 'SDK::Endpoint' => 'http://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'bucket-name', 'ForcePathStyle' => \false, 'Endpoint' => 'http://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com', 'Region' => 'us-west-2', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'path style + private link@us-west-2', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-west-2', 'disableDoubleEncoding' => \true]]], 'url' => 'https://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com/bucket-name']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2', 'SDK::Endpoint' => 'https://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com', 'AWS::S3::ForcePathStyle' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'bucket-name', 'ForcePathStyle' => \true, 'Endpoint' => 'https://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com', 'Region' => 'us-west-2', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'SDK::Host + FIPS@us-west-2', 'expect' => ['error' => 'A custom endpoint cannot be combined with FIPS'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2', 'AWS::UseFIPS' => \true, 'SDK::Endpoint' => 'https://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'bucket-name', 'ForcePathStyle' => \false, 'Endpoint' => 'https://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com', 'Region' => 'us-west-2', 'UseDualStack' => \false, 'UseFIPS' => \true]], ['documentation' => 'SDK::Host + DualStack@us-west-2', 'expect' => ['error' => 'Cannot set dual-stack in combination with a custom endpoint.'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2', 'AWS::UseDualStack' => \true, 'SDK::Endpoint' => 'https://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'bucket-name', 'ForcePathStyle' => \false, 'Endpoint' => 'https://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com', 'Region' => 'us-west-2', 'UseDualStack' => \true, 'UseFIPS' => \false]], ['documentation' => 'SDK::HOST + accelerate@us-west-2', 'expect' => ['error' => 'A custom endpoint cannot be combined with S3 Accelerate'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2', 'SDK::Endpoint' => 'http://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com', 'AWS::S3::Accelerate' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Accelerate' => \true, 'Bucket' => 'bucket-name', 'ForcePathStyle' => \false, 'Endpoint' => 'http://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com', 'Region' => 'us-west-2', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'SDK::Host + access point ARN@us-west-2', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-west-2', 'disableDoubleEncoding' => \true]]], 'url' => 'https://myendpoint-123456789012.beta.example.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2', 'SDK::Endpoint' => 'https://beta.example.com'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3:us-west-2:123456789012:accesspoint:myendpoint', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'arn:aws:s3:us-west-2:123456789012:accesspoint:myendpoint', 'ForcePathStyle' => \false, 'Endpoint' => 'https://beta.example.com', 'Region' => 'us-west-2', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'virtual addressing + private link@cn-north-1', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'cn-north-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://bucket-name.control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'cn-north-1', 'SDK::Endpoint' => 'https://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'bucket-name', 'ForcePathStyle' => \false, 'Endpoint' => 'https://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com', 'Region' => 'cn-north-1', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'path style + private link@cn-north-1', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'cn-north-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com/bucket-name']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'cn-north-1', 'SDK::Endpoint' => 'https://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com', 'AWS::S3::ForcePathStyle' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'bucket-name', 'ForcePathStyle' => \true, 'Endpoint' => 'https://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com', 'Region' => 'cn-north-1', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'FIPS@cn-north-1', 'expect' => ['error' => 'Partition does not support FIPS'], 'params' => ['Accelerate' => \false, 'Bucket' => 'bucket-name', 'ForcePathStyle' => \false, 'Region' => 'cn-north-1', 'UseDualStack' => \false, 'UseFIPS' => \true]], ['documentation' => 'SDK::Host + DualStack@cn-north-1', 'expect' => ['error' => 'Cannot set dual-stack in combination with a custom endpoint.'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'cn-north-1', 'AWS::UseDualStack' => \true, 'SDK::Endpoint' => 'https://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'bucket-name', 'ForcePathStyle' => \false, 'Endpoint' => 'https://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com', 'Region' => 'cn-north-1', 'UseDualStack' => \true, 'UseFIPS' => \false]], ['documentation' => 'SDK::HOST + accelerate@cn-north-1', 'expect' => ['error' => 'A custom endpoint cannot be combined with S3 Accelerate'], 'params' => ['Accelerate' => \true, 'Bucket' => 'bucket-name', 'ForcePathStyle' => \false, 'Endpoint' => 'https://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com', 'Region' => 'cn-north-1', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'SDK::Host + access point ARN@cn-north-1', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'cn-north-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://myendpoint-123456789012.beta.example.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'cn-north-1', 'SDK::Endpoint' => 'https://beta.example.com'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws-cn:s3:cn-north-1:123456789012:accesspoint:myendpoint', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'arn:aws-cn:s3:cn-north-1:123456789012:accesspoint:myendpoint', 'ForcePathStyle' => \false, 'Endpoint' => 'https://beta.example.com', 'Region' => 'cn-north-1', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'virtual addressing + private link@af-south-1', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'af-south-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://bucket-name.control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'af-south-1', 'SDK::Endpoint' => 'https://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'bucket-name', 'ForcePathStyle' => \false, 'Endpoint' => 'https://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com', 'Region' => 'af-south-1', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'path style + private link@af-south-1', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'af-south-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com/bucket-name']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'af-south-1', 'SDK::Endpoint' => 'https://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com', 'AWS::S3::ForcePathStyle' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'bucket-name', 'ForcePathStyle' => \true, 'Endpoint' => 'https://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com', 'Region' => 'af-south-1', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'SDK::Host + FIPS@af-south-1', 'expect' => ['error' => 'A custom endpoint cannot be combined with FIPS'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'af-south-1', 'AWS::UseFIPS' => \true, 'SDK::Endpoint' => 'https://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'bucket-name', 'ForcePathStyle' => \false, 'Endpoint' => 'https://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com', 'Region' => 'af-south-1', 'UseDualStack' => \false, 'UseFIPS' => \true]], ['documentation' => 'SDK::Host + DualStack@af-south-1', 'expect' => ['error' => 'Cannot set dual-stack in combination with a custom endpoint.'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'af-south-1', 'AWS::UseDualStack' => \true, 'SDK::Endpoint' => 'https://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'bucket-name', 'ForcePathStyle' => \false, 'Endpoint' => 'https://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com', 'Region' => 'af-south-1', 'UseDualStack' => \true, 'UseFIPS' => \false]], ['documentation' => 'SDK::HOST + accelerate@af-south-1', 'expect' => ['error' => 'A custom endpoint cannot be combined with S3 Accelerate'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'af-south-1', 'SDK::Endpoint' => 'https://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com', 'AWS::S3::Accelerate' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'bucket-name', 'Key' => 'key']]], 'params' => ['Accelerate' => \true, 'Bucket' => 'bucket-name', 'ForcePathStyle' => \false, 'Endpoint' => 'https://control.vpce-1a2b3c4d-5e6f.s3.us-west-2.vpce.amazonaws.com', 'Region' => 'af-south-1', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'SDK::Host + access point ARN@af-south-1', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'af-south-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://myendpoint-123456789012.beta.example.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'af-south-1', 'SDK::Endpoint' => 'https://beta.example.com'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3:af-south-1:123456789012:accesspoint:myendpoint', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'arn:aws:s3:af-south-1:123456789012:accesspoint:myendpoint', 'ForcePathStyle' => \false, 'Endpoint' => 'https://beta.example.com', 'Region' => 'af-south-1', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'vanilla access point arn@us-west-2', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-west-2', 'disableDoubleEncoding' => \true]]], 'url' => 'https://myendpoint-123456789012.s3-accesspoint.us-west-2.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3:us-west-2:123456789012:accesspoint:myendpoint', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'arn:aws:s3:us-west-2:123456789012:accesspoint:myendpoint', 'ForcePathStyle' => \false, 'Region' => 'us-west-2', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'access point arn + FIPS@us-west-2', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-west-2', 'disableDoubleEncoding' => \true]]], 'url' => 'https://myendpoint-123456789012.s3-accesspoint-fips.us-west-2.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2', 'AWS::UseFIPS' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3:us-west-2:123456789012:accesspoint:myendpoint', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'arn:aws:s3:us-west-2:123456789012:accesspoint:myendpoint', 'ForcePathStyle' => \false, 'Region' => 'us-west-2', 'UseDualStack' => \false, 'UseFIPS' => \true]], ['documentation' => 'access point arn + accelerate = error@us-west-2', 'expect' => ['error' => 'Access Points do not support S3 Accelerate'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2', 'AWS::S3::Accelerate' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3:us-west-2:123456789012:accesspoint:myendpoint', 'Key' => 'key']]], 'params' => ['Accelerate' => \true, 'Bucket' => 'arn:aws:s3:us-west-2:123456789012:accesspoint:myendpoint', 'ForcePathStyle' => \false, 'Region' => 'us-west-2', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'access point arn + FIPS + DualStack@us-west-2', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'us-west-2', 'disableDoubleEncoding' => \true]]], 'url' => 'https://myendpoint-123456789012.s3-accesspoint-fips.dualstack.us-west-2.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2', 'AWS::UseFIPS' => \true, 'AWS::UseDualStack' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3:us-west-2:123456789012:accesspoint:myendpoint', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'arn:aws:s3:us-west-2:123456789012:accesspoint:myendpoint', 'ForcePathStyle' => \false, 'Region' => 'us-west-2', 'UseDualStack' => \true, 'UseFIPS' => \true]], ['documentation' => 'vanilla access point arn@cn-north-1', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'cn-north-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://myendpoint-123456789012.s3-accesspoint.cn-north-1.amazonaws.com.cn']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'cn-north-1'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws-cn:s3:cn-north-1:123456789012:accesspoint:myendpoint', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'arn:aws-cn:s3:cn-north-1:123456789012:accesspoint:myendpoint', 'ForcePathStyle' => \false, 'Region' => 'cn-north-1', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'access point arn + FIPS@cn-north-1', 'expect' => ['error' => 'Partition does not support FIPS'], 'params' => ['Accelerate' => \false, 'Bucket' => 'arn:aws-cn:s3:cn-north-1:123456789012:accesspoint:myendpoint', 'ForcePathStyle' => \false, 'Region' => 'cn-north-1', 'UseDualStack' => \false, 'UseFIPS' => \true]], ['documentation' => 'access point arn + accelerate = error@cn-north-1', 'expect' => ['error' => 'Access Points do not support S3 Accelerate'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'cn-north-1', 'AWS::S3::Accelerate' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws-cn:s3:cn-north-1:123456789012:accesspoint:myendpoint', 'Key' => 'key']]], 'params' => ['Accelerate' => \true, 'Bucket' => 'arn:aws-cn:s3:cn-north-1:123456789012:accesspoint:myendpoint', 'ForcePathStyle' => \false, 'Region' => 'cn-north-1', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'access point arn + FIPS + DualStack@cn-north-1', 'expect' => ['error' => 'Partition does not support FIPS'], 'params' => ['Accelerate' => \false, 'Bucket' => 'arn:aws-cn:s3:cn-north-1:123456789012:accesspoint:myendpoint', 'ForcePathStyle' => \false, 'Region' => 'cn-north-1', 'UseDualStack' => \true, 'UseFIPS' => \true]], ['documentation' => 'vanilla access point arn@af-south-1', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'af-south-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://myendpoint-123456789012.s3-accesspoint.af-south-1.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'af-south-1'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3:af-south-1:123456789012:accesspoint:myendpoint', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'arn:aws:s3:af-south-1:123456789012:accesspoint:myendpoint', 'ForcePathStyle' => \false, 'Region' => 'af-south-1', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'access point arn + FIPS@af-south-1', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'af-south-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://myendpoint-123456789012.s3-accesspoint-fips.af-south-1.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'af-south-1', 'AWS::UseFIPS' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3:af-south-1:123456789012:accesspoint:myendpoint', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'arn:aws:s3:af-south-1:123456789012:accesspoint:myendpoint', 'ForcePathStyle' => \false, 'Region' => 'af-south-1', 'UseDualStack' => \false, 'UseFIPS' => \true]], ['documentation' => 'access point arn + accelerate = error@af-south-1', 'expect' => ['error' => 'Access Points do not support S3 Accelerate'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'af-south-1', 'AWS::S3::Accelerate' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3:af-south-1:123456789012:accesspoint:myendpoint', 'Key' => 'key']]], 'params' => ['Accelerate' => \true, 'Bucket' => 'arn:aws:s3:af-south-1:123456789012:accesspoint:myendpoint', 'ForcePathStyle' => \false, 'Region' => 'af-south-1', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'access point arn + FIPS + DualStack@af-south-1', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'af-south-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://myendpoint-123456789012.s3-accesspoint-fips.dualstack.af-south-1.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'af-south-1', 'AWS::UseFIPS' => \true, 'AWS::UseDualStack' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3:af-south-1:123456789012:accesspoint:myendpoint', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'arn:aws:s3:af-south-1:123456789012:accesspoint:myendpoint', 'ForcePathStyle' => \false, 'Region' => 'af-south-1', 'UseDualStack' => \true, 'UseFIPS' => \true]], ['documentation' => 'S3 outposts vanilla test', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4a', 'signingName' => 's3-outposts', 'signingRegionSet' => ['*'], 'disableDoubleEncoding' => \true], ['name' => 'sigv4', 'signingName' => 's3-outposts', 'signingRegion' => 'us-west-2', 'disableDoubleEncoding' => \true]]], 'url' => 'https://reports-123456789012.op-01234567890123456.s3-outposts.us-west-2.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3-outposts:us-west-2:123456789012:outpost/op-01234567890123456/accesspoint/reports', 'Key' => 'key']]], 'params' => ['Region' => 'us-west-2', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'Bucket' => 'arn:aws:s3-outposts:us-west-2:123456789012:outpost/op-01234567890123456/accesspoint/reports']], ['documentation' => 'S3 outposts custom endpoint', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4a', 'signingName' => 's3-outposts', 'signingRegionSet' => ['*'], 'disableDoubleEncoding' => \true], ['name' => 'sigv4', 'signingName' => 's3-outposts', 'signingRegion' => 'us-west-2', 'disableDoubleEncoding' => \true]]], 'url' => 'https://reports-123456789012.op-01234567890123456.example.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2', 'SDK::Endpoint' => 'https://example.amazonaws.com'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3-outposts:us-west-2:123456789012:outpost/op-01234567890123456/accesspoint/reports', 'Key' => 'key']]], 'params' => ['Region' => 'us-west-2', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'Bucket' => 'arn:aws:s3-outposts:us-west-2:123456789012:outpost/op-01234567890123456/accesspoint/reports', 'Endpoint' => 'https://example.amazonaws.com']], ['documentation' => 'outposts arn with region mismatch and UseArnRegion=false', 'expect' => ['error' => 'Invalid configuration: region from ARN `us-east-1` does not match client region `us-west-2` and UseArnRegion is `false`'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2', 'AWS::S3::UseArnRegion' => \false], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3-outposts:us-east-1:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'arn:aws:s3-outposts:us-east-1:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint', 'ForcePathStyle' => \false, 'UseArnRegion' => \false, 'Region' => 'us-west-2', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'outposts arn with region mismatch, custom region and UseArnRegion=false', 'expect' => ['error' => 'Invalid configuration: region from ARN `us-east-1` does not match client region `us-west-2` and UseArnRegion is `false`'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2', 'SDK::Endpoint' => 'https://example.com', 'AWS::S3::UseArnRegion' => \false], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3-outposts:us-east-1:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'arn:aws:s3-outposts:us-east-1:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint', 'Endpoint' => 'https://example.com', 'ForcePathStyle' => \false, 'UseArnRegion' => \false, 'Region' => 'us-west-2', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'outposts arn with region mismatch and UseArnRegion=true', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4a', 'signingName' => 's3-outposts', 'signingRegionSet' => ['*'], 'disableDoubleEncoding' => \true], ['name' => 'sigv4', 'signingName' => 's3-outposts', 'signingRegion' => 'us-east-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://myaccesspoint-123456789012.op-01234567890123456.s3-outposts.us-east-1.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2', 'AWS::S3::UseArnRegion' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3-outposts:us-east-1:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'arn:aws:s3-outposts:us-east-1:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint', 'ForcePathStyle' => \false, 'UseArnRegion' => \true, 'Region' => 'us-west-2', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'outposts arn with region mismatch and UseArnRegion unset', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4a', 'signingName' => 's3-outposts', 'signingRegionSet' => ['*'], 'disableDoubleEncoding' => \true], ['name' => 'sigv4', 'signingName' => 's3-outposts', 'signingRegion' => 'us-east-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://myaccesspoint-123456789012.op-01234567890123456.s3-outposts.us-east-1.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3-outposts:us-east-1:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'arn:aws:s3-outposts:us-east-1:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint', 'ForcePathStyle' => \false, 'Region' => 'us-west-2', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'outposts arn with partition mismatch and UseArnRegion=true', 'expect' => ['error' => 'Client was configured for partition `aws` but ARN (`arn:aws:s3-outposts:cn-north-1:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint`) has `aws-cn`'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2', 'AWS::S3::UseArnRegion' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3-outposts:cn-north-1:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'arn:aws:s3-outposts:cn-north-1:123456789012:outpost:op-01234567890123456:accesspoint:myaccesspoint', 'ForcePathStyle' => \false, 'UseArnRegion' => \true, 'Region' => 'us-west-2', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'ARN with UseGlobalEndpoint and use-east-1 region uses the regional endpoint', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4a', 'signingName' => 's3-outposts', 'signingRegionSet' => ['*'], 'disableDoubleEncoding' => \true], ['name' => 'sigv4', 'signingName' => 's3-outposts', 'signingRegion' => 'us-east-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://reports-123456789012.op-01234567890123456.s3-outposts.us-east-1.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1', 'AWS::S3::UseGlobalEndpoint' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3-outposts:us-east-1:123456789012:outpost/op-01234567890123456/accesspoint/reports', 'Key' => 'key']]], 'params' => ['Region' => 'us-east-1', 'UseGlobalEndpoint' => \true, 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'Bucket' => 'arn:aws:s3-outposts:us-east-1:123456789012:outpost/op-01234567890123456/accesspoint/reports']], ['documentation' => 'S3 outposts does not support dualstack', 'expect' => ['error' => 'S3 Outposts does not support Dual-stack'], 'params' => ['Region' => 'us-east-1', 'UseFIPS' => \false, 'UseDualStack' => \true, 'Accelerate' => \false, 'Bucket' => 'arn:aws:s3-outposts:us-west-2:123456789012:outpost/op-01234567890123456/accesspoint/reports']], ['documentation' => 'S3 outposts does not support fips', 'expect' => ['error' => 'S3 Outposts does not support FIPS'], 'params' => ['Region' => 'us-east-1', 'UseFIPS' => \true, 'UseDualStack' => \false, 'Accelerate' => \false, 'Bucket' => 'arn:aws:s3-outposts:us-west-2:123456789012:outpost/op-01234567890123456/accesspoint/reports']], ['documentation' => 'S3 outposts does not support accelerate', 'expect' => ['error' => 'S3 Outposts does not support S3 Accelerate'], 'params' => ['Region' => 'us-east-1', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \true, 'Bucket' => 'arn:aws:s3-outposts:us-west-2:123456789012:outpost/op-01234567890123456/accesspoint/reports']], ['documentation' => 'validates against subresource', 'expect' => ['error' => 'Invalid Arn: Outpost Access Point ARN contains sub resources'], 'params' => ['Region' => 'us-west-2', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'Bucket' => 'arn:aws:s3-outposts:us-west-2:123456789012:outpost:op-01234567890123456:accesspoint:mybucket:object:foo']], ['documentation' => 'object lambda @us-east-1', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3-object-lambda', 'signingRegion' => 'us-east-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://mybanner-123456789012.s3-object-lambda.us-east-1.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1', 'AWS::S3::UseArnRegion' => \false], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3-object-lambda:us-east-1:123456789012:accesspoint/mybanner', 'Key' => 'key']]], 'params' => ['Region' => 'us-east-1', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'UseArnRegion' => \false, 'Bucket' => 'arn:aws:s3-object-lambda:us-east-1:123456789012:accesspoint/mybanner']], ['documentation' => 'object lambda @us-west-2', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3-object-lambda', 'signingRegion' => 'us-west-2', 'disableDoubleEncoding' => \true]]], 'url' => 'https://mybanner-123456789012.s3-object-lambda.us-west-2.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2', 'AWS::S3::UseArnRegion' => \false], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3-object-lambda:us-west-2:123456789012:accesspoint/mybanner', 'Key' => 'key']]], 'params' => ['Region' => 'us-west-2', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'UseArnRegion' => \false, 'Bucket' => 'arn:aws:s3-object-lambda:us-west-2:123456789012:accesspoint/mybanner']], ['documentation' => 'object lambda, colon resource deliminator @us-west-2', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3-object-lambda', 'signingRegion' => 'us-west-2', 'disableDoubleEncoding' => \true]]], 'url' => 'https://mybanner-123456789012.s3-object-lambda.us-west-2.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2', 'AWS::S3::UseArnRegion' => \false], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3-object-lambda:us-west-2:123456789012:accesspoint:mybanner', 'Key' => 'key']]], 'params' => ['Region' => 'us-west-2', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'UseArnRegion' => \false, 'Bucket' => 'arn:aws:s3-object-lambda:us-west-2:123456789012:accesspoint:mybanner']], ['documentation' => 'object lambda @us-east-1, client region us-west-2, useArnRegion=true', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3-object-lambda', 'signingRegion' => 'us-east-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://mybanner-123456789012.s3-object-lambda.us-east-1.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2', 'AWS::S3::UseArnRegion' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3-object-lambda:us-east-1:123456789012:accesspoint/mybanner', 'Key' => 'key']]], 'params' => ['Region' => 'us-west-2', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'UseArnRegion' => \true, 'Bucket' => 'arn:aws:s3-object-lambda:us-east-1:123456789012:accesspoint/mybanner']], ['documentation' => 'object lambda @us-east-1, client region s3-external-1, useArnRegion=true', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3-object-lambda', 'signingRegion' => 'us-east-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://mybanner-123456789012.s3-object-lambda.us-east-1.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 's3-external-1', 'AWS::S3::UseArnRegion' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3-object-lambda:us-east-1:123456789012:accesspoint/mybanner', 'Key' => 'key']]], 'params' => ['Region' => 's3-external-1', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'UseArnRegion' => \true, 'Bucket' => 'arn:aws:s3-object-lambda:us-east-1:123456789012:accesspoint/mybanner']], ['documentation' => 'object lambda @us-east-1, client region s3-external-1, useArnRegion=false', 'expect' => ['error' => 'Invalid configuration: region from ARN `us-east-1` does not match client region `s3-external-1` and UseArnRegion is `false`'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 's3-external-1', 'AWS::S3::UseArnRegion' => \false], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3-object-lambda:us-east-1:123456789012:accesspoint/mybanner', 'Key' => 'key']]], 'params' => ['Region' => 's3-external-1', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'UseArnRegion' => \false, 'Bucket' => 'arn:aws:s3-object-lambda:us-east-1:123456789012:accesspoint/mybanner']], ['documentation' => 'object lambda @us-east-1, client region aws-global, useArnRegion=true', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3-object-lambda', 'signingRegion' => 'us-east-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://mybanner-123456789012.s3-object-lambda.us-east-1.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'aws-global', 'AWS::S3::UseArnRegion' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3-object-lambda:us-east-1:123456789012:accesspoint/mybanner', 'Key' => 'key']]], 'params' => ['Region' => 'aws-global', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'UseArnRegion' => \true, 'Bucket' => 'arn:aws:s3-object-lambda:us-east-1:123456789012:accesspoint/mybanner']], ['documentation' => 'object lambda @us-east-1, client region aws-global, useArnRegion=false', 'expect' => ['error' => 'Invalid configuration: region from ARN `us-east-1` does not match client region `aws-global` and UseArnRegion is `false`'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'aws-global', 'AWS::S3::UseArnRegion' => \false], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3-object-lambda:us-east-1:123456789012:accesspoint/mybanner', 'Key' => 'key']]], 'params' => ['Region' => 'aws-global', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'UseArnRegion' => \false, 'Bucket' => 'arn:aws:s3-object-lambda:us-east-1:123456789012:accesspoint/mybanner']], ['documentation' => 'object lambda @cn-north-1, client region us-west-2 (cross partition), useArnRegion=true', 'expect' => ['error' => 'Client was configured for partition `aws` but ARN (`arn:aws-cn:s3-object-lambda:cn-north-1:123456789012:accesspoint/mybanner`) has `aws-cn`'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'aws-global', 'AWS::S3::UseArnRegion' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws-cn:s3-object-lambda:cn-north-1:123456789012:accesspoint/mybanner', 'Key' => 'key']]], 'params' => ['Region' => 'aws-global', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'UseArnRegion' => \true, 'Bucket' => 'arn:aws-cn:s3-object-lambda:cn-north-1:123456789012:accesspoint/mybanner']], ['documentation' => 'object lambda with dualstack', 'expect' => ['error' => 'S3 Object Lambda does not support Dual-stack'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2', 'AWS::UseDualStack' => \true, 'AWS::S3::UseArnRegion' => \false], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3-object-lambda:us-west-2:123456789012:accesspoint/mybanner', 'Key' => 'key']]], 'params' => ['Region' => 'us-west-2', 'UseFIPS' => \false, 'UseDualStack' => \true, 'Accelerate' => \false, 'UseArnRegion' => \false, 'Bucket' => 'arn:aws:s3-object-lambda:us-west-2:123456789012:accesspoint/mybanner']], ['documentation' => 'object lambda @us-gov-east-1', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3-object-lambda', 'signingRegion' => 'us-gov-east-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://mybanner-123456789012.s3-object-lambda.us-gov-east-1.amazonaws.com']], 'params' => ['Region' => 'us-gov-east-1', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'UseArnRegion' => \false, 'Bucket' => 'arn:aws-us-gov:s3-object-lambda:us-gov-east-1:123456789012:accesspoint/mybanner']], ['documentation' => 'object lambda @us-gov-east-1, with fips', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3-object-lambda', 'signingRegion' => 'us-gov-east-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://mybanner-123456789012.s3-object-lambda-fips.us-gov-east-1.amazonaws.com']], 'params' => ['Region' => 'us-gov-east-1', 'UseFIPS' => \true, 'UseDualStack' => \false, 'Accelerate' => \false, 'UseArnRegion' => \false, 'Bucket' => 'arn:aws-us-gov:s3-object-lambda:us-gov-east-1:123456789012:accesspoint/mybanner']], ['documentation' => 'object lambda @cn-north-1, with fips', 'expect' => ['error' => 'Partition does not support FIPS'], 'params' => ['Region' => 'cn-north-1', 'UseFIPS' => \true, 'UseDualStack' => \false, 'Accelerate' => \false, 'UseArnRegion' => \false, 'Bucket' => 'arn:aws-cn:s3-object-lambda:cn-north-1:123456789012:accesspoint/mybanner']], ['documentation' => 'object lambda with accelerate', 'expect' => ['error' => 'S3 Object Lambda does not support S3 Accelerate'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2', 'AWS::S3::Accelerate' => \true, 'AWS::S3::UseArnRegion' => \false], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3-object-lambda:us-west-2:123456789012:accesspoint/mybanner', 'Key' => 'key']]], 'params' => ['Region' => 'us-west-2', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \true, 'UseArnRegion' => \false, 'Bucket' => 'arn:aws:s3-object-lambda:us-west-2:123456789012:accesspoint/mybanner']], ['documentation' => 'object lambda with invalid arn - bad service and someresource', 'expect' => ['error' => 'Invalid ARN: Unrecognized format: arn:aws:sqs:us-west-2:123456789012:someresource (type: someresource)'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2', 'AWS::S3::UseArnRegion' => \false], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:sqs:us-west-2:123456789012:someresource', 'Key' => 'key']]], 'params' => ['Region' => 'us-west-2', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'UseArnRegion' => \false, 'Bucket' => 'arn:aws:sqs:us-west-2:123456789012:someresource']], ['documentation' => 'object lambda with invalid arn - invalid resource', 'expect' => ['error' => 'Invalid ARN: Object Lambda ARNs only support `accesspoint` arn types, but found: `bucket_name`'], 'params' => ['Region' => 'us-west-2', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'UseArnRegion' => \false, 'Bucket' => 'arn:aws:s3-object-lambda:us-west-2:123456789012:bucket_name:mybucket']], ['documentation' => 'object lambda with invalid arn - missing region', 'expect' => ['error' => 'Invalid ARN: bucket ARN is missing a region'], 'params' => ['Region' => 'us-west-2', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'UseArnRegion' => \false, 'Bucket' => 'arn:aws:s3-object-lambda::123456789012:accesspoint/mybanner']], ['documentation' => 'object lambda with invalid arn - missing account-id', 'expect' => ['error' => 'Invalid ARN: Missing account id'], 'params' => ['Region' => 'us-west-2', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'UseArnRegion' => \true, 'Bucket' => 'arn:aws:s3-object-lambda:us-west-2::accesspoint/mybanner']], ['documentation' => 'object lambda with invalid arn - account id contains invalid characters', 'expect' => ['error' => 'Invalid ARN: The account id may only contain a-z, A-Z, 0-9 and `-`. Found: `123.45678.9012`'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2', 'AWS::S3::UseArnRegion' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3-object-lambda:us-west-2:123.45678.9012:accesspoint:mybucket', 'Key' => 'key']]], 'params' => ['Region' => 'us-west-2', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'UseArnRegion' => \true, 'Bucket' => 'arn:aws:s3-object-lambda:us-west-2:123.45678.9012:accesspoint:mybucket']], ['documentation' => 'object lambda with invalid arn - missing access point name', 'expect' => ['error' => 'Invalid ARN: Expected a resource of the format `accesspoint:<accesspoint name>` but no name was provided'], 'params' => ['Region' => 'us-west-2', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'UseArnRegion' => \true, 'Bucket' => 'arn:aws:s3-object-lambda:us-west-2:123456789012:accesspoint']], ['documentation' => 'object lambda with invalid arn - access point name contains invalid character: *', 'expect' => ['error' => 'Invalid ARN: The access point name may only contain a-z, A-Z, 0-9 and `-`. Found: `*`'], 'params' => ['Region' => 'us-west-2', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'UseArnRegion' => \true, 'Bucket' => 'arn:aws:s3-object-lambda:us-west-2:123456789012:accesspoint:*']], ['documentation' => 'object lambda with invalid arn - access point name contains invalid character: .', 'expect' => ['error' => 'Invalid ARN: The access point name may only contain a-z, A-Z, 0-9 and `-`. Found: `my.bucket`'], 'params' => ['Region' => 'us-west-2', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'UseArnRegion' => \true, 'Bucket' => 'arn:aws:s3-object-lambda:us-west-2:123456789012:accesspoint:my.bucket']], ['documentation' => 'object lambda with invalid arn - access point name contains sub resources', 'expect' => ['error' => 'Invalid ARN: The ARN may only contain a single resource component after `accesspoint`.'], 'params' => ['Region' => 'us-west-2', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'UseArnRegion' => \true, 'Bucket' => 'arn:aws:s3-object-lambda:us-west-2:123456789012:accesspoint:mybucket:object:foo']], ['documentation' => 'object lambda with custom endpoint', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3-object-lambda', 'signingRegion' => 'us-west-2', 'disableDoubleEncoding' => \true]]], 'url' => 'https://mybanner-123456789012.my-endpoint.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2', 'SDK::Endpoint' => 'https://my-endpoint.com', 'AWS::S3::UseArnRegion' => \false], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3-object-lambda:us-west-2:123456789012:accesspoint/mybanner', 'Key' => 'key']]], 'params' => ['Region' => 'us-west-2', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'UseArnRegion' => \false, 'Bucket' => 'arn:aws:s3-object-lambda:us-west-2:123456789012:accesspoint/mybanner', 'Endpoint' => 'https://my-endpoint.com']], ['documentation' => 'object lambda arn with region mismatch and UseArnRegion=false', 'expect' => ['error' => 'Invalid configuration: region from ARN `us-east-1` does not match client region `us-west-2` and UseArnRegion is `false`'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2', 'AWS::S3::UseArnRegion' => \false], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'arn:aws:s3-object-lambda:us-east-1:123456789012:accesspoint/mybanner', 'Key' => 'key']]], 'params' => ['Accelerate' => \false, 'Bucket' => 'arn:aws:s3-object-lambda:us-east-1:123456789012:accesspoint/mybanner', 'ForcePathStyle' => \false, 'UseArnRegion' => \false, 'Region' => 'us-west-2', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'WriteGetObjectResponse @ us-west-2', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3-object-lambda', 'signingRegion' => 'us-west-2', 'disableDoubleEncoding' => \true]]], 'url' => 'https://s3-object-lambda.us-west-2.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2'], 'operationName' => 'WriteGetObjectResponse', 'operationParams' => ['RequestRoute' => 'RequestRoute', 'RequestToken' => 'RequestToken']]], 'params' => ['Accelerate' => \false, 'UseObjectLambdaEndpoint' => \true, 'Region' => 'us-west-2', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'WriteGetObjectResponse with custom endpoint', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3-object-lambda', 'signingRegion' => 'us-west-2', 'disableDoubleEncoding' => \true]]], 'url' => 'https://my-endpoint.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2', 'SDK::Endpoint' => 'https://my-endpoint.com'], 'operationName' => 'WriteGetObjectResponse', 'operationParams' => ['RequestRoute' => 'RequestRoute', 'RequestToken' => 'RequestToken']]], 'params' => ['Accelerate' => \false, 'UseObjectLambdaEndpoint' => \true, 'Endpoint' => 'https://my-endpoint.com', 'Region' => 'us-west-2', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'WriteGetObjectResponse @ us-east-1', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3-object-lambda', 'signingRegion' => 'us-east-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://s3-object-lambda.us-east-1.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1'], 'operationName' => 'WriteGetObjectResponse', 'operationParams' => ['RequestRoute' => 'RequestRoute', 'RequestToken' => 'RequestToken']]], 'params' => ['Accelerate' => \false, 'UseObjectLambdaEndpoint' => \true, 'Region' => 'us-east-1', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'WriteGetObjectResponse with fips', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3-object-lambda', 'signingRegion' => 'us-east-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://s3-object-lambda-fips.us-east-1.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1', 'AWS::UseFIPS' => \true], 'operationName' => 'WriteGetObjectResponse', 'operationParams' => ['RequestRoute' => 'RequestRoute', 'RequestToken' => 'RequestToken']]], 'params' => ['Accelerate' => \false, 'UseObjectLambdaEndpoint' => \true, 'Region' => 'us-east-1', 'UseDualStack' => \false, 'UseFIPS' => \true]], ['documentation' => 'WriteGetObjectResponse with dualstack', 'expect' => ['error' => 'S3 Object Lambda does not support Dual-stack'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1', 'AWS::UseDualStack' => \true], 'operationName' => 'WriteGetObjectResponse', 'operationParams' => ['RequestRoute' => 'RequestRoute', 'RequestToken' => 'RequestToken']]], 'params' => ['Accelerate' => \false, 'UseObjectLambdaEndpoint' => \true, 'Region' => 'us-east-1', 'UseDualStack' => \true, 'UseFIPS' => \false]], ['documentation' => 'WriteGetObjectResponse with accelerate', 'expect' => ['error' => 'S3 Object Lambda does not support S3 Accelerate'], 'params' => ['Accelerate' => \true, 'UseObjectLambdaEndpoint' => \true, 'Region' => 'us-east-1', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'WriteGetObjectResponse with fips in CN', 'expect' => ['error' => 'Partition does not support FIPS'], 'params' => ['Accelerate' => \false, 'Region' => 'cn-north-1', 'UseObjectLambdaEndpoint' => \true, 'UseDualStack' => \false, 'UseFIPS' => \true]], ['documentation' => 'WriteGetObjectResponse with invalid partition', 'expect' => ['error' => 'Invalid region: region was not a valid DNS name.'], 'params' => ['Accelerate' => \false, 'UseObjectLambdaEndpoint' => \true, 'Region' => 'not a valid DNS name', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'WriteGetObjectResponse with an unknown partition', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3-object-lambda', 'disableDoubleEncoding' => \true, 'signingRegion' => 'us-east.special']]], 'url' => 'https://s3-object-lambda.us-east.special.amazonaws.com']], 'params' => ['Accelerate' => \false, 'UseObjectLambdaEndpoint' => \true, 'Region' => 'us-east.special', 'UseDualStack' => \false, 'UseFIPS' => \false]], ['documentation' => 'S3 Outposts bucketAlias Real Outpost Prod us-west-1', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4a', 'signingName' => 's3-outposts', 'signingRegionSet' => ['*'], 'disableDoubleEncoding' => \true], ['name' => 'sigv4', 'signingName' => 's3-outposts', 'signingRegion' => 'us-west-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://test-accessp-o0b1d075431d83bebde8xz5w8ijx1qzlbp3i3kuse10--op-s3.op-0b1d075431d83bebd.s3-outposts.us-west-1.amazonaws.com']], 'params' => ['Region' => 'us-west-1', 'Bucket' => 'test-accessp-o0b1d075431d83bebde8xz5w8ijx1qzlbp3i3kuse10--op-s3', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false]], ['documentation' => 'S3 Outposts bucketAlias Real Outpost Prod ap-east-1', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4a', 'signingName' => 's3-outposts', 'signingRegionSet' => ['*'], 'disableDoubleEncoding' => \true], ['name' => 'sigv4', 'signingName' => 's3-outposts', 'signingRegion' => 'ap-east-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://test-accessp-o0b1d075431d83bebde8xz5w8ijx1qzlbp3i3kuse10--op-s3.op-0b1d075431d83bebd.s3-outposts.ap-east-1.amazonaws.com']], 'params' => ['Region' => 'ap-east-1', 'Bucket' => 'test-accessp-o0b1d075431d83bebde8xz5w8ijx1qzlbp3i3kuse10--op-s3', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false]], ['documentation' => 'S3 Outposts bucketAlias Ec2 Outpost Prod us-east-1', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4a', 'signingName' => 's3-outposts', 'signingRegionSet' => ['*'], 'disableDoubleEncoding' => \true], ['name' => 'sigv4', 'signingName' => 's3-outposts', 'signingRegion' => 'us-east-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://test-accessp-e0000075431d83bebde8xz5w8ijx1qzlbp3i3kuse10--op-s3.ec2.s3-outposts.us-east-1.amazonaws.com']], 'params' => ['Region' => 'us-east-1', 'Bucket' => 'test-accessp-e0000075431d83bebde8xz5w8ijx1qzlbp3i3kuse10--op-s3', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false]], ['documentation' => 'S3 Outposts bucketAlias Ec2 Outpost Prod me-south-1', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4a', 'signingName' => 's3-outposts', 'signingRegionSet' => ['*'], 'disableDoubleEncoding' => \true], ['name' => 'sigv4', 'signingName' => 's3-outposts', 'signingRegion' => 'me-south-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://test-accessp-e0000075431d83bebde8xz5w8ijx1qzlbp3i3kuse10--op-s3.ec2.s3-outposts.me-south-1.amazonaws.com']], 'params' => ['Region' => 'me-south-1', 'Bucket' => 'test-accessp-e0000075431d83bebde8xz5w8ijx1qzlbp3i3kuse10--op-s3', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false]], ['documentation' => 'S3 Outposts bucketAlias Real Outpost Beta', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4a', 'signingName' => 's3-outposts', 'signingRegionSet' => ['*'], 'disableDoubleEncoding' => \true], ['name' => 'sigv4', 'signingName' => 's3-outposts', 'signingRegion' => 'us-east-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://test-accessp-o0b1d075431d83bebde8xz5w8ijx1qzlbp3i3kbeta0--op-s3.op-0b1d075431d83bebd.example.amazonaws.com']], 'params' => ['Region' => 'us-east-1', 'Bucket' => 'test-accessp-o0b1d075431d83bebde8xz5w8ijx1qzlbp3i3kbeta0--op-s3', 'Endpoint' => 'https://example.amazonaws.com', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false]], ['documentation' => 'S3 Outposts bucketAlias Ec2 Outpost Beta', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4a', 'signingName' => 's3-outposts', 'signingRegionSet' => ['*'], 'disableDoubleEncoding' => \true], ['name' => 'sigv4', 'signingName' => 's3-outposts', 'signingRegion' => 'us-east-1', 'disableDoubleEncoding' => \true]]], 'url' => 'https://161743052723-e00000136899934034jeahy1t8gpzpbwjj8kb7beta0--op-s3.ec2.example.amazonaws.com']], 'params' => ['Region' => 'us-east-1', 'Bucket' => '161743052723-e00000136899934034jeahy1t8gpzpbwjj8kb7beta0--op-s3', 'Endpoint' => 'https://example.amazonaws.com', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false]], ['documentation' => 'S3 Outposts bucketAlias - No endpoint set for beta', 'expect' => ['error' => 'Expected a endpoint to be specified but no endpoint was found'], 'params' => ['Region' => 'us-east-1', 'Bucket' => 'test-accessp-o0b1d075431d83bebde8xz5w8ijx1qzlbp3i3kbeta0--op-s3', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false]], ['documentation' => 'S3 Outposts bucketAlias Invalid hardware type', 'expect' => ['error' => 'Unrecognized hardware type: "Expected hardware type o or e but got h"'], 'params' => ['Region' => 'us-east-1', 'Bucket' => 'test-accessp-h0000075431d83bebde8xz5w8ijx1qzlbp3i3kuse10--op-s3', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false]], ['documentation' => 'S3 Outposts bucketAlias Special character in Outpost Arn', 'expect' => ['error' => 'Invalid ARN: The outpost Id must only contain a-z, A-Z, 0-9 and `-`.'], 'params' => ['Region' => 'us-east-1', 'Bucket' => 'test-accessp-o00000754%1d83bebde8xz5w8ijx1qzlbp3i3kuse10--op-s3', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false]], ['documentation' => 'S3 Outposts bucketAlias - No endpoint set for beta', 'expect' => ['error' => 'Expected a endpoint to be specified but no endpoint was found'], 'params' => ['Region' => 'us-east-1', 'Bucket' => 'test-accessp-e0b1d075431d83bebde8xz5w8ijx1qzlbp3i3ebeta0--op-s3', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false]], ['documentation' => 'S3 Snow with bucket', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'snow', 'disableDoubleEncoding' => \true]]], 'url' => 'http://10.0.1.12:433/bucketName']], 'params' => ['Region' => 'snow', 'Bucket' => 'bucketName', 'Endpoint' => 'http://10.0.1.12:433', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false]], ['documentation' => 'S3 Snow without bucket', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'snow', 'disableDoubleEncoding' => \true]]], 'url' => 'https://10.0.1.12:433']], 'params' => ['Region' => 'snow', 'Endpoint' => 'https://10.0.1.12:433', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false]], ['documentation' => 'S3 Snow no port', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'snow', 'disableDoubleEncoding' => \true]]], 'url' => 'http://10.0.1.12/bucketName']], 'params' => ['Region' => 'snow', 'Bucket' => 'bucketName', 'Endpoint' => 'http://10.0.1.12', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false]], ['documentation' => 'S3 Snow dns endpoint', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3', 'signingRegion' => 'snow', 'disableDoubleEncoding' => \true]]], 'url' => 'https://amazonaws.com/bucketName']], 'params' => ['Region' => 'snow', 'Bucket' => 'bucketName', 'Endpoint' => 'https://amazonaws.com', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false]], ['documentation' => 'Data Plane with short AZ', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4-s3express', 'signingName' => 's3express', 'signingRegion' => 'us-east-1', 'disableDoubleEncoding' => \true]], 'backend' => 'S3Express'], 'url' => 'https://mybucket--use1-az1--x-s3.s3express-use1-az1.us-east-1.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'mybucket--use1-az1--x-s3', 'Key' => 'key']]], 'params' => ['Region' => 'us-east-1', 'Bucket' => 'mybucket--use1-az1--x-s3', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'UseS3ExpressControlEndpoint' => \false]], ['documentation' => 'Data Plane with short AZ fips', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4-s3express', 'signingName' => 's3express', 'signingRegion' => 'us-east-1', 'disableDoubleEncoding' => \true]], 'backend' => 'S3Express'], 'url' => 'https://mybucket--use1-az1--x-s3.s3express-fips-use1-az1.us-east-1.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1', 'AWS::UseFIPS' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'mybucket--use1-az1--x-s3', 'Key' => 'key']]], 'params' => ['Region' => 'us-east-1', 'Bucket' => 'mybucket--use1-az1--x-s3', 'UseFIPS' => \true, 'UseDualStack' => \false, 'Accelerate' => \false, 'UseS3ExpressControlEndpoint' => \false]], ['documentation' => 'Data Plane with long AZ', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4-s3express', 'signingName' => 's3express', 'signingRegion' => 'ap-northeast-1', 'disableDoubleEncoding' => \true]], 'backend' => 'S3Express'], 'url' => 'https://mybucket--apne1-az1--x-s3.s3express-apne1-az1.ap-northeast-1.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'ap-northeast-1'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'mybucket--apne1-az1--x-s3', 'Key' => 'key']]], 'params' => ['Region' => 'ap-northeast-1', 'Bucket' => 'mybucket--apne1-az1--x-s3', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'UseS3ExpressControlEndpoint' => \false]], ['documentation' => 'Data Plane with long AZ fips', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4-s3express', 'signingName' => 's3express', 'signingRegion' => 'ap-northeast-1', 'disableDoubleEncoding' => \true]], 'backend' => 'S3Express'], 'url' => 'https://mybucket--apne1-az1--x-s3.s3express-fips-apne1-az1.ap-northeast-1.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'ap-northeast-1', 'AWS::UseFIPS' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'mybucket--apne1-az1--x-s3', 'Key' => 'key']]], 'params' => ['Region' => 'ap-northeast-1', 'Bucket' => 'mybucket--apne1-az1--x-s3', 'UseFIPS' => \true, 'UseDualStack' => \false, 'Accelerate' => \false, 'UseS3ExpressControlEndpoint' => \false]], ['documentation' => 'Control plane with short AZ bucket', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3express', 'signingRegion' => 'us-east-1', 'disableDoubleEncoding' => \true]], 'backend' => 'S3Express'], 'url' => 'https://s3express-control.us-east-1.amazonaws.com/mybucket--use1-az1--x-s3']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1'], 'operationName' => 'CreateBucket', 'operationParams' => ['Bucket' => 'mybucket--use1-az1--x-s3']]], 'params' => ['Region' => 'us-east-1', 'Bucket' => 'mybucket--use1-az1--x-s3', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'UseS3ExpressControlEndpoint' => \true, 'DisableS3ExpressSessionAuth' => \false]], ['documentation' => 'Control plane with short AZ bucket and fips', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3express', 'signingRegion' => 'us-east-1', 'disableDoubleEncoding' => \true]], 'backend' => 'S3Express'], 'url' => 'https://s3express-control-fips.us-east-1.amazonaws.com/mybucket--use1-az1--x-s3']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1', 'AWS::UseFIPS' => \true], 'operationName' => 'CreateBucket', 'operationParams' => ['Bucket' => 'mybucket--use1-az1--x-s3']]], 'params' => ['Region' => 'us-east-1', 'Bucket' => 'mybucket--use1-az1--x-s3', 'UseFIPS' => \true, 'UseDualStack' => \false, 'Accelerate' => \false, 'UseS3ExpressControlEndpoint' => \true, 'DisableS3ExpressSessionAuth' => \false]], ['documentation' => 'Control plane without bucket', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3express', 'signingRegion' => 'us-east-1', 'disableDoubleEncoding' => \true]], 'backend' => 'S3Express'], 'url' => 'https://s3express-control.us-east-1.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1'], 'operationName' => 'ListDirectoryBuckets']], 'params' => ['Region' => 'us-east-1', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'UseS3ExpressControlEndpoint' => \true, 'DisableS3ExpressSessionAuth' => \false]], ['documentation' => 'Control plane without bucket and fips', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3express', 'signingRegion' => 'us-east-1', 'disableDoubleEncoding' => \true]], 'backend' => 'S3Express'], 'url' => 'https://s3express-control-fips.us-east-1.amazonaws.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1', 'AWS::UseFIPS' => \true], 'operationName' => 'ListDirectoryBuckets']], 'params' => ['Region' => 'us-east-1', 'UseFIPS' => \true, 'UseDualStack' => \false, 'Accelerate' => \false, 'UseS3ExpressControlEndpoint' => \true, 'DisableS3ExpressSessionAuth' => \false]], ['documentation' => 'Data Plane sigv4 auth with short AZ', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3express', 'signingRegion' => 'us-west-2', 'disableDoubleEncoding' => \true]], 'backend' => 'S3Express'], 'url' => 'https://mybucket--usw2-az1--x-s3.s3express-usw2-az1.us-west-2.amazonaws.com']], 'params' => ['Region' => 'us-west-2', 'Bucket' => 'mybucket--usw2-az1--x-s3', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'DisableS3ExpressSessionAuth' => \true]], ['documentation' => 'Data Plane sigv4 auth with short AZ fips', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3express', 'signingRegion' => 'us-west-2', 'disableDoubleEncoding' => \true]], 'backend' => 'S3Express'], 'url' => 'https://mybucket--usw2-az1--x-s3.s3express-fips-usw2-az1.us-west-2.amazonaws.com']], 'params' => ['Region' => 'us-west-2', 'Bucket' => 'mybucket--usw2-az1--x-s3', 'UseFIPS' => \true, 'UseDualStack' => \false, 'Accelerate' => \false, 'DisableS3ExpressSessionAuth' => \true]], ['documentation' => 'Data Plane sigv4 auth with long AZ', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3express', 'signingRegion' => 'ap-northeast-1', 'disableDoubleEncoding' => \true]], 'backend' => 'S3Express'], 'url' => 'https://mybucket--apne1-az1--x-s3.s3express-apne1-az1.ap-northeast-1.amazonaws.com']], 'params' => ['Region' => 'ap-northeast-1', 'Bucket' => 'mybucket--apne1-az1--x-s3', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'UseS3ExpressControlEndpoint' => \false, 'DisableS3ExpressSessionAuth' => \true]], ['documentation' => 'Data Plane sigv4 auth with long AZ fips', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3express', 'signingRegion' => 'ap-northeast-1', 'disableDoubleEncoding' => \true]], 'backend' => 'S3Express'], 'url' => 'https://mybucket--apne1-az1--x-s3.s3express-fips-apne1-az1.ap-northeast-1.amazonaws.com']], 'params' => ['Region' => 'ap-northeast-1', 'Bucket' => 'mybucket--apne1-az1--x-s3', 'UseFIPS' => \true, 'UseDualStack' => \false, 'Accelerate' => \false, 'UseS3ExpressControlEndpoint' => \false, 'DisableS3ExpressSessionAuth' => \true]], ['documentation' => 'Control Plane host override', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3express', 'signingRegion' => 'us-west-2', 'disableDoubleEncoding' => \true]], 'backend' => 'S3Express'], 'url' => 'https://mybucket--usw2-az1--x-s3.custom.com']], 'params' => ['Region' => 'us-west-2', 'Bucket' => 'mybucket--usw2-az1--x-s3', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'UseS3ExpressControlEndpoint' => \true, 'DisableS3ExpressSessionAuth' => \true, 'Endpoint' => 'https://custom.com']], ['documentation' => 'Control Plane host override no bucket', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3express', 'signingRegion' => 'us-west-2', 'disableDoubleEncoding' => \true]], 'backend' => 'S3Express'], 'url' => 'https://custom.com']], 'params' => ['Region' => 'us-west-2', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'UseS3ExpressControlEndpoint' => \true, 'DisableS3ExpressSessionAuth' => \true, 'Endpoint' => 'https://custom.com']], ['documentation' => 'Data plane host override non virtual session auth', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4-s3express', 'signingName' => 's3express', 'signingRegion' => 'us-west-2', 'disableDoubleEncoding' => \true]], 'backend' => 'S3Express'], 'url' => 'https://10.0.0.1/mybucket--usw2-az1--x-s3']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2', 'SDK::Endpoint' => 'https://10.0.0.1'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'mybucket--usw2-az1--x-s3', 'Key' => 'key']]], 'params' => ['Region' => 'us-west-2', 'Bucket' => 'mybucket--usw2-az1--x-s3', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'Endpoint' => 'https://10.0.0.1']], ['documentation' => 'Control Plane host override ip', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4', 'signingName' => 's3express', 'signingRegion' => 'us-west-2', 'disableDoubleEncoding' => \true]], 'backend' => 'S3Express'], 'url' => 'https://10.0.0.1/mybucket--usw2-az1--x-s3']], 'params' => ['Region' => 'us-west-2', 'Bucket' => 'mybucket--usw2-az1--x-s3', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'UseS3ExpressControlEndpoint' => \true, 'DisableS3ExpressSessionAuth' => \true, 'Endpoint' => 'https://10.0.0.1']], ['documentation' => 'Data plane host override', 'expect' => ['endpoint' => ['properties' => ['authSchemes' => [['name' => 'sigv4-s3express', 'signingName' => 's3express', 'signingRegion' => 'us-west-2', 'disableDoubleEncoding' => \true]], 'backend' => 'S3Express'], 'url' => 'https://mybucket--usw2-az1--x-s3.custom.com']], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2', 'SDK::Endpoint' => 'https://custom.com'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'mybucket--usw2-az1--x-s3', 'Key' => 'key']]], 'params' => ['Region' => 'us-west-2', 'Bucket' => 'mybucket--usw2-az1--x-s3', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'Endpoint' => 'https://custom.com']], ['documentation' => 'bad format error', 'expect' => ['error' => 'Unrecognized S3Express bucket name format.'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'mybucket--usaz1--x-s3', 'Key' => 'key']]], 'params' => ['Region' => 'us-east-1', 'Bucket' => 'mybucket--usaz1--x-s3', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'UseS3ExpressControlEndpoint' => \false]], ['documentation' => 'bad format error no session auth', 'expect' => ['error' => 'Unrecognized S3Express bucket name format.'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'mybucket--usaz1--x-s3', 'Key' => 'key']]], 'params' => ['Region' => 'us-east-1', 'Bucket' => 'mybucket--usaz1--x-s3', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'UseS3ExpressControlEndpoint' => \false, 'DisableS3ExpressSessionAuth' => \true]], ['documentation' => 'dual-stack error', 'expect' => ['error' => 'S3Express does not support Dual-stack.'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1', 'AWS::UseDualStack' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'mybucket--use1-az1--x-s3', 'Key' => 'key']]], 'params' => ['Region' => 'us-east-1', 'Bucket' => 'mybucket--use1-az1--x-s3', 'UseFIPS' => \false, 'UseDualStack' => \true, 'Accelerate' => \false, 'UseS3ExpressControlEndpoint' => \false]], ['documentation' => 'accelerate error', 'expect' => ['error' => 'S3Express does not support S3 Accelerate.'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1', 'AWS::S3::Accelerate' => \true], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'mybucket--use1-az1--x-s3', 'Key' => 'key']]], 'params' => ['Region' => 'us-east-1', 'Bucket' => 'mybucket--use1-az1--x-s3', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \true, 'UseS3ExpressControlEndpoint' => \false]], ['documentation' => 'Data plane bucket format error', 'expect' => ['error' => 'S3Express bucket name is not a valid virtual hostable name.'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-east-1'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'my.bucket--use1-az1--x-s3', 'Key' => 'key']]], 'params' => ['Region' => 'us-east-1', 'Bucket' => 'my.bucket--use1-az1--x-s3', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'UseS3ExpressControlEndpoint' => \false]], ['documentation' => 'host override data plane bucket error session auth', 'expect' => ['error' => 'S3Express bucket name is not a valid virtual hostable name.'], 'operationInputs' => [['builtInParams' => ['AWS::Region' => 'us-west-2', 'SDK::Endpoint' => 'https://custom.com'], 'operationName' => 'GetObject', 'operationParams' => ['Bucket' => 'my.bucket--usw2-az1--x-s3', 'Key' => 'key']]], 'params' => ['Region' => 'us-west-2', 'Bucket' => 'my.bucket--usw2-az1--x-s3', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'Endpoint' => 'https://custom.com']], ['documentation' => 'host override data plane bucket error', 'expect' => ['error' => 'S3Express bucket name is not a valid virtual hostable name.'], 'params' => ['Region' => 'us-west-2', 'Bucket' => 'my.bucket--usw2-az1--x-s3', 'UseFIPS' => \false, 'UseDualStack' => \false, 'Accelerate' => \false, 'Endpoint' => 'https://custom.com', 'DisableS3ExpressSessionAuth' => \true]]], 'version' => '1.0'];
|