Quellcode durchsuchen

添加 ACL 和 policy 接口

reghao vor 2 Jahren
Ursprung
Commit
a30c274a3e

+ 30 - 0
dfs-store/src/main/java/cn/reghao/dfs/store/controller/BucketBasicController.java

@@ -48,4 +48,34 @@ public class BucketBasicController {
     public String deleteBucket() {
         return WebResult.success();
     }
+
+    @ApiOperation("添加或修改存储桶的 ACL 配置")
+    @PutMapping(value = "/", params = {"acl"}, produces = MediaType.APPLICATION_XML_VALUE)
+    public String putBucketAcl() {
+        return WebResult.success();
+    }
+
+    @ApiOperation("获取存储桶的 ACL")
+    @GetMapping(value = "/", params = {"acl"}, produces = MediaType.APPLICATION_XML_VALUE)
+    public String getBucketAcl() {
+        return WebResult.success();
+    }
+
+    @ApiOperation("添加或修改存储桶的权限策略配置")
+    @PutMapping(value = "/", params = {"policy"}, produces = MediaType.APPLICATION_XML_VALUE)
+    public String putBucketPolicy() {
+        return WebResult.success();
+    }
+
+    @ApiOperation(value = "删除指定存储桶的策略配置")
+    @DeleteMapping(value = "/", params = {"policy"}, produces = MediaType.APPLICATION_XML_VALUE)
+    public String deleteBucketPolicy() {
+        return WebResult.success();
+    }
+
+    @ApiOperation("获取存储桶的权限策略配置")
+    @GetMapping(value = "/", params = {"policy"}, produces = MediaType.APPLICATION_XML_VALUE)
+    public String getBucketPolicy() {
+        return WebResult.success();
+    }
 }

+ 0 - 24
dfs-store/src/main/java/cn/reghao/dfs/store/controller/BucketController.java

@@ -25,12 +25,6 @@ public class BucketController {
         return WebResult.success();
     }
 
