【问题标题】:Deserialization exception accessing AWS Lambda Handler访问 AWS Lambda 处理程序的反序列化异常
【发布时间】:2022-06-16 21:59:38
【问题描述】:

我从 AWS Lambda 开始。我使用 Lambda 运行时 API 创建了以下 Java 类:

public class HelloWorld1
    implements RequestHandler<Map<String, String>, String> {

    public String handleRequest(
        final Map<String, String> input,
        final Context context) {
        context.getLogger().log("Llamada: " + input);
        return "{\"HelloWorld\": \"" + input.get("key1") + "\"}";
    }
}

我确实使用了 Lambda 的测试功能,使用这个“JSON 事件”值:

{
  "key1": "value1",
  "key2": "value2",
  "key3": "value3"
}

而且效果很好。

然后我创建了一个 URL 并尝试使用 Postman 向它发送 POST 请求,但它失败并出现内部服务器错误。我正在使用它由 AWS 定义的 URL,我将正文设置为 {"key1": "sjuan", "key2": "76"},然后我进入 AWS CloudWatch 一个

解析 JSON 时出错:java.lang.RuntimeException
java.lang.RuntimeException: JSON解析时出错
原因:java.io.UncheckedIOException: com.amazonaws.lambda.thirdparty.com.fasterxml.jackson.databind.exc.MismatchedInputException: 无法反序列化 java.lang.String 的实例出 START_OBJECT 令牌

我做错了什么?

【问题讨论】:

    标签: java json amazon-web-services aws-lambda


    【解决方案1】:

    如果您希望能够通过 Rest 调用调用 AWS Lambda 函数,请使用 Amazon API Gateway。这是一项用于大规模创建、发布、维护、监控和保护 REST、HTTP 和 WebSocket API 的服务。

    请参阅此文档,该文档讨论如何使用 Java 运行时 API 开发 AWS Lambda 函数,以及如何使用 Amazon API Gateway 调用它:

    Using Amazon API Gateway to invoke Lambda functions

    【讨论】:

      【解决方案2】:

      当您通过控制台调用 Lambda 函数时,您可以选择输入。默认值是您在问题中的内容。

      当您通过 Amazon API Gateway 等事件源触发 Lambda 函数时,输入实际上是一个 JSON 文档,代表整个 HTTP request

      这些 JSON 对象的 Java 表示可以在 aws-lambda-java-events 库中找到。

      所以你的处理方法看起来应该是这样的:

      public class ApiRequestHandler implements RequestHandler<APIGatewayV2HTTPEvent, APIGatewayV2HTTPResponse> {
      
          @Override
          public APIGatewayV2HTTPResponse handleRequest(APIGatewayV2HTTPEvent event, Context context) {
       }
      }
      

      【讨论】:

        猜你喜欢
        • 2020-09-18
        • 1970-01-01
        • 2020-08-15
        • 1970-01-01
        • 2012-10-05
        • 2013-09-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多