【问题标题】:Best way to read a file from Amazon S3 in Java用 Java 从 Amazon S3 读取文件的最佳方法
【发布时间】:2015-02-09 09:47:47
【问题描述】:

我收到了一个 S3 文件的 URL,格式如下:

s3n://XXXXXXXXXXXXXXXXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX@bucket/foo/bar.json

从该位置提取 json 文件的最佳方法是什么?

我想将 URL 视为一个不透明的值,并避免对其进行解析,以便在我无需更改底层代码的情况下更改它。

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

谢谢!

【问题讨论】:

  • 有什么原因你不能使用来自 aws java sdk 的 s3 客户端?
  • s3 客户端无法使用 url 格式,我没有将其解析成碎片,我希望尽可能避免这样做。

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


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

    Amazon S3中,你首先需要对给定的bucket进行身份验证,然后拉取所需对象的InputStream,然后你就可以做你的需要了。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-12
      • 2018-01-09
      • 1970-01-01
      • 1970-01-01
      • 2016-11-07
      • 1970-01-01
      相关资源
      最近更新 更多