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 ++------------------------------------------------- 1 files changed, 5 insertions(+), 99 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); } } -- Gitblit v1.9.3