什么是 Amazon Lambda? - Amazon Lambda
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

什么是 Amazon Lambda?

Lambda 是一项计算服务,可使您无需预置或管理服务器即可运行代码。Lambda 在可用性高的计算基础设施上运行您的代码,执行计算资源的所有管理工作,其中包括服务器和操作系统维护、容量调配和弹性伸缩、代码监控和记录。借助 Lambda,您可以为几乎任何类型的应用程序或后端服务运行代码。您只需要以 Lambda 支持的一种语言提供您的代码。

注意

在 Amazon Lambda 开发人员指南中,假设您具有使用其中一种支持的语言编码、编译和部署程序的经验。

您可以将代码组织到 Lambda 函数。只有在需要时 Lambda 才运行您的函数,并且能自动扩展,从每天几个请求扩展到每秒数千个请求。您只需为消耗的计算时间付费 – 代码未运行时不产生费用。

您可以使用 Lambda API 调用 Lambda 函数,或者 Lambda 也可以运行函数来响应来自其他Amazon服务的事件。例如,您可以使用 Lambda:

  • 为Amazon服务(例如 Amazon Simple Storage Service (Amazon S3) 和 Amazon DynamoDB)构建数据处理触发器。

  • 处理存储在 Amazon Kinesis 中的串流数据。

  • 创建自己的以 Amazon 扩展、性能和安全性运行的后端。

Lambda 是一项高度可用的服务。有关更多信息,请参阅 Amazon Lambda 服务等级协议

应在何时使用 Lambda?

Lambda 是很多应用程序场景的理想计算服务,只要您可以在 Lambda 标准运行时环境和 Lambda 提供的资源中运行应用程序代码。Lambda 最适合于持续时间较短的事件驱动型工作负载,因为 Lambda 函数每次调用最多可运行 15 分钟。

使用 Lambda 时,您只负责您的代码。Lambda 管理提供内存、CPU、网络和其他资源均衡的计算机群,以运行代码。由于 Lambda 管理这些资源,因此您无法在提供的运行时上登录计算实例或自定义操作系统。Lambda 代表您执行操作和管理活动,包括管理容量、监控并记录 Lambda 函数。

如果您需要管理自己的计算资源,Amazon 还提供了其他计算服务以满足您的需求。例如:

  • Amazon Elastic Compute Cloud (Amazon EC2) 提供多种 EC2 实例类型可供选择。它能让您自定义操作系统、网络和安全设置以及整个软件堆栈。您将负责预置容量、监控服务器队列的运行状况和性能,并通过部署可用区来增强容错能力。

  • 您可使用 Amazon Elastic Beanstalk 将应用程序部署和扩展到 Amazon EC2 上。您将保留对底层 EC2 实例的所有权和完全控制权。

Lambda 功能

以下关键功能可帮助您开发可扩展、安全且易于扩展的 Lambda 应用程序:

并发和扩展控制

并发和扩展控制(如并发限制和预置并发)使您可以精细控制生产应用程序的扩展和响应能力。

定义为容器映像的函数

使用首选的容器镜像工具、工作流程和依赖项来构建、测试和部署 Lambda 函数。

代码签名

Lambda 的代码签名提供了信任和完整性控件,您可用来验证 Lambda 函数中是否只部署获得批准的开发人员发布的未更改的代码。

Lambda 扩展

您可以使用 Lambda 扩展来增强您的 Lambda 函数。例如,使用扩展程序可以更轻松地将 Lambda 与您喜欢的工具集成,用于监控、观察、安全和管控。

函数蓝图

函数蓝图提供了示例代码,演示如何将 Lambda 与其他Amazon服务或第三方应用程序结合使用。蓝图包括 Node.js 和 Python 运行时的示例代码和函数配置预设。

数据库访问

数据库代理管理数据库连接池并从函数中继查询。这使得函数能够在不耗尽数据库连接的情况下达到高并发级别。

文件系统访问

您可以配置函数以将 Amazon Elastic File System (Amazon EFS) 文件系统挂载到本地目录。借助 Amazon EFS,您的函数代码可以安全且高并发地访问和修改共享资源。

Lambda 入门

为了有效地使用 Lambda,您需要以下领域的编码经验和专业知识:

  • Linux 操作系统和命令,以及进程、线程和文件权限等概念。

  • 云概念和 IP 联网概念(适用于公有和私有网络)。

  • 分布式计算概念,例如作为 IPC 的 HTTP、队列、消息收发、通知和并发。

  • 熟悉安全服务和概念:Amazon Identity and Access Management (IAM) 和访问控制原则,以及 Amazon Key Management Service (Amazon 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 函数

Amazon还提供了以下资源用于学习无服务器应用程序,以及 Lambda:

Lambda 与其他Amazon服务集成以根据您指定的事件调用函数。例如:

  • 使用 API Gateway 为将 HTTP 请求路由到 Lambda 函数的 Web API 提供安全且可扩展的网关。

  • 对于生成队列或数据流的服务(例如 DynamoDBKinesis),Lambda 轮询来自服务的队列或数据流,然后调用函数来处理接收到的数据。

  • 定义调用 Lambda 函数以处理 Amazon S3 对象的 Amazon S3 事件,例如,在创建或删除对象时。

  • 使用 Lambda 函数处理 Amazon SQS 消息或 Amazon Simple Notification Service (Amazon SNS) 通知。

  • 使用 Amazon Step Functions 将 Lambda 函数连接到称为状态机的无服务器工作流程中。

访问 Lambda

您可以使用以下任意接口创建、调用和管理 Lambda 函数:

  • Amazon 管理控制台 – 提供 Web 界面供您访问函数。有关更多信息,请参阅Lambda 控制台

  • Amazon Command Line Interface (Amazon CLI) – 提供了适用于大量 Amazon 服务(包括 Lambda)的命令,并在 Windows、macOS 和 Linux 上受支持。有关更多信息,请参阅将 Lambda 与 Amazon CLI 结合使用

  • Amazon开发工具包 – 提供特定于语言的 API 并管理许多连接详细信息,例如签名计算、请求重试处理和错误处理。有关更多信息,请参阅 Amazon 开发工具包

  • Amazon CloudFormation – 您可创建定义 Lambda 应用程序的模板。有关更多信息,请参阅Amazon Lambda 应用程序。Amazon CloudFormation 还支持 Amazon Cloud Development Kit (CDK).

  • Amazon Serverless Application Model (Amazon SAM) – 提供模板和 CLI 来配置和管理Amazon无服务器应用程序。有关更多信息,请参阅Amazon SAM

Lambda 定价

创建 Lambda 函数不收取额外费用。运行函数以及在 Lambda 和其他Amazon服务之间传输数据需要支付费用。某些可选 Lambda 功能(例如预配置并发)也会产生费用。有关更多信息,请参阅 Amazon Lambda定价