amazon-web-services - 使用其预签名 URL 从 AWS s3 读取文件的内容

标签 amazon-web-services amazon-s3 aws-java-sdk

我正在尝试使用 AWS Java Sdk 从 s3 存储桶读取和打印文件的内容。我有一个预先签名的 URL,可以让我访问(和下载)该文件。但是,我无法使用预签名 URL 读取文件。

我正在寻找类似于下面的代码片段的东西 -

public void readFromS3(String bucketName, String key) throws IOException {
S3Object s3object = s3.getObject(new GetObjectRequest(bucketName, key));
System.out.println(s3object.getObjectMetadata().getContentType());
System.out.println(s3object.getObjectMetadata().getContentLength());

BufferedReader reader = new BufferedReader(new InputStreamReader(s3object.getObjectContent()));

String line;

while((line = reader.readLine()) != null) {
// can copy the content locally as well
// using a buffered writer

System.out.println(line);
}
}

我可以访问的 URL,让我下载文件。

我还查看了以下引用资料,但没有成功 -

http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/AmazonS3Client.html

http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/s3/model/GetObjectRequest.html

有人可以帮忙吗?

提前致谢!

最佳答案

使用 URLConnection 可能是最简单的方法,正如其他人指出的那样,此时它只是一个常规的 HTTP URL。

BufferedReader reader = new BufferedReader(new InputStreamReader(URI.create(presignedUrl).toURL().openConnection().getInputStream())

关于amazon-web-services - 使用其预签名 URL 从 AWS s3 读取文件的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44003275/

相关文章:

amazon-web-services - 什么时候应该删除 SQS 中的消息?

amazon-web-services - AWS Cognito - 凭证问题

aws-java-sdk - 如何从 aws-marketplace 调用 ResolveCustomer 和 GetEntitlements?

amazon-web-services - 通过 HTTPS 提供静态 S3 网站时降低 CloudFront 成本

amazon-web-services - 使用/CloudFront 和 SSL 将裸域重定向到 AWS S3 网站的 www 子域

exception - 尝试使用 java 将文件上传到 Amazon S3 时,jackson 出现 NoSuchMethodError。

php - 我应该在 nginx.conf 中还是使用 Laravel config/cors.php 添加我的 CORS header ?

使用 RapidSSL 证书时 Node.js HTTPS 服务器没有响应

amazon-web-services - Amazon CloudFront 延迟

amazon-web-services - AWS CodeDeploy 服务上的“没有主机成功”错误