当前位置: 首页 > 知识库问答 >
问题:

在Java中为AWS Lambda执行“Hello World”时出错

顾泰平
2023-03-14

我已经写了以下Hello World Lambda,我正在通过AWS Eclipse工具包上传到AWS上。

public class HelloWorldLambdaHandler implements RequestHandler<String, String> {
    public String handleRequest(String input, Context context) {
        System.out.println("Hello World! executed with input: " + input);
        return input;
    }
}

我在执行上述代码时出现以下错误。知道我做错了什么吗?顺便说一句,有这个处理程序的Maven项目没有任何其他类,唯一的依赖项是aws lambda java core 1.1.0版。

Skip uploading function code since no local change is found...
Invoking function...
==================== FUNCTION OUTPUT ====================
{"errorMessage":"An error occurred during JSON parsing","errorType":"java.lang.RuntimeException","stackTrace":[],"cause":{"errorMessage":"com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of java.lang.String out of START_OBJECT token\n at [Source: lambdainternal.util.NativeMemoryAsInputStream@2f7c7260; line: 1, column: 1]","errorType":"java.io.UncheckedIOException","stackTrace":[],"cause":{"errorMessage":"Can not deserialize instance of java.lang.String out of START_OBJECT token\n at [Source: lambdainternal.util.NativeMemoryAsInputStream@2f7c7260; 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.mappingException(DeserializationContext.java:835)","com.fasterxml.jackson.databind.deser.std.StringDeserializer.deserialize(StringDeserializer.java:59)","com.fasterxml.jackson.databind.deser.std.StringDeserializer.deserialize(StringDeserializer.java:12)","com.fasterxml.jackson.databind.ObjectReader._bindAndClose(ObjectReader.java:1441)","com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:1047)"]}}}

共有3个答案

萧升
2023-03-14

我在测试中尝试了以下值:

"TestInput"

而不是:

{ Input : "TestInput"}

它似乎运行良好。

赵雅懿
2023-03-14

从堆栈跟踪中读取错误。它显示“无法反序列化START_OBJECT令牌中的java.lang.字符串实例”。“START_OBJECT”令牌是“{”。

问题很简单,您需要传递一个实际的String作为输入,例如“A String”。这是您的json输入。不 {}. {} 不是String。您不需要任何大括号,只需一个字符串(以引号表示)。另一方面,{}是一个有效的Person对象,因此一旦您将其更改为将Person作为输入处理,它就可以工作。

太叔昆
2023-03-14

出于某种原因,Amazon无法将json反序列化为字符串。您可能会认为字符串和输入参数一样通用,但不管对错,它都不兼容。

要处理JSON,可以使用映射或自定义POJO。

public class HelloWorldLambdaHandler {
    public String handleRequest(Map<String,Object> input, Context context) {
        System.out.println(input);
        return "Hello";
    }
}
 类似资料:
  • 在过去的几天里,我无法解决这个问题,我遇到了一个使用Java EE在同一个指令中进行多个查询的问题, 我在mysql中尝试过这个查询,它工作得很好,但每次在代码中使用它时都会遇到以下错误

  • 我正在蜂箱中执行以下命令: 错误:编译语句时出错:FAILED:SemanticExctive[Error 10025]:第1:7行表达式不在GROUP BY键data_volume_gprs_dl(state=42000, code=10025) 为什么我会犯这个错误?

  • 我看过几篇关于这个主题的帖子(post1,post2,post3)。在所有这些问题中,解决方案看起来都很容易,但我无法得到返回值的值。 这是我到目前为止所尝试的: 备选办法1: 备选案文3: 结果:原因,如果还注意到 创建到Java代码中的查询如下所示: 和连接字符串:

  • 我对Neo4J花了不少心思,但对graphql却一筹莫展 我通过运行以下操作创建了graphql模式: 我有一个带有三个标签的节点类型。我尝试在graphiql中运行以下查询,得到了同样的错误。由于堆栈的原因,我想知道graphiql是否在添加meta并移动到了neo4j浏览器--同样的错误。 查询: 错误: 我可能做了一些明显错误的事情,但任何帮助都将是感激的

  • 我刚遇到这个错误,它突然来了,破坏了我的项目。有没有人可以帮助我解决这个错误: