-
【OSS】使用java-sdk上传文件失败,报错InvalidBucketName,BucketName是文件名
-
背景: aliyun-sdk-oss V2.8.3
-
排查过程:
- 使用java sdk报错 invalid bucketname,查看bucketname字段被设置为了文件名 问题原因 当前java-sdk版本是v2.8.3,需要更新版本。
- 初始化client时关闭cname conf.setSupportCname(false); 升级jar包
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.0.0</version>
</dependency>
代码调整
//OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
ClientBuilderConfiguration conf = new ClientBuilderConfiguration();
conf.setSupportCname(false);
OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret,conf);
- 设置并重试后,报错变为:权限拒绝,受限于acl
- 确认bucket acl为私有,只有部门ak有读写权限
- 确认使用的ram用户,需要做ram授权
- 提供ram策略常用示例作为参考,目前已经可以正常读写oss