View a markdown version of this page

AWS Fargate 或 AWS Lambda? - AWS 決策指南

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

AWS Fargate 或 AWS Lambda?

了解差異並挑選適合您的差異

用途

探索 AWS Fargate 或 AWS Lambda 是否符合您對無伺服器運算服務的需求。

上次更新

2026 年 8 月 21 日

涵蓋的服務

簡介

您可能已經考慮過更廣泛的 AWS 運算服務。這些都包含在選擇 AWS 運算服務決策指南中。如果您將選擇縮小到 AWS Lambda 和 AWS Fargate,您可能會正在尋找無伺服器運算服務。這兩種服務都有下列優點:

注意

本指南涵蓋 Lambda 函數和 Lambda 受管執行個體。Lambda MicroVMs 提供以工作階段為基礎的隔離沙盒,用於執行不受信任的程式碼,是本指南中未涵蓋的不同運算基本概念。如需 Lambda MicroVMs 的相關資訊,請參閱《Lambda 開發人員指南》中的 Lambda MicroVMs。

注意

AWS 也提供本指南未涵蓋的相關運算選項,包括簡化容器部署的 Amazon ECS Express 模式,以及使用受管基礎設施在特定 EC2 執行個體類型上執行容器的 Amazon ECS 受管執行個體。如需容器運算選項的完整檢視,請參閱 Amazon ECS 開發人員指南。

  • 降低營運開銷:Lambda 和 Fargate 都會抽象化伺服器管理。這可減少修補、維護和容量規劃的需求。

  • Pay-per-use定價:您只需支付實際使用的運算資源。這可以降低可變工作負載的成本。

  • 更快的部署:這些服務通常提供更快的部署時間。這與佈建和設定 EC2 執行個體比較。

  • 內建高可用性:兩種服務都會自動處理基礎設施備援。

  • 簡化的合規:減少攻擊面和內建的安全功能可以簡化合規工作。

  • 專注於程式碼:開發人員可以專注於撰寫應用程式程式碼,而不是管理基礎設施。

雖然 Lambda 和 Fargate 都是無伺服器選項,但兩者之間存在顯著差異。

AWS Fargate

AWS Fargate 是容器的無伺服器運算引擎。它主要與 Amazon ECS 搭配使用。使用 Fargate,您可以專注於部署和擴展容器化應用程式,而無需管理基礎基礎設施。Fargate 非常適合長時間執行的應用程式、微服務或批次處理。它可讓您精細控制資源配置 (CPU、記憶體),而無需管理基礎伺服器。

AWS Lambda

AWS Lambda 是一種無伺服器運算服務,可將程式碼做為函數執行,以回應事件。它會為您管理基礎運算資源。Lambda 函數最適合事件驅動的應用程式。範例包括處理上傳至 Amazon S3 的檔案、回應 HTTP 請求、執行排程任務,或處理資料串流。資料串流來源包括 Amazon Kinesis 和 Amazon DynamoDB。Lambda 函數的執行時間上限為每次調用 15 分鐘。Lambda 也提供耐用的函數,這是一種工作流程的程式設計模型,可使用checkpoint-and-replay執行執行執行長達 1 年。使用 Lambda 受管執行個體,您可以在各種 EC2 執行個體類型上執行函數。您保留 Lambda 的操作簡單性。

使用下列準則來協助您在兩項服務之間進行選擇:

  • 如果您的專案涉及事件驅動型任務、無法預測的工作負載或等待繁重的協同運作工作流程,請考慮 Lambda 函數。

  • 如果您的工作負載狀態穩定或可預測,並受益於 EC2 定價和專業運算,則 Lambda 受管執行個體可能非常適合。

  • 如果您需要執行具有特定資源需求或持久性程序的容器化應用程式,則 Fargate 值得考慮。

您也可以在混合架構中結合這兩種服務。如需結合 Lambda 和 Fargate 的模式,請參閱 AWS 規範指引中的使用 Fargate 大規模執行事件驅動和排程工作負載。

下表提供這些服務之間主要差異的side-by-side比較。

