Lambda 函數的回應串流 - AWS Lambda

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Lambda 函數的回應串流

Lambda 函數可以透過 Lambda 函數 URLs 或使用 InvokeWithResponseStream API (透過 AWS SDK 或直接 API 呼叫) 將回應承載串流回用戶端。透過提高第一個位元組時間 (TTFB) 效能,回應串流有益於延遲敏感應用程式。這是因為您可以在部分回應可用時將其傳回給用戶端。此外,相較於緩衝回應的 6 MB 上限,回應串流函數最多可傳回 200 MB 的承載。串流回應也意味著您的函數不需要將整個回應放在記憶體裡。若是非常大的回應,這有助於減少您需要為函數設定的記憶體容量。

Lambda 串流回應的速度取決於回應的大小。函數回應前 6 MB 的串流速率不受限。對於大於 6 MB 的回應,其餘的回應都會有頻寬上限。如需串流頻寬的詳細資訊,請參閱回應串流的頻寬限制

串流回應會產生成本。如需詳細資訊,請參閱AWS Lambda 定價

Lambda 支援 Node.js 受管執行期的回應串流。若為其他語言,您可以使用具有自訂執行期 API 整合的自訂執行期來串流回應,或使用 Lambda Web Adapter

注意

透過 Lambda 主控台測試函數時,您一律會看到緩衝的回應。

回應串流的頻寬限制

函數回應承載的前 6 MB 具有無限制的頻寬。在此初始爆量之後,Lambda 會以 2 MBps 的最大速率串流您的回應。如果您的函數回應永遠不會超過 6 MB,則永遠不會套用此頻寬限制。

注意

頻寬限制僅適用於函數的回應有效負載,不適用於函數的網路存取。

無頻寬上限的速率取決於諸多因素 (包括函數的處理速度)。對於函數回應的前 6 MB,您通常會預期高於 2 MBps 的速率。如果您的函數正在串流回應到 以外的目的地 AWS,則串流速率也取決於外部網際網路連線的速度。

VPC 與回應串流的相容性

在 VPC 環境中使用 Lambda 函數時,回應串流有重要的考量:

  • Lambda URLs 不支援 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