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 执行的输出。