package com.magamochi.image.config; import java.net.URI; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import software.amazon.awssdk.auth.credentials.AwsBasicCredentials; import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.s3.S3Client; import software.amazon.awssdk.services.s3.S3Configuration; import software.amazon.awssdk.services.s3.presigner.S3Presigner; @Configuration public class S3ClientConfig { @Value("${minio.accessKey}") private String accessKey; @Value("${minio.secretKey}") private String secretKey; @Value("${minio.endpoint}") private String endpoint; @Bean public S3Client s3Client() { var credentials = AwsBasicCredentials.create(accessKey, secretKey); var configuration = S3Configuration.builder().pathStyleAccessEnabled(true).build(); return S3Client.builder() .endpointOverride(URI.create(endpoint)) .credentialsProvider(StaticCredentialsProvider.create(credentials)) .region(Region.US_EAST_1) .serviceConfiguration(configuration) .build(); } @Bean public S3Presigner s3Presigner() { var credentials = AwsBasicCredentials.create(accessKey, secretKey); var configuration = S3Configuration.builder().pathStyleAccessEnabled(true).build(); return S3Presigner.builder() .endpointOverride(URI.create(endpoint)) .credentialsProvider(StaticCredentialsProvider.create(credentials)) .region(Region.US_EAST_1) .serviceConfiguration(configuration) .build(); } }