1

Lambda 处理程序multiple different types of trigger在 java 中的外观如何?我想为 , 设置Cloudwatch Event Rule触发器S3。我怎样才能做到这一点?

public class App implements RequestHandler<S3Event, Context>
{
public Context handleRequest(S3Event s3event, Context context) {
     System.out.println("welcome to lambda");
    }
}
4

2 回答 2

1

您可以Map<String,String>用作输入

public class Handler implements RequestHandler<Map<String,String>, String>{
  @Override
  public String handleRequest(Map<String,String> event, Context context) {
  }
}

或者使用RequestStreamHandlerInputStream 并将其解析为正确的对象。

public class HandlerStream implements RequestStreamHandler {
  @Override
  public void handleRequest(InputStream inputStream, OutputStream outputStream, Context context) throws IOException {
  }
}
于 2021-03-20T00:53:38.663 回答
0

使用泛型Object可以工作,我使用无服务器框架:

package com.serverless;

import java.util.Collections;
import java.util.Map;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

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

public class Handler implements RequestHandler<Object, Object> {

    private static final Logger LOG = LogManager.getLogger(Handler.class);

    @Override
    public Object handleRequest(final Object input, final Context context) {
        LOG.info("received: {}", input);
        return input;
    }
}
于 2021-03-19T10:07:11.497 回答