>From Peeyush Gupta <[email protected]>: Peeyush Gupta has submitted this change. ( https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18198 )
Change subject: [NO ISSUE][OTH] Refactor S3Utils.buildAwsS3Client function ...................................................................... [NO ISSUE][OTH] Refactor S3Utils.buildAwsS3Client function - user model changes: no - storage format changes: no - interface changes: no Change-Id: I63a40992cac3c6d5742e6a7ec3bc6721567d4349 Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18198 Integration-Tests: Jenkins <[email protected]> Tested-by: Jenkins <[email protected]> Reviewed-by: Murtadha Hubail <[email protected]> --- M asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/aws/s3/S3Utils.java 1 file changed, 54 insertions(+), 28 deletions(-) Approvals: Murtadha Hubail: Looks good to me, approved Jenkins: Verified; Verified diff --git a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/aws/s3/S3Utils.java b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/aws/s3/S3Utils.java index f028af3..45e83b4 100644 --- a/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/aws/s3/S3Utils.java +++ b/asterixdb/asterix-external-data/src/main/java/org/apache/asterix/external/util/aws/s3/S3Utils.java @@ -117,6 +117,42 @@ S3ClientBuilder builder = S3Client.builder(); // Credentials + AwsCredentialsProvider credentialsProvider = + buildCredentialsProvider(instanceProfile, accessKeyId, secretAccessKey, sessionToken); + + builder.credentialsProvider(credentialsProvider); + + // Validate the region + List<Region> regions = S3Client.serviceMetadata().regions(); + Optional<Region> selectedRegion = regions.stream().filter(region -> region.id().equals(regionId)).findFirst(); + + if (selectedRegion.isEmpty()) { + throw new CompilationException(S3_REGION_NOT_SUPPORTED, regionId); + } + builder.region(selectedRegion.get()); + + // Validate the service endpoint if present + if (serviceEndpoint != null) { + try { + URI uri = new URI(serviceEndpoint); + try { + builder.endpointOverride(uri); + } catch (NullPointerException ex) { + throw new CompilationException(ErrorCode.EXTERNAL_SOURCE_ERROR, ex, getMessageOrToString(ex)); + } + } catch (URISyntaxException ex) { + throw new CompilationException(ErrorCode.EXTERNAL_SOURCE_ERROR, ex, + String.format("Invalid service endpoint %s", serviceEndpoint)); + } + } + + return builder.build(); + } + + public static AwsCredentialsProvider buildCredentialsProvider(String instanceProfile, String accessKeyId, + String secretAccessKey, String sessionToken) throws CompilationException { + + // Credentials AwsCredentialsProvider credentialsProvider; // nothing provided, anonymous authentication @@ -167,34 +203,7 @@ throw new CompilationException(REQUIRED_PARAM_IF_PARAM_IS_PRESENT, ACCESS_KEY_ID_FIELD_NAME, SESSION_TOKEN_FIELD_NAME); } - - builder.credentialsProvider(credentialsProvider); - - // Validate the region - List<Region> regions = S3Client.serviceMetadata().regions(); - Optional<Region> selectedRegion = regions.stream().filter(region -> region.id().equals(regionId)).findFirst(); - - if (selectedRegion.isEmpty()) { - throw new CompilationException(S3_REGION_NOT_SUPPORTED, regionId); - } - builder.region(selectedRegion.get()); - - // Validate the service endpoint if present - if (serviceEndpoint != null) { - try { - URI uri = new URI(serviceEndpoint); - try { - builder.endpointOverride(uri); - } catch (NullPointerException ex) { - throw new CompilationException(ErrorCode.EXTERNAL_SOURCE_ERROR, ex, getMessageOrToString(ex)); - } - } catch (URISyntaxException ex) { - throw new CompilationException(ErrorCode.EXTERNAL_SOURCE_ERROR, ex, - String.format("Invalid service endpoint %s", serviceEndpoint)); - } - } - - return builder.build(); + return credentialsProvider; } /** -- To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18198 To unsubscribe, or for help writing mail filters, visit https://asterix-gerrit.ics.uci.edu/settings Gerrit-Project: asterixdb Gerrit-Branch: master Gerrit-Change-Id: I63a40992cac3c6d5742e6a7ec3bc6721567d4349 Gerrit-Change-Number: 18198 Gerrit-PatchSet: 3 Gerrit-Owner: Peeyush Gupta <[email protected]> Gerrit-Reviewer: Jenkins <[email protected]> Gerrit-Reviewer: Murtadha Hubail <[email protected]> Gerrit-Reviewer: Peeyush Gupta <[email protected]> Gerrit-Reviewer: Ritik Raj <[email protected]> Gerrit-MessageType: merged
