Lambda 函数的响应流 - AWS Lambda

Lambda 函数的响应流

Lambda 函数可以通过 Lambda 函数 URL 或使用 InvokeWithResponseStream API(通过 AWS SDK 或直接调用 API),将响应有效载荷流式传输回客户端。响应流式处理可通过提高首字节时间(TTFB)性能,使延迟敏感型应用程序受益。这是因为您可以在部分响应可用时将其发送回客户端。此外,响应流式传输函数最多可以返回 200MB 的有效载荷,而缓冲响应的最大有效载荷为 6 MB。流式处理响应还意味着您的函数不需要在内存中容纳整个响应。对于非常大的响应,这样可以减少您需要为函数配置的内存量。

Lambda 流式处理您的响应的速度取决于响应大小。函数响应的前 6MB 的流式处理速率无上限。对于大于 6MB 的响应,响应的其余部分受带宽上限的限制。有关流式处理带宽的详细信息,请参阅响应流式处理的带宽限制

流式处理响应会产生费用。有关更多信息,请参阅 AWS Lambda 定价

Lambda 在 Node.js 托管式运行时系统上支持响应流式处理。对于其他语言,您也可以使用带有自定义运行时系统 API 集成的自定义运行时系统来流式处理响应或使用 Lambda Web Adapter

注意

通过 Lambda 控制台测试函数时,将始终显示缓冲响应。

响应流式处理的带宽限制

函数响应有效载荷的前 6MB 的带宽无上限。在此初始突增之后,Lambda 会以最大 2MBps 的速率流式处理您的响应。如果您的函数响应从未超出 6MB,则此带宽限制永远不适用。

注意

带宽限制仅适用于您的函数的响应负载,不适用于您的函数的网络访问。

无上限带宽的速率因多种因素而异,其中包括函数的处理速度。通常,函数响应的前 6MB 的速率高于 2MBps。如果您的函数将响应流式处理到 AWS 以外的目标,则流式处理速率还取决于外部互联网连接的速度。

VPC 与响应流的兼容性

在 VPC 环境中使用 Lambda 函数时,响应流有一些重要注意事项:

  • Lambda 函数 URL 不支持 VPC 环境内的响应流。

  • 您可以使用 InvokeWithResponseStream API 通过 AWS SDK 调用 Lambda 函数来在 VPC 中使用响应流。这需要为 Lambda 设置适当的 VPC 端点。

  • 对于 VPC 环境,您需要为 Lambda 创建一个接口 VPC 端点,以实现 VPC 中的资源与 Lambda 服务之间的通信。

VPC 中响应流的典型架构可能包括:

Client in VPC -> Interface VPC endpoint for Lambda -> Lambda function -> Response streaming back through the same path