AWS Lambda 是亚马逊 Web 服务(AWS)提供的一种无服务器计算服务,旨在简化应用程序的部署和管理。通过 Lambda,开发者可以运行代码而无需担心服务器的配置、维护或扩展。Lambda 支持多种编程语言,并通过自动扩展和按需计费的方式为用户提供灵活、经济高效的计算解决方案。无论是在构建微服务、处理数据流,还是响应实时事件,AWS Lambda 都能提供强大的支持,是现代云计算环境中不可或缺的工具之一。我们Oncloud AI通过本文帮助您详细探讨 AWS Lambda。
介绍
- AWS Lambda 让您无需预置或管理服务器即可运行代码。您只需为您使用的计算时间付费 – 代码未运行时无需付费。
- 使用 Lambda,您可以为几乎任何类型的应用程序或后端服务运行代码 – 无需任何管理。只需上传您的代码,Lambda 就会处理运行和扩展代码所需的一切,并且具有高可用性。
- 您可以设置代码以自动从其他 AWS 服务触发,或者直接从任何 Web 或移动应用程序调用它。
AWS 上的大数据分析选项是一个包含不同文章的系列,这些文章提供了 AWS 上不同大数据分析选项的基本介绍。每篇文章都涵盖了有关如何使用每项服务来收集、处理、存储和分析大数据的详细指南。
理想的使用模式
- AWS Lambda 可让您运行代码以响应触发事件,例如数据更改、系统状态转变或用户操作。Lambda 可由 AWS 服务(例如 Amazon S3、DynamoDB、Amazon Kinesis Data Streams、Amazon Simple Notification Service (Amazon SNS) 和 Amazon CloudWatch)直接触发,从而让您能够构建各种实时数据处理系统:
- 实时文件处理– 您可以触发 Lambda 来调用将文件上传到 Amazon S3 或修改后的过程。例如,将图像上传到 Amazon S3 后,将其从彩色更改为灰度。
- 实时流处理– 您可以使用 Kinesis Data Streams 和 Lambda 处理流数据以进行点击流分析、日志过滤和社交媒体分析。
- 提取、转换、加载 (ETL) – 您可以使用 Lambda 运行代码来转换数据并将数据从一个数据存储库加载到另一个数据存储库。
- 替代 Cron – 使用计划表达式定期运行 Lambda 函数,这是一种比在 EC2 实例上运行 cron 更便宜、更可用的解决方案。
- 处理 AWS 事件– 许多其他服务(例如 AWS CloudTrail)可以通过登录到 Amazon S3 并使用 S3 存储桶通知来触发 Lambda 函数,从而充当事件源。
成本模型
- 使用 AWS Lambda,您只需按实际使用量付费。费用取决于您函数的请求数量和代码运行时间。
- Lambda 免费套餐包括每月 100 万个免费请求和每月 400,000 GB-秒的计算时间。此后,每 100 万个请求将收取 0.20 美元(每个请求 0.0000002 美元)。此外,代码运行时间的价格与分配的内存有关。每 GB-秒的使用将收取 0.00001667 美元。
有关更多详细信息,请参阅 AWS Lambda 定价。
表现
- 首次将代码部署到 Lambda 后,您的函数通常在上传后几秒内即可调用。Lambda 旨在在几毫秒内处理事件。
- 在创建、更新 Lambda 函数后或最近未使用时,延迟会立即增加。为了提高性能,Lambda 可能会选择保留函数的一个实例并重新使用它来处理后续请求,而不是创建新的副本。
- Lambda 预配置并发功能让客户能够更好地控制任何规模的无服务器应用程序的性能。
- 使用预配置并发的函数以一致的启动延迟运行,使其成为构建交互式移动或 Web 后端、延迟敏感的微服务和同步调用的 API 的理想选择。
- 通过预配置的并发性,函数可以立即处理突发流量,并且每次调用在指定的规模内都具有一致的启动延迟。
- 要了解有关 Lambda 如何重用函数实例的更多信息,请参阅 Lambda 入门。您的代码不应假设这种重用将始终发生。
耐用性和可用性
- AWS Lambda 旨在使用复制和冗余来为服务本身及其运行的 Lambda 函数提供高可用性。
- 两者都没有维护时段或计划停机时间。发生故障时,同步调用的 Lambda 函数会以异常响应。
- 异步调用的 Lambda 函数至少会重试三次,之后事件可能会被拒绝。
可扩展性和弹性
- 您可以运行的 Lambda 函数数量没有限制。但是,Lambda 的默认安全限制是每个区域每个账户 1,000 次并发运行。
- AWS 支持团队的成员可以增加此限制。Lambda 旨在代表您自动扩展。扩展函数没有基本限制。Lambda 动态分配容量以匹配传入事件的速率。
接口
- Lambda 函数可以通过多种方式进行管理。您可以使用 Lambda 控制台中的仪表板轻松列出、删除、更新和监控您的 Lambda 函数。您还可以使用 AWS CLI 和 AWS SDK 来管理您的 Lambda 函数。
- 您可以从 AWS 事件触发 Lambda 函数,例如 Amazon S3 存储桶通知、Amazon DynamoDB Streams、Amazon CloudWatch logs、Amazon Simple Email Service (Amazon SES)、Amazon Kinesis Data Streams、Amazon SNS、Amazon Cognito 等。
- 任何支持 AWS CloudTrail 的服务中的任何 API 调用都可以通过响应 CloudTrail 审计日志在 Lambda 中作为事件进行处理。有关事件源的更多信息,请参阅 Lambda 事件源。
- AWS Lambda 支持用 Node.js (JavaScript)、Python、Java(兼容 Java 8)、C# (.NET Core)、Go、PowerShell 和 Ruby 编写的代码。您的代码可以包含现有库,甚至是本机库。请参阅有关使用 Node.js、Python、Java、C#、Go、PowerShell 和 Ruby 的 AWS 文档。
- 您可以使用 Docker CLI 等工具将 Lambda 函数代码和依赖项打包为容器映像。然后,您可以将映像上传到托管在 Amazon ECR 上的容器注册表。请注意,您必须从与 Amazon ECR 中的容器注册表相同的账户创建 Lambda 函数。
反模式
- AWS Lambda 具有以下反模式:
- 长时间运行的应用程序— 每个 Lambda 函数必须在 900 秒内完成。对于可能需要作业运行时间超过 15 分钟的长时间运行的应用程序,建议使用 Amazon EC2、Amazon EKS 或 Amazon ECS。或者,您可以使用 Step Functions。
- 动态网站— 虽然可以使用 AWS Lambda 运行静态网站,但运行高度动态且容量大的网站可能会影响性能。建议使用 Amazon EC2、Amazon EKS 或 Amazon ECS 和 AWS CloudFormation。
- 有状态应用程序— Lambda 代码必须以“无状态”风格编写,这意味着它应该假设与底层计算基础设施没有任何关联。本地文件系统访问、子进程和类似工件不得超出请求的生命周期,任何持久状态都应存储在 Amazon S3、DynamoDB 或其他可通过互联网使用的存储服务中。
Oncloud AI作为AWS代理商,提供亚马逊云服务,支持亚马逊云服务器AWS代付、AWS迁移、AWS运维托管等服务,如有相关需求可联系Oncloud AI。