从 Spring Cloud 函数访问 AWS Lambda 上下文

eme*_*son 4 amazon-web-services spring-boot spring-cloud aws-lambda

我正在使用 Spring Cloud Function 1.0.0.RELEASE 和相应的 AWS 适配器在 AWS lambda 中运行它。有没有办法从 Spring 应用程序上下文中检索 lambda 函数上下文?

我知道如果你自己实现了 RequestHandler 接口,那么你会得到 Context 对象作为 handleRequest 方法的第二个参数(见下文),但是由于 SpringBootRequestHandler 正在处理这个,我不清楚如何访问 Context 对象。有任何想法吗?

直接实现RequestHandler的例子

public class LambdaRequestHandler implements RequestHandler<String, String> {

    public String handleRequest(String input, Context context) {
        context.getLogger().log("Input: " + input);
        return "Hello World - " + input;
    }
}
Run Code Online (Sandbox Code Playgroud)

将 RequestHandler 的实现推迟到 SpringBootRequestHandler

public class SomeFunctionHandler 
      extends SpringBootRequestHandler<SomeRequest, SomeResponse> {
}
Run Code Online (Sandbox Code Playgroud)

eme*_*son 5

SomeFunctionHandler扩展SpringBootRequestHandler,因此它可以覆盖该handleRequest方法以访问 AWS lambdaContext对象。

public class SomeFunctionHandler extends SpringBootRequestHandler<SomeRequest, SomeResponse> {

    private static final Logger logger = LoggerFactory.getLogger(SomeFunctionHandler.class);

    @Override
    public Object handleRequest(SomeRequest event, Context context) {
        logger.info("ARN=" + context.getInvokedFunctionArn());
        return super.handleRequest(event, context);
    }

}
Run Code Online (Sandbox Code Playgroud)