什么是 AWS Lambda?Lambda 函数及其示例

⚡ 智能摘要

AWS Lambda 是一个事件驱动的无服务器计算平台。 Amazon Web 服务会在触发时运行您的代码,自动处理配置、扩展和服务器管理,让您只专注于业务逻辑。

  • ☁️ 无服务器模型: AWS Lambda 无需预置或管理服务器即可运行代码,从而省去了操作系统修补、扩展和容量规划等工作。
  • 事件驱动执行: 函数由 AWS 服务(例如 S3)触发, DynamoDBAPI 网关和 SNS 仅在事件发生时运行。
  • 🧩 语言支持: Lambda 支持 Node.js, Python, JavaGo、C# 和 Ruby,以及其他语言的自定义运行时。
  • ???? 按使用付费: Bill仅在代码执行期间有效,以毫秒为单位进行测量,每月提供一百万次请求的永久免费额度。
  • 🛠️ 核心概念: 函数、运行时、事件源、层和日志流定义了 Lambda 如何执行和管理代码。
  • 🤖 人工智能辅助: GitHub Copilot 和 Amazon Q 生成 Lambda 代码,而 Lambda 则通过以下方式协调生成式 AI 推理: Amazon 基岩。

什么是 AWS Lambda?

在探索 AWS Lambda 之前,了解无服务器的含义会很有帮助。

什么是无服务器?

无服务器(Serverless)一词通常指的是无服务器应用程序。无服务器应用程序不需要任何服务器资源,也不需要您管理服务器。

什么是AWS Lambda?

AWS Lambda 是一个事件驱动的无服务器计算平台,由 Amazon 作为一部分 Amazon Web 服务。因此,您无需担心要启动哪些 AWS 资源,也无需担心如何管理它们。您只需将代码放在 Lambda 函数中,它即可运行。

在 AWS Lambda 中,代码的执行基于 AWS 服务中事件的响应,例如在 S3 存储桶中添加或删除文件,以及来自服务器的 HTTP 请求。 Amazon API 网关及类似事件。然而, Amazon Lambda 只能用于执行后台任务。

AWS Lambda 函数可帮助您专注于核心产品和业务逻辑,而无需管理操作系统 (OS) 访问控制、操作系统补丁、合理调整大小、配置、扩展等。

AWS Lambda 如何工作?

以下带有框图的 AWS Lambda 示例通过几个简单的步骤解释了 AWS Lambda 的工作原理:

AWS Lambda 结构图

第三步: 首先使用 AWS Lambda 支持的任何语言上传您的 AWS Lambda 代码。 Java, PythonAWS Lambda 函数支持多种语言,包括 Go 和 C# 等。

第三步: 这些是一些允许您触发 AWS Lambda 的 AWS 服务。

第三步: AWS Lambda 帮助您上传代码以及应触发该代码的事件详细信息。

第三步: 当 AWS 服务触发时,执行 AWS Lambda 代码。

第三步: AWS 仅在 AWS Lambda 代码执行时收费,否则不收费。

这将在以下场景中发生:

  • 将文件上传到 S3 存储桶中
  • 当 HTTP GET/POST 端点 URL 被击
  • 用于添加、修改和删除 DynamoDB 表
  • 在数据流收集过程中
  • 推送通知
  • 网站托管
  • 电子邮件发送

注意: 您应该记住,只有当 AWS Lambda 代码执行时,您才会被收取 AWS 服务费用,否则您无需支付任何费用。

触发 AWS Lambda 的事件

以下是使用 AWS Lambda 时将触发的事件。

  • 在 DynamoDB 表中插入、更新和删除数据
  • 在 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

在MyCAD中点击 软件更新 https://aws.amazon.com/lambda/ 开始使用。

如何使用 AWS Lambda

步骤2) 创建账户

接下来,创建账户或使用现有账户登录。

如何使用 AWS Lambda

步骤3) 编辑代码并点击运行

在下一个 Lambda 页面中,编辑代码并单击“运行”。

步骤4) 检查输出

您将看到输出结果。

如何使用 AWS Lambda

AWS Lambda 与 AWS EC2

以下是 AWS Lambda 和 AWS Lambda 之间的一些主要区别 EC2.

参数 AWS Lambda AWS EC2
定义 AWS Lambda 是一个平台即服务 (PaaS)。它可以帮助您运行和执行后端代码。 AWS EC2 是一种基础设施即服务 (IaaS),它提供虚拟化计算资源。
灵活性 它不提供任何灵活的计算实例登录方式,但允许您选择自定义的操作系统或语言运行时。 可灵活选择各种实例、自定义操作系统、安全补丁和网络等。
安装过程 您需要选择要运行代码的环境,并将代码推送到 AWS Lambda。 首次使用 EC2 时,您必须选择操作系统并安装所需的所有软件,然后将代码推送到 EC2 中。
环境限制 它仅限于少数几种语言。 没有环境限制。

