我将按以下格式获得S3文件的URL:
S3N:// XXXXXXXXXXXXXXXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXX@bucket/foo/bar.json
从这个位置拉json文件的最佳方法是什么?
我想将URL视为一个不透明的值,并避免解析它,以便它可以更改而不需要更改底层代码。
当我尝试将值传递给java.net.URL时,它会抛出Mal Formed Exception,因为它不识别S3协议。
谢谢!
答案 0 :(得分:2)
您可以实现支持s3n协议的URLStreamHandler。
URL constructor的Java文档解释了如何发现URLStreamHandle。
在URLStreamHandler中,您需要进行url解析以将其映射到s3客户端的需要。
但是使用它的任何代码都不必依赖于任何与S3相关的元素,并且如果需要URLStreamHandler,则应该与其他存储一起使用。
答案 1 :(得分:0)
在Amazon S3
中,您首先需要对给定的存储分区进行身份验证,然后提取所需对象的InputStream
,然后您就可以满足需要。
要通过Amazon RestWebService拉取对象以获取对象或通过URL访问对象,您需要提供对象的公共访问权限。见here