如何解决使用 AWS Java SDK 通过 AWS API Gateway 从 S3 下载文本文件
我是 AWS 的初学者。我的目标是通过公共 API 端点访问存储在私有 S3 存储桶中的 csv 文件。
为了实现这一点,我在 AWS 中创建了一个简单的设置。
- 我在特定的 AWS S3 存储桶中有几个 .csv 文件。
- 我在 AWS API 网关上创建了一个 API 资源来访问这个特定的 S3 存储桶。
- 需要下载的文件名通过 URL 路径参数定义:{filename}。
当我从 AWS 控制台或使用 Postman 测试 API 资源时,我得到了预期的响应。具体来说,我返回一个 HTTP 响应,在响应正文中包含文件的原始内容。响应的内容类型是plain/cvs。
我已经为 Java 8 生成了 SDK 源,我正在使用这个 SDK 对 AWS API 网关上的 API 资源进行 REST 调用。但是,该调用不会引发异常,我没有在响应中获取文件。另外,我不知道如何下载文件并将其存储在本地文件系统的文件中。
我已经尝试探索 API Gateway 中的许多选项,但我还没有找到使它起作用的方法。
这是我使用为我的 API 生成的 Java SDK 下载文件的代码:
// I am using the SDK for Java that I generated from the AWS API Gateway console.
import com.example.myapp.aws.sdk.*;
import com.example.myapp.aws.sdk.model.GetDownloadfileRequest;
import com.example.myapp.aws.sdk.model.GetDownloadfileResult;
public void downloadS3File(String filename) {
try {
GetDownloadfileRequest request =
new GetDownloadfileRequest();
request.filename(filename);
GetDownloadfileResult response =
clientSdk.getDownloadfile(request);
//This prints: "Got response: {}"
System.out.println("Got response: " + response);
// This prints: "23561"
response.sdkResponseMetadata().header("Content-Length").ifPresent(System.out::println);
// HOW TO STORE THE RESPONSE IN A FILE IN THE LOCAL disK??
} catch (Exception e) {
System.out.println("Error downloading file.");
e.printstacktrace();
}
}
非常感谢您的帮助!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。