AWS Lambda 与 AWS Elastic Beanstalk

以下是 AWS Lambda 和 Elasticsearch 之间的一些主要区别。 Beanstalk.

参数 AWS 弹性 Beanstalk AWS Lambda
主要任务 在 AWS 云上部署和管理应用程序,无需担心运行这些应用程序的基础设施。 AWS Lambda 用于运行和执行后端代码。您不能使用它来部署应用程序。
AWS 资源的选择 它让您可以自由选择 AWS 资源;例如,您可以根据您的应用程序选择最佳的 EC2 实例。 您无法像选择 EC2 实例类型那样选择 AWS 资源;Lambda 会根据您的工作负载提供资源。
系统类型 它是一个有状态的系统。 它是一个无国籍的系统。

AWS Lambda 的用例

AWS Lambda 可用于各种应用场景,例如:

  • 帮助你 ETL过程
  • 允许您执行实时文件处理和实时流处理
  • 用于创建 Web 应用程序
  • 用于 Amazon Alexa Chatbots 等产品 Amazon 回声/ Alexa
  • 数据处理(实时流分析)
  • 日常任务的自动备份
  • 可扩展的后端(移动应用、物联网设备)
  • 帮助您执行服务器端后端逻辑
  • 允许您筛选和转换数据

Lambda 函数的最佳实践

以下是AWS Lambda函数的一些最佳实践:

  • 使用正确的“超时”。
  • 利用 /temp 文件夹中 500MB 大小的本地存储功能。
  • 尽量减少与处理当前事件没有直接关系的启动代码的使用。
  • 您应该使用 Lambda 函数的内置 CloudWatch 监控来查看和优化请求延迟。

何时不使用 AWS Lambda

以下几种情况,Lambda 肯定不是理想的选择:

  • 对于依赖调用底层函数的软件包或应用程序,使用 AWS 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 的基础设施,因此如果您的代码需要,您无法安装任何其他软件。
  • 每个区域的并发执行默认限制为 1,000,可根据要求增加。
  • 其内存容量可在 128 MB 至 10,240 MB 之间变化。
  • 事件请求不应超过 128 KB。
  • Lambda 函数可帮助您仅在 CloudWatch 中写入日志。这是唯一允许您监控或排除函数故障的工具。
  • 其代码执行超时时间限制为 15 分钟。

常见问题

AWS Lambda 原生支持 Node.js, Python, Java支持 Go、C#、PowerShell 和 Ruby。运行时 API 和容器镜像支持几乎可以运行任何其他语言,因此团队很少会受到其首选技术栈的限制。

AWS Lambda 提供每月 100 万次请求和 40 万 GB 秒计算量的永久免费额度。超出部分,您只需为实际使用的请求量和计算时间付费,按毫秒计费。

冷启动是指 Lambda 为处于空闲状态的函数初始化新的执行环境时出现的短暂延迟。您可以通过预置并发、更小的包或 SnapStart 来减少冷启动时间。 Java 功能。

是的。除了上传 ZIP 压缩包之外,Lambda 还允许你将函数打包成最大 10 GB 的容器镜像。这适用于较大的依赖项和机器学习库,同时保持……ping 采用相同的事件驱动、无服务器执行模型。

Lambda 函数运行短时、事件驱动型函数,支持自动扩展和按毫秒计费。AWS Fargate 函数运行更长时间的容器化工作负载,无需管理服务器。选择 Lambda 函数可快速响应事件,选择 Fargate 函数可稳定运行长时间的容器任务。

是的。Lambda 通常通过运行轻量级推理和协调对诸如此类服务的调用来为 AI 应用程序提供支持。 Amazon Bedrock 和 SageMaker。容器镜像支持有助于打包机器学习库,而 Lambda 则负责生成式 AI 流水线的扩展。

是的。 GitHub 副驾驶 根据注释或名称编写处理程序函数,而 Amazon Q Developer 为 IAM 策略、CloudFormation 和 SDK 调用添加了 AWS 感知帮助,从而加快了无服务器开发速度。

为每个函数分配权限最小的 IAM 角色,将密钥存储在加密的环境变量或 Secrets Manager 中,并将敏感函数放置在 VPC 内。然后,CloudWatch 和 CloudTrail 会记录活动以进行监控和审计。

总结一下这篇文章: