如何使用提供的网址从s3下载文件?

在我的应用程序中,我将获得s3文件的网址,例如:https://s3.amazonaws.com/account-update/input.csv 我必须下载它然后处理它。我已经做了什么:

AmazonS3 s3 = new AmazonS3Client(credentials);
S3Object s3object = s3.getObject(new GetObjectRequest(
bucketName, key));

我可以通过提供存储桶名称和密钥来下载文件,但是如何仅使用 url(https://s3.amazonaws.com/account-update/input.csv) 下载文件?


答案 1

您可以通过标准的 curl/wget 下载文件,就像从 Internet 上下载任何其他文件一样。

但是,重要的部分是启用从 Amazon S3 访问对象。几个选项:

  • 使对象可公开读取:这可以通过控制台或 CLI/API 完成。但是,拥有该URL的任何人都可以下载它。
  • 创建一个 Amazon S3 存储桶策略,该策略授予对所需文件/目录/存储桶的读取访问权限。但是,同样,具有URL的任何人都可以访问这些对象。
  • 保持对象私有,但使用预签名 URL,该 URL 将参数添加到 URL 以证明允许您下载该对象。此预签名 URL 有时间限制,可以使用当前 AWS 凭证通过几行代码生成。

答案 2

您可以考虑使用 AWS 开发工具包类 AmazonS3URI,如下所示:

URI fileToBeDownloaded = new URI(" https://s3.amazonaws.com/account-update/input.csv"); 

AmazonS3URI s3URI = new AmazonS3URI(fileToBeDownloaded);

S3Object s3Object = s3Client.getObject(s3URI.getBucket(), s3URI.getKey());

从现在开始,您应该能够使用以与代码中显示的 s3Object 类似的方式获得的 s3Object。

有关使用此类的更多与 Java 相关的 AWS 开发工具包示例,请查看此处


推荐