什么是 AWS Lambda?Lambda 函数及其示例
在了解AWS Lambda 函数之前,我们先来了解一下:
什么是无服务器?
无服务器是一个术语,通常指无服务器应用程序。无服务器应用程序不需要任何服务器配置,也不需要管理服务器。
什么是AWS Lambda?
AWS Lambda 是一个事件驱动的无服务器计算平台,由 Amazon 作为一部分 Amazon Web 服务。因此,您无需担心要启动哪些 AWS 资源,也无需担心如何管理它们。相反,您只需将代码放在 Lambda 上,它就会运行。
在 AWS Lambda 中,代码是根据 AWS 服务中事件的响应执行的,例如在 S3 存储桶中添加/删除文件、来自 Amazon API 网关等。然而, Amazon Lambda 只能用于执行后台任务。
AWS Lambda 函数可帮助您专注于核心产品和业务逻辑,而不是管理操作系统 (OS) 访问控制、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 社交网络。
- AWS Lambda 可用于处理 CloudTrail 日志
- API 网关允许您通过 GET/POST 方法触发 AWS Lambda。
AWS Lambda Concepts
功能:
函数是在 AWS Lambda 中运行的程序或脚本。Lambda 将调用事件传递到您的函数中,该函数处理事件并返回其响应。
运行时:
运行时允许使用多种语言的函数在同一基本执行环境中运行。这有助于您在运行时配置函数。它还匹配您选择的 编程语言.
事件来源:
事件源是 AWS 服务,例如 Amazon SNS,或者自定义服务。这个触发器函数可以帮助你执行它的逻辑。
Lambda 层:
Lambda 层是库、自定义运行时和其他重要函数依赖项的重要分发机制。此 AWS 组件还可以帮助您将开发函数代码与其使用的不变代码和资源分开管理。
日志流:
日志流允许您使用自定义日志语句注释您的函数代码,这有助于您分析 AWS Lambda 函数的执行流程和性能。
如何使用 AWS Lambda
现在,我们将学习如何使用 AWS Lambda 和 AWS Lambda 示例:
第一步)步骤 1)打开 AWS Lambda URL
转到 https://aws.amazon.com/lambda/ 并开始使用
第一步) 创建一个帐户
接下来,创建一个帐户或使用您现有的帐户登录
第一步)编辑代码并点击运行,
在下一个 Lambda 页面中,
- 编辑代码
- 点击运行
第一步)检查输出
您将看到输出
AWS Lambda 与 AWS EC2
以下是 AWS Lambda 和 EC2.
参数 | AWS Lambda | AWS EC2 |
---|---|---|
定义 | AWS Lambda 是一个平台即服务 (PaaS)。它可以帮助您运行和执行后端代码。 | AWS EC2 是一种基础设施即服务 (laaS)。它提供虚拟化计算资源。 |
灵活性 | 不提供任何灵活性来登录计算实例。它允许您选择自定义的操作系统或语言运行时。 | 提供选择各种实例、自定义操作系统、安全补丁和网络等的灵活性。 |
安装过程 | 您需要选择想要运行代码的环境并将代码推送到 AWS Lambda。 | 首次使用 EC2 时,您必须选择操作系统并安装所需的所有软件,然后将代码推送到 EC2 中。 |
环境限制 | 它仅限于少数几种语言。 | 没有环境限制。 |
AWS Lambda 与 AWS Elastic Beanstalk
以下是 AWS Lambda 和 Elastic Beanstalk 之间的一些主要区别。
参数 | AWS 弹性豆茎 | AWS Lambda |
---|---|---|
主要任务 | 在 AWS 云上部署和管理应用程序,无需担心运行这些应用程序的基础设施。 | AWS Lambda 用于运行和执行您的后端代码。您不能使用它来部署应用程序。 |
AWS 资源的选择 | 它让您自由选择 AWS 资源;例如,您可以根据您的应用程序选择最佳的 EC2 实例。 | 您无法选择 AWS 资源,例如 EC2 实例类型,Lambda 会根据您的工作负载提供资源。 |
系统类型 | 它是一个有状态的系统。 | 它是一个无国籍的系统。 |
AWS Lambda 的用例
AWS Lambda 适用于多种应用,例如:
- 帮助您进行 ETL 流程
- 允许您执行实时文件处理和实时流处理
- 用于创建 Web 应用程序
- 用于 Amazon Alexa Chatbots 等产品 Amazon 回声/ Alexa
- 数据处理(实时流分析)
- 自动备份日常任务
- 可扩展后端(移动应用程序、物联网设备)
- 帮助您执行服务器端后端逻辑
- 允许您过滤和转换数据
Lambda 函数的最佳实践
以下是一些最佳实践 AWS Lambda 函数:
- 使用正确的“超时”。
- 利用 /temp 文件夹中 500MB 大小的本地存储功能
- 尽量减少使用与处理当前事件不直接相关的启动代码。
- 您应该使用 Lambda 函数的内置 CloudWatch 监控来查看和优化请求延迟。
何时不使用 AWS Lambda
以下情况表明 Lambda 肯定不是理想的选择:
- 不适合使用依赖于调用底层 Windows RPC
- 如果用于具有许可协议的定制软件应用程序,如MS-Office文档处理, Oracle 数据库等
- AWS Lambda 不应用于自定义硬件进程,例如 GPU 加速、硬件亲和性。
使用 AWS Lambda 的优势
以下是使用 AWS lambda 的优点/好处:
- AWS Lambda 是一种高度灵活的工具,可用于
- 它可以帮助您授予对资源(包括 VPC)的访问权限
- 直接与作者 WYSIWYG编辑 在控制台中。
- 您可以将其用作 Eclipse 和 Visual Studio中.
- 由于它是无服务器架构,您无需担心管理或配置服务器。
- 您无需设置任何 虚拟机.
- 帮助开发人员无需构建任何基础设施即可运行并执行代码对事件的响应。
- 您只需要在代码运行时计算所花费的时间。
- 您可以通过CloudWatch实时监控您的代码性能。
- 它允许您无需配置或管理任何其他服务器即可运行代码
- 帮助您仅在需要时执行代码
- 您可以自动扩展它以处理每天几个请求,甚至每秒支持数千个以上的请求。
- AWS Lambda 可以借助外部事件计时器进行配置以执行计划任务。
- AWS 中的 Lambda 函数应该配置外部事件和计时器,以便用于调度。
- Lambda 函数是无状态的,因此可以快速扩展。
- AWS Lambda 速度很快,可以在几毫秒内执行您的代码。
AWS Lambda 的局限性
以下是使用 AWS Lambda 的缺点/劣势:
- AWS Lambda 工具不适合小型项目。
- AWS Lambda 完全依赖 AWS 的基础设施,因此如果您的代码需要,您无法安装任何其他软件。
- 并发执行限制为 100
- AWS Lambda 完全依赖于 AWS 的基础设施;如果您的代码需要,您无需安装任何其他软件。
- 其内存容量可在 128 至 1536 MB 之间变化。
- 事件请求不应超过 128 KB。
- Lambda 函数可帮助您仅在 CloudWatch 中写入日志。这是唯一允许您监控或排除函数故障的工具。
- 其代码执行超时仅为5分钟。
总结
- Serverless 是一个术语,通常指无服务器应用程序。
- AWS Lambda 就是这样一种无服务器计算服务。因此,您无需担心要启动哪些 AWS 资源,或者它们将如何管理这些资源。
- 函数是在 AWS 无服务器 Lambda 中运行的程序或脚本。
- 运行时允许多种语言的函数在相同的基础执行环境中运行。
- 事件源是 AWS 服务,例如 Amazon SNS,或者说是定制服务。
- Lambda 层是库、自定义运行时和其他重要函数依赖项的重要分发机制。
- 日志流允许您使用自定义日志语句注释您的函数代码,这有助于您分析 Lambda 函数的执行流程和性能。
- AWS Lambda 是一个平台即服务 (PaaS)。它可以帮助您运行和执行后端代码。
- AWS EC2 是一种基础设施即服务 (laaS)。它提供虚拟化计算资源。
- 在 AWS 云上部署和管理应用程序,无需担心运行这些应用程序的基础设施。
- AWS Lambda 用于运行和执行您的后端代码。您不能使用它来部署应用程序。
- AWS Lambda 可帮助您 ETL过程.
- AWS 中 Lambda 函数的最佳实践是使用正确的“超时”。
- 不适合使用依赖于调用底层 Windows RPC
- AWS Lambda 是一种高度灵活的工具。
- AWS Lambda 工具不适合小型项目。
- 使用 AWS Lambda 时会触发的常见事件是插入、更新和删除 Dynamo DB 表的数据。