什么是 AWS Lambda?Lambda 函数示例
在 AWS Lambda 函数之前,让我们先了解一下
什么是无服务器(Serverless)?
无服务器(Serverless)是一个术语,通常指无服务器应用程序。无服务器应用程序是指那些不需要预配服务器,也不需要管理服务器的应用程序。
什么是 AWS Lambda?
AWS Lambda 是亚马逊提供的一个事件驱动的无服务器计算平台,作为 Amazon Web Services 的一部分。因此,您无需担心启动哪些 AWS 资源,或如何管理它们。只需将代码放到 Lambda 上,它就会运行。
在 AWS Lambda 中,代码的执行基于 AWS 服务中的事件响应,例如在 S3 存储桶中添加/删除文件、来自 Amazon API 网关的 HTTP 请求等。但是,Amazon Lambda 只能用于执行后台任务。
AWS Lambda 函数可帮助您专注于核心产品和业务逻辑,而不是管理操作系统(OS)访问控制、OS 补丁、容量调整、预配、扩展等。
AWS Lambda 如何工作?
以下 AWS Lambda 示例附带框图,用几个简单的步骤解释了 AWS Lambda 的工作原理
第一步: 首先,用 AWS Lambda 支持的任何语言上传您的 AWS Lambda 代码。 Java、Python、Go 和 C# 是一些 AWS Lambda 函数支持的语言。
第二步: 以下是一些允许您触发 AWS Lambda 的 AWS 服务。
第三步: AWS Lambda 帮助您上传代码以及它应该被触发的事件详细信息。
第四步: 当 AWS 服务触发 AWS Lambda 时执行 AWS Lambda 代码
第五步: 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 将调用事件传递到您的函数,该函数处理事件并返回其响应。
运行时(Runtimes)
运行时允许使用相同的基本执行环境运行各种语言的函数。这有助于您在运行时配置函数。它还匹配您选择的 编程语言。
事件源(Event source)
事件源是 AWS 服务,例如 Amazon SNS,或自定义服务。这个触发函数帮助您执行其逻辑。
Lambda Layers
Lambda Layers 是分发库、自定义运行时和其他重要函数依赖项的重要机制。这个 AWS 组件还有助于您将开发函数代码与它使用的不变代码和资源分开管理。
日志流(Log streams)
日志流允许您使用自定义日志语句来注解您的函数代码,这有助于您分析 AWS Lambda 函数的执行流程和性能。
如何使用 AWS Lambda
现在,我们将通过 AWS Lambda 示例学习如何使用 AWS Lambda
步骤 1) 步骤 1) 打开 AWS Lambda URL
访问 https://aws.amazon.com/lambda/ 并开始使用
步骤 2) 创建账户
接下来,创建账户或使用您的现有账户登录
步骤 3) 编辑代码并点击运行,
在下一个 Lambda 页面上,
- 编辑代码
- 点击运行
步骤 4) 检查输出
您将看到输出
AWS Lambda 与 AWS EC2 对比
以下是 AWS Lambda 和 EC2 之间的一些主要区别。
参数 | AWS Lambda | AWS EC2 |
---|---|---|
定义 | AWS Lambda 是一种平台即服务(PaaS)。它帮助您运行和执行后端代码。 | AWS EC2 是一种基础设施即服务(IaaS)。它提供虚拟化的计算资源。 |
灵活性 | 不提供登录计算实例的任何灵活性。它允许您选择定制的操作系统或语言运行时。 | 提供选择各种实例、自定义操作系统、安全补丁和网络等的灵活性。 |
安装过程 | 您需要选择要在其中运行代码的环境,并将代码推送到 AWS Lambda。 | 对于 EC2 首次使用,您需要选择操作系统并安装所有必需的软件,然后才能将代码推送到 EC2。 |
环境限制 | 它仅限于少数语言。 | 没有环境限制。 |
AWS Lambda 与 AWS Elastic Beanstalk 对比
以下是 AWS Lambda 和 Elastic Beanstalk 之间的一些主要区别。
参数 | AWS Elastic Beanstalk | AWS Lambda |
---|---|---|
主要任务 | 在 AWS Cloud 上部署和管理应用程序,而无需担心运行这些应用程序的基础设施。 | AWS Lambda 用于运行和执行您的后端代码。您不能用它来部署应用程序。 |
AWS 资源选择 | 它为您提供了选择 AWS 资源的自由;例如,您可以选择适合您应用程序的 EC2 实例。 | 您无法选择 AWS 资源,例如 EC2 实例类型,Lambda 会根据您的工作负载提供资源。 |
系统类型 | 它是状态有系统的。 | 它是无状态的系统。 |
AWS Lambda 的用例
AWS Lambda 用于各种应用程序,例如
- 帮助您进行 ETL 过程
- 允许您执行实时文件处理和实时流处理
- 用于创建 Web 应用程序
- 用于 Amazon 产品,如 Alexa Chatbots 和 Amazon Echo/Alexa
- 数据处理(实时流分析)
- 日常任务的自动备份
- 可扩展的后端(移动应用程序、物联网设备)
- 帮助您执行服务器端后端逻辑
- 允许您过滤和转换数据
Lambda 函数的最佳实践
以下是 AWS Lambda 函数的一些最佳实践
- 使用正确的“超时”设置。
- 利用大小为 500MB 的本地存储功能,位于 /temp 文件夹中。
- 最小化与处理当前事件无关的启动代码的使用。
- 您应该使用 Lambda 函数的内置 CloudWatch 监控来查看和优化请求延迟。
何时不应使用 AWS Lambda
以下是 Lambda 绝对不是理想选择的情况
- 不适合使用依赖于调用底层 Windows RPC 的 AWS Lambda 软件包或应用程序。
- 如果用于具有许可协议的自定义软件应用程序,例如 MS-Office 文档处理、Oracle 数据库等。
- 不应将 AWS Lambda 用于自定义硬件进程,例如 GPU 加速、硬件亲和性。
使用 AWS Lambda 的优点
以下是使用 AWS lambda 的优点/好处
- AWS Lambda 是一个高度灵活的工具
- 它帮助您授予对资源的访问权限,包括 VPC。
- 在控制台中直接使用 所见即所得编辑器 进行作者。
- 您可以将其用作 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 Layers 是分发库、自定义运行时和其他重要函数依赖项的重要机制。
- 日志流允许您使用自定义日志语句来注解您的函数代码,这有助于您分析 Lambda 函数的执行流程和性能。
- AWS Lambda 是一种平台即服务(PaaS)。它帮助您运行和执行后端代码。
- AWS EC2 是一种基础设施即服务(IaaS)。它提供虚拟化的计算资源。
- 在 AWS Cloud 上部署和管理应用程序,而无需担心运行这些应用程序的基础设施。
- AWS Lambda 用于运行和执行您的后端代码。您不能用它来部署应用程序。
- AWS Lambda 可帮助您进行 ETL 过程。
- AWS Lambda 函数的最佳实践是使用正确的“超时”设置。
- 不适合使用依赖于调用底层 Windows RPC 的 AWS Lambda 软件包或应用程序。
- AWS Lambda 是一个高度灵活的工具。
- AWS Lambda 工具不适合小型项目。
- 使用 AWS Lambda 时将触发的常见事件是插入、更新和删除 Dynamo DB 表中的数据。