-    @ApiOperation(value = "删除指定存储桶的策略配置")
-    @DeleteMapping(value = "/", params = {"policy"}, produces = MediaType.APPLICATION_XML_VALUE)
-    public String deleteBucketPolicy() {
-        return WebResult.success();
-    }
-
     @ApiOperation(value = "删除指定存储桶的复制配置")
     @DeleteMapping(value = "/", params = {"replication"}, produces = MediaType.APPLICATION_XML_VALUE)
     public String deleteBucketReplication() {
@@ -55,12 +49,6 @@ public class BucketController {
         return WebResult.success();
     }
 
-    @ApiOperation("获取存储桶的 ACL")
-    @GetMapping(value = "/", params = {"acl"}, produces = MediaType.APPLICATION_XML_VALUE)
-    public String getBucketAcl() {
-        return WebResult.success();
-    }
-
     @ApiOperation("获取存储桶的回调通知配置")
     @GetMapping(value = "/", params = {"notification"}, produces = MediaType.APPLICATION_XML_VALUE)
     public String getBucketNotification() {
@@ -157,24 +145,12 @@ public class BucketController {
         return WebResult.success();
     }
 
-    @ApiOperation("添加或修改存储桶的 ACL 配置")
-    @PutMapping(value = "/", params = {"acl"}, produces = MediaType.APPLICATION_XML_VALUE)
-    public String putBucketAcl() {
-        return WebResult.success();
-    }
-
     @ApiOperation("添加或修改存储桶的加密配置")
     @PutMapping(value = "/", params = {"encryption"}, produces = MediaType.APPLICATION_XML_VALUE)
     public String putBucketEncryption() {
         return WebResult.success();
     }
 
-    @ApiOperation("添加或修改存储桶的权限策略配置")
-    @PutMapping(value = "/", params = {"policy"}, produces = MediaType.APPLICATION_XML_VALUE)
-    public String putBucketPolicy() {
-        return WebResult.success();
-    }
-
     @ApiOperation("添加或修改存储桶的复制配置")
     @PutMapping(value = "/", params = {"replication"}, produces = MediaType.APPLICATION_XML_VALUE)
     public String putBucketReplication() {

+ 1 - 0
dfs-store/src/main/java/cn/reghao/dfs/store/service/FileUrlService.java

@@ -10,6 +10,7 @@ import org.springframework.stereotype.Service;
  * @date 2022-04-26 15:06:29
  */
 @Service
+@Deprecated
 public class FileUrlService {
     private final String domain;
     private final int group;

+ 2 - 1
dfs-store/src/main/resources/mapper/FileMetaMapper.xml

@@ -60,7 +60,8 @@
         limit 1
     </select>
     <select id="findByObjectName" resultType="cn.reghao.dfs.store.model.po.FileMeta">
-        select * from file_meta
+        select *
+        from file_meta
         where object_name=#{objectName}
     </select>
     <select id="findByObjectName1" resultType="cn.reghao.dfs.api.dto.HeadObjectResult">

+ 61 - 0
oss-sdk/src/main/java/cn/reghao/oss/sdk/BucketBasicService.java

@@ -0,0 +1,61 @@
+package cn.reghao.oss.sdk;
+
+import com.aliyuncs.ram.model.v20150501.DeletePolicyRequest;
+import com.amazonaws.services.s3.AmazonS3;
+import com.amazonaws.services.s3.model.AccessControlList;
+import com.amazonaws.services.s3.model.BucketPolicy;
+
+/**
+ * @author reghao
+ * @date 2023-05-15 15:29:39
+ */
+public class BucketBasicService {
+    private final String bucketName;
+    private final AmazonS3 s3Client;
+
+    public BucketBasicService(String endpoint, String bucketName) {
+        this.bucketName = bucketName;
+        S3Client s3Client = new S3Client(endpoint, bucketName);
+        this.s3Client = s3Client.getS3Client();
+    }
+
+    public void putAcl() {
+        AccessControlList accessControlList = new AccessControlList();
+        s3Client.setBucketAcl(bucketName, accessControlList);
+        //s3Client.setObjectAcl(bucketName, "", accessControlList);
+    }
+
+    public void putAcl(String objectName) {
+        AccessControlList accessControlList = new AccessControlList();
+        s3Client.setObjectAcl(bucketName, objectName, accessControlList);
+    }
+
+    public void getAcl() {
+        s3Client.getBucketAcl(bucketName);
+    }
+
+    public void getAcl(String objectName) {
+        s3Client.getObjectAcl(bucketName, objectName);
+    }
+
+    public void putPolicy(String policyText) {
+        s3Client.setBucketPolicy(bucketName, policyText);
+    }
+
+    public void deletePolicy() {
+        DeletePolicyRequest deletePolicyRequest = new DeletePolicyRequest();
+        s3Client.deleteBucketPolicy(bucketName);
+    }
+
+    public void getPolicy() {
+        BucketPolicy bucketPolicy = s3Client.getBucketPolicy(bucketName);
+    }
+
+    public static void main(String[] args) {
+        String endpoint = "http://oss.reghao.cn";
+        String bucketName = "tnb";
+        BucketBasicService bucketBasicService = new BucketBasicService(endpoint, bucketName);
+        //bucketBasicService.putPolicy("");
+        bucketBasicService.getPolicy();
+    }
+}

+ 6 - 24
oss-sdk/src/main/java/cn/reghao/oss/sdk/ObjectBasicService.java

@@ -3,15 +3,8 @@ package cn.reghao.oss.sdk;
 import cn.reghao.jutil.jdk.converter.ByteHex;
 import cn.reghao.jutil.jdk.security.Base64Util;
 import cn.reghao.jutil.jdk.security.DigestUtil;
-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 com.amazonaws.services.s3.model.ObjectMetadata;
-import com.amazonaws.services.s3.model.PutObjectResult;
-import com.amazonaws.services.s3.model.S3Object;
-import com.amazonaws.services.s3.model.S3ObjectInputStream;
+import com.amazonaws.services.s3.model.*;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.io.FileUtils;
 
@@ -24,25 +17,13 @@ import java.security.NoSuchAlgorithmException;
  */
 @Slf4j
 public class ObjectBasicService {
-    private String endpoint;
-    private String region;
     private final String bucketName;
-    private String accessKey;
-    private String secretKey;
     private final AmazonS3 s3Client;
 
     public ObjectBasicService(String endpoint, String bucketName) {
-        this.endpoint = endpoint;
-        this.region = "chengdu";
         this.bucketName = bucketName;
-        this.accessKey = "LTAI5t9juYR3sSP3t7fstqyt";
-        this.secretKey = "Tn54Dliyk6ET3nYevum9KGRxrM8Ytt";
-        this.s3Client = AmazonS3ClientBuilder.standard()
-                .withCredentials(new AWSStaticCredentialsProvider(new BasicAWSCredentials(accessKey, secretKey)))
-                .withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration(endpoint, region))
-                .withPathStyleAccessEnabled(false)
-                .withChunkedEncodingDisabled(true)
-                .build();
+        S3Client s3Client = new S3Client(endpoint, bucketName);
+        this.s3Client = s3Client.getS3Client();
     }
 
     public void putObject(String key, File file) throws NoSuchAlgorithmException {
@@ -125,9 +106,10 @@ public class ObjectBasicService {
         File file = new File(filePath);
         String key = String.format("aa/bb/cc/%s", file.getName());
         key = "video/playback/NbnoDb1qqN";
+        key = "video/playback/ee878672a083434bb465327c75c58681";
         //objectBasicService.putObject(key, file);
-        objectBasicService.getObject(key, "/home/reghao/Downloads/11111");
-        //objectBasicService.headObject(key);
+        //objectBasicService.getObject(key, "/home/reghao/Downloads/11111");
+        objectBasicService.headObject(key);
         //objectBasicService.objectExist(key);
         log.info("{}/{}", endpoint, key);
     }

+ 38 - 0
oss-sdk/src/main/java/cn/reghao/oss/sdk/S3Client.java

@@ -0,0 +1,38 @@
+package cn.reghao.oss.sdk;
+
+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;
+
+/**
+ * @author reghao
+ * @date 2023-05-15 15:30:13
+ */
+public class S3Client {
+    private String endpoint;
+    private String region;
+    private final String bucketName;
+    private String accessKey;
+    private String secretKey;
+    private final AmazonS3 s3Client;
+
+    public S3Client(String endpoint, String bucketName) {
+        this.endpoint = endpoint;
+        this.region = "chengdu";
+        this.bucketName = bucketName;
+        this.accessKey = "LTAI5t9juYR3sSP3t7fstqyt";
+        this.secretKey = "Tn54Dliyk6ET3nYevum9KGRxrM8Ytt";
+        this.s3Client = AmazonS3ClientBuilder.standard()
+                .withCredentials(new AWSStaticCredentialsProvider(new BasicAWSCredentials(accessKey, secretKey)))
+                .withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration(endpoint, region))
+                .withPathStyleAccessEnabled(false)
+                .withChunkedEncodingDisabled(true)
+                .build();
+    }
+
+    public AmazonS3 getS3Client() {
+        return s3Client;
+    }
+}