首页 > 其他分享 >Minio生命周期规则及桶初始化

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

时间:2024-09-25 09:37:52浏览次数:8  
标签:初始化 Minio s3 及桶 param client bucketName null String

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();
    }
}

标签:初始化,Minio,s3,及桶,param,client,bucketName,null,String
From: https://www.cnblogs.com/hhddd-1024/p/18430612

相关文章

  • 4.1 Xenomai如何初始化
    点击查看系列文章=》 InterruptPipeline系列文章大纲-CSDN博客原创不易,需要大家多多鼓励!您的关注、点赞、收藏就是我的创作动力!4.1Xenomai如何初始化        在上一章节《3.6第四行之__ipipe_init_proc()-CSDN博客》,描述了IPIPE初始化的最后一步__ipipe_init_p......
  • 信息学奥赛复赛复习02-CSP-J2019-02-结构体、无构造函数、有构造函数、初始化列表构造
    PDF文档公众号回复关键字:2024092412019CSP-J题目2公交换乘[题目描述]著名旅游城市B市为了鼓励大家采用公共交通方式出行,推出了一种地铁换乘公交车的优惠方案在搭乘一次地铁后可以获得一张优惠票,有效期为45分钟,在有效期内可以消耗这张优惠票,免费搭乘一次票价不超过......
  • 4. VM是如何初始化的-create_vm()
    前言在3.初窥全貌-main方法执行全流程-CSDN博客,我们了解了一个Java类的main函数在执行java命令到最终被执行的全路径,但是那里面最重要的三步1.创建vm;2.加载main类;3.执行main方法;我们并没有展开学习,这一章,我们从创建VM开始学习,这是整个系列里最重的函数。流程很多,但......
  • 5.2 C# 数组声明与初始化全解
    文章目录5.2.1C#数组声明5.2.1C#数组声明1.声明数组的语法格式2.声明一维数组的语法格式格式1:声明但不初始化格式2:声明并初始化方式1:使用`new`关键字方式2:省略`new`关键字总结5.2.2C#数组的初始化5.2.2C#数组的初始化1.声明并初始化数组1.1使用`new......
  • 如何使用位置参数从 ROS 的 Geometry_msgs 初始化 Pose?
    在文档中,它说我可以使用“完整的字段值集,按.msg顺序”进行初始化。这是什么意思?我如何用Python和C++实现它?谢谢!使用位置参数初始化ROSGeometry_msgs的Pose是对的,ROSGeometry_msgs的Pose消息类型可以通过“完整的字段值集,按.msg顺序”进行初始......
  • 昇思MindSpore进阶教程-参数初始化
    大家好,我是刘明,明志科技创始人,华为昇思MindSpore布道师。技术上主攻前端开发、鸿蒙开发和AI算法研究。努力为大家带来持续的技术分享,如果你也喜欢我的文章,就点个关注吧使用内置参数初始化MindSpore提供了多种网络参数初始化的方式,并在部分算子中封装了参数初始化的功......
  • “RAII资源获取就是初始化”的好处
    RAII指的是“资源获取就是初始化”(ResourceAllocationIsInitialization),它被视作C++中最强大的编程范式之一。简单说来,它指的是,用构造函数来获取一个对象的资源,相应的,借助析构函数来释放对象的资源。为了理解这一范式的用处,让我们考虑某个函数使用文件句柄时的情况:voiddoSo......
  • SpringBoot 初始化资源
    1、使用接口ApplicationRunner和CommandLineRunner这两个接口都是在容器运行后执行的,如下图示 如果项目需要在系统启动时,初始化资源,可以继承这两个接口,实现诸如缓存预热、DB连接等。实现ApplicationRunner接口@ComponentpublicclassMyApplicationRunnerimplementsApp......
  • C++类成员变量初始化顺序
    C++类成员变量初始化顺序类成员初始化顺序与其在类中声明顺序一致。比如classDemo{public: Demo(intd) :_d1{d},_d2{_d1+10} { } voidshow(){ std::cout<<"d1="<<_d1<<std::endl; std::cout<<"d2="<<_d2<<std:......
  • Spring Boot+MinIO实战:掌握分片上传、秒传与断点续传,让文件管理更高效!
    在现代应用中,随着文件大小的不断增大和网络环境的复杂化,传统的文件上传方式已难以满足用户需求。通过将SpringBoot与MinIO集成,可以轻松实现文件的分片上传、秒传和续传功能,为用户提供更流畅的上传体验。分片上传分片上传是将大文件拆分成多个小块分别上传,避免单次上传大文件带......