首页 > 解决方案 > 如何在java中从s3获取触发lambda的文件名

问题描述

告诉我如何在 java 中的 lambda 代码中获取从 s3 触发 lambda 的文件名?我的任务是从 s3 复制一个文件到我的 sftp 服务器使用 lambda。为了不让我每次都复制文件夹中的所有文件,我需要找出调用 lambda 的文件。

PS提前谢谢

标签: javaamazon-web-servicesamazon-s3aws-lambdasftp

解决方案


发送到 Lambda 的示例事件在此处

我们可以使用java-events jar,将为我们S3Event提供具有精确模式的类。

我们需要循环记录并找到s3.object.key

package com.test;

import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import com.amazonaws.services.lambda.runtime.events.S3Event;

public class MyHandler implements RequestHandler<S3Event, String> {
    @Override
    public String handleRequest(S3Event request, Context context) {
        request.getRecords().forEach(record -> {
            System.out.println(record.getS3().getObject().getKey());
        });
        return "success";
    }
}

推荐阅读