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);