diff --git a/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/s3/S3AutoConfiguration.java b/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/s3/S3AutoConfiguration.java index b84345952..133a29885 100644 --- a/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/s3/S3AutoConfiguration.java +++ b/spring-cloud-aws-autoconfigure/src/main/java/io/awspring/cloud/autoconfigure/s3/S3AutoConfiguration.java @@ -56,6 +56,7 @@ * * @author Maciej Walkowiak * @author Matej Nedic + * @author Kunal Varpe */ @AutoConfiguration @ConditionalOnClass({ S3Client.class, S3OutputStreamProvider.class }) @@ -116,6 +117,10 @@ S3Presigner s3Presigner(S3Properties properties, AwsProperties awsProperties, else if (awsProperties.getEndpoint() != null) { builder.endpointOverride(awsProperties.getEndpoint()); } + else if (connectionDetails.getIfAvailable() != null + && connectionDetails.getIfAvailable().getEndpoint() != null) { + builder.endpointOverride(connectionDetails.getIfAvailable().getEndpoint()); + } Optional.ofNullable(awsProperties.getFipsEnabled()).ifPresent(builder::fipsEnabled); Optional.ofNullable(awsProperties.getDualstackEnabled()).ifPresent(builder::dualstackEnabled); return builder.build(); diff --git a/spring-cloud-aws-testcontainers/src/test/java/io/awspring/cloud/testcontainers/AwsContainerConnectionDetailsFactoryTest.java b/spring-cloud-aws-testcontainers/src/test/java/io/awspring/cloud/testcontainers/AwsContainerConnectionDetailsFactoryTest.java index d3cdf2f90..47ae03aae 100644 --- a/spring-cloud-aws-testcontainers/src/test/java/io/awspring/cloud/testcontainers/AwsContainerConnectionDetailsFactoryTest.java +++ b/spring-cloud-aws-testcontainers/src/test/java/io/awspring/cloud/testcontainers/AwsContainerConnectionDetailsFactoryTest.java @@ -28,6 +28,7 @@ import io.awspring.cloud.autoconfigure.ses.SesAutoConfiguration; import io.awspring.cloud.autoconfigure.sns.SnsAutoConfiguration; import io.awspring.cloud.autoconfigure.sqs.SqsAutoConfiguration; +import java.time.Duration; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.ImportAutoConfiguration; @@ -40,6 +41,7 @@ import org.testcontainers.utility.DockerImageName; import software.amazon.awssdk.services.dynamodb.DynamoDbClient; import software.amazon.awssdk.services.s3.S3Client; +import software.amazon.awssdk.services.s3.presigner.S3Presigner; import software.amazon.awssdk.services.ses.SesClient; import software.amazon.awssdk.services.sns.SnsClient; import software.amazon.awssdk.services.sqs.SqsAsyncClient; @@ -88,6 +90,12 @@ void configuresS3ClientWithServiceConnection(@Autowired S3Client client) { assertThatCode(client::listBuckets).doesNotThrowAnyException(); } + @Test + void configuresS3PresignerWithServiceConnection(@Autowired S3Presigner s3Presigner) { + assertThatCode(() -> s3Presigner.presignGetObject(req1 -> req1.signatureDuration(Duration.ofSeconds(2)) + .getObjectRequest(req2 -> req2.bucket("my-bucket").key("test").build()))).doesNotThrowAnyException(); + } + @Configuration(proxyBeanMethods = false) @ImportAutoConfiguration({ AwsAutoConfiguration.class, CredentialsProviderAutoConfiguration.class, RegionProviderAutoConfiguration.class, DynamoDbAutoConfiguration.class, SesAutoConfiguration.class,