You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Lambda异步调用遇RequestEntityTooLargeException问题求助

解决Lambda异步调用大Payload的问题

为什么InvocationType: 'Event'有Payload大小限制?

这是因为Lambda异步调用和同步调用的底层处理逻辑完全不同:

  • 用InvocationType: 'RequestResponse'(默认同步调用)时,请求是通过直接的API通道传递,Payload上限可达6MB,所以你的179KB数据能正常传输。
  • 而InvocationType: 'Event'(异步调用)时,Lambda会把请求放到内部SQS队列实现异步调度,这个内部队列的单条消息大小限制就是128KB——这就是你触发RequestEntityTooLargeException的原因。至于已弃用的invokeAsync,它本质是早期的异步调用实现,底层依赖的还是同一个内部队列,所以会遇到同样的限制。

如何在不等待第二个Lambda完成的情况下传递大Payload?

最稳妥的方案是借助中间存储服务中转大数据,这里推荐用S3,具体步骤如下:

  1. 第一个Lambda:将大对象上传到S3
    先把myBigObject序列化(比如转成JSON字符串),上传到指定S3桶,再把S3的对象位置信息作为小Payload传给第二个Lambda:
const AWS = require('aws-sdk');
const s3 = new AWS.S3();
const lambda = new AWS.Lambda();

// 序列化大对象并上传到S3
const serializedPayload = JSON.stringify(myBigObject);
const s3Params = {
  Bucket: 'your-s3-bucket-name',
  Key: `lambda-payloads/${Date.now()}-payload.json`, // 用唯一键避免覆盖
  Body: serializedPayload
};

s3.putObject(s3Params, (err, data) => {
  if (err) {
    callback(err);
    return;
  }
  // 用Event类型调用第二个Lambda,仅传递S3位置信息
  lambda.invoke({
    FunctionName: 'MyOtherLambda',
    InvocationType: 'Event',
    Payload: JSON.stringify({
      s3Bucket: s3Params.Bucket,
      s3Key: s3Params.Key
    })
  }, callback);
});
  1. 第二个Lambda:从S3读取并处理数据
    在第二个Lambda中,接收S3位置参数,下载并反序列化数据后再处理业务逻辑:
const AWS = require('aws-sdk');
const s3 = new AWS.S3();

exports.handler = async (event) => {
  const { s3Bucket, s3Key } = event;
  // 从S3获取大对象
  const s3Params = {
    Bucket: s3Bucket,
    Key: s3Key
  };
  const s3Response = await s3.getObject(s3Params).promise();
  const myBigObject = JSON.parse(s3Response.Body.toString());

  // 这里编写你的业务处理逻辑
  console.log('Received big object:', myBigObject);
};

备选方案:用SQS队列中转

如果你的Payload大小接近但不超过256KB,也可以用SQS标准队列中转:

  • 第一个Lambda把大消息发送到SQS队列(无需等待执行结果)
  • 给第二个Lambda配置SQS队列作为触发器,队列有消息时会自动触发Lambda执行
    这种方式也是完全异步的,但如果未来Payload继续增大,还是S3方案更灵活通用。

内容的提问来源于stack exchange,提问作者EtienneG

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:14:20