AwsConfig.java 2.13 KB
package com.hotent.file.model;

import com.amazonaws.ClientConfiguration;
import com.amazonaws.Protocol;
import com.amazonaws.SDKGlobalConfiguration;
import com.amazonaws.auth.AWSCredentials;
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 org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class AwsConfig {

    @Value("${aws.accessKey:null}")
    private String accessKey;

    @Value("${aws.secretKey:null}")
    private String secretKey;

    @Value("${aws.region:null}")
    private String region;


    @Value("${aws.uploadDir:null}")
    private String uploadDir;

    @Value("${aws.hostName:null}")
    private String hostName;


    @Bean
    public AmazonS3 getAmazonS3() {
        //忽略证书属性
        System.setProperty(SDKGlobalConfiguration.DISABLE_CERT_CHECKING_SYSTEM_PROPERTY,"true");
        AWSCredentials awsCredentials = new BasicAWSCredentials(accessKey, secretKey);
        ClientConfiguration baseOpts = new ClientConfiguration();
        baseOpts.setSignerOverride("S3SignerType");
        baseOpts.setProtocol(Protocol.HTTPS);

        return AmazonS3ClientBuilder.standard()
                .withCredentials(new AWSStaticCredentialsProvider(awsCredentials))
                // 如果有endpoint,可以用这个,这个和withRegion(Region)不能一起使用
                .withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration(hostName, region))
                // 如果配置了S3域名,就需要加这个进行路径访问,要不然会报AccessKey不存在的问题
                .withPathStyleAccessEnabled(true)
                .withClientConfiguration(baseOpts)
                .build();
    }

    public String getUploadDir() {
        return uploadDir;
    }

    public void setUploadDir(String uploadDir) {
        this.uploadDir = uploadDir;
    }
}