增加AWS Lambda响应主体有效负载大小

时间:2018-08-03 15:39:27

标签: amazon-web-services aws-lambda

我正在使用AWS API网关调用我的AWS Lambda函数。它们是REST Web服务,可以将响应返回给调用者。一些响应超过20 MB。由于响应数据的性质(数据是表示复杂结构的折线),在此我无法使用分页。 AWS Lambda收到了lambda响应正文的限制,不能超过6MB,并且由于这个限制,我的一些6MB以上的响应都因“ body size is too long”消息失败。我想知道是否有办法增加lambda响应的6MB限制?

1 个答案:

答案 0 :(得分:3)

感谢您的评论,我已经按照评论中提到的相同方式实施了

将响应上载到s3存储桶,并向调用者提供重定向URL。这是有效的示例代码。 您也可以在s3存储桶级别启用CORS,以使其正常运行。

public String uploadToS3(Set<MyClass> myclassSet, String bucketName) throws IOException {
    Region region = Regions.getCurrentRegion();
    if (region == null) {
      region = Region.getRegion(Regions.US_EAST_1);
    }
    AmazonS3 s3Client = AmazonS3ClientBuilder.standard()
                                .withRegion(region.getName())
                                .withCredentials(DefaultAWSCredentialsProviderChain.getInstance())
                                .build();
    ObjectMapper mapper = new ObjectMapper();
    String jsonClass = mapper.writeValueAsString(myclassSet);
    s3Client.putObject(bucketName, "random_key.json", jsonClass);
    GeneratePresignedUrlRequest req = new GeneratePresignedUrlRequest(bucketName, "random_key.json");
    URL url = s3Client.generatePresignedUrl(req);
    String redirectUrl = url.toString();
    return redirectUrl;
  }