什么是 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 管理提供内存、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 (Amazon CDK)

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

Lambda 定价

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