使用SpringBootRequestHandler访问函数内部的AWS Lambda上下文吗?

问题描述

我需要访问我的lambda函数的AWS Lambda上下文。我正在使用SpringBootRequestHandler来接收请求,该请求应该调用实现Function接口的类。下面是这两个类的代码示例:

public class A extends SpringBootRequestHandler<S3Event,String> {
    @Override
    public Object handleRequest(S3Event event,Context context) {
        return super.handleRequest(event,context);
    }
}
@Component("b")
public class B implements Function<S3Event,String> {

    @Override
    public String apply(S3Event string) {
        // this is where I need the context
        // this function should be called by handleRequest
    }
}

我正在使用spring-cloud-starter-function-web来调用本地运行的类B中的apply方法,但这仅允许直接调用类B,而从未执行类A的handleRequest。我尝试过在类B中设置静态Context变量,并在handleRequest的开始处进行设置,但是鉴于handleRequest不会在本地执行,因此无法正常工作。

我有三个问题:

  1. 在实际的AWS环境中,设置静态变量的想法行得通吗?像这样,AWS函数的流程确实是A :: handleRequest-> B :: apply吗?
  2. 如果#1为否,那么如何将上下文传递给此apply函数?
  3. 如果1或2都不可行,是否有一种允许上下文传递的设计?

解决方法

要在 Function 类中使用 Lambda Context,您只需要在 com.amazonaws.services.lambda.runtime.Context 类中使用 Autowired 注释,例如:

@Autowired
private Context context;

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...