amazon web services使用AWS Java SDK通过AWS API网关从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网关中探索了许多选项,但还没有找到一种方法使其工作
这是我使用生成的SDK for Java for my API下载文件时使用的代码:
// 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();
}
}
非常感谢你的帮助
共 (0) 个答案