AWS Lambda – 概述



AWS Lambda 是一种提供无服务器计算的服务,这意味着无需管理服务器即可进行计算。代码根据AWS服务的事件响应执行,例如在S3存储桶中添加/删除文件、更新Amazon DynamoDB表、来自Amazon API Gateway的HTTP请求等。

要使用AWS Lambda,我们只需将代码推送到AWS Lambda服务中。AWS负责所有其他任务和资源,例如基础设施、操作系统、服务器维护、代码监控、日志和安全。

AWS Lambda支持Java、NodeJS、Python、C#、Go、Ruby和Powershell等语言。请注意,AWS Lambda仅适用于AWS服务。

什么是AWS Lambda?

AWS Lambda的官方文档对其定义如下:

AWS Lambda 是一种计算服务,允许您运行代码而无需预配或管理服务器。AWS Lambda 仅在需要时执行您的代码,并可自动扩展,从每天几个请求到每秒数千个请求。您只需为消耗的计算时间付费 - 代码未运行时不收费。

AWS Lambda如何工作?

下图显示了用五个简单的步骤解释AWS Lambda工作原理的框图:

AWS lambda Block Diagram

步骤1 - 将AWS Lambda代码上传到AWS Lambda支持的任何语言中,例如NodeJS、Java、Python、C#和Go。

步骤2 - 以下是AWS Lambda可以被触发的几个AWS服务。

步骤3 - AWS Lambda包含上传的代码和触发事件的详细信息。例如,来自Amazon S3、Amazon API Gateway、DynamoDB、Amazon SNS、Amazon Kinesis、CloudFront、Amazon SES、CloudTrail、移动应用程序等的事件。

步骤4 - 仅当AWS服务在以下情况下触发时,才会执行AWS Lambda代码:

  • 用户将文件上传到S3存储桶
  • 命中http get/post端点URL
  • 在DynamoDB表中添加/更新/删除数据
  • 推送通知
  • 数据流收集
  • 网站托管
  • 发送电子邮件
  • 移动应用程序等。

步骤5 - 请记住,AWS仅在AWS Lambda代码执行时才收费,否则不收费。

使用AWS Lambda的优势

使用AWS Lambda时,它提供了多种好处。本节将详细讨论它们:

易于使用代码

AWS Lambda为您提供上传代码的基础架构。它负责维护代码,并在发生所需事件时触发代码。它允许您选择代码所需的内存和超时时间。

AWS Lambda还可以根据事件触发器执行并行请求。

日志配置

AWS Lambda提供代码执行次数、执行时间、内存消耗等详细信息。AWS CloudWatch收集所有日志,这有助于理解执行流程和调试代码。

基于用量的计费

AWS Lambda的计费基于内存使用量、请求次数和执行时间,以至少100毫秒的增量计费。因此,对于500毫秒的执行,每100毫秒计费一次。如果您将AWS Lambda代码指定为执行500毫秒,而实际执行时间仅为200毫秒,AWS将仅对实际执行时间(即200毫秒)收费,而不是500毫秒。AWS始终仅对使用的执行时间收费。如果函数未执行,则无需付费。

多语言支持

AWS Lambda支持流行的语言,例如Node.js、Python、Java、C#和Go。这些是广泛使用的语言,任何开发人员都会发现编写AWS Lambda代码很容易。

易于编写和部署代码

Lambda提供了许多编写和部署代码的选项。您可以使用AWS在线编辑器、Visual Studio IDE或Eclipse IDE来编写代码。它还支持无服务器框架,这使得编写和部署AWS Lambda代码变得容易。除了AWS控制台,我们还有AWS CLI来创建和部署代码。

其他功能

您可以通过登录AWS免费套餐免费使用AWS Lambda。它为您提供一年的免费服务。查看AWS免费套餐提供的免费服务。

使用AWS Lambda的缺点

尽管AWS Lambda有很多优点,但它也有一些缺点:

  • 它不适合小型项目。

  • 您需要仔细分析您的代码并决定内存和超时时间。如果您的函数需要比分配时间更长的时间,它将根据其上指定的超时时间终止,并且代码将不会完全执行。

  • 由于AWS Lambda完全依赖AWS的基础设施,因此如果您的代码需要,您无法安装任何附加软件。

触发AWS Lambda的事件

可以触发AWS Lambda的事件如下:

  • 进入S3对象
  • 在DynamoDB表中插入、更新和删除数据
  • 来自SNS的推送通知
  • 对API Gateway的GET/POST调用
  • 在CloudFront中修改查看器或源请求/响应的标头
  • AWS Kinesis数据流中的日志条目
  • CloudTrail中的日志历史记录

AWS Lambda的用例

AWS Lambda是一种计算服务,主要用于运行后台进程。它可以在与其他AWS服务一起使用时触发。下面列出了我们可以使用AWS Lambda的AWS服务:

S3对象和AWS Lambda

当S3中存在任何文件上传时,Amazon S3会将事件详细信息传递给AWS Lambda。文件上传、删除或移动的详细信息将传递给AWS Lambda。AWS Lambda中的代码可以在收到事件详细信息时采取必要的步骤。例如,创建插入到S3中的图像的缩略图。

DynamoDB和AWS Lambda

当表中添加、更新和删除数据时,DynamoDB可以触发AWS Lambda。AWS Lambda事件包含有关插入/更新或删除的AWS DynamoDB表的所有详细信息。

API Gateway和AWS Lambda

API Gateway可以在GET/POST方法上触发AWS Lambda。我们可以创建一个表单并与API Gateway端点共享详细信息,并将其与AWS Lambda一起用于进一步处理,例如,在DynamoDB表中创建数据的条目。

SNS和AWS Lambda

SNS用于推送通知、发送短信等。当SNS中发生任何推送通知时,我们可以触发AWS Lambda。当AWS Lambda收到触发器时,我们也可以向电话号码发送短信。

计划事件和AWS Lambda

计划事件可用于cron作业。它可以触发AWS Lambda在定期时间模式下执行任务。

CloudTrail和AWS Lambda

CloudTrail有助于监控帐户上的日志。我们可以使用AWS Lambda进一步处理CloudTrail日志。

Kinesis和AWS Lambda

Kinesis用于捕获/存储来自网站点击、日志、社交媒体供稿的实时跟踪数据,并且对AWS Lambda的触发器可以对这些日志进行额外处理。

CloudFront和Lambda@Edge

CloudFront是一个内容交付网络,您可以在其中托管您的网站,并且Lambda@Edge可用于处理来自查看器请求、源请求、源响应和查看器响应的标头。标头修改包括修改cookie数据、URL重写、用于A/B测试以更改发送回用户的响应、出于安全目的添加额外的标头信息等任务。

广告