Amazon web services 使用预先签名的URL从AWS s3读取文件内容

Amazon web services 使用预先签名的URL从AWS s3读取文件内容,amazon-web-services,amazon-s3,aws-java-sdk,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));

我正在尝试使用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允许我下载文件

我亦看过以下的参考资料,但没有成功—

有人能帮忙吗


提前谢谢

如果您有一个预签名的URL,则不需要使用AWS sdk来访问S3对象


正如@EricNord所评论的,url本身提供了S3的身份验证以允许访问。URL将在查询参数中附加一个令牌,从而启用身份验证


一个基本的HTTP客户端将能够读取URL的内容。

使用URLConnection可能是最简单的方法,正如其他人所指出的,这只是一个常规的HTTP URL

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

“无法阅读”是非常模糊的问题陈述。你有例外吗?如果有,请添加异常堆栈。我为含糊不清的声明道歉。但是,我不知道如何使用预先签名的Url来读取文件。GetObjectRequest构造函数都不能使用URL。我的选择是什么?我不想下载这个文件。有没有办法从预先签名的Url中获取bucketName和密钥,并使用它们来读取文件?Url本身通过s3提供身份验证以允许访问