有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案