Java Lambda中S3事件的自动反序列化

Java Lambda中S3事件的自动反序列化,java,json,amazon-s3,lambda,pojo,Java,Json,Amazon S3,Lambda,Pojo,我已经编写了一个lambda处理程序,它将POJO作为参数并尝试打印它。当我将json文件放入配置的s3存储桶中时,会触发事件,但是pojo中的所有值都为null。但是当我使用S3Event作为参数时,我得到了预期的值(bucket name、key等) 所以我的问题是——有没有人见过自动反序列化在AWS Lambdas中使用S3和java 这是我的简化处理程序 public void handleRequest(ConsolidationJob job, Context context) {

我已经编写了一个lambda处理程序,它将POJO作为参数并尝试打印它。当我将json文件放入配置的s3存储桶中时,会触发事件,但是pojo中的所有值都为null。但是当我使用S3Event作为参数时,我得到了预期的值(bucket name、key等)

所以我的问题是——有没有人见过自动反序列化在AWS Lambdas中使用S3和java

这是我的简化处理程序

public void handleRequest(ConsolidationJob job, Context context) {
    logger.info("Triggered job: " + job.toString());
}
这是我的pojo

public class ConsolidationJob {

   private List<String> files;

   public List<String> getFiles() {
    return files;
  }

  public void setFiles(List<String> files) {
    this.files = files;
  }

  @Override
public String toString() {
    return "ConsolidationJob{" +
            "files=" + files +
           '}';
在我看到的日志中

2017-01-04 12:10:38 <cd42ce01-d276-11e6-bb24-2776804ea5f4> INFO uk.co.avro.FilesConsolidator:40 - Triggered job: ConsolidationJob{files=null}

它是通过正确的事件调用的,我可以从中获取bucket名称和密钥,以便继续并提取文件。但这意味着我必须手动进行反序列化。

看起来不可能,主要是因为S3中的内容可以是任何类型,而不仅仅是json

最后,我使用了第二种方法,使用S3Event作为参数,从中获取bucket和key,然后使用Jackson将inputstream解析为POJO

2017-01-04 12:10:38 <cd42ce01-d276-11e6-bb24-2776804ea5f4> INFO uk.co.avro.FilesConsolidator:40 - Triggered job: ConsolidationJob{files=null}
public void handleRequest(S3Event job, Context context) {
    logger.info("Triggered s3event: " + job.toJson());
}