This is an automated email from the ASF dual-hosted git repository.

exceptionfactory pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi.git


The following commit(s) were added to refs/heads/main by this push:
     new 072fb85d50 NIFI-15524 Added Endpoint URL and Path Style Access to S3 
FileIO Iceberg Provider (#10825)
072fb85d50 is described below

commit 072fb85d50fbea97bf2aa5fac0466275e907aa1f
Author: Sebastian Bernauer <[email protected]>
AuthorDate: Fri Jan 30 21:24:31 2026 +0100

    NIFI-15524 Added Endpoint URL and Path Style Access to S3 FileIO Iceberg 
Provider (#10825)
    
    Signed-off-by: David Handermann <[email protected]>
---
 .../iceberg/aws/S3IcebergFileIOProvider.java       | 32 +++++++++++++++++++++-
 1 file changed, 31 insertions(+), 1 deletion(-)

diff --git 
a/nifi-extension-bundles/nifi-iceberg-bundle/nifi-iceberg-aws/src/main/java/org/apache/nifi/services/iceberg/aws/S3IcebergFileIOProvider.java
 
b/nifi-extension-bundles/nifi-iceberg-bundle/nifi-iceberg-aws/src/main/java/org/apache/nifi/services/iceberg/aws/S3IcebergFileIOProvider.java
index 6581993c22..58feed8518 100644
--- 
a/nifi-extension-bundles/nifi-iceberg-bundle/nifi-iceberg-aws/src/main/java/org/apache/nifi/services/iceberg/aws/S3IcebergFileIOProvider.java
+++ 
b/nifi-extension-bundles/nifi-iceberg-bundle/nifi-iceberg-aws/src/main/java/org/apache/nifi/services/iceberg/aws/S3IcebergFileIOProvider.java
@@ -102,12 +102,35 @@ public class S3IcebergFileIOProvider extends 
AbstractControllerService implement
             )
             .build();
 
+    static final PropertyDescriptor ENDPOINT_URL = new 
PropertyDescriptor.Builder()
+            .name("Endpoint URL")
+            .description("""
+                Endpoint URL to use instead of the AWS default including 
scheme, host, port, and path.
+                The AWS libraries select an endpoint URL based on the AWS 
region, but this property overrides
+                the selected endpoint URL, allowing use with other 
S3-compatible endpoints.""")
+            .required(false)
+            .addValidator(StandardValidators.URL_VALIDATOR)
+            .build();
+
+    static final PropertyDescriptor PATH_STYLE_ACCESS = new 
PropertyDescriptor.Builder()
+            .name("Path Style Access")
+            .description("""
+                Path-style access can be enforced by setting this property to 
true. Set it to true if the configured
+                endpoint does not support virtual-hosted-style requests, only 
path-style requests.""")
+            .allowableValues(Boolean.TRUE.toString(), Boolean.FALSE.toString())
+            
.defaultValue(String.valueOf(S3FileIOProperties.PATH_STYLE_ACCESS_DEFAULT))
+            .required(true)
+            .addValidator(StandardValidators.BOOLEAN_VALIDATOR)
+            .build();
+
     private static final List<PropertyDescriptor> PROPERTY_DESCRIPTORS = 
List.of(
             AUTHENTICATION_STRATEGY,
             ACCESS_KEY_ID,
             SECRET_ACCESS_KEY,
             SESSION_TOKEN,
-            CLIENT_REGION
+            CLIENT_REGION,
+            ENDPOINT_URL,
+            PATH_STYLE_ACCESS
     );
 
     private final Map<String, String> standardProperties = new 
ConcurrentHashMap<>();
@@ -159,6 +182,13 @@ public class S3IcebergFileIOProvider extends 
AbstractControllerService implement
             }
         }
 
+        if (context.getProperty(ENDPOINT_URL).isSet()) {
+            final String endpoint = 
context.getProperty(ENDPOINT_URL).getValue();
+            contextProperties.put(S3FileIOProperties.ENDPOINT, endpoint);
+        }
+        final String pathStyleAccess = 
context.getProperty(PATH_STYLE_ACCESS).getValue();
+        contextProperties.put(S3FileIOProperties.PATH_STYLE_ACCESS, 
pathStyleAccess);
+
         // HttpURLConnection Client Type avoids additional dependencies
         contextProperties.put(HttpClientProperties.CLIENT_TYPE, 
HttpClientProperties.CLIENT_TYPE_URLCONNECTION);
 

Reply via email to