Commit 35b6f9d31c9052af7e1bc783eddaf35bb50a9f53

Authored by YunaiV
1 parent 94ee7d65

feat:【infra】s3 增加 region 配置

yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/framework/file/core/client/s3/S3FileClient.java
@@ -173,13 +173,13 @@ public class S3FileClient extends AbstractFileClient<S3FileClientConfig> { @@ -173,13 +173,13 @@ public class S3FileClient extends AbstractFileClient<S3FileClientConfig> {
173 return config.getRegion(); 173 return config.getRegion();
174 } 174 }
175 175
176 - // 2. 尝试从 endpoint 中解析 region 176 + // 2.1 尝试从 endpoint 中解析 region
177 String endpoint = config.getEndpoint(); 177 String endpoint = config.getEndpoint();
178 if (StrUtil.isEmpty(endpoint)) { 178 if (StrUtil.isEmpty(endpoint)) {
179 return "us-east-1"; 179 return "us-east-1";
180 } 180 }
181 181
182 - // 移除协议头(http:// 或 https://) 182 + // 2.2 移除协议头(http:// 或 https://)
183 String host = endpoint; 183 String host = endpoint;
184 if (HttpUtil.isHttp(endpoint) || HttpUtil.isHttps(endpoint)) { 184 if (HttpUtil.isHttp(endpoint) || HttpUtil.isHttps(endpoint)) {
185 try { 185 try {
@@ -189,12 +189,11 @@ public class S3FileClient extends AbstractFileClient<S3FileClientConfig> { @@ -189,12 +189,11 @@ public class S3FileClient extends AbstractFileClient<S3FileClientConfig> {
189 return "us-east-1"; 189 return "us-east-1";
190 } 190 }
191 } 191 }
192 -  
193 if (StrUtil.isEmpty(host)) { 192 if (StrUtil.isEmpty(host)) {
194 return "us-east-1"; 193 return "us-east-1";
195 } 194 }
196 195
197 - // 3. AWS S3 格式:s3.us-west-2.amazonaws.com 或 s3.amazonaws.com 196 + // 3.1 AWS S3 格式:s3.us-west-2.amazonaws.com 或 s3.amazonaws.com
198 if (host.contains("amazonaws.com")) { 197 if (host.contains("amazonaws.com")) {
199 // 匹配 s3.{region}.amazonaws.com 格式 198 // 匹配 s3.{region}.amazonaws.com 格式
200 if (host.startsWith("s3.") && host.contains(".amazonaws.com")) { 199 if (host.startsWith("s3.") && host.contains(".amazonaws.com")) {
@@ -206,8 +205,7 @@ public class S3FileClient extends AbstractFileClient<S3FileClientConfig> { @@ -206,8 +205,7 @@ public class S3FileClient extends AbstractFileClient<S3FileClientConfig> {
206 // s3.amazonaws.com 或 s3-accelerate.amazonaws.com 使用默认值 205 // s3.amazonaws.com 或 s3-accelerate.amazonaws.com 使用默认值
207 return "us-east-1"; 206 return "us-east-1";
208 } 207 }
209 -  
210 - // 4. 阿里云 OSS 格式:oss-cn-beijing.aliyuncs.com 208 + // 3.2 阿里云 OSS 格式:oss-cn-beijing.aliyuncs.com
211 if (host.contains(S3FileClientConfig.ENDPOINT_ALIYUN)) { 209 if (host.contains(S3FileClientConfig.ENDPOINT_ALIYUN)) {
212 // 匹配 oss-{region}.aliyuncs.com 格式 210 // 匹配 oss-{region}.aliyuncs.com 格式
213 if (host.startsWith("oss-") && host.contains("." + S3FileClientConfig.ENDPOINT_ALIYUN)) { 211 if (host.startsWith("oss-") && host.contains("." + S3FileClientConfig.ENDPOINT_ALIYUN)) {
@@ -217,8 +215,7 @@ public class S3FileClient extends AbstractFileClient<S3FileClientConfig> { @@ -217,8 +215,7 @@ public class S3FileClient extends AbstractFileClient<S3FileClientConfig> {
217 } 215 }
218 } 216 }
219 } 217 }
220 -  
221 - // 5. 腾讯云 COS 格式:cos.ap-shanghai.myqcloud.com 218 + // 3.3 腾讯云 COS 格式:cos.ap-shanghai.myqcloud.com
222 if (host.contains(S3FileClientConfig.ENDPOINT_TENCENT)) { 219 if (host.contains(S3FileClientConfig.ENDPOINT_TENCENT)) {
223 // 匹配 cos.{region}.myqcloud.com 格式 220 // 匹配 cos.{region}.myqcloud.com 格式
224 if (host.startsWith("cos.") && host.contains("." + S3FileClientConfig.ENDPOINT_TENCENT)) { 221 if (host.startsWith("cos.") && host.contains("." + S3FileClientConfig.ENDPOINT_TENCENT)) {
@@ -229,7 +226,7 @@ public class S3FileClient extends AbstractFileClient<S3FileClientConfig> { @@ -229,7 +226,7 @@ public class S3FileClient extends AbstractFileClient<S3FileClientConfig> {
229 } 226 }
230 } 227 }
231 228
232 - // 6. 其他情况(MinIO、七牛云等)使用默认值 229 + // 3.4 其他情况(MinIO、七牛云等)使用默认值
233 return "us-east-1"; 230 return "us-east-1";
234 } 231 }
235 232
yudao-module-infra/src/main/java/cn/iocoder/yudao/module/infra/framework/file/core/client/s3/S3FileClientConfig.java
@@ -83,7 +83,7 @@ public class S3FileClientConfig implements FileClientConfig { @@ -83,7 +83,7 @@ public class S3FileClientConfig implements FileClientConfig {
83 private Boolean enablePublicAccess; 83 private Boolean enablePublicAccess;
84 84
85 /** 85 /**
86 - * AWS 区域 86 + * 区域
87 * 1. AWS S3:https://docs.aws.amazon.com/general/latest/gr/s3.html 例如说,us-east-1、us-west-2 87 * 1. AWS S3:https://docs.aws.amazon.com/general/latest/gr/s3.html 例如说,us-east-1、us-west-2
88 * 2. MinIO:可以填任意值,通常使用 us-east-1 88 * 2. MinIO:可以填任意值,通常使用 us-east-1
89 * 3. 阿里云:不需要填写,会自动识别 89 * 3. 阿里云:不需要填写,会自动识别