From 6b7c757ffa1d24a372374169ca9aa43dc282ee0e Mon Sep 17 00:00:00 2001 From: yuxia Luo Date: Thu, 23 Apr 2026 00:00:43 +0800 Subject: [PATCH] [s3] Propagate path-style-access config from server to client via delegation token (#3165) Previously, S3DelegationTokenProvider only forwarded region and endpoint to the client via additionInfos. The path.style.access setting was missing, causing the client to use virtual-hosted-style addressing (e.g., bucket.host) instead of path-style (e.g., host/bucket), which fails with S3-compatible stores like MinIO/RustFS where DNS resolution of virtual-hosted names is not available. --- .../apache/fluss/fs/s3/token/S3DelegationTokenProvider.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/fluss-filesystems/fluss-fs-s3/src/main/java/org/apache/fluss/fs/s3/token/S3DelegationTokenProvider.java b/fluss-filesystems/fluss-fs-s3/src/main/java/org/apache/fluss/fs/s3/token/S3DelegationTokenProvider.java index b582e4d35e..5c3100c9e4 100644 --- a/fluss-filesystems/fluss-fs-s3/src/main/java/org/apache/fluss/fs/s3/token/S3DelegationTokenProvider.java +++ b/fluss-filesystems/fluss-fs-s3/src/main/java/org/apache/fluss/fs/s3/token/S3DelegationTokenProvider.java @@ -52,6 +52,7 @@ public class S3DelegationTokenProvider { private static final String REGION_KEY = "fs.s3a.region"; private static final String ENDPOINT_KEY = "fs.s3a.endpoint"; + private static final String PATH_STYLE_ACCESS_KEY = "fs.s3a.path.style.access"; private static final String ROLE_ARN_KEY = "fs.s3a.assumed.role.arn"; private static final String STS_ENDPOINT_KEY = "fs.s3a.assumed.role.sts.endpoint"; @@ -83,7 +84,7 @@ public S3DelegationTokenProvider(String scheme, Configuration conf) { } this.additionInfos = new HashMap<>(); - for (String key : Arrays.asList(REGION_KEY, ENDPOINT_KEY)) { + for (String key : Arrays.asList(REGION_KEY, ENDPOINT_KEY, PATH_STYLE_ACCESS_KEY)) { if (conf.get(key) != null) { additionInfos.put(key, conf.get(key)); }