功能 AWS Fargate AWS Lambda
執行模型 容器型、無伺服器運算 事件驅動的無伺服器函數 (具有選用的耐用協同運作)
支援的語言 可在容器中執行的任何語言 Node.js、Python、Java、C#、Go、Ruby 和 PowerShell。您也可以為其他語言建置自訂執行期。
使用案例 長時間執行的容器化應用程式 短期、事件驅動型任務 (或使用耐用函數的工作流程長達 1 年)
執行模式 持續運算 (長時間執行的程序、持久性連線) 事件驅動搭配選用的等待密集協同運作 (耐用函數)
擴展 根據所需的任務計數自動擴展,並支援預測擴展 每個請求的自動擴展
冷啟動 依影像大小和組態而異 依執行時間和套件大小而異
執行時間限制 無硬性限制 每次調用 15 分鐘 (持久性函數可協調工作流程長達 1 年)
記憶體配置 高達 244 GiB 高達 10 GiB
CPU 配置 最多 32 個 vCPU 與記憶體成比例,最多 6 個 vCPU
聯網 使用 ENIs VPC 中執行;支援 Amazon VPC Lattice 和IPv6-only的組態 可以在 AWS 受管 VPC 中執行,或使用 Hyperplane 連接到客戶受管 VPC AWS
狀態管理 容器可以在執行時跨請求維持記憶體內狀態。建議對關鍵資料使用外部儲存。 無狀態設計 (狀態必須外部管理,例如 Amazon S3、Amazon DynamoDB、Amazon EFS)。耐用的函數最多可保留工作流程狀態 1 年。
容器支援 完整容器支援 有限的容器支援 (透過容器映像部署)
協調 與 Amazon ECS 整合 不需要協調
部署策略 原生藍/綠、金絲雀和線性部署 逐步部署的加權別名
定價方式 vCPU 和使用的記憶體的每秒計費;Fargate Spot 適用於 x86 和 ARM 每次調用和持續時間 (GB-秒);Lambda 受管執行個體提供以 EC2-based定價
並行限制 根據叢集容量 預設 1000 個並行執行 (可以增加)
事件驅動調用 需要額外設定 對各種 AWS 事件來源的原生支援
冷啟動緩解措施 使用 Seekable OCI (SOCI) 延遲載入映像可以加速啟動 Fargate 任務 可用的佈建並行、SnapStart (適用於 Java、Python 和 .NET) 和 Lambda 受管執行個體
套件大小限制 無特定限制 (容器大小受限於設定的暫時性儲存,上限為 200 GiB) 250 MB 解壓縮,包括 layer,容器映像部署為 10 GB

Fargate 和 Lambda 之間的差異

探索 Fargate 和 Lambda 在許多關鍵領域之間的差異。

Languages supported

Fargate: AWS Fargate 是容器的無伺服器運算引擎,與 Amazon ECS 搭配使用以進行協同運作。它支援任何可封裝至 Docker 容器的程式設計語言或執行時間環境。這種靈活性意味著您可以使用幾乎任何符合您應用程式需求的語言、架構或程式庫。您可以使用 Python、Java、Node.js、Go、.NET、、RubyPHP,甚至是自訂語言和環境。只要 Fargate 封裝在容器中,就可以執行它們。這種廣泛的語言支援使 Fargate 非常適合執行各種應用程式。這些包括舊版系統、多語言微服務和現代雲端原生應用程式。

Lambda:相較於 Fargate, AWS Lambda 提供較有限語言集的原生支援。Lambda 函數專為事件驅動的工作負載而打造。Lambda 正式支援下列語言和執行時間:

  • Node.js

  • Python

  • Java

  • Go

  • Ruby

  • C#

  • PowerShell

Lambda 也支援自訂執行期。使用自訂執行時間,您可以擁有自己的語言或執行時間環境。不過,相較於使用原生支援的選項,這需要更多的設定和管理。如果您從容器映像部署 Lambda 函數,則可以在 中寫入函數Rust。使用僅限 AWS 作業系統的基礎映像,並在映像中包含Rust執行時間用戶端。如果您使用的語言沒有 AWS提供的執行時間界面用戶端,則必須建立自己的 。

Event-driven invocation

