- AWS Lambda 教程
- AWS Lambda - 主页
- AWS Lambda - 概述
- AWS Lambda - 环境设置
- AWS Lambda - 简介
- 构建 Lambda 函数
- NODEJS 中的函数
- Java 中的函数
- Python 中的函数
- Go 中的函数
- C# 中的函数
- 配置 Lambda 函数
- 使用 AWS 控制台创建和部署
- 使用 AWS CLI 创建和部署
- 使用无服务器框架创建和部署
- AWS 执行和调用 Lambda 函数
- 删除 Lambda 函数
- 使用 Amazon API Gateway
- 使用 Amazon S3 的 Lambda 函数
- 使用 Amazon DynamoDB 的 Lambda 函数
- 具有预定事件的 Lambda 函数
- 带有 Amazon SNS 的 Lambda 函数
- 带有 CloudTrail 的 Lambda 函数
- 使用 Amazon Kinesis 的 Lambda 函数
- 具有自定义用户应用程序的 Lambda 函数
- AWS Lambda@Edge 与 CloudFront
- 使用 Cloudwatch 进行监控和故障排除
- AWS Lambda - 其他示例
- AWS Lambda 有用资源
- AWS Lambda - 快速指南
- AWS Lambda - 有用的资源
- AWS Lambda - 讨论
将 Lambda 函数与 Amazon S3 结合使用
Amazon S3 服务用于文件存储,您可以在其中上传或删除文件。当S3存储桶中有任何文件上传时,我们可以在S3上触发AWS Lambda。AWS Lambda 有一个处理程序函数,充当 AWS Lambda 函数的起点。处理程序具有事件的详细信息。在本章中,让我们看看当我们上传S3存储桶中的文件时,如何使用AWS S3触发AWS Lambda函数。
将 AWS Lambda 函数与 Amazon S3 结合使用的步骤
要开始将 AWS Lambda 与 Amazon S3 结合使用,我们需要以下内容 -
- 创建S3存储桶
- 创建有权使用 s3 和 lambda 的角色
- 创建 lambda 函数并添加 s3 作为触发器。
例子
让我们借助一个示例来了解这些步骤,该示例显示了 Amazon S3 和 AWS Lambda 之间的基本交互。
用户将在 Amazon S3 存储桶中上传文件
文件上传后,它将在后台触发 AWS Lambda 函数,该函数将以控制台消息的形式显示文件已上传的输出。
文件上传后,用户将能够在 Cloudwatch 日志中看到该消息。
解释示例流程的框图如下所示 -
创建S3存储桶
让我们首先使用下面给出的步骤在 AWS 控制台中创建一个 s3 存储桶 -
步骤1
转到 Amazon 服务并单击存储部分中的S3,如下图突出显示 -
第2步
单击 S3 存储并创建存储桶,用于存储上传的文件。
步骤3
单击“创建存储桶”按钮后,您可以看到如下屏幕 -
步骤4
输入详细信息存储桶名称,选择区域并单击左下角的创建按钮。因此,我们创建了名称为:workingwithlambdaands3 的存储桶。
步骤5
现在,单击存储桶名称,它会要求您上传文件,如下所示 -
这样,我们就完成了 S3 中的存储桶创建。
创建与 S3 和 Lambda 配合使用的角色
要创建适用于 S3 和 Lambda 的角色,请按照以下步骤操作 -
步骤1
转到 AWS 服务并选择 IAM,如下所示 -
第2步
现在,单击IAM -> 角色,如下所示 -
步骤3
现在,单击创建角色并选择将使用该角色的服务。选择 Lambda 并单击权限按钮。
步骤4
从下面添加权限并单击Review。
步骤5
观察我们选择了以下权限 -
请注意,我们选择的策略是AmazonS3FullAccess、AWSLambdaFullAccess和CloudWatchFullAccess。
步骤6
现在,输入角色名称、角色描述,然后单击底部的创建角色按钮。
因此,我们名为lambdawiths3service 的角色就创建了。
创建 Lambda 函数并添加 S3 触发器
在本节中,让我们看看如何创建 Lambda 函数并向其添加 S3 触发器。为此,您必须遵循以下步骤 -
步骤1
转到 AWS 服务并选择 Lambda,如下所示 -
第2步
单击Lambda并按照添加Name的过程进行操作。选择运行时、角色等并创建函数。我们创建的 Lambda 函数如下面的屏幕截图所示 -
步骤3
现在让我们添加 S3 触发器。
步骤4
从上面选择触发器并添加详细信息,如下所示 -
步骤5
从存储桶下拉列表中选择创建的存储桶。事件类型具有以下详细信息 -
选择“创建对象(全部)”,因为我们需要在文件上传、删除等时触发 AWS Lambda。
步骤6
您可以添加前缀和文件模式,用于过滤添加的文件。例如,仅针对 .jpg 图像触发 lambda。我们暂时将其保留为空,因为我们需要为所有上传的文件触发 Lambda。单击添加按钮添加触发器。
步骤7
您可以找到 Lambda 函数的触发器显示,如下所示 -
让我们添加 aws lambda 函数的详细信息。这里,我们将使用在线编辑器添加我们的代码,并使用nodejs作为运行环境。
步骤8
要使用 AWS Lambda 触发 S3,我们必须在代码中使用 S3 事件,如下所示 -
exports.handler = function(event, context, callback) { console.log("Incoming Event: ", event); const bucket = event.Records[0].s3.bucket.name; const filename = decodeURIComponent(event.Records[0].s3.object.key.replace(/\+/g, ' ')); const message = `File is uploaded in - ${bucket} -> ${filename}`; console.log(message); callback(null, message); };
请注意,事件参数包含 S3event 的详细信息。我们已经控制台了当您在 S3bucket 中上传图像时将记录的存储桶名称和文件名。
步骤9
现在,让我们保存更改并使用 S3upload 测试 lambda 函数。以下是 AWS Lambda 中添加的代码详细信息 -
步骤10
现在,让我们添加角色、内存和超时。
第11步
现在,保存 Lambda 函数。从 Amazon 服务打开 S3 并打开我们之前创建的存储桶,即workingwithlambdaands3。
上传其中的图像,如下所示 -
步骤12
单击“上传”按钮添加文件,如图所示 -
步骤13
单击添加文件以添加文件。您还可以拖放文件。现在,单击上传按钮。
因此,我们已在 S3 存储桶中上传了一张图像。
第14步
要查看触发器详细信息,请转到 AWS 服务并选择CloudWatch。打开 Lambda 函数的日志并使用以下代码 -
exports.handler = function(event, context, callback) { console.log("Incoming Event: ", event); const bucket = event.Records[0].s3.bucket.name; const filename = decodeURIComponent(event.Records[0].s3.object.key.replace(/\+/g, ' ')); const message = `File is uploaded in - ${bucket} -> ${filename}`; console.log(message); callback(null, message); };
您可以在 Cloudwatch 中观察到的输出如下所示 -
当文件上传到 S3 存储桶中并且详细信息记录在 Cloudwatch 中时,AWS Lambda 函数将被触发,如下所示 -