在讨论 AWS Lambda 函数之前,我们先了解一下:
什么是无服务器?
无服务器 是一个术语,通常是指无服务器应用程序。无服务器应用程序是不需要任何服务器配置且不需要管理服务器的应用程序。
什么是 AWS Lambda?
AWS Lambda 是由 Amazon 作为 Amazon Web Services 的一部分提供的事件驱动的无服务器计算平台。因此,你无需担心要启动哪些 AWS 资源,或者你将如何管理它们。相反,你只需要将代码放在 Lambda 上,然后它就会运行。
在 AWS Lambda 中,代码是根据 AWS 服务中的事件响应执行的,例如在 S3 存储桶中添加/删除文件、来自 Amazon API 网关的 HTTP 请求等。但是,Amazon Lambda 只能用于执行后台任务。
AWS Lambda 功能可以帮助你专注于核心产品和业务逻辑,而不是管理操作系统 (OS) 访问控制、操作系统修补、调整大小、预置、扩展等。
AWS Lambda 是如何工作的?
以下带有框图的 AWS Lambda 示例通过几个简单的步骤解释了 AWS Lambda 的工作原理:
第 1 步:首先以 AWS Lambda 支持的任何语言上传你的 AWS Lambda 代码。Java、Python、Go 和 C# 是 AWS Lambda 函数支持的语言。
第 2 步:这些是一些允许你触发 AWS Lambda 的 AWS 服务。
第 3 步: AWS Lambda 帮助你上传代码和应该触发的事件详细信息。
第 4 步:在 AWS 服务触发时执行 AWS Lambda 代码:
第 5 步: AWS 仅在 AWS lambda 代码执行时收费,否则不收费。
这将在以下情况下发生:
- 在 S3 存储桶中上传文件
- 当 HTTP get/post 端点 URL 被命中时
- 用于添加/修改和删除 Dynamo DB 表
- 在数据流收集过程中
- 推送通知
- 网站托管
- 电子邮件发送
注意:只有在 AWS Lambda 代码被执行时,AWS才会收费,否则你无需支付任何费用。
触发 AWS Lambda 的事件
以下是你使用 AWS Lambda 时将触发的事件。
- 插入、更新和删除数据 Dynamo DB 表
- 在 SNS 中包含推送通知
- 在 CloudTrail 中搜索日志历史记录
- 进入 S3 对象
- 每当表中有数据添加、修改和删除时,DynamoDB 都可以触发 AWS Lambda。
- 帮助你安排事件以定期模式执行任务。
- 修改 S3 存储桶中的对象
- 从 Amazon SNS 发送的通知。
- AWS Lambda 可用于处理 CloudTrail 日志
- API Gateway 允许你在 GET/POST 方法上触发 AWS Lambda。
AWS Lambda 概念
功能:
函数是在 AWS Lambda 中运行的程序或脚本。Lambda 将调用事件传递给你的函数,该函数处理事件并返回其响应。
运行时:
运行时允许在同一基本执行环境中运行的各种语言的函数。这有助于你在运行时配置函数。它还与你选择的编程语言相匹配。
事件来源:
事件源是 AWS 服务(例如 Amazon SNS)或自定义服务。此触发器功能可帮助你执行其逻辑。
Lambda 层:
Lambda 层是库、自定义运行时和其他重要函数依赖项的重要分发机制。此 AWS 组件还可以帮助你将开发功能代码与其使用的不变代码和资源分开管理。
日志流:
日志流允许你使用自定义日志语句注释你的函数代码,从而帮助你分析 AWS Lambda 函数的执行流程和性能。
如何使用 AWS Lambda
现在,我们将学习如何将 AWS Lambda 与 AWS Lambda 示例一起使用:
Step1:打开 AWS Lambda URL
转到 https://aws.amazon.com/lambda/ 并开始使用
Step2:创建一个帐户
接下来,创建一个帐户或使用你现有的帐户登录
Step3:编辑代码并单击运行,
在下一个 Lambda 页面中,
- 编辑代码
- 单击运行
Step4:检查输出
你会看到输出
AWS Lambda 与 AWS EC2 的区别
参数 | AWS Lambda | AWS EC2 |
---|---|---|
定义 | AWS Lambda 是一种平台即服务 (PaaS)。它可以帮助你运行和执行后端代码。 | AWS EC2 是一种基础设施即服务 (laaS)。它提供虚拟化计算资源。 |
灵活性 | 不提供任何登录计算实例的灵活性。它允许你选择自定义的操作系统或语言运行时。 | 提供选择各种实例、自定义操作系统、安全补丁和网络等的灵活性。 |
安装过程 | 你需要选择要在其中运行代码并将代码推送到 AWS Lambda 的环境。 | 第一次在 EC2 中,你必须选择操作系统并安装所需的所有软件,然后在 EC2 中推送你的代码。 |
环境限制 | 它仅限于少数语言。 | 没有环境限制。 |
AWS Lambda 与 AWS Elastic Beanstalk 的区别
参数 | AWS Elastic Beanstalk | AWS Lambda |
---|---|---|
主要任务 | 在 AWS 云上部署和管理应用程序,无需担心运行这些应用程序的基础设施。 | AWS Lambda 用于运行和执行你的后端代码。你不能使用它来部署应用程序。 |
AWS 资源的选择 | 它让你可以自由选择 AWS 资源;例如,出可以根据你的应用选择最佳的 EC2 实例。 | 你无法选择 AWS 资源,例如某种类型的 EC2 实例,Lambda 根据你的工作负载提供资源。 |
系统类型 | 它是一个有状态的系统。 | 它是一个无状态系统。 |
AWS Lambda 使用案例
- 帮助你进行 ETL 流程
- 允许你执行实时文件处理和实时流处理
- 用于创建 Web 应用程序
- 在 Alexa Chatbots 和 Amazon Echo/Alexa 等亚马逊产品中使用
- 数据处理(实时流分析)
- 日常任务的自动备份
- 可扩展的后端(移动应用程序、物联网设备)
- 帮助你执行服务器端后端逻辑
- 允许你过滤和转换数据
Lambda 函数的最佳实践
- 使用正确的 “timeout”
- 利用 /temp 文件夹中 500MB 的本地存储功能
- 尽量减少使用与处理当前事件没有直接关系的启动代码。
- 你应该使用 Lambda 函数的内置 CloudWatch 监控来查看和优化请求延迟。
哪些场景不适合 AWS Lambda
- 不适合使用依赖于调用底层 Windows RPC 的 AWS Lambda 软件包或应用程序
- If 用于具有许可协议的自定义软件应用程序,例如 MS-Office 文档处理、Oracle 数据库等。
- AWS Lambda 不应用于自定义硬件过程,例如 GPU 加速、硬件亲和性。
使用 AWS Lambda 的优势
- AWS Lambda 是一个高度灵活的使用工具
- 它可以帮助你授予对资源的访问权限,包括 VPC
- 在控制台中直接使用所见即所得编辑器进行创作。
- 你可以将它用作 Eclipse 和 Visual Studio 的插件。
- 由于它是无服务器架构,因此你无需担心管理或配置服务器。
- 你不需要设置任何虚拟机。
- 帮助开发人员在不构建任何基础架构的情况下运行和执行代码对事件的响应。
- 只有在代码运行时,你才需要计算所花费的时间。
- 你可以通过 CloudWatch 实时监控代码性能。
- 它允许你在不配置或管理任何其他服务器的情况下运行你的代码
- 帮助你仅在需要时执行代码
- 你可以自动扩展它以每天处理几个请求,甚至每秒支持超过数千个请求。
- AWS Lambda 可以在外部事件计时器的帮助下进行配置,以执行计划任务。
- AWS 中的 Lambda 函数应配置外部事件和计时器,因此;它可以用于调度。
- Lambda 函数是无状态的,因此可以快速扩展。
- AWS Lambda 速度很快,因此它会在几毫秒内执行你的代码。
AWS Lambda 的限制
- AWS Lambda 工具不适合小型项目。
- AWS Lambda 完全依赖 AWS 作为基础设施,因此如果你的代码需要,你无法安装任何其他软件。
- 并发执行限制为 100
- AWS Lambda 的基础设施完全依赖 AWS;如果你的代码需要,你不能安装任何其他软件。
- 它的内存容量可以在 128 到 1536 MB 之间变化。
- 事件请求不应超过 128 KB。
- Lambda 函数可帮助你仅在 CloudWatch 中写入其日志。这是唯一允许你监控或排除功能故障的工具。
- 它的代码执行超时时间仅为 5 分钟。
总结
以上就是关于AWS Lambda 的介绍和简单的使用方法概述,我认为 AWS Lambda 将成为新的 AWS 基础计算模块,就像很多 AWS 服务都以 EC2 为基础一样,也会有很多服务以 Lambda 为基础来提供。
如果你想学习更多 AWS Lambda 方面的知识,推荐一套不错的Udemy课程:AWS Lambda and the Serverless Framework – Hands On Learning
主要讲的是,如何使用无服务器开发和部署 AWS Lambda 函数,以及 Lambda 与 Amazon Web Services 的集成。
如果本站的内容对你有帮助,可以点击这儿,不花一分钱捐赠本站