
- AWS Lambda 教程
- AWS Lambda - 首頁
- AWS Lambda - 概述
- AWS Lambda - 環境設定
- AWS Lambda - 簡介
- 構建Lambda函式
- NodeJS 函式
- Java 函式
- Python 函式
- Go 函式
- C# 函式
- 配置Lambda函式
- 使用AWS控制檯建立和部署
- 使用AWS CLI建立和部署
- 使用Serverless Framework建立和部署
- AWS 執行和呼叫Lambda函式
- 刪除Lambda函式
- 使用Amazon API Gateway
- Lambda函式與Amazon S3
- Lambda函式與Amazon DynamoDB
- Lambda函式與計劃事件
- Lambda函式與Amazon SNS
- Lambda函式與CloudTrail
- Lambda函式與Amazon Kinesis
- Lambda函式與自定義使用者應用程式
- AWS Lambda@Edge 與CloudFront
- 使用CloudWatch監控和故障排除
- AWS Lambda - 附加示例
- AWS Lambda有用資源
- AWS Lambda - 快速指南
- AWS Lambda - 有用資源
- AWS Lambda - 討論
AWS Lambda – 概述
AWS Lambda 是一種提供無伺服器計算的服務,這意味著無需管理伺服器即可進行計算。程式碼根據AWS服務的事件響應執行,例如在S3儲存桶中新增/刪除檔案、更新Amazon DynamoDB表、來自Amazon API Gateway的HTTP請求等。
要使用AWS Lambda,我們只需將程式碼推送到AWS Lambda服務中。AWS負責所有其他任務和資源,例如基礎設施、作業系統、伺服器維護、程式碼監控、日誌和安全。
AWS Lambda支援Java、NodeJS、Python、C#、Go、Ruby和Powershell等語言。請注意,AWS Lambda僅適用於AWS服務。
什麼是AWS Lambda?
AWS Lambda的官方文件對其定義如下:
AWS Lambda 是一種計算服務,允許您執行程式碼而無需預配或管理伺服器。AWS Lambda 僅在需要時執行您的程式碼,並可自動擴充套件,從每天幾個請求到每秒數千個請求。您只需為消耗的計算時間付費 - 程式碼未執行時不收費。
AWS Lambda如何工作?
下圖顯示了用五個簡單的步驟解釋AWS Lambda工作原理的框圖:

