Java 将HTTP头从AWS API传递到Lambda函数
我正在尝试使用java获取AWS Lambda函数中的HTTP头和正文详细信息,这些信息是使用AWS API通过POST方法发送的。到目前为止,我已经成功地建立了AWS API和AWS Lambda函数之间的连接,并且能够从API网关调用它。现在,为了将头传递给Lambda函数,我已经完成了从中“更新Lambda函数”之前的所有步骤。以下是我的lambda代码:Java 将HTTP头从AWS API传递到Lambda函数,java,amazon-web-services,http-headers,aws-lambda,aws-api-gateway,Java,Amazon Web Services,Http Headers,Aws Lambda,Aws Api Gateway,我正在尝试使用java获取AWS Lambda函数中的HTTP头和正文详细信息,这些信息是使用AWS API通过POST方法发送的。到目前为止,我已经成功地建立了AWS API和AWS Lambda函数之间的连接,并且能够从API网关调用它。现在,为了将头传递给Lambda函数,我已经完成了从中“更新Lambda函数”之前的所有步骤。以下是我的lambda代码: import com.amazonaws.Request; import com.amazonaws.Response
import com.amazonaws.Request;
import com.amazonaws.Response;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import com.amazonaws.services.lambda.runtime.events.S3Event;
public class SimpleSysout implements RequestHandler<Request, String> {
public String handleRequest(Request request, Context context) {
System.out.println("Method = "+request.getHttpMethod());
System.out.println("Headers= "+request.getHeaders().toString());
System.out.println("Content= "+request.getContent().toString());
System.out.println("Servcie Name = "+request.getServiceName().toString());
System.out.println("Resource Path = "+request.getResourcePath().toString());
return request.toString();
}
}
我也尝试过使用不同的参数来代替请求,例如事件,但它们都不起作用。负载映射模板有问题。在API网关设置过程中,您可以指定如何将请求映射到事件。还有两个预制模板可供选择 请看一看来自Amazon的此文档:
如果您需要更多帮助,请告诉我。您的负载映射模板有问题。在API网关设置过程中,您可以指定如何将请求映射到事件。还有两个预制模板可供选择 请看一看来自Amazon的此文档: 如果需要更多帮助,请告诉我。HandlerRequest(InputStream InputStream、OutputStream OutputStream、上下文) 我给您提供了一个链接,其中是从JSON获取头的正确实现 HandlerRequest(InputStream InputStream、OutputStream OutputStream、上下文) 我给您提供了一个链接,其中是从JSON获取头的正确实现
你能发布你的映射模板吗?你能发布你的映射模板吗。
{
"errorMessage": "An error occurred during JSON parsing",
"errorType": "java.lang.RuntimeException",
"stackTrace": [],
"cause": {
"errorMessage": "com.fasterxml.jackson.databind.JsonMappingException: Can not construct instance of com.amazonaws.Request, problem: abstract types either need to be mapped to concrete types, have custom deserializer, or be instantiated with additional type information\n at [Source: lambdainternal.util.NativeMemoryAsInputStream@4dfa3a9d; line: 1, column: 1]",
"errorType": "java.io.UncheckedIOException",
"stackTrace": [],
"cause": {
"errorMessage": "Can not construct instance of com.amazonaws.Request, problem: abstract types either need to be mapped to concrete types, have custom deserializer, or be instantiated with additional type information\n at [Source: lambdainternal.util.NativeMemoryAsInputStream@4dfa3a9d; line: 1, column: 1]",
"errorType": "com.fasterxml.jackson.databind.JsonMappingException",
"stackTrace": [
"com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:148)",
"com.fasterxml.jackson.databind.DeserializationContext.instantiationException(DeserializationContext.java:889)",
"com.fasterxml.jackson.databind.deser.AbstractDeserializer.deserialize(AbstractDeserializer.java:139)",
"com.fasterxml.jackson.databind.ObjectReader._bindAndClose(ObjectReader.java:1511)",
"com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:1102)"
]
}
}
}