当前位置:   article > 正文

关于amazonaws中S3服务URL失效(Request has expired)问题解决(上)_aws s3 urlrequest.setexpiration(

aws s3 urlrequest.setexpiration(

亚马逊提供的S3服务入手还挺简单的,前一段时间搞得S3,今天同事告知上传到S3的图片URL失效,大概访问URL情况如下:

一通查找,以下链接跟我问题一样,不过其中提到的S3 settings文件找不到,也就不了了之,有知道的大神欢迎告知。

https://stackoverflow.com/questions/15853928/django-compressor-heroku-s3-request-has-expired

以下是我的解决办法:

  1. /**
  2. * @param @param tempFile 目标文件
  3. * @param @param remoteFileName 文件名
  4. * @param @return
  5. * @param @throws IOException 设定文件
  6. * @return String 返回类型
  7. * @throws
  8. * @Title: uploadToS3
  9. * @Description: 将文件上传至S3上并且返回url
  10. */
  11. public static String uploadToS3(File tempFile, String remoteFileName) throws IOException {
  12. try {
  13. //上传文件
  14. s3.putObject(new PutObjectRequest(bucketName, remoteFileName, tempFile).withCannedAcl(CannedAccessControlList.PublicRead));
  15. //设置过期时间 9700小时
  16. java.util.Date expiration = new java.util.Date();
  17. long expTimeMillis = expiration.getTime();
  18. expTimeMillis += 1000L * 60 * 60 * 24 * 7;
  19. expiration.setTime(expTimeMillis);
  20. //获取一个request
  21. GeneratePresignedUrlRequest urlRequest = new GeneratePresignedUrlRequest(
  22. bucketName, remoteFileName).withExpiration(expiration);
  23. //生成公用的url
  24. URL url = s3.generatePresignedUrl(urlRequest);
  25. System.out.println("=========URL=================" + url + "============URL=============");
  26. return url.toString();
  27. } catch (AmazonServiceException ase) {
  28. ase.printStackTrace();
  29. } catch (AmazonClientException ace) {
  30. ace.printStackTrace();
  31. }
  32. return null;
  33. }

S3服务上传文件默认返回url过期时间为15分钟,通过设置过期时间,可以延迟到7天。

如果想url有效保存7天以上,请看下篇关于amazonaws中S3服务URL失效(Requests that are pre-signed by SigV4 algorithm are valid for at most )问题解决(下)

参考链接:

使用AWS SDK for Java生成预先签名的对象URL

 

转载请注明出处,谢谢

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/707127
推荐阅读
相关标签
  

闽ICP备14008679号