Browse Source

🎉 多租户对象存储新增 华为云obs 与 amazon s3

pull/1/head
smallchill 2 years ago
parent
commit
b6d5e3992b
  1. 5
      blade-ops/blade-resource/pom.xml
  2. 67
      blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/oss/AmazonS3OssBuilder.java
  3. 63
      blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/oss/HuaweiObsBuilder.java
  4. 6
      blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/oss/OssBuilder.java
  5. 10
      blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/oss/QiniuOssBuilder.java
  6. 2
      blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/oss/TencentCosBuilder.java

5
blade-ops/blade-resource/pom.xml

@ -57,6 +57,11 @@
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
</dependency>
<!--华为云Obs-->
<dependency>
<groupId>com.huaweicloud</groupId>
<artifactId>esdk-obs-java</artifactId>
</dependency>
<!--腾讯COS-->
<dependency>
<groupId>com.qcloud</groupId>

67
blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/oss/AmazonS3OssBuilder.java

@ -0,0 +1,67 @@
/*
* Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the dreamlu.net developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: Chill 庄骞 (smallchill@163.com)
*/
package org.springblade.resource.builder.oss;
import com.amazonaws.ClientConfiguration;
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.client.builder.AwsClientBuilder;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import lombok.SneakyThrows;
import org.springblade.core.oss.OssTemplate;
import org.springblade.core.oss.S3Template;
import org.springblade.core.oss.props.OssProperties;
import org.springblade.core.oss.rule.OssRule;
import org.springblade.core.tool.utils.StringUtil;
import org.springblade.resource.entity.Oss;
/**
* Amazon S3 云存储构建类
*
* @author Chill
*/
public class AmazonS3OssBuilder {
@SneakyThrows
public static OssTemplate template(Oss oss, OssRule ossRule) {
// 创建配置类
OssProperties ossProperties = new OssProperties();
ossProperties.setEndpoint(oss.getEndpoint());
ossProperties.setAccessKey(oss.getAccessKey());
ossProperties.setSecretKey(oss.getSecretKey());
ossProperties.setBucketName(oss.getBucketName());
ossProperties.setRegion(oss.getRegion());
// 创建客户端
AWSCredentials credentials = new BasicAWSCredentials(ossProperties.getAccessKey(), ossProperties.getSecretKey());
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setSignerOverride("AWSS3V4SignerType");
AmazonS3 amazonS3 = AmazonS3ClientBuilder
.standard()
.withEndpointConfiguration(new AwsClientBuilder.
EndpointConfiguration(ossProperties.getEndpoint(),
StringUtil.isBlank(ossProperties.getRegion()) ? Regions.DEFAULT_REGION.name() : Regions.fromName(ossProperties.getRegion()).getName()))
.withPathStyleAccessEnabled(true)
.withClientConfiguration(clientConfiguration)
.withCredentials(new AWSStaticCredentialsProvider(credentials))
.build();
return new S3Template(amazonS3, ossRule, ossProperties);
}
}

63
blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/oss/HuaweiObsBuilder.java

