如何解决使用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不会在本地执行,因此无法正常工作。
我有三个问题:
- 在实际的AWS环境中,设置静态变量的想法行得通吗?像这样,AWS函数的流程确实是A :: handleRequest-> B :: apply吗?
- 如果#1为否,那么如何将上下文传递给此apply函数?
- 如果1或2都不可行,是否有一种允许上下文传递的设计?
解决方法
要在 Function 类中使用 Lambda
Context
,您只需要在 com.amazonaws.services.lambda.runtime.Context
类中使用 Autowired 注释,例如:
@Autowired
private Context context;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。