当前位置:  开发笔记 > 编程语言 > 正文

由于授权,无法访问S3预签名URL

如何解决《由于授权,无法访问S3预签名URL》经验,为你挑选了1个好方法。

使用Java8和aws-java-sdk 1.10.43我正在尝试获取一个S3文件的预签名URL.我确实找回了一个链接,但浏览它会导致此错误:

您提供的授权机制不受支持.请使用AWS4-HMAC-SHA256

为了强调,我希望生成一个可以通过电子邮件发送并在浏览器中打开的URL,而不是使用Java代码从该URL读取.

我正在使用波纹管代码,我相信我发现我需要以某种方式设置setSSEAlgorithm来使用"v4",但是我没能使它工作.我错过了什么?我应该配置什么(注意:我故意避免配置文件,我希望代码从环境变量设置所有属性)

Date expiration = ;
GeneratePresignedUrlRequest generatePresignedUrlRequest = new GeneratePresignedUrlRequest(bucketName, targetPath);
generatePresignedUrlRequest.setMethod(HttpMethod.GET);
generatePresignedUrlRequest.setExpiration(expiration);

AmazonS3 s3client = new AmazonS3Client(s3Credentials);
URL s = s3client.generatePresignedUrl(generatePresignedUrlRequest);

铲斗位于欧洲中心1号

谢谢



1> user2339344..:

使用一些帮助我找到了答案,这是两个缺失的部分的组合(其中一个在评论中提到):

    需要设置这个:

    System.setProperty(SDKGlobalConfiguration.ENABLE_S3_SIGV4_SYSTEM_PROPERTY, "true");
    

    必须设置"endPoint"(上传或下载不需要):

    s3Client.setEndpoint(endpoint);
    

(可选)添加以下内容可能很有用:

s3Client.setS3ClientOptions(new S3ClientOptions().withPathStyleAccess(true));

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有