从Spring Cloud Function访问AWS Lambda上下文

时间:2018-11-09 17:14:57

标签: amazon-web-services spring-boot aws-lambda spring-cloud

我正在使用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;
    }
}

将RequestHandler的实现推迟到SpringBootRequestHandler

public class SomeFunctionHandler 
      extends SpringBootRequestHandler<SomeRequest, SomeResponse> {
}

1 个答案:

答案 0 :(得分:3)

SomeFunctionHandler扩展了SpringBootRequestHandler,因此它可以覆盖handleRequest方法来访问AWS Lambda Context对象。

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);
    }

}