View a markdown version of this page

AWS Lambda Web 函數 - AWS Lambda

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

AWS Lambda Web 函數

透過 AWS Lambda Web Functions,您可以將 Web 應用程式和 API 後端作為無伺服器 HTTP 伺服器執行。您的程式碼會接聽網路連接埠,並直接處理請求。您可以使用熟悉的 Node.js Web 架構Express,例如 Hono、 或 React Router ,無需 Lambda 特定的轉接器或包裝函式。您可以像任何其他 Node.js Web 應用程式一樣,在本機開發和執行伺服器。

您可以將程式碼部署為 .zip 檔案。Lambda 會建立 HTTPS 端點、管理執行環境,並使用流量擴展您的應用程式,包括閒置時的零。若要降低全域分散式使用者的延遲,您可以在單一端點 AWS 區域 後方跨多個 進行部署。Lambda 使用以延遲為基礎的路由,將每個請求傳送至其中一個區域。您支付請求、作用中 CPU 時間、每個執行環境生命週期內耗用的記憶體,以及資料傳輸的費用。

何時使用 Web 函數

將 Web 函數用於直接接收和回應 HTTP 流量的工作負載。常用案例包括:

  • Web 應用程式 – 從單一部署部署提供 HTML、資產和 API 路由的完整堆疊或前端應用程式。

  • REST 和 GraphQL APIs – 建置可處理高請求磁碟區的 API 後端。

  • Microservices – 執行隨流量獨立擴展的 HTTP 服務,包括閒置時歸零。

  • 伺服器端轉譯 (SSR) – 提供請求時在伺服器上轉譯的頁面,而不是預先建置的頁面。Web 函數會直接執行架構的生產伺服器。它在沒有個別託管層的情況下處理 SSR 請求、串流和 API 路由。它也會隨流量而擴展。這適用於在每個請求上呈現個人化或經常變更內容的應用程式。

  • 串流回應 – 產生用戶端時將輸出串流至用戶端,例如來自大型語言模型的回應。

對於事件驅動處理,例如處理佇列訊息或檔案上傳,請改用 Lambda 事件函數。

注意

AWS Lambda Web 函數目前僅支援Node.js執行時間。如果您使用 Java、Python、 .NET或其他語言,請參閱 建立第一個 Lambda 函數 以取得 AWS Lambda 事件函數,或AWS Lambda MicroVMs參閱 以取得 Lambda MicroVMs

Web 函數的運作方式

Web 函數包含修訂和端點。修訂是您程式碼和組態的不可變快照。端點會將 HTTP 請求路由至一或兩個修訂。Lambda 會在執行環境中執行您的伺服器,每個環境都會處理多個並行請求。Lambda 會使用流量來擴展這些執行環境。如需詳細資訊,請參閱核心概念。

主要優點

Web 函數為 Web 應用程式和 API 後端提供下列優點:

  • 標準 Web 開發體驗 – 部署在連接埠上接聽的標準Node.js應用程式。您可以使用熟悉的 Web 架構和正常的應用程式結構。

  • 自適應擴展 – 每個執行環境提供多個並行請求,例如標準 Web 伺服器。因此,較少的執行環境會處理更多流量。現有的執行環境可以吸收少量流量,因此較少的請求等待新的執行環境啟動。

  • 以用量為基礎的帳單 – 您支付請求、應用程式和執行期主動耗用的 CPU 時間、每個執行環境生命週期的記憶體,以及資料傳輸的費用。等待資料庫查詢或外部 API 呼叫的請求在等待時會耗用很少的 CPU。不過,在執行環境存在時,記憶體會持續累積,包括請求之間的閒置時間。

  • 回應串流 – 在您的應用程式產生用戶端時串流回應,無需額外的組態。

  • 擴展到零 – 當沒有流量時,Lambda 會移除閒置執行環境,並在請求到達時建立新的執行環境。請求可能會在執行環境初始化時等待。如需擴展和調節運作方式的詳細資訊,請參閱 Lambda Web 函數的擴展行為。

  • 內建 HTTPS 端點 – 每個端點都提供具有 TLS 的 HTTPS 網域。您可以為每個端點選擇 IAM 身分驗證或應用程式受管身分驗證。如需詳細資訊,請參閱Lambda Web 函數端點存取控制。若要使用自訂網域或 AWS WAF 保護,請將 Amazon CloudFront 分佈放在端點前面。

  • 端點層級流量控制 – 為每個 HTTPS 端點設定請求速率限制 (每秒請求數),Lambda 會在每個區域中強制執行此限制,以及在每個區域中強制執行的最大執行環境數量 (maxEnvironments)。這些都可讓您限制端點接受的流量。它們還可讓您限制端點將多少負載傳遞到下游相依性,例如資料庫和外部 APIs。如需詳細資訊,請參閱Lambda Web 函數的擴展行為。