From f902002601a813cd6b851942502b0d5f9a487c5e Mon Sep 17 00:00:00 2001 From: Joel Scheuner Date: Thu, 12 Jun 2025 12:32:33 +0200 Subject: [PATCH] Force pathstyle when detecting custom endpoint unless s3-prefixed --- clients/client-s3/src/endpoint/EndpointParameters.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/clients/client-s3/src/endpoint/EndpointParameters.ts b/clients/client-s3/src/endpoint/EndpointParameters.ts index 9d4708236ab8..46bfc54be936 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 => { + let forcePathStyleDefault = false; + // Custom endpoints are incompatible with virtual-host-style, unless + // the endpoint includes "s3." to allow for virtual-host-style testing. + if (options.endpoint && !options.useAccelerateEndpoint && !options.endpoint.includes("s3.")) { + forcePathStyleDefault = true; + } return Object.assign(options, { useFipsEndpoint: options.useFipsEndpoint ?? false, useDualstackEndpoint: options.useDualstackEndpoint ?? false, - forcePathStyle: options.forcePathStyle ?? false, + forcePathStyle: options.forcePathStyle ?? forcePathStyleDefault, useAccelerateEndpoint: options.useAccelerateEndpoint ?? false, useGlobalEndpoint: options.useGlobalEndpoint ?? false, disableMultiregionAccessPoints: options.disableMultiregionAccessPoints ?? false,