@ -0,0 +1,63 @@
/*
* Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* Neither the name of the dreamlu.net developer nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
* Author: Chill 庄骞 (smallchill@163.com)
*/
package org.springblade.resource.builder.oss;
import com.obs.services.ObsClient;
import com.obs.services.ObsConfiguration;
import lombok.SneakyThrows;
import org.springblade.core.oss.HuaweiObsTemplate;
import org.springblade.core.oss.OssTemplate;
import org.springblade.core.oss.props.OssProperties;
import org.springblade.core.oss.rule.OssRule;
import org.springblade.resource.entity.Oss;
/**
* 华为云存储构建类
*
* @author Chill
*/
public class HuaweiObsBuilder {
@SneakyThrows
public static OssTemplate template(Oss oss, OssRule ossRule) {
// 创建配置类
OssProperties ossProperties = new OssProperties();
ossProperties.setEndpoint(oss.getEndpoint());
ossProperties.setAccessKey(oss.getAccessKey());
ossProperties.setSecretKey(oss.getSecretKey());
ossProperties.setBucketName(oss.getBucketName());
// 使用可定制各参数的配置类(ObsConfiguration)创建OBS客户端(ObsClient),创建完成后不支持再次修改参数
ObsConfiguration conf = new ObsConfiguration();
conf.setEndPoint(ossProperties.getEndpoint());
// 设置OSSClient允许打开的最大HTTP连接数,默认为1024个。
conf.setMaxConnections(1024);
// 设置Socket层传输数据的超时时间,默认为50000毫秒。
conf.setSocketTimeout(50000);
// 设置建立连接的超时时间,默认为50000毫秒。
conf.setConnectionTimeout(50000);
// 设置从连接池中获取连接的超时时间(单位:毫秒),默认不超时。
conf.setConnectionRequestTimeout(1000);
// 设置连接空闲超时时间。超时则关闭连接,默认为60000毫秒。
conf.setIdleConnectionTime(60000);
// 设置失败请求重试次数,默认为3次。
conf.setMaxErrorRetry(5);
// 创建客户端
ObsClient obsClient = new ObsClient(ossProperties.getAccessKey(), ossProperties.getSecretKey(), conf);
return new HuaweiObsTemplate(obsClient, ossProperties, ossRule);
}
}

6
blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/oss/OssBuilder.java

@ -106,7 +106,11 @@ public class OssBuilder {
} else if (oss.getCategory() == OssEnum.ALI.getCategory()) {
template = AliOssBuilder.template(oss, ossRule);
} else if (oss.getCategory() == OssEnum.TENCENT.getCategory()) {
template = TencentOssBuilder.template(oss, ossRule);
template = TencentCosBuilder.template(oss, ossRule);
} else if (oss.getCategory() == OssEnum.HUAWEI.getCategory()) {
template = HuaweiObsBuilder.template(oss, ossRule);
} else if (oss.getCategory() == OssEnum.AMAZONS3.getCategory()) {
template = AmazonS3OssBuilder.template(oss, ossRule);
}
templatePool.put(tenantId, template);
ossPool.put(tenantId, oss);

10
blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/oss/QiniuOssBuilder.java

@ -37,15 +37,17 @@ public class QiniuOssBuilder {
@SneakyThrows
public static OssTemplate template(Oss oss, OssRule ossRule) {
Configuration cfg = new Configuration(Region.autoRegion());
Auth auth = Auth.create(oss.getAccessKey(), oss.getSecretKey());
UploadManager uploadManager = new UploadManager(cfg);
BucketManager bucketManager = new BucketManager(auth, cfg);
// 创建配置类
OssProperties ossProperties = new OssProperties();
ossProperties.setEndpoint(oss.getEndpoint());
ossProperties.setAccessKey(oss.getAccessKey());
ossProperties.setSecretKey(oss.getSecretKey());
ossProperties.setBucketName(oss.getBucketName());
// 创建客户端
Configuration cfg = new Configuration(Region.autoRegion());
Auth auth = Auth.create(oss.getAccessKey(), oss.getSecretKey());
UploadManager uploadManager = new UploadManager(cfg);
BucketManager bucketManager = new BucketManager(auth, cfg);
return new QiniuTemplate(auth, uploadManager, bucketManager, ossProperties, ossRule);
}

2
blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/oss/TencentOssBuilder.java → blade-ops/blade-resource/src/main/java/org/springblade/resource/builder/oss/TencentCosBuilder.java

@ -33,7 +33,7 @@ import org.springblade.resource.entity.Oss;
*
* @author Chill
*/
public class TencentOssBuilder {
public class TencentCosBuilder {
@SneakyThrows
public static OssTemplate template(Oss oss, OssRule ossRule) {
Loading…
Cancel
Save