什麼是 AWS Lambda? - AWS Lambda

什麼是 AWS Lambda?

Lambda 是一項運算服務,可讓您執行程式碼,而無需佈建或管理伺服器。Lambda 在高可用性的運算基礎設施上執行您的程式碼,並執行所有運算資源的管理,包括伺服器和作業系統維護,容量佈建與自動擴展、程式碼監控和記錄。使用 Lambda,您可以針對幾乎任何類型的應用程式或後端服務執行程式碼。您唯一需要做的就是以 Lambda 支援的其中一種語言提供您的程式碼。

注意

在《AWS Lambda 開發人員指南》中,我們假設您有使用其中一種支援的語言來編碼、編譯和部署程式的經驗。

您可以將您的程式碼組織為 Lambda 函數。Lambda 只有在需要時才會執行函數,可自動從每天數項請求擴展成每秒數千項請求。只需為使用的運算時間支付費用,一旦未執行程式碼,就會停止計費。

您可以使用 Lambda API 叫用您的 Lambda 函數,或者 Lambda 可以執行您的函數以響應來自其他 AWS 服務的事件。例如,您可將 Lambda 用於:

  • 對 AWS 服務建置資料處理觸發程序,例如 Amazon Simple Storage Service (Amazon S3) 和 Amazon DynamoDB。

  • 處理存放在 Amazon Kinesis 中的串流資料。

  • 建立自己的後端,在 AWS 範圍、效能及安全性中運作。

Lambda 是高度可用的服務。如需詳細資訊,請參閱 AWS Lambda 服務水準協議

我應該在什麼時候使用 Lambda?

Lambda 是許多應用程式案例的理想運算服務,只要您能夠使用 Lambda 標準執行時間環境和 Lambda 提供的資源,來執行應用程式的程式碼。

使用 Lambda 時,您只需負責程式碼的相關操作。Lambda 會管理提供記憶體、CPU、網路和其他資源平衡的運算機群,以執行您的程式碼。由於 Lambda 管理這些資源,因此您無法登入運算執行個體或在提供的執行時間自訂作業系統。Lambda 會代表您執行操作和管理活動,包括管理容量、監控和記錄您的 Lambda 函數。

如果您需要管理專屬的運算資源,AWS 還有其他運算服務滿足您的需求。例如:

  • Amazon Elastic Compute Cloud (Amazon EC2) 提供多種 EC2 執行個體類型可供選擇。您可以選擇自訂作業系統、網路和安全性設定,以及整個軟體堆疊。您負責佈建容量、監控叢集運作狀態和效能,以及使用可用區域進行容錯。

  • AWS Elastic Beanstalk 可讓您部署應用程式,並將其擴展至 Amazon EC2。您可以保留對基礎 EC2 執行個體的擁有權及完全控制權。

Lambda 功能

下列主要功能協助您開發可擴展、安全且易於擴充的 Lambda 應用程式:

並行和擴展控制

並行和擴展控制項 (例如並行限制和已佈建的並行處理),可讓您精細控制生產應用程式的擴展和回應速度。

定義為容器映像的函數

使用您偏好的容器映像工具、工作流程和相依性來建置、測試和部署您的 Lambda 函數。

程式碼簽署

適用於 Lambda 的程式碼簽署提供信任和完整性控制,可讓您確認只有核准開發人員已發佈的未修改程式碼才會部署在您的 Lambda 函數中。

Lambda 擴充

您可以使用 Lambda 擴充來增強 Lambda 函數。例如,使用擴充功能更輕鬆地將 Lambda 與您最喜愛的工具整合,用於監控、觀察、安全和管控。

函數藍圖

函數藍圖提供範本程式碼,說明如何搭配使用 Lambda 與其他 AWS 服務或第三方應用程式。藍圖包含適用於 Node.js 和 Python 執行時間的範本程式碼和函數組態集。

資料庫存取

資料庫代理可管理資料庫連線的集區,並從函數轉送查詢。這可在不耗盡資料庫連線的情況下,讓函數達到高並行層級。

