diff --git a/gxcloudstorage-awss3-v2/src/main/java/com/genexus/db/driver/ExternalProviderS3V2.java b/gxcloudstorage-awss3-v2/src/main/java/com/genexus/db/driver/ExternalProviderS3V2.java index 878f4947a..d0a568ebd 100644 --- a/gxcloudstorage-awss3-v2/src/main/java/com/genexus/db/driver/ExternalProviderS3V2.java +++ b/gxcloudstorage-awss3-v2/src/main/java/com/genexus/db/driver/ExternalProviderS3V2.java @@ -121,7 +121,7 @@ private void initialize() throws Exception { this.folder = folder; this.client = buildS3Client(accessKey, secretKey, endpointValue, clientRegion); - this.presigner = buildS3Presinger(accessKey, secretKey, clientRegion); + this.presigner = buildS3Presigner(accessKey, secretKey, clientRegion); bucketExists(); } } @@ -131,13 +131,13 @@ private S3Client buildS3Client(String accessKey, String secretKey, String endpoi boolean bUseIAM = !getPropertyValue(USE_IAM, "", "").isEmpty() || (accessKey.equals("") && secretKey.equals("")); - S3ClientBuilder builder = bUseIAM ? - S3Client.builder() : - S3Client.builder().credentialsProvider( - StaticCredentialsProvider.create( - AwsBasicCredentials.create(accessKey, secretKey) - ) - ); + S3ClientBuilder builder = bUseIAM + ? S3Client.builder().credentialsProvider(DefaultCredentialsProvider.create()) + : S3Client.builder().credentialsProvider( + StaticCredentialsProvider.create( + AwsBasicCredentials.create(accessKey, secretKey) + ) + ); if (bUseIAM) { logger.debug("Using IAM Credentials"); @@ -145,7 +145,6 @@ private S3Client buildS3Client(String accessKey, String secretKey, String endpoi if (!endpoint.isEmpty() && !endpoint.contains(".amazonaws.com")) { pathStyleUrls = true; - s3Client = builder .endpointOverride(URI.create(endpoint)) .region(Region.of(region)) @@ -181,11 +180,22 @@ private S3Client buildS3Client(String accessKey, String secretKey, String endpoi return s3Client; } - private S3Presigner buildS3Presinger(String accessKey, String secretKey, String region) { - return S3Presigner.builder() + private S3Presigner buildS3Presigner(String accessKey, String secretKey, String region) { + boolean bUseIAM = !getPropertyValue(USE_IAM, "", "").isEmpty() || (accessKey.equals("") && secretKey.equals("")); + + S3Presigner.Builder builder = S3Presigner.builder() .region(Region.of(region)) - .credentialsProvider(StaticCredentialsProvider.create(AwsBasicCredentials.create(accessKey, secretKey))) - .build(); + .credentialsProvider( + bUseIAM + ? DefaultCredentialsProvider.create() + : StaticCredentialsProvider.create(AwsBasicCredentials.create(accessKey, secretKey)) + ); + + if (bUseIAM) { + logger.debug("Using IAM Credentials for presigner"); + } + + return builder.build(); } private void bucketExists() {