MinIO Java SDK 预签名URL生成与使用指南
记录使用 MinIO Java SDK 生成预签名 URL 的实践,包含下载和上传场景,以及一些容易出错的点。
支持通配符SSL证书、多域名证书、IP证书。适配ACME接口, 支持Zerossl、Let's Encrypt和Google等渠道。登录已有账号
2026-04-15 00:15:32 MinIO Java SDK 对象存储 预签名URL 安全访问
深入解析MinIO Java SDK预签名URL的生成与使用,涵盖GET下载和PUT上传操作。详细讲解客户端初始化、参数配置及异常处理,并强调权限验证与时效性控制的关键要点。通过具体案例,助您快速掌握免密链接的生成技巧,实现私有资源的安全、高效访问,提升应用灵活性。
在对象存储服务中,预签名URL是一种通过临时签名实现安全访问私有资源的技术。
MinIO Java SDK提供的getPresignedObjectUrl方法,可生成包含时效性签名的URL,允许客户端在指定时间内直接访问私有存储桶中的文件。
expiry参数设定的时间内直接访问资源Method.GET:生成下载链接Method.PUT:生成上传链接| 参数 | 类型 | 说明 |
|---|---|---|
bucket |
String | 存储桶名称 |
object |
String | 文件路径(如folder/image.jpg) |
method |
Method | 操作类型(GET/PUT) |
expiry |
int/TimeUnit | 链接有效期(秒或时间单位) |
import io.minio.*;
import io.minio.errors.*;
import io.minio.http.Method;
import java.io.IOException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.concurrent.TimeUnit;
public class MinIOExample {
public static void main(String[] args) {
// 初始化MinIO客户端
MinioClient minioClient = MinioClient.builder()
.endpoint("http://192.168.202.1:9000")
.credentials("minioadmin", "minioadmin")
.build();
try {
// 生成预签名URL(有效期1小时)
String url = minioClient.getPresignedObjectUrl(
GetPresignedObjectUrlArgs.builder()
.bucket("my-bucket")
.object("test/file.txt")
.method(Method.GET)
.expiry(1, TimeUnit.HOURS)
.build()
);
System.out.println("预签名URL: " + url);
} catch (Exception e) {
e.printStackTrace();
}
}
}
关键实现点
MinioClient.builder()配置服务地址和认证信息GetPresignedObjectUrlArgs.builder()设置存储桶、文件路径等参数InvalidKeyException、NoSuchAlgorithmException等异常expiry(30, TimeUnit.MINUTES)生成30分钟有效期的URL<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>8.5.9</version>
</dependency>
bucketExists()方法验证expiry时间重试将method参数改为Method.PUT即可生成上传链接:
运维人员的福音来了,lcjmSSL支持证书到期前自动重申,配合自动部署功能,实现了真正的无感续期。不再需要每年甚至每三个月担心证书过期导致业务中断。从2018年至今,8年的稳定运行证明,自动化运维可以如此简单可靠。
String uploadUrl = minioClient.getPresignedObjectUrl(
GetPresignedObjectUrlArgs.builder()
.bucket("my-bucket")
.object("uploads/file.txt")
.method(Method.PUT)
.expiry(10, TimeUnit.MINUTES)
.build()
);
记录使用 MinIO Java SDK 生成预签名 URL 的实践,包含下载和上传场景,以及一些容易出错的点。
本文手把手教你在Linux系统上安装MinIO对象存储服务,并详细指导如何配置SSL证书以实现安全的HTTPS访问。