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 ea2767107c3 NIFI-16293 Switched to SDK getResourceUrl for Provenance
URL in CopyS3Object (#11626)
ea2767107c3 is described below
commit ea2767107c364a078492113a04a6c81976eebbc4
Author: Nicolas Chauvet (kwizart) <[email protected]>
AuthorDate: Sat Sep 5 00:00:17 2026 +0200
NIFI-16293 Switched to SDK getResourceUrl for Provenance URL in
CopyS3Object (#11626)
Signed-off-by: David Handermann <[email protected]>
---
.../java/org/apache/nifi/processors/aws/s3/CopyS3Object.java | 9 +++------
.../java/org/apache/nifi/processors/aws/s3/TestCopyS3Object.java | 3 +++
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git
a/nifi-extension-bundles/nifi-aws-bundle/nifi-aws-processors/src/main/java/org/apache/nifi/processors/aws/s3/CopyS3Object.java
b/nifi-extension-bundles/nifi-aws-bundle/nifi-aws-processors/src/main/java/org/apache/nifi/processors/aws/s3/CopyS3Object.java
index 74e31f6f0d0..fd524e4e680 100644
---
a/nifi-extension-bundles/nifi-aws-bundle/nifi-aws-processors/src/main/java/org/apache/nifi/processors/aws/s3/CopyS3Object.java
+++
b/nifi-extension-bundles/nifi-aws-bundle/nifi-aws-processors/src/main/java/org/apache/nifi/processors/aws/s3/CopyS3Object.java
@@ -51,6 +51,7 @@ import java.util.stream.IntStream;
import static
org.apache.nifi.processors.aws.region.RegionUtil.CUSTOM_REGION_WITH_FF_EL;
import static org.apache.nifi.processors.aws.region.RegionUtil.REGION;
import static org.apache.nifi.processors.aws.s3.util.S3Util.createRangeSpec;
+import static org.apache.nifi.processors.aws.s3.util.S3Util.getResourceUrl;
@Tags({"Amazon", "S3", "AWS", "Archive", "Copy"})
@InputRequirement(InputRequirement.Requirement.INPUT_REQUIRED)
@@ -156,7 +157,8 @@ public class CopyS3Object extends AbstractS3Processor {
} else {
copyObject(client, context, flowFile, sourceBucket, sourceKey,
destinationBucket, destinationKey);
}
- session.getProvenanceReporter().send(flowFile,
getTransitUrl(destinationBucket, destinationKey));
+ final String url = getResourceUrl(client, destinationBucket,
destinationKey);
+ session.getProvenanceReporter().send(flowFile, url);
session.transfer(flowFile, REL_SUCCESS);
} catch (final Exception e) {
if (multipartUploadRequired &&
StringUtils.isNotEmpty(multipartIdRef.get())) {
@@ -275,9 +277,4 @@ public class CopyS3Object extends AbstractS3Processor {
client.copyObject(request);
}
-
- private String getTransitUrl(final String destinationBucket, final String
destinationKey) {
- final String spacer = destinationKey.startsWith("/") ? "" : "/";
- return String.format("s3://%s%s%s", destinationBucket, spacer,
destinationKey);
- }
}
diff --git
a/nifi-extension-bundles/nifi-aws-bundle/nifi-aws-processors/src/test/java/org/apache/nifi/processors/aws/s3/TestCopyS3Object.java
b/nifi-extension-bundles/nifi-aws-bundle/nifi-aws-processors/src/test/java/org/apache/nifi/processors/aws/s3/TestCopyS3Object.java
index 436e23c9108..6c2b355e1f7 100644
---
a/nifi-extension-bundles/nifi-aws-bundle/nifi-aws-processors/src/test/java/org/apache/nifi/processors/aws/s3/TestCopyS3Object.java
+++
b/nifi-extension-bundles/nifi-aws-bundle/nifi-aws-processors/src/test/java/org/apache/nifi/processors/aws/s3/TestCopyS3Object.java
@@ -27,7 +27,9 @@ import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import software.amazon.awssdk.awscore.exception.AwsServiceException;
+import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.s3.S3Client;
+import software.amazon.awssdk.services.s3.S3Utilities;
import software.amazon.awssdk.services.s3.model.CopyObjectRequest;
import software.amazon.awssdk.services.s3.model.HeadObjectRequest;
import software.amazon.awssdk.services.s3.model.HeadObjectResponse;
@@ -52,6 +54,7 @@ public class TestCopyS3Object {
@BeforeEach
void setUp() {
mockS3Client = mock(S3Client.class);
+
when(mockS3Client.utilities()).thenReturn(S3Utilities.builder().region(Region.US_WEST_2).build());
final CopyS3Object mockCopyS3Object = new CopyS3Object() {
@Override
protected S3Client getClient(final ProcessContext context, final
Map<String, String> attributes) {