- AWS Lambda 教程
- AWS Lambda - 首页
- AWS Lambda - 概述
- AWS Lambda - 环境设置
- AWS Lambda - 简介
- 构建Lambda函数
- NodeJS 函数
- Java 函数
- Python 函数
- Go 函数
- C# 函数
- 配置Lambda函数
- 使用AWS控制台创建和部署
- 使用AWS CLI创建和部署
- 使用Serverless Framework创建和部署
- AWS 执行和调用Lambda函数
- 删除Lambda函数
- 使用Amazon API Gateway
- Lambda函数与Amazon S3
- Lambda函数与Amazon DynamoDB
- Lambda函数与计划事件
- Lambda函数与Amazon SNS
- Lambda函数与CloudTrail
- Lambda函数与Amazon Kinesis
- Lambda函数与自定义用户应用程序
- AWS Lambda@Edge 与CloudFront
- 使用CloudWatch监控和故障排除
- AWS Lambda - 附加示例
- AWS Lambda有用资源
- AWS Lambda - 快速指南
- AWS Lambda - 有用资源
- AWS Lambda - 讨论
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工作原理的框图:
步骤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测试以更改发送回用户的响应、出于安全目的添加额外的标头信息等任务。