由于授权,无法访问S3预签名URL
我正在使用Java8和aws-java-sdk1.10.43来获取S3文件的预签名URL。我确实获得了一个链接,但是浏览到该链接会导致此错误:
您提供的授权机制不受支持。请使用AWS4-HMAC-SHA256
要强调的是,我希望生成一个可以通过电子邮件发送并在浏览器中打开的URL,而不是使用Java代码从该URL中读取。
我正在使用下面的代码,并且我相信发现我需要以某种方式将setSSEAlgorithm设置为使用“
v4”,但是我未能使其工作。我想念什么?我应该配置什么(注意:我在避免使用配置文件,我希望代码设置环境变量中的所有属性)
Date expiration = <some date>;GeneratePresignedUrlRequest generatePresignedUrlRequest = new GeneratePresignedUrlRequest(bucketName, targetPath);
generatePresignedUrlRequest.setMethod(HttpMethod.GET);
generatePresignedUrlRequest.setExpiration(expiration);
AmazonS3 s3client = new AmazonS3Client(s3Credentials);
URL s = s3client.generatePresignedUrl(generatePresignedUrlRequest);
铲斗位于eu-central-1
谢谢
回答:
通过一些帮助,我找到了答案,它是2个缺失部分的组合(其中一个在注释中提到):
需要设置以下内容:
System.setProperty(SDKGlobalConfiguration.ENABLE_S3_SIGV4_SYSTEM_PROPERTY, "true");
必须设置“ endPoint”(上传或下载不需要):
s3Client.setEndpoint(endpoint);
(可选)也可以添加以下内容:
s3Client.setS3ClientOptions(new S3ClientOptions().withPathStyleAccess(true));
以上是 由于授权,无法访问S3预签名URL 的全部内容, 来源链接: utcz.com/qa/401238.html