Java AWS-Lambda S3 已触发
AWS-Lambda 函数可以附加到某个桶事件。无论何时创建或删除文件/文件夹,事件都可以触发 lambda 函数执行。
一个简单的 Lambda 函数,用于打印上传文件的名称
这是一个用于打印上传文件名称的 lambda 项目。对于 maven,我们需要添加这些依赖项:
<dependencies>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-lambda-java-core</artifactId>
<version>1.1.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-lambda-java-events</artifactId>
<version>1.3.0</version>
<type>jar</type>
</dependency>
</dependencies>
现在让我们转到我们的 HelloWorld 类:
package com;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import com.amazonaws.services.lambda.runtime.events.S3Event;
import com.amazonaws.services.s3.event.S3EventNotification;
public class HelloWorld implements RequestHandler< S3Event, String> {
@Override
public String handleRequest(S3Event event, Context ctx) {
S3EventNotification.S3EventNotificationRecord record=event.getRecords().get(0);
System.out.println("Bucket Name is "+record.getS3().getBucket().getName());
System.out.println("File Path is "+record.getS3().getObject().getKey());
return null;
}
}
下一步是使用 mvn 构建项目。
构建项目后,我们需要将其上传到 AWS-Lambda。转到 Lambda,选择“创建 lambda 函数”。跳过选择蓝图的部分,因为 Java 通常不存在。
此外,跳过配置触发器,因为我们将从其他位置配置它。在下一页中,输入第一个 lambda 函数的名称,然后输入一个小描述,并选择 Java 作为运行时。
对于代码输入类型,选择“从 .ZIP 文件上传”,然后在下一个位置选择 .zip 文件进行上传。
这个页面上棘手的部分是 Handler 字段。在处理程序字段中,你必须指定实现 RequestHandler 的类的位置。此类是 lambda 的入口点,如果未正确指定,则 Lambda 函数将不起作用。我们的案件处理程序是“com.HelloWorld”
将 S3 触发器附加到 Lambda:
在这里,我们将附加一个 S3 文件上传的触发器
- 转到 S3,选择存储桶,然后选择属性。
- 在属性部分中,转到事件。
- 添加活动详情。在事件字段中,选择要触发 Lambda 的方式。我们将选择“
ObjectCreated(All)
”注意 lambda 函数和 bucket 需要在同一个亚马逊地区 - 对于
Sends to
,请检查 Lambda 函数,然后从列表中选择 lambda 函数。
监控 Lambda 输出
现在,我们将文件上传到具有 lambda 触发器的存储桶。要查看 lambda 输出和日志,请转到 CloudWatch
,然后选择 Logs
,然后选择 Lambda 函数。你可能会在 Log Streams
下看到许多条目,选择最新的条目并将其打开。你应该能够在那里看到 lambda 执行的输出。