栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

minio之临时凭证及分享链接的生成和使用(代码篇)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

minio之临时凭证及分享链接的生成和使用(代码篇)

一、前言

上一篇文章介绍了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();
        }
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1014767.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号