AmazonS3云存储接入及二级域名报错

1.使用

1.1 引入pom.xml

<!--AWS S3上传依赖-->
<dependency>
  <groupId>com.amazonaws</groupId>
  <artifactId>aws-java-sdk-s3</artifactId>
  <version>1.12.490</version>
</dependency>

1.2 使用

创建客户端

AWSCredentials credentials = new BasicAWSCredentials("xxxx", "xxxx");
        ClientConfiguration clientConfig = new ClientConfiguration();
        clientConfig.setProtocol(Protocol.HTTPS);
        AmazonS3 conn = AmazonS3ClientBuilder.standard()
                .withCredentials(new AWSStaticCredentialsProvider(credentials))
                .withClientConfiguration(clientConfig)
            	// 非常重要的参数,被坑惨了
                .withPathStyleAccessEnabled(true)
                .withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration("https://ceph.xxx.com", Regions.CN_NORTHWEST_1.getName()))
                .build();
 

上传下载

String objectName = "hello.txt";
        Date expiration = new Date(System.currentTimeMillis() + 3153600000000l);
        Bucket bucket = conn.createBucket("xxxx");
        ObjectMetadata objectMetadata = new ObjectMetadata();
        objectMetadata.setExpirationTime(expiration);
        // 上传
        ByteArrayInputStream input = new ByteArrayInputStream("Hello World!".getBytes());
        conn.putObject(bucket.getName(), "hello.txt", input, new ObjectMetadata());
        conn.putObject("xxxbuket", objectName, input, new ObjectMetadata());
        //下载
        String url = conn.getUrl("xxxbuket", objectName).toString();
       System.out.println("-------地址---" + url);
 

2.踩坑

2.1 官网客户端代码过期

去官网找代码示例创建clint ,下载下来发现代码已经过期

java代码过期也能使用吧,这个就不计较了

2.1 发现公网域名无法上传下载

怀疑是版本的问题,请求被拒绝

直接找最新版本的代码,使用AmazonS3ClientBuilder创建参数

还是报错,奇怪怎么跑到二级域名,无奈只能断点到里面,看看是什么配置让他跑到二级域名了

com.amazonaws.services.s3.internal.S3RequestEndpointResolver#resolveRequestEndpoint()

后面三个条件,只要正常的域名就是true,知道看到了第一个参数就知道。

如果不配置isPathStyleAccess,就会把buket拼接到二级域名,离谱的默认配置

2.2 解决增加配置

只需要增加这个配置就可以了

.withPathStyleAccessEnabled(true)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值