上一篇文章介绍了minio之对象存储的访问链路
minio之对象存储常用访问链路介绍_神云瑟瑟的博客-CSDN博客
本篇主要主要介绍标准链路中的临时凭证的生成和使用,以及分享链接的生成
主要的pom文件
junit
junit
4.12
test
org.springframework
spring-test
test
5.1.7.RELEASE
io.minio
minio
8.3.4
com.squareup.okhttp3
okhttp
4.9.3
com.alibaba
fastjson
1.2.70
二、临时凭证的生成,并使用
@Test
public void assumeRoleProviderUpload() {
String policy = "{n" +
" "Version": "2012-10-17",n" +
" "Statement": [n" +
" {n" +
" "Effect": "Allow",n" +
" "Principal": {n" +
" "AWS": [n" +
" "*"n" +
" ]n" +
" },n" +
" "Action": [n" +
" "s3:GetBucketLocation",n" +
" "s3:ListBucketMultipartUploads"n" +
" ],n" +
" "Resource": [n" +
" "arn:aws:s3:::bucket-demo"n" +
" ]n" +
" },n" +
" {n" +
" "Effect": "Allow",n" +
" "Principal": {n" +
" "AWS": [n" +
" "*"n" +
" ]n" +
" },n" +
" "Action": [n" +
" "s3:AbortMultipartUpload",n" +
" "s3:DeleteObject",n" +
" "s3:ListMultipartUploadParts",n" +
" "s3:PutObject"n" +
" ],n" +
" "Resource": [n" +
" "arn:aws:s3:::bucket-demo/test
@Test
public void share() {
try {
MinioClient minioClient = MinioClient.builder().endpoint(endpoint).credentials(accessKey, secretKey).build();
//默认过期时间为7天的秒数,可以自己自定义传入
String sharedUrl = minioClient.getPresignedObjectUrl(
GetPresignedObjectUrlArgs.builder()
.bucket(bucket)
.expiry(7 * 24 * 60 * 60)
.object("test/pic1.jpg")
.method(Method.GET)
.build()
);
//生成的分享url
System.out.println(sharedUrl);
//http://192.168.175.117:9000/bucket-demo/test/pic1.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=user_readwrite%2F20220712%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20220712T021558Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=2aea03fe33b64796b5ac15883d605874d8bceafd217064b54bfc773f1437cdbb
} catch (ErrorResponseException e) {
e.printStackTrace();
} catch (InsufficientDataException e) {
e.printStackTrace();
} catch (InternalException e) {
e.printStackTrace();
} catch (InvalidKeyException e) {
e.printStackTrace();
} catch (InvalidResponseException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (XmlParserException e) {
e.printStackTrace();
} catch (ServerException e) {
e.printStackTrace();
}
}
生成对象的分享url,默认分享时间为7天,可以自定义传入有效期,时间是以秒为单位。
四、完整的java代码package test.minio;
import io.minio.GetPresignedObjectUrlArgs;
import io.minio.MinioClient;
import io.minio.PutObjectArgs;
import io.minio.credentials.AssumeRoleProvider;
import io.minio.credentials.Credentials;
import io.minio.credentials.StaticProvider;
import io.minio.errors.*;
import io.minio.http.Method;
import org.junit.Test;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
public class MinioSafeOpTest {
private String endpoint = "http://192.168.75.117:9000";
private String accessKey = "user_readwrite";
private String secretKey = "user_readwrite_key";
private String bucket = "bucket-demo";
@Test
public void assumeRoleProviderUpload() {
String policy = "{n" +
" "Version": "2012-10-17",n" +
" "Statement": [n" +
" {n" +
" "Effect": "Allow",n" +
" "Principal": {n" +
" "AWS": [n" +
" "*"n" +
" ]n" +
" },n" +
" "Action": [n" +
" "s3:GetBucketLocation",n" +
" "s3:ListBucketMultipartUploads"n" +
" ],n" +
" "Resource": [n" +
" "arn:aws:s3:::bucket-demo"n" +
" ]n" +
" },n" +
" {n" +
" "Effect": "Allow",n" +
" "Principal": {n" +
" "AWS": [n" +
" "*"n" +
" ]n" +
" },n" +
" "Action": [n" +
" "s3:AbortMultipartUpload",n" +
" "s3:DeleteObject",n" +
" "s3:ListMultipartUploadParts",n" +
" "s3:PutObject"n" +
" ],n" +
" "Resource": [n" +
" "arn:aws:s3:::bucket-demo/test
@Test
public void share() {
try {
MinioClient minioClient = MinioClient.builder().endpoint(endpoint).credentials(accessKey, secretKey).build();
//默认过期时间为7天的秒数,可以自己自定义传入
String sharedUrl = minioClient.getPresignedObjectUrl(
GetPresignedObjectUrlArgs.builder()
.bucket(bucket)
.expiry(7 * 24 * 60 * 60)
.object("test/pic1.jpg")
.method(Method.GET)
.build()
);
//生成的分享url
System.out.println(sharedUrl);
//http://192.168.75.117:9000/bucket-demo/test/pic1.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=user_readwrite%2F20220712%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20220712T021558Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=2aea03fe33b64796b5ac15883d605874d8bceafd217064b54bfc773f1437cdbb
} catch (ErrorResponseException e) {
e.printStackTrace();
} catch (InsufficientDataException e) {
e.printStackTrace();
} catch (InternalException e) {
e.printStackTrace();
} catch (InvalidKeyException e) {
e.printStackTrace();
} catch (InvalidResponseException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (XmlParserException e) {
e.printStackTrace();
} catch (ServerException e) {
e.printStackTrace();
}
}
}



