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

3
我被赋予了以下格式的S3文件URL链接:
s3n://XXXXXXXXXXXXXXXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXX@bucket/foo/bar.json
从这个位置获取json文件的最佳方法是什么?
我想把这个URL视为不透明值,并避免解析它,以便它可以在我不需要更改底层代码的情况下更改。
当我试图将该值传递给java.net.URL时,它会引发Mal Formed异常,因为它无法识别S3协议。
谢谢!

你有什么原因不能使用AWS Java SDK中的S3客户端? - Nigel Savage
S3客户端无法使用我提供的URL格式,而不进行解析成片段,如果可能的话,我想避免这样做。 - NSA
2个回答

2
您可以实现一个支持s3n协议的URLStreamHandler。
Java文档中URL构造函数解释了如何发现URLStreamHandle。
在URLStreamHandler中,您需要进行url解析以将其映射到s3客户端的需求。
但是,使用它的任何代码都不必依赖于任何与S3相关的元素,并且应该在需要URLStreamHandler时与其他存储一起工作。

0
Amazon S3 中,您首先需要对给定的存储桶进行身份验证,然后获取所需对象的 InputStream,然后才能执行您的操作。
要通过 Amazon RestWebService 拉取对象或通过 URL 访问对象,您需要为其提供公共访问权限。请参见 此处

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接