Lambda 本質上專為事件驅動型運算而設計。系統會觸發 Lambda 函數,以回應資料、使用者動作或排程任務的變更。它原生與許多 整合 AWS 服務。這些包括 Amazon S3 (例如,在上傳檔案時叫用 函數)、DynamoDB (例如,在資料更新時觸發) 和 API Gateway (例如,處理 HTTP 請求)。Lambda 事件驅動架構非常適合需要立即回應事件的應用程式。這些應用程式不需要持久性運算資源。

Fargate 不是原生的事件驅動型。不過,透過一些額外的樣板邏輯,它可以與 Amazon SQS 和 Kinesis 等事件來源整合。Lambda 會為您處理此整合邏輯的大量內容。使用 Fargate,您必須使用這些服務APIs 自行實作此整合。

Runtime/use cases

Fargate 旨在執行容器化應用程式。它提供一個靈活的執行期環境,您可以在其中定義容器的 CPU、記憶體和聯網設定。Fargate 在容器型模型上運作。它支援長時間執行的程序、持久性服務和具有特定執行期需求的應用程式。Fargate 中的容器可以無限期執行,因為執行時間沒有硬性限制。這使得它非常適合需要持續執行的應用程式。透過 Fargate 中的容器重新啟動政策,任務中的個別容器可以自動重新啟動,而無需重新啟動整個任務。這可改善多容器工作負載的彈性。Fargate 與 CloudWatch Container Insights 整合,具有增強的可觀測性。透過此功能,您可以取得每個容器的詳細指標和追蹤,以監控應用程式效能。

Lambda 函數已針對短期的事件驅動任務進行最佳化。Lambda 函數的執行時間上限為每次調用 15 分鐘。這使得 Lambda 函數非常適合檔案處理、即時資料串流和 HTTP 請求處理等案例。這些任務很簡短,不需要長時間執行的程序。

使用 Lambda 中的耐用函數,您可以建立長時間執行的工作流程,在多個調用中保留狀態長達 1 年。耐用的 函數提供內建的錯誤處理、自動重試和失敗後的復原。耐用函數 SDK 適用於 JavaScript、TypeScript、Java、 Python和 C# (.NET)。在等待期間,您的函數會暫停,而不會產生運算費用。透過耐用的 函數,您可以解決先前需要持久性運算環境的使用案例。

在長期執行工作負載的持久函數和 Fargate 之間進行選擇時,請考慮執行模式。對於花費大部分時間等待的工作流程而言,耐用的函數具有成本效益,例如人工核准、排程延遲或外部 API 回呼。您在等待期間不會產生運算費用。Fargate 更適合需要持續運算的工作負載,例如資料處理、持久性網路連線,或必須在不中斷的情況下保持作用中狀態的服務。

在 Lambda 中,執行時間環境較抽象。您對基礎基礎設施的控制較低。對於標準函數,每個叫用都是獨立的無狀態。必須在調用之間保留的任何狀態或資料都必須從外部管理。範例包括資料庫或儲存服務。

Scaling

Fargate 透過調整執行中的任務數量來擴展。這是根據容器協同運作服務 (Amazon ECS) 中定義的所需狀態。擴展可以透過 Amazon EC2 Auto Scaling 手動或自動完成。如需詳細資訊,請參閱 AWS Containers 部落格上的 Under the hood:Amazon ECS and Fargate 會增加任務啟動率。

在 Fargate 中,每個任務都會在其隔離的環境中執行。擴展涉及啟動其他任務或根據負載停止這些任務。Amazon ECS 服務排程器在每個服務一分鐘內最多可啟動 500 個任務。這適用於 Web 和其他長時間執行的服務。Amazon ECS 也支援預測擴展。它使用歷史模式,在需求激增發生之前主動增加任務。CPU 和記憶體使用率的目標追蹤政策支援 20 秒的指標解析度。這可讓擴展訊號偵測速度更快。Amazon ECS 也可以自動重新平衡跨可用區域的服務任務。這可維持高可用性。Fargate 與 AWS Fault Injection Service (FIS) 整合。透過 FIS,您可以執行受控制的故障注入實驗,以測試應用程式彈性。

顯示 Fargate 和 Lambda 之間任務啟動差異的圖表。

