AWS Lambda - 概述

AWS Lambda 是一项执行无服务器计算的服务,涉及在没有任何服务器的情况下进行计算.代码基于AWS服务中事件的响应执行,例如在S3存储桶中添加/删除文件,更新Amazon dynamo dB表,从Amazon API网关更新HTTP请求等.

获取使用 AWS Lambda ,我们只需要在AWS Lambda服务中推送代码.所有其他任务和资源(如基础架构,操作系统,服务器维护,代码监控,日志和安全性)都由AWS负责.

AWS Lambda 支持语言例如Java,NodeJS,Python,C#和Go.请注意,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步和第3步; AWS Lambda,其中包含上传代码和发生触发的事件详细信息.例如,来自Amazon S3,Amazon API Gateway,Dynamo dB,Amazon SNS,Amazon Kinesis,CloudFront,Amazon SES,CloudTrail,移动应用等的事件.

步骤4 :  仅在以下情况下由AWS服务触发时执行AWS Lambda代码;

  • 用户上传S3存储桶中的文件

  • http get/post端点URL被点击

  • 数据在发电机dB表中添加/更新/删除

  • 推送通知

  • 数据流集合

  • 托管网站

  • 电子邮件发送

  • 移动应用程序等.

步骤5 :  请记住AWS仅在AWS lambda时收费代码执行,而不是其他.

使用AWS Lambda的优势

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

易于使用代码

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

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

日志提供

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

基于使用的计费

AWS Lambda计费是在内存使用,请求和执行时完成的,以最小100毫秒的增量收费.因此,对于500毫秒的执行,计费将在每100毫秒之后.如果您指定要在500毫秒内执行的AWS lambda代码,并且执行所需的时间仅为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 Lambda到AWS免费套餐.它为您提供免费服务1年.请查看AWS免费套餐提供的免费服务.

使用AWS Lambda的缺点

尽管有很多优点,但AWS Lambda拥有以下缺点 :

  • 它不适合小型项目.

  • 您需要仔细分析代码并确定内存和超时.如果你的函数需要的时间超过分配的时间,它将根据指定的超时终止,代码将无法完全执行.

  • 由于AWS Lambda完全依赖于AWS来支持基础架构,因此如果您的代码需要,则无法安装任何其他软件.

触发AWS的事件Lambda

事件可触发AWS Lambda如下 :

  • 进入S3对象

  • 在Dynamo数据库表中插入,更新和删除数据

  • 从SNS推送通知

  • GET/POST调用API网关

  • 查看器中的标题修改或CloudFront中的原始请求/响应

  • AWS Kinesis数据流中的日志条目

  • CloudTrail中的日志历史记录

AWS Lambda的使用案例

AWS Lambda是一个计算服务主要用于运行后台进程.当与其他AWS服务一起使用时,它可以触发.我们可以使用AWS Lambda的AWS服务列表在下面和下面给出;

S3对象和AWS Lambda

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

DynamoDB和AWS Lambda

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

API网关和AWS Lambda

API网关可以在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重写,用于AB测试以更改发送给用户的响应,为安全目的添加额外标题信息等任务.