Minio生命周期规则及桶初始化

package org.ailun;

import io.minio.*;
import io.minio.messages.*;

import java.util.List;

/**
 * @version 1.0
 * @since : JDK 11
 */
public class Test {

    private static String bucketName = "bucketName";

    public static void main(String[] args) {
        // http://192.168.100.141:9000/test/2.jpg
        // MinioClient client = getMinioClient("http://192.168.100.141:9000", "minio_xxPatG", "minio_eJnEDp");
        MinioClient client = getMinioClient("http://192.168.100.147:9000", "admin", "QdJv2iojuW@jtzl");
        createBucket(client, bucketName);
        setBucketLifecycleRules(client, bucketName, 30);
    }

    /**
     * 设置桶的生命周期规则
     *
     * @param client 客户端
     * @param days   天数
     */
    private static void setBucketLifecycleRules(MinioClient client, String bucketName, Integer days) {
        AbortIncompleteMultipartUpload abortIncompleteMultipartUpload = null;
        Expiration expiration = new Expiration((ResponseDate) null, days, (Boolean) null);
        RuleFilter ruleFilter = new RuleFilter("");
        String id = null;
        NoncurrentVersionExpiration noncurrentVersionExpiration = null;
        NoncurrentVersionTransition noncurrentVersionTransition = null;
        Transition transition = null;
        LifecycleRule lifecycleRule = new LifecycleRule(Status.ENABLED, abortIncompleteMultipartUpload, expiration, ruleFilter, id, noncurrentVersionExpiration, noncurrentVersionTransition, transition);
        LifecycleConfiguration lifecycleConfiguration = new LifecycleConfiguration(List.of(lifecycleRule));
        SetBucketLifecycleArgs args = SetBucketLifecycleArgs
                .builder()
                .bucket(bucketName)
                .config(lifecycleConfiguration)
                .build();
        try {
            client.setBucketLifecycle(args);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }

    /**
     * 创建minio的桶
     * @param client     minio客户端
     * @param bucketName 桶名称
     */
    private static void createBucket(MinioClient client, String bucketName) {
        // 访问权限模板字符串
        final String template = "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":[\"*\"]}," +
                "\"Action\":[\"s3:GetBucketLocation\",\"s3:ListBucket\",\"s3:ListBucketMultipartUploads\"],\"Resource\":[\"arn:aws:s3:::" + bucketName + "\"]}," +
                "{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":[\"*\"]},\"Action\":[\"s3:PutObject\",\"s3:AbortMultipartUpload\",\"s3:DeleteObject\",\"s3:GetObject\"," +
                "\"s3:ListMultipartUploadParts\"],\"Resource\":[\"arn:aws:s3:::" + bucketName + "/*\"]}]}";
        try {
            boolean exists = client.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());
            if (!exists) {
                client.makeBucket(MakeBucketArgs.builder().objectLock(false).bucket(bucketName).build());
                client.setBucketPolicy(SetBucketPolicyArgs.builder().bucket(bucketName).config(template).build());
                client.getBucketPolicy(GetBucketPolicyArgs.builder().bucket(bucketName).build());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 创建minIO客户端
     *
     * @param minioServerAddr minIO服务接口管理地址 http://192.168.100.141:9000
     * @param ak              accessKey 也可以是console控制台的登录用户名
     * @param sk              secretKey 也可以是console控制台的登录密码
     * @return
     */
    private static MinioClient getMinioClient(String minioServerAddr, String ak, String sk) {
        return MinioClient
                .builder()
                .endpoint(minioServerAddr)
                // console 账号
                .credentials(ak, sk)
                // AKSK账号
                // .credentials("bRTaSRALg352qdx1MMGf","q98lFSssKNkOAoxOjn7QXB9ugEsMnJz0688HDHQO")
                .build();
    }
}
posted @ 2024-09-25 09:32  黄河大道东  阅读(23)  评论(0编辑  收藏  举报