對於 Lambda,並行是 AWS Lambda 函數同時處理的傳輸中請求數量。這與 Fargate 中的並行不同。只要有可用的運算和網路資源,每個 Fargate 任務都可以處理並行請求。Lambda 會針對每個並行請求佈建個別的執行環境執行個體。隨著函數收到更多請求,Lambda 會自動擴展執行環境的數量。這會持續到您達到帳戶並行限制為止。根據預設,Lambda 為您的帳戶提供 1,000 個並行執行的總並行限制。此限制適用於 中的所有函數 AWS 區域。如有需要,您可以請求提高配額。

使用 Lambda 受管執行個體時,擴展的運作方式不同。受管執行個體不會為每個並行請求佈建新的執行環境,而是根據 CPU 資源使用率以非同步方式擴展。每個執行環境都可以處理多個並行調用。此方法可將資源使用率最大化。它非常適合穩定狀態或可預測的工作負載。

對於使用預設運算類型的每個 Lambda 函數,並行擴展速率為每 10 秒 1,000 個執行執行個體。這會持續達到帳戶並行上限。如需詳細資訊,請參閱 AWS 運算部落格上的 Lambda 函數現在以 12 倍的速度處理大量請求。如果 10 秒期間內的請求數量超過 1,000,則會調節額外的請求。下圖示範 Lambda 擴展如何運作,假設帳戶並行 7000。

長條圖顯示當數量超過 1000 時如何調節執行個體。
Cold start and cold-start mitigation

Lambda 函數可能會遇到冷啟動。這些會在閒置一段時間後叫用函數時發生。在冷啟動期間,Lambda 服務會初始化新的執行環境。這包括載入執行時間、相依性和函數程式碼。冷啟動持續時間從不到 100 毫秒到超過 1 秒不等,取決於執行時間、套件大小和初始化邏輯。對於初始化時間較長的執行時間,例如 Java或 C#,冷啟動可能會更長,無需最佳化。冷啟動可能會影響需要低延遲回應的應用程式效能。

若要緩解 Lambda 中的冷啟動,請考慮下列策略:

  • 最小化函數大小:減少函數套件的大小及其相依性。這可以減少初始化所需的時間。

  • 增加記憶體配置:較高的記憶體配置會增加 CPU 容量。這可以縮短初始化時間。

  • 保持函數暖機:定期叫用 Lambda 函數 (例如,使用 CloudWatch Events)。這可讓它們保持作用中狀態,並降低冷啟動的可能性。

  • Lambda SnapStart:針對 Java、 Python和 .NET 函數使用 Lambda SnapStart,以減少啟動時間。SnapStart 會拍攝初始化執行環境的快照。後續調用會從快照繼續,而不是執行完全冷啟動。

  • 佈建並行:此功能可讓指定數量的函數執行個體保持暖機狀態,並準備好處理請求。這可減少冷啟動延遲。不過,它會增加成本。即使佈建的執行個體未主動處理請求,您仍需支付這些執行個體的費用。

  • Lambda 受管執行個體:在各種 EC2 執行個體類型上執行函數。這些包括處理器,例如 Graviton4和高頻寬聯網選項。預先佈建的執行環境可消除冷啟動。Lambda 會處理執行個體生命週期、作業系統和執行期修補、路由、負載平衡和自動擴展。Lambda 受管執行個體也支援每個執行環境的多並行調用。它們提供 EC2 定價優勢,例如 Compute Savings Plans 和預留執行個體。

Fargate 通常不會像 Lambda 一樣受到冷啟動的影響。啟動 Fargate 任務的時間與從映像登錄檔提取任務中定義的容器映像所花費的時間直接相關。Fargate 也支援以 Seekable OCI (SOCI) 編製索引的容器映像延遲載入。使用 SOCI 延遲載入容器映像可減少在 Fargate 上啟動 Amazon ECS 任務的時間。Fargate 使用 SOCI 索引資訊清單 v2。這可改善延遲載入的效能。在 Fargate 上啟動任務後,這是一個長時間執行的程序。它隨時準備好處理請求。如果您需要啟動新任務以回應擴展事件,初始化期間可能會有一些延遲。相較於 Lambda 冷啟動,這通常不太重要。