檔案系統存取

您可以設定函數,將 Amazon Elastic File System (Amazon EFS) 檔案系統掛載到本機目錄。使用 Amazon EFS,您的函數程式碼可安全地存取和修改共用資源,並發揮高度並行效能。

開始使用 Lambda

為了有效使用 Lambda,您需要以下領域的編碼經驗和專業知識:

  • Linux 作業系統和命令,以及處理程序、執行緒和檔案許可等概念。

  • 雲端概念和 IP 網路概念 (適用於公有和私有網路)。

  • 分散式運算概念,例如 HTTP 作為 IPC、佇列、訊息、通知和並行。

  • 熟悉安全性服務和概念:AWS Identity and Access Management (IAM) 和存取控制原則,以及 AWS Key Management Service (AWS KMS) 和公有金鑰基礎設施。

  • 熟悉與 Lambda 互動的關鍵服務:Amazon API Gateway、Amazon S3、Amazon Simple Queue Service (Amazon SQS) 和 DynamoDB。

  • 使用 Linux 設定 EC2 執行個體。

如果您是第一次使用 Lambda,我們建議您從下列主題開始,以協助您學習基本知識:

  1. 閱讀 Lambda 產品概述並瀏覽 Lambda 入門頁面。

  2. 若要使用 Lambda 主控台建立和測試 Lambda 函數,請嘗試以主控台為基礎的入門練習本練習會教您有關 Lambda 程式設計模型和其他概念的相關資訊。

  3. 如果您熟悉容器映像工作流程,請嘗試入門練習來建立定義為容器映像的 Lambda 函數

AWS 還提供下列資源,以了解無伺服器應用程式和 Lambda:

Lambda 與其他 AWS 服務整合,以根據您指定的事件叫用函數。例如:

  • 使用 API Gateway,對將 HTTP 請求傳送至 Lambda 函數的 Web API 提供安全且可擴展的閘道。

  • 對於產生佇列或資料串流的服務 (例如 DynamoDBKinesis),Lambda 會從服務中輪詢佇列或資料串流,並叫用函數來處理接收的資料。

  • 定義叫用 Lambda 函數來處理 Amazon S3 物件的 Amazon S3 事件,例如建立或刪除物件時。

  • 使用 Lambda 函數處理 Amazon SQS 訊息或 Amazon Simple Notification Service (Amazon SNS) 通知。

  • 使用 AWS Step Functions 將 Lambda 函數連接到無伺服器工作流程 (稱為狀態機器)。

存取 Lambda

您可以使用下列任一介面來建立、叫用和管理您的 Lambda 函數:

  • AWS 管理主控台 - 提供 Web 介面,讓您存取函數。如需詳細資訊,請參閱 Lambda 主控台

  • AWS Command Line Interface (AWS CLI) - 提供包括 Lambda 在內的大量 AWS 服務命令,Windows、macOS 和 Linux 都支援。如需詳細資訊,請參閱 搭配使用 Lambda 與 AWS CLI

  • AWS 開發套件 - 提供特定語言的 API 並管理許多連線詳細資訊,例如簽章計算、請求重試處理和錯誤處理。如需詳細資訊,請參閱 AWS 開發套件

  • AWS CloudFormation - 可讓您建立定義 Lambda 應用程式的範本。如需詳細資訊,請參閱 AWS Lambda 應用程式。AWS CloudFormation 也支援 AWS Cloud Development Kit (CDK)

  • AWS Serverless Application Model (AWS SAM) - 提供範本和 CLI 來設定和管理 AWS 無伺服器應用程式。如需詳細資訊,請參閱 SAM CLI

Lambda 定價

建立 Lambda 函數不需額外費用。執行函數以及在 Lambda 和其他 AWS 服務之間傳輸資料需要付費。某些選用 Lambda 功能 (例如佈建的並行) 也會產生費用。如需詳細資訊,請參閱 AWS Lambda 定價