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

什么是 AWS Lambda?

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

注意

在 AWS Lambda Developer Guide 中,我们假设您具有使用其中一种支持的语言编码、编译和部署程序的经验。

您可以将代码组织成 Lambda 函数。Lambda 仅在需要时运行函数,并自动扩展,从每天几个请求扩展到每秒数千个请求。您只需按使用的计算时间付费,代码未运行时不产生费用。

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

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

  • 处理存储在 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 联网概念(适用于公有和私有网络)。

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

  • 熟悉安全服务和概念: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 网关 为将 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 界面供您访问函数。有关更多信息,请参阅在控制台中配置函数

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

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

  • AWS CloudFormation – 使您能够创建定义 Lambda 应用程序的模板。有关更多信息,请参阅AWS Lambda 应用程序。AWS CloudFormation 还支持 AWS 云开发工具包 (AWS CDK).

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

Lambda 定价

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