Memory and CPU options

Fargate 為您的容器化應用程式提供記憶體和 CPU 資源的精細控制。當您在 Fargate 中啟動任務時,您可以指定應用程式的確切 CPU 和記憶體需求。CPU 和記憶體配置是獨立的。您可以選擇最適合工作負載的組合。您可以選擇從 0.25 個 vCPUs 到 32 個 vCPUs的 CPU 值。視您的組態而定,每個任務的記憶體範圍從 0.5 GB 到 244 GB。

此彈性非常適合具有特定效能特性的應用程式。範例包括記憶體密集型資料庫或 CPU 繫結運算任務。Fargate 可讓您最佳化資源配置。您可以有效平衡成本和效能。

在 Lambda 中,會連結記憶體和 CPU。CPU 會根據您選取的記憶體量按比例自動配置。您可以選擇介於 128 MB 到 10 GB 之間的記憶體配置,以 1 MB 為單位遞增。CPU 會隨記憶體擴展,最多 6 個 vCPU。較高的記憶體設定會產生更多 CPU 功率。不過,您無法直接控制 CPU 配置本身。

此模型專為簡化而設計。您可以快速調整記憶體設定,而無需管理 CPU 組態。不過,對於需要 CPU 和記憶體資源之間特定平衡的工作負載,其彈性可能較低。Lambda 模型適用於您希望根據記憶體需求直接擴展的任務。它可能不適用於具有複雜或高度特定資源需求的應用程式。

Networking

當您在 Fargate 中部署任務時,它們會在 Amazon VPC (Amazon Virtual Private Cloud) 中執行。這可讓您完全控制聯網環境。您可以設定安全群組、網路存取控制清單 (ACLs) 和路由表。每個 Fargate 任務都會使用專用的私有 IP 地址取得自己的網路介面。如有需要,您可以指派公有 IP 地址。

Fargate 支援進階聯網功能,例如負載平衡 (使用 AWS Elastic Load Balancing)、VPC 對等互連,以及直接存取 VPC AWS 服務 中的其他 。您也可以使用 與支援的 AWS PrivateLink 進行安全的私有連線 AWS 服務。這可避免周遊網際網路。Fargate 任務也支援 Amazon VPC Lattice。這可提供標準化service-to-service連線能力、安全性和可觀測性。Fargate 任務可以在IPv6-only的組態中執行。這可讓任務僅透過 IPv6 進行通訊。

根據預設,Lambda 函數會在受管網路環境中執行。您無法直接控制網路介面或 IP 地址。不過,Lambda 可以使用 AWS Hyperplane 連接到客戶管理的 VPC。這可讓您控制對 VPC 內資源的存取。

當 Lambda 函數連接到客戶管理的 VPC 時,它們會繼承 VPC 安全群組和子網路組態。這可讓它們安全地與相同 VPC 中的其他 AWS 服務 (例如 RDS 資料庫) 互動。由於 Lambda 透過建立許多並行執行環境來擴展,因此每個 都會維護自己的資料庫連線。高並行可能會耗盡資料庫連線限制。對於關聯式資料庫存取,請使用 Amazon RDS Proxy 集區和管理連線。這可避免高並行期間的連線耗盡。

Lambda 服務使用 Network Function Virtualization 平台來提供 NAT 功能。這會將 Lambda VPC 連接到客戶 VPCs。它會在建立或更新 Lambda 函數時設定所需的彈性網路介面 (ENIs)。它也可讓您帳戶的 ENIs多個執行環境中共用。這可讓 Lambda 在函數擴展時更有效率地使用網路資源。

ENIs詳盡的資源,每個區域的軟性限制為 250。如果您為 VPC 存取設定 Lambda 函數,請監控彈性網路介面使用情況。相同 AZ 和相同安全群組中的 Lambda 函數可以共用 ENIs。如果您在 Lambda 中增加並行限制,請評估是否需要增加彈性網路界面。如果達到限制,則會調節呼叫已啟用 VPC 的 Lambda 函數。

Pricing model

Fargate 定價是以分配給您容器的資源為基礎。具體而言,這表示您為每個任務選取的 vCPU 和記憶體。您每秒需支付 ,最低收費為一分鐘。成本直接與您的應用程式使用的資源相關。無論應用程式是否正在積極處理請求,您都會支付佈建項目的費用。Fargate 非常適合您需要特定資源組態的可預測工作負載。您可以透過調整配置的資源來最佳化成本。Fargate Spot 適用於 x86 和 ARM 型 Linux 工作負載。這可為容錯應用程式大幅節省成本。相關服務可能會產生額外費用。這些包括資料傳輸、儲存和聯網 (例如 VPC、Elastic Load Balancing)。

Lambda 具有不同的定價結構,其為事件驅動型和pay-per-execution。您需要根據請求數量和執行持續時間付費。持續時間的測量單位為毫秒。Lambda 也會考量您配置給函數的記憶體量。成本會根據使用的記憶體和執行時間來擴展。定價模型包含免費方案。它每月提供 100 萬個免費請求和 400,000 GB 的運算時間。這使得 Lambda 特別符合低容量、零星工作負載的成本效益。

Lambda 定價模型適用於流量模式無法預測或爆量的應用程式。您只需支付實際函數叫用和執行時間的費用。您不需要佈建或支付閒置容量。

透過 Lambda 受管執行個體,Lambda 提供使用 EC2 定價模型的執行個體型定價。這些包括隨需執行個體、預留執行個體和Compute Savings Plans。這可以提高穩定狀態或可預測工作負載的成本效率。

Fargate 和 Lambda 都符合 Compute Savings Plans 的資格。這些可以降低成本高達 66%,以換取對一致運算用量的承諾。這是以每小時美元為單位,為期 1 年或 3 年。

當您比較兩個服務之間的成本時,使用 Lambda 的流量通常較低。不過,Fargate 的每秒資源計費對於持續、高輸送量的工作負載往往更經濟。隨著請求量的增加,Lambda 成本會線性擴展。相反地,無論佈建資源中處理的請求為何,Fargate 成本都相對穩定。

使用

現在您已閱讀 AWS Fargate 和 之間的選擇條件 AWS Lambda,您可以選擇符合您需求的服務,並使用下列資訊協助您開始使用每個服務。

AWS Fargate
  • 了解如何為 Fargate 啟動類型建立 Amazon ECS Linux 任務

    使用 Linux 任務的 Fargate 啟動類型 AWS Fargate ,在 上開始使用 Amazon ECS。

    探索指南

  • 了解如何為 Fargate 啟動類型建立 Amazon ECS Windows 任務

    使用適用於 Windows 任務的 Fargate 啟動類型 AWS Fargate ,在 上開始使用 Amazon ECS。

    探索指南

  • Fargate 和 Amazon EKS 入門

    本指南說明如何開始使用 Amazon EKS 叢集在 上執行 AWS Fargate Pod。

    探索指南

  • AWS Fargate 定價

    使用本指南了解 vCPU、記憶體、儲存體和作業系統組態如何影響 AWS Fargate 定價。

    探索指南

  • AWS Fargate 常見問答集

    取得有關 AWS Fargate 功能和實作最佳實務的常見問題解答。

    探索指南

AWS Lambda
  • 建立無伺服器檔案處理應用程式

    設定和使用 Amazon SNS 的step-by-step演練。它涵蓋主題,例如建立主題、訂閱主題的端點、發佈訊息,以及設定存取許可。

    探索指南

  • 無伺服器開發人員指南

    本指南可協助您更深入了解無伺服器應用程式開發,以及各種 AWS 服務 方式如何結合在一起,以建立構成雲端應用程式核心 的應用程式模式 。

    探索指南

  • 無伺服器土地

    此網站匯集 AWS 了 Serverless 的最新資訊、部落格、影片、程式碼和學習資源。了解如何使用和建置可在低成本、全受管無伺服器架構上自動擴展的應用程式。

    探索網站

  • AWS Lambda 定價

    使用本指南根據函數用量和組態來預估費用並最佳化成本。它包含定價計算器,可在單一估算中計算您的 AWS Lambda 和 架構成本。

    探索指南

  • AWS Lambda 常見問答集

    取得有關 AWS Lambda 功能和實作最佳實務的常見問題解答。

    探索指南