Lambda 函數的回應串流 - AWS Lambda

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

Lambda 函數的回應串流

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

注意

Lambda 回應串流尚未全面提供 AWS 區域。請參閱依AWS 區域劃分的 Builder Center 功能,以取得依區域劃分的功能可用性。

Lambda 串流回應的速度取決於回應的大小。函式回應的串流速度在前 6 MB 不受限制。若回應大於 6 MB,則其餘的回應會受到頻寬上限的限制。如需串流頻寬的詳細資訊,請參閱回應串流的頻寬限制

串流回應會產生成本,而且當叫用用戶端連線中斷時,不會中斷或停止串流回應。客戶需支付完整函數持續時間的費用,因此客戶在設定長函數逾時時應小心。

Lambda 支援 Node.js 受管執行期的回應串流。對於其他語言,包括 Python,您可以使用自訂執行期搭配自訂執行期 API 整合來串流回應或使用 Lambda Web Adapter

注意

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

回應串流的頻寬限制

函式回應承載的前 6 MB 不受頻寬限制。在最初的高頻寬流量後,Lambda 會以最高 2 MBps 的速率串流您的回應。如果函式回應一直都沒超過 6 MB,則永遠不會適用此頻寬限制。

注意

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

無頻寬上限的速率取決於諸多因素 (包括函數的處理速度)。一般來說,您可以預期函式回應前 6 MB 的速率會高於 2 Mbps。如果您的函數正在將回應串流到 以外的目的地 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