步驟1 - 將AWS Lambda程式碼上傳到AWS Lambda支援的任何語言中,例如NodeJS、Java、Python、C#和Go。
步驟2 - 以下是AWS Lambda可以被觸發的幾個AWS服務。
步驟3 - AWS Lambda包含上傳的程式碼和觸發事件的詳細資訊。例如,來自Amazon S3、Amazon API Gateway、DynamoDB、Amazon SNS、Amazon Kinesis、CloudFront、Amazon SES、CloudTrail、移動應用程式等的事件。
步驟4 - 僅當AWS服務在以下情況下觸發時,才會執行AWS Lambda程式碼:
- 使用者將檔案上傳到S3儲存桶
- 命中http get/post端點URL
- 在DynamoDB表中新增/更新/刪除資料
- 推送通知
- 資料流收集
- 網站託管
- 傳送電子郵件
- 移動應用程式等。
步驟5 - 請記住,AWS僅在AWS Lambda程式碼執行時才收費,否則不收費。
使用AWS Lambda的優勢
使用AWS Lambda時,它提供了多種好處。本節將詳細討論它們:
易於使用程式碼
AWS Lambda為您提供上傳程式碼的基礎架構。它負責維護程式碼,並在發生所需事件時觸發程式碼。它允許您選擇程式碼所需的記憶體和超時時間。
AWS Lambda還可以根據事件觸發器執行並行請求。
日誌配置
AWS Lambda提供程式碼執行次數、執行時間、記憶體消耗等詳細資訊。AWS CloudWatch收集所有日誌,這有助於理解執行流程和除錯程式碼。
基於用量的計費
AWS Lambda的計費基於記憶體使用量、請求次數和執行時間,以至少100毫秒的增量計費。因此,對於500毫秒的執行,每100毫秒計費一次。如果您將AWS Lambda程式碼指定為執行500毫秒,而實際執行時間僅為200毫秒,AWS將僅對實際執行時間(即200毫秒)收費,而不是500毫秒。AWS始終僅對使用的執行時間收費。如果函式未執行,則無需付費。
多語言支援
AWS Lambda支援流行的語言,例如Node.js、Python、Java、C#和Go。這些是廣泛使用的語言,任何開發人員都會發現編寫AWS Lambda程式碼很容易。
易於編寫和部署程式碼
Lambda提供了許多編寫和部署程式碼的選項。您可以使用AWS線上編輯器、Visual Studio IDE或Eclipse IDE來編寫程式碼。它還支援無伺服器框架,這使得編寫和部署AWS Lambda程式碼變得容易。除了AWS控制檯,我們還有AWS CLI來建立和部署程式碼。
其他功能
您可以透過登入AWS免費套餐免費使用AWS Lambda。它為您提供一年的免費服務。檢視AWS免費套餐提供的免費服務。
使用AWS Lambda的缺點
儘管AWS Lambda有很多優點,但它也有一些缺點:
它不適合小型專案。
您需要仔細分析您的程式碼並決定記憶體和超時時間。如果您的函式需要比分配時間更長的時間,它將根據其上指定的超時時間終止,並且程式碼將不會完全執行。
由於AWS Lambda完全依賴AWS的基礎設施,因此如果您的程式碼需要,您無法安裝任何附加軟體。
觸發AWS Lambda的事件
可以觸發AWS Lambda的事件如下:
- 進入S3物件
- 在DynamoDB表中插入、更新和刪除資料
- 來自SNS的推送通知
- 對API Gateway的GET/POST呼叫
- 在CloudFront中修改檢視器或源請求/響應的標頭
- AWS Kinesis資料流中的日誌條目
- CloudTrail中的日誌歷史記錄
AWS Lambda的用例
AWS Lambda是一種計算服務,主要用於執行後臺程序。它可以在與其他AWS服務一起使用時觸發。下面列出了我們可以使用AWS Lambda的AWS服務:
S3物件和AWS Lambda
當S3中存在任何檔案上傳時,Amazon S3會將事件詳細資訊傳遞給AWS Lambda。檔案上傳、刪除或移動的詳細資訊將傳遞給AWS Lambda。AWS Lambda中的程式碼可以在收到事件詳細資訊時採取必要的步驟。例如,建立插入到S3中的影像的縮圖。
DynamoDB和AWS Lambda
當表中新增、更新和刪除資料時,DynamoDB可以觸發AWS Lambda。AWS Lambda事件包含有關插入/更新或刪除的AWS DynamoDB表的所有詳細資訊。
API Gateway和AWS Lambda
API Gateway可以在GET/POST方法上觸發AWS Lambda。我們可以建立一個表單並與API Gateway端點共享詳細資訊,並將其與AWS Lambda一起用於進一步處理,例如,在DynamoDB表中建立資料的條目。
SNS和AWS Lambda
SNS用於推送通知、傳送簡訊等。當SNS中發生任何推送通知時,我們可以觸發AWS Lambda。當AWS Lambda收到觸發器時,我們也可以向電話號碼傳送簡訊。
計劃事件和AWS Lambda
計劃事件可用於cron作業。它可以觸發AWS Lambda在定期時間模式下執行任務。
CloudTrail和AWS Lambda
CloudTrail有助於監控帳戶上的日誌。我們可以使用AWS Lambda進一步處理CloudTrail日誌。
Kinesis和AWS Lambda
Kinesis用於捕獲/儲存來自網站點選、日誌、社交媒體供稿的即時跟蹤資料,並且對AWS Lambda的觸發器可以對這些日誌進行額外處理。
CloudFront和Lambda@Edge
CloudFront是一個內容交付網路,您可以在其中託管您的網站,並且Lambda@Edge可用於處理來自檢視器請求、源請求、源響應和檢視器響應的標頭。標頭修改包括修改cookie資料、URL重寫、用於A/B測試以更改傳送回用戶的響應、出於安全目的新增額外的標頭資訊等任務。