首页 > 解决方案 > 从 Spring Cloud Function 访问 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;
    }
}

将 RequestHandler 的实现推迟到 SpringBootRequestHandler

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

标签: amazon-web-servicesspring-bootaws-lambdaspring-cloud

解决方案


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

}

推荐阅读