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工作的框图如下所示;
步骤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测试以更改发送给用户的响应,为安全目的添加额外标题信息等任务.