From 2a9f245b395a122dfb9fe4e7ff0d5352f252c25f Mon Sep 17 00:00:00 2001
From: 疯狂的狮子Li <15040126243@163.com>
Date: 星期一, 28 十月 2024 18:09:32 +0800
Subject: [PATCH] update 优化 删除桶自动创建代码逻辑(云厂商限制不允许操作桶)
---
ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/core/OssClient.java | 104 ++-------------------------------------------------
ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/enumd/AccessPolicyType.java | 11 +----
2 files changed, 8 insertions(+), 107 deletions(-)
diff --git a/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/core/OssClient.java b/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/core/OssClient.java
index ba924c0..f7b3e8a 100644
--- a/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/core/OssClient.java
+++ b/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/core/OssClient.java
@@ -9,7 +9,6 @@
import org.dromara.common.oss.constant.OssConstant;
import org.dromara.common.oss.entity.UploadResult;
import org.dromara.common.oss.enumd.AccessPolicyType;
-import org.dromara.common.oss.enumd.PolicyType;
import org.dromara.common.oss.exception.OssException;
import org.dromara.common.oss.properties.OssProperties;
import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
@@ -23,7 +22,6 @@
import software.amazon.awssdk.services.s3.crt.S3CrtHttpConfiguration;
import software.amazon.awssdk.services.s3.model.GetObjectResponse;
import software.amazon.awssdk.services.s3.model.NoSuchBucketException;
-import software.amazon.awssdk.services.s3.model.S3Exception;
import software.amazon.awssdk.services.s3.presigner.S3Presigner;
import software.amazon.awssdk.transfer.s3.S3TransferManager;
import software.amazon.awssdk.transfer.s3.model.*;
@@ -115,8 +113,7 @@
.serviceConfiguration(config)
.build();
- // 鍒涘缓瀛樺偍妗�
- createBucket();
+ checkBucket();
} catch (Exception e) {
if (e instanceof OssException) {
throw e;
@@ -126,36 +123,18 @@
}
/**
- * 鍚屾鍒涘缓瀛樺偍妗�
- * 濡傛灉瀛樺偍妗朵笉瀛樺湪锛屼細杩涜鍒涘缓锛涘鏋滃瓨鍌ㄦ《瀛樺湪锛屼笉鎵ц浠讳綍鎿嶄綔
+ * 妫�鏌ユ《鏄惁瀛樺湪
*
* @throws OssException 褰撳垱寤哄瓨鍌ㄦ《鏃跺彂鐢熷紓甯告椂鎶涘嚭
*/
- public void createBucket() {
+ public void checkBucket() {
String bucketName = properties.getBucketName();
try {
// 灏濊瘯鑾峰彇瀛樺偍妗剁殑淇℃伅
- client.headBucket(
- x -> x.bucket(bucketName)
- .build())
- .join();
+ client.headBucket(x -> x.bucket(bucketName).build()).join();
} catch (Exception ex) {
if (ex.getCause() instanceof NoSuchBucketException) {
- try {
- // 瀛樺偍妗朵笉瀛樺湪锛屽皾璇曞垱寤哄瓨鍌ㄦ《
- client.createBucket(
- x -> x.bucket(bucketName))
- .join();
-
- // 璁剧疆瀛樺偍妗剁殑璁块棶绛栫暐锛圔ucket Policy锛�
- client.putBucketPolicy(
- x -> x.bucket(bucketName)
- .policy(getPolicy(bucketName, getAccessPolicy().getPolicyType())))
- .join();
- } catch (S3Exception e) {
- // 瀛樺偍妗跺垱寤烘垨绛栫暐璁剧疆澶辫触
- throw new OssException("鍒涘缓Bucket澶辫触, 璇锋牳瀵归厤缃俊鎭�:[" + e.getMessage() + "]");
- }
+ throw new OssException("Bucket妗舵槸涓嶅瓨鍦ㄧ殑锛岃鏍稿閰嶇疆淇℃伅:[" + ex.getMessage() + "]");
} else {
throw new OssException("鍒ゆ柇Bucket鏄惁瀛樺湪澶辫触锛岃鏍稿閰嶇疆淇℃伅:[" + ex.getMessage() + "]");
}
@@ -527,79 +506,6 @@
*/
public AccessPolicyType getAccessPolicy() {
return AccessPolicyType.getByType(properties.getAccessPolicy());
- }
-
- /**
- * 鐢熸垚 AWS S3 瀛樺偍妗惰闂瓥鐣�
- *
- * @param bucketName 瀛樺偍妗�
- * @param policyType 妗剁瓥鐣ョ被鍨�
- * @return 绗﹀悎 AWS S3 瀛樺偍妗惰闂瓥鐣ユ牸寮忕殑瀛楃涓�
- */
- private static String getPolicy(String bucketName, PolicyType policyType) {
- String policy = switch (policyType) {
- case WRITE -> """
- {
- "Version": "2012-10-17",
- "Statement": []
- }
- """;
- case READ_WRITE -> """
- {
- "Version": "2012-10-17",
- "Statement": [
- {
- "Effect": "Allow",
- "Principal": "*",
- "Action": [
- "s3:GetBucketLocation",
- "s3:ListBucket",
- "s3:ListBucketMultipartUploads"
- ],
- "Resource": "arn:aws:s3:::bucketName"
- },
- {
- "Effect": "Allow",
- "Principal": "*",
- "Action": [
- "s3:AbortMultipartUpload",
- "s3:DeleteObject",
- "s3:GetObject",
- "s3:ListMultipartUploadParts",
- "s3:PutObject"
- ],
- "Resource": "arn:aws:s3:::bucketName/*"
- }
- ]
- }
- """;
- case READ -> """
- {
- "Version": "2012-10-17",
- "Statement": [
- {
- "Effect": "Allow",
- "Principal": "*",
- "Action": ["s3:GetBucketLocation"],
- "Resource": "arn:aws:s3:::bucketName"
- },
- {
- "Effect": "Deny",
- "Principal": "*",
- "Action": ["s3:ListBucket"],
- "Resource": "arn:aws:s3:::bucketName"
- },
- {
- "Effect": "Allow",
- "Principal": "*",
- "Action": "s3:GetObject",
- "Resource": "arn:aws:s3:::bucketName/*"
- }
- ]
- }
- """;
- };
- return policy.replaceAll("bucketName", bucketName);
}
}
diff --git a/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/enumd/AccessPolicyType.java b/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/enumd/AccessPolicyType.java
index 6d39133..a257bba 100644
--- a/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/enumd/AccessPolicyType.java
+++ b/ruoyi-common/ruoyi-common-oss/src/main/java/org/dromara/common/oss/enumd/AccessPolicyType.java
@@ -17,17 +17,17 @@
/**
* private
*/
- PRIVATE("0", BucketCannedACL.PRIVATE, ObjectCannedACL.PRIVATE, PolicyType.WRITE),
+ PRIVATE("0", BucketCannedACL.PRIVATE, ObjectCannedACL.PRIVATE),
/**
* public
*/
- PUBLIC("1", BucketCannedACL.PUBLIC_READ_WRITE, ObjectCannedACL.PUBLIC_READ_WRITE, PolicyType.READ_WRITE),
+ PUBLIC("1", BucketCannedACL.PUBLIC_READ_WRITE, ObjectCannedACL.PUBLIC_READ_WRITE),
/**
* custom
*/
- CUSTOM("2", BucketCannedACL.PUBLIC_READ, ObjectCannedACL.PUBLIC_READ, PolicyType.READ);
+ CUSTOM("2", BucketCannedACL.PUBLIC_READ, ObjectCannedACL.PUBLIC_READ);
/**
* 妗� 鏉冮檺绫诲瀷锛堟暟鎹簱鍊硷級
@@ -43,11 +43,6 @@
* 鏂囦欢瀵硅薄 鏉冮檺绫诲瀷
*/
private final ObjectCannedACL objectCannedACL;
-
- /**
- * 妗剁瓥鐣ョ被鍨�
- */
- private final PolicyType policyType;
public static AccessPolicyType getByType(String type) {
for (AccessPolicyType value : values()) {
--
Gitblit v1.9.3