当前位置: 首页 > news >正文

MinIO社区版文件预览失效?一招解决

一觉醒来天塌了

最新版本minio已经升级为社区版本,无法分享长期有效的预览文件url了~~~~

minio 社区版本

以下是针对 MinIO 最新版本中桶策略配置问题的解决方案,采用编程方式实现公开访问权限:

创建桶的时候 AWS SDK 配置桶策略

@Configuration
public class AmazonS3Config {@Resourceprivate MinioProperties minioProperties;@Beanpublic AmazonS3 amazonS3Client() {ClientConfiguration config = new ClientConfiguration();config.setProtocol(Protocol.HTTP);config.setConnectionTimeout(5000);config.setUseExpectContinue(true);AWSCredentials credentials = new BasicAWSCredentials(minioProperties.getAccessKey(), minioProperties.getAccessSecret());AwsClientBuilder.EndpointConfiguration endpoint = new AwsClientBuilder.EndpointConfiguration(minioProperties.getEndpoint(), Regions.US_EAST_1.name());AmazonS3 amazonS3 = AmazonS3ClientBuilder.standard().withClientConfiguration(config).withCredentials(new AWSStaticCredentialsProvider(credentials)).withEndpointConfiguration(endpoint).withPathStyleAccessEnabled(true).build();setupPublicBucket(amazonS3);return amazonS3;}private void setupPublicBucket(AmazonS3 client) {String bucketName = minioProperties.getBucket();if (!client.doesBucketExistV2(bucketName)) {CreateBucketRequest request = new CreateBucketRequest(bucketName);request.withCannedAcl(CannedAccessControlList.PublicRead);client.createBucket(request);String policy = generateBucketPolicy(bucketName);client.setBucketPolicy(bucketName, policy);}}private String generateBucketPolicy(String bucketName) {return String.format("""{"Version":"2012-10-17","Statement":[{"Sid":"PublicRead","Effect":"Allow","Principal":"*","Action":["s3:GetObject"],"Resource":"arn:aws:s3:::%s/*"}]}""", bucketName);}
}

属性配置类

@Data
@Component
@ConfigurationProperties(prefix = "minio")
public class MinioProperties {private String endpoint;private String accessKey;private String accessSecret;private String bucket;private String outEndpoint;
}

配置要点说明

确保application.ymlapplication.properties包含以下配置:

minio:endpoint: http://your-minio-server:9000access-key: YOUR_ACCESS_KEYaccess-secret: YOUR_SECRET_KEYbucket: your-bucket-nameout-endpoint: http://public-access-url:9000

注意事项

  • 策略中的Resource字段必须包含桶名称和通配符(arn:aws:s3:::bucket-name/*
  • 使用withPathStyleAccessEnabled(true)确保兼容MinIO的路径式访问
  • 新版本MinIO推荐使用编程方式配置策略,而非手动修改
  • 如果已存在桶,需要先删除旧策略再设置新策略

测试验证方法

上传文件后尝试通过以下URL格式直接访问:

http://your-minio-server:9000/bucket-name/object-key

或使用配置的outEndpoint作为公开访问地址。

http://www.lqws.cn/news/465715.html

相关文章:

  • 【Fargo】mediasoup发送2:码率分配、传输基类设计及WebRtcTransport原理
  • React 组件通信
  • C++ 移动构造:提升性能的利器
  • docker执行yum报错Could not resolve host: mirrorlist.centos.org
  • Snapchat矩阵运营新策略:亚矩阵云手机打造高效社交网络
  • C++:动态链接库的编写,__declspec 用法详解
  • 7.3.2_2平衡二叉树的删除
  • 【RTP】基于mediasoup的RtpPacket的H.264打包、解包和demo 1:不含扩展
  • windows下docker虚拟文件大C盘迁移D盘
  • GPT-1 与 BERT 架构
  • TodoList 案例(Vue3): 使用Composition API
  • 基于CNN-LSTM融合模型的环卫车动态称重算法研究:从频率感知到精准质量估计
  • 深入浅出JavaScript 中的代理模式:用 Proxy 掌控对象的“行为开关”
  • Python 爬虫案例(不定期更新)
  • Occt几何内核快速入门
  • Duende Identity Server学习之一:认证服务器及一个Oidc/OAuth认证、用于Machine 2 Machine的客户端
  • 在Docker、KVM、K8S常见主要命令以及在Centos7.9中部署的关键步骤学习备存
  • stm32移植freemodbus
  • C++ - vector 的使用
  • 【转】如何画好架构图:架构思维的三大底层逻辑
  • 使用 R 处理图像
  • SQL Server基础语句2:表连接与集合操作、子查询与CET、高级查询
  • 计算机网络第九章——数据链路层《流量控制和可靠传输》
  • 为WIN10微软输入法的全角切换Bug禁用Shift+Space组合键
  • 在 MyBatis 的xml中,什么时候大于号和小于号可以不用转义
  • Nginx+Tomcat负载均衡、动静分离
  • keep-alive实现原理及Vue2/Vue3对比分析
  • 1.20.1 服务器系统(windows,Rocky 和 Ubuntu )体验
  • 语法糖:编程中的甜蜜简化 (附 Vue 3 Javascript 实战示例)
  • 服务发现与动态负载均衡的结合