diff --git a/clients/client-s3/src/endpoint/EndpointParameters.ts b/clients/client-s3/src/endpoint/EndpointParameters.ts index 9d4708236ab8..01e7b7d5b452 100644 --- a/clients/client-s3/src/endpoint/EndpointParameters.ts +++ b/clients/client-s3/src/endpoint/EndpointParameters.ts @@ -24,10 +24,16 @@ export type ClientResolvedEndpointParameters = ClientInputEndpointParameters & { export const resolveClientEndpointParameters = ( options: T & ClientInputEndpointParameters ): T & ClientResolvedEndpointParameters => { + // Custom endpoints are incompatible with virtual-host-style, unless + // the endpoint includes "s3." to allow for virtual-host-style testing. + let forcePathStyleOverride = undefined; + if (options.endpoint && !options.useAccelerateEndpoint) { + forcePathStyleOverride = options.forcePathStyle ?? true; + } return Object.assign(options, { useFipsEndpoint: options.useFipsEndpoint ?? false, useDualstackEndpoint: options.useDualstackEndpoint ?? false, - forcePathStyle: options.forcePathStyle ?? false, + forcePathStyle: options.forcePathStyle ?? forcePathStyleOverride ?? false, useAccelerateEndpoint: options.useAccelerateEndpoint ?? false, useGlobalEndpoint: options.useGlobalEndpoint ?? false, disableMultiregionAccessPoints: options.disableMultiregionAccessPoints ?? false,