欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 金融 > MinIO社区版文件预览失效?一招解决

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

2025/6/22 21:44:16 来源:https://blog.csdn.net/qq_32419139/article/details/148781865  浏览:    关键词: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作为公开访问地址。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词