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工作原理的框圖:

AWS lambda Block Diagram

步驟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測試以更改傳送回用戶的響應、出於安全目的新增額外的標頭資訊等任務。

廣告