繁体   English   中英

aws-lambda中使用APIGatewayProxyRequestEvent时如何获取日志的Context

[英]How to get Context for logging when using APIGatewayProxyRequestEvent in aws-lambda

我的项目是用 spring-cloud-function 编写的,部署在 aws-lambda。我有一个要求,我应该在其中记录事件。

一点搜索告诉我使用

com.amazonaws.services.lambda.runtime.Context通过这样做进行日志记录:

context.getLogger().log("log event here");

我有一个 spring 云 function,它接收 APIGatewayProxyRequestEvent 作为输入,APIGatewayProxyResponseEvent 作为 output 参数

我再次搜索,发现获取上下文,这个可以用org.springframework.messaging.Message包裹

所以我这样写了 function:

public Function<Message<APIGatewayProxyRequestEvent>, APIGatewayProxyResponseEvent> saveEmployee(){
return request -> {
            Context context = request.getHeaders().get("aws-context", Context.class);
context.getLogger().log("employee save request---: " + request);
    //do something

但是上下文评估为 null 并且我得到 NullPointerException

有人可以指出可能出了什么问题吗? 或者如何获取上下文?

提前致谢

确保使用以下处理程序:org.springframework.cloud.function.adapter.aws.FunctionInvoker::handleRequest

您可以实现 RequestHandler class 并覆盖 handleRequest 方法。 context 参数可用于输入 cloudwatch 的日志。

import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.LambdaLogger;
import com.amazonaws.services.lambda.runtime.RequestHandler;

public class Function implements RequestHandler<APIGatewayProxyRequestEvent, APIGatewayProxyResponseEvent>  {

@Override
    public APIGatewayProxyResponseEvent handleRequest(final APIGatewayProxyRequestEvent event, final Context context) {

LambdaLogger logger = context.getLogger();
logger.log(event);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM