AWS Lambda 是亞馬遜Web 服務(AWS)提供的無伺服器運算服務,旨在簡化應用程式的部署和管理。透過Lambda,開發者可以運行程式碼而無需擔心伺服器的配置、維護或擴展。 Lambda 支援多種程式語言,並透過自動擴展和按需計費的方式為使用者提供靈活、經濟高效的運算解決方案。無論是在建立微服務、處理資料流,還是回應即時事件,AWS Lambda 都能提供強大的支持,是現代雲端運算環境中不可或缺的工具之一。我們Oncloud AI透過本文幫助您詳細探討AWS Lambda。
介紹
- AWS Lambda 讓您無需預置或管理伺服器即可執行程式碼。您只需為您使用的計算時間付費– 程式碼未運行時無需付費。
- 使用Lambda,您可以為幾乎任何類型的應用程式或後端服務運行程式碼– 無需任何管理。只需上傳您的程式碼,Lambda 就會處理運行和擴充程式碼所需的一切,並且具有高可用性。
- 您可以設定程式碼以自動從其他AWS 服務觸發,或直接從任何Web 或行動應用程式呼叫它。

AWS 上的大數據分析選項是一個包含不同文章的系列,這些文章提供了AWS 上不同大數據分析選項的基本介紹。每篇文章都涵蓋瞭如何使用每項服務來收集、處理、儲存和分析大數據的詳細指南。
理想的使用模式
- AWS Lambda 可讓您執行程式碼以回應觸發事件,例如資料變更、系統狀態轉換或使用者操作。 Lambda 可由AWS 服務(例如Amazon S3、DynamoDB、Amazon Kinesis Data Streams、Amazon Simple Notification Service (Amazon SNS) 和Amazon CloudWatch)直接觸發,讓您能夠建立各種即時資料處理系統:
- 即時文件處理– 您可以觸發Lambda 來呼叫將檔案上傳到Amazon S3 或修改後的過程。例如,將圖像上傳到Amazon S3 後,將其從彩色更改為灰階。
- 即時串流處理– 您可以使用Kinesis Data Streams 和Lambda 處理串流資料以進行點擊流分析、日誌過濾和社群媒體分析。
- 提取、轉換、載入(ETL) – 您可以使用Lambda 運行程式碼來轉換資料並將資料從一個資料儲存庫載入到另一個資料儲存庫。
- 替代Cron – 使用計劃表達式定期運行Lambda 函數,這是比在EC2 實例上執行cron 更便宜、更可用的解決方案。
- 處理AWS 事件– 許多其他服務(例如AWS CloudTrail)可以透過登入Amazon S3 並使用S3 儲存桶通知來觸發Lambda 函數,從而充當事件來源。
成本模型
- 使用AWS Lambda,您只需按實際使用量付費。費用取決於您函數的請求數量和程式碼運行時間。
- Lambda 免費方案包括每月100 萬個免費請求和每月400,000 GB-秒的計算時間。此後,每100 萬個請求將收取0.20 美元(每個請求0.0000002 美元)。此外,程式碼運行時間的價格與分配的記憶體有關。每GB-秒的使用將收取0.00001667 美元。
有關更多詳細信息,請參閱AWS Lambda 定價。
表現
- 首次將程式碼部署到Lambda 後,您的函數通常在上傳後幾秒鐘內即可呼叫。 Lambda 旨在幾毫秒內處理事件。
- 在建立、更新Lambda 函數後或最近未使用時,延遲會立即增加。為了提高效能,Lambda 可能會選擇保留函數的一個實例並重新使用它來處理後續請求,而不是建立新的副本。
- Lambda 預先配置並發功能讓客戶能夠更好地控制任何規模的無伺服器應用程式的效能。
- 使用預先配置並發的函數以一致的啟動延遲運行,使其成為建立互動式移動或Web 後端、延遲敏感的微服務和同步調用的API 的理想選擇。
- 透過預先配置的並發性,函數可以立即處理突發流量,並且每次呼叫在指定的規模內都具有一致的啟動延遲。
- 要了解有關Lambda 如何重用函數實例的更多信息,請參閱Lambda 入門。您的程式碼不應假設這種重複使用將始終發生。
耐用性和可用性
- AWS Lambda 旨在使用複製和冗餘來為服務本身及其運行的Lambda 函數提供高可用性。
- 兩者都沒有維護時段或計劃停機時間。發生故障時,同步呼叫的Lambda 函數會以異常響應。
- 非同步呼叫的Lambda 函數至少會重試三次,之後事件可能會被拒絕。
可擴展性和彈性
- 您可以運行的Lambda 函數數量沒有限制。但是,Lambda 的預設安全限制是每個區域每個帳戶1,000 次並發運行。
- AWS 支援團隊的成員可以增加此限制。 Lambda 旨在代表您自動擴展。擴展函數沒有基本限制。 Lambda 動態分配容量以符合傳入事件的速率。
介面
- Lambda 函數可以透過多種方式進行管理。您可以使用Lambda 控制台中的儀表板輕鬆列出、刪除、更新和監控您的Lambda 函數。您也可以使用AWS CLI 和AWS SDK 來管理您的Lambda 函數。
- 您可以從AWS 事件觸發Lambda 函數,例如Amazon S3 儲存桶通知、Amazon DynamoDB Streams、Amazon CloudWatch logs、Amazon Simple Email Service (Amazon SES)、Amazon Kinesis Data Streams、Amazon SNS、Amazon Cognito 等。
- 任何支援AWS CloudTrail 的服務中的任何API 呼叫都可以透過回應CloudTrail 稽核日誌在Lambda 中作為事件進行處理。有關事件來源的更多信息,請參閱Lambda 事件來源。
- AWS Lambda 支援以Node.js (JavaScript)、Python、Java(相容Java 8)、C# (.NET Core)、Go、PowerShell 和Ruby 編寫的程式碼。您的程式碼可以包含現有庫,甚至是本機庫。請參閱有關使用Node.js、Python、Java、C#、Go、PowerShell 和Ruby 的AWS 文件。
- 您可以使用Docker CLI 等工具將Lambda 函數程式碼和相依性打包為容器映像。然後,您可以將映像上傳到託管在Amazon ECR 上的容器註冊表。請注意,您必須從與Amazon ECR 中的容器註冊表相同的帳戶建立Lambda 函數。
反模式
- AWS Lambda 具有以下反模式:
- 長時間運行的應用程式— 每個Lambda 函數必須在900 秒內完成。對於可能需要作業運行時間超過15 分鐘的長時間運行的應用程序,建議使用Amazon EC2、Amazon EKS 或Amazon ECS。或者,您可以使用Step Functions。
- 動態網站— 雖然可以使用AWS Lambda 來運作靜態網站,但經營高度動態且容量大的網站可能會影響效能。建議使用Amazon EC2、Amazon EKS 或Amazon ECS 和AWS CloudFormation。
- 有狀態應用程式— Lambda 程式碼必須以「無狀態」風格編寫,這意味著它應該假設與底層運算基礎設施沒有任何關聯。本機檔案系統存取、子程序和類似工件不得超出請求的生命週期,任何持久狀態都應儲存在Amazon S3、DynamoDB 或其他可透過網際網路使用的儲存服務中。
Oncloud AI身為AWS代理商,提供亞馬遜雲端服務,支援亞馬遜雲端伺服器AWS代付、AWS遷移、AWS維運託管等服務,如有相關需求可聯繫Oncloud AI。

