在Java中从Amazon S3读取文件的最佳方式

时间:2014-12-11 01:27:22

标签: java json amazon-web-services amazon-s3

我将按以下格式获得S3文件的URL:

S3N:// XXXXXXXXXXXXXXXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXX@bucket/foo/bar.json

从这个位置拉json文件的最佳方法是什么?

我想将URL视为一个不透明的值,并避免解析它,以便它可以更改而不需要更改底层代码。

当我尝试将值传递给java.net.URL时,它会抛出Mal Formed Exception,因为它不识别S3协议。

谢谢!

2 个答案:

答案 0 :(得分:2)

您可以实现支持s3n协议的URLStreamHandler。

URL constructor的Java文档解释了如何发现URLStreamHandle。

在URLStreamHandler中,您需要进行url解析以将其映射到s3客户端的需要。

但是使用它的任何代码都不必依赖于任何与S3相关的元素,并且如果需要URLStreamHandler,则应该与其他存储一起使用。

答案 1 :(得分:0)

Amazon S3中,您首先需要对给定的存储分区进行身份验证,然后提取所需对象的InputStream,然后您就可以满足需要。

要通过Amazon RestWebService拉取对象以获取对象或通过URL访问对象,您需要提供对象的公共访问权限。见here