什么是 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 的用户,我们建议您从以下主题开始,以帮助您学习基础知识:
-
参阅 Lambda 产品概述
并浏览 Lambda 入门 页面。 -
要使用 Lambda 控制台创建和测试 Lambda 函数,请尝试基于控制台的入门练习。本练习将教您关于 Lambda 编程模型和其他概念。
-
如果您熟悉容器镜像工作流程,请尝试入门练习来创建定义为容器镜像的 Lambda 函数。
Amazon还提供了以下资源用于学习无服务器应用程序,以及 Lambda:
-
Amazon计算博客
包含有关 Lambda 的有用文章。 -
Amazon 无服务器
提供与 Amazon 无服务器开发相关的博客、视频和培训。 -
Amazon在线技术讲座
YouTube 频道包含 Lambda 相关主题的视频。有关无服务器应用程序以及 Lambda 的概述,请参阅 Amazon Lambda 与无服务器应用程序简介视频 。
相关服务
Lambda 与其他Amazon服务集成以根据您指定的事件调用函数。例如:
-
使用 API Gateway 为将 HTTP 请求路由到 Lambda 函数的 Web API 提供安全且可扩展的网关。
-
对于生成队列或数据流的服务(例如 DynamoDB 和 Kinesis),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定价