Untitled

 avatar
unknown
plain_text
2 years ago
1.8 kB
6
Indexable
package co.id.bahasakita.webtreasury.configuration;

import co.id.bahasakita.webtreasury.properties.AwsProperties;
import co.id.bahasakita.webtreasury.service.AwsFileService;
import co.id.bahasakita.webtreasury.serviceimpl.AwsFileServiceImpl;
import com.amazonaws.auth.AWSCredentialsProvider;
import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.client.builder.AwsClientBuilder;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@Slf4j
public class AwsConfiguration {

  @Bean
  @ConditionalOnMissingBean
  public AmazonS3 amazonS3(AWSCredentialsProvider awsCredentialsProvider, AwsProperties awsProperties) {
    log.info("aws host: {}", awsProperties.getHost());
    log.info("aws bucket name: {}", awsProperties.getBucketName());
    return AmazonS3ClientBuilder.standard()
        .withCredentials(awsCredentialsProvider)
        .withEndpointConfiguration(
            new AwsClientBuilder.EndpointConfiguration(awsProperties.getHost(), awsProperties.getSigningRegion()))
        .build();
  }

  @Bean
  @ConditionalOnMissingBean
  public AWSCredentialsProvider awsCredentialsProvider(AwsProperties awsProperties) {
    return new AWSStaticCredentialsProvider(
        new BasicAWSCredentials(awsProperties.getAccessKey(), awsProperties.getSecretKey()));
  }

  @Bean
  @ConditionalOnMissingBean
  public AwsFileService awsFileService(AmazonS3 amazonS3, AwsProperties awsProperties) {
    return new AwsFileServiceImpl(amazonS3, awsProperties);
  }
}
Editor is loading...