首页 > 解决方案 > LambdaCall 未在 InvokeResult 中返回有效负载

问题描述

我在 AWS lambda 中创建了一个函数,该函数使用 LambdaCall 调用第二个 lambda 函数。

public InvokeResult invokeResponse() {
InvokeResult invokeResult = lambdaCall.invokeLambda(invokeRequestParameters.getFunctionName(), invokeRequestParameters.getPayload());
return invokeResult;
}

有效载荷是一个字符串“版本”。在第二个 lambda 中,handleRequest 代码包含的是:

public String handleRequest(InputStream inputStream, Context context) {
    ObjectMapper mapper = new ObjectMapper();
    try {

    String text = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8)).lines().collect(Collectors.joining("\n"));
        if (text.equals("\"Version\"")) {
            VersionResponse versionResponse = getVersion();
            return mapper.writeValueAsString(versionResponse);
        }
    return null;
    } catch (Exception error) {
        LOGGER.info(error);
        return null;
    }

VersionResponse 是一个简单的 POJO,我已经确认 getVersion 正在返回 VersionResponse 对象。目前 Lambda 正在检索“版本字符串”并且 getVersion 工作正常。但是,当返回字符串时, InvokeResult 的有效负载为空。知道我做错了什么吗?

标签: amazon-web-servicesfunctionaws-lambdapayloadinvoke-result

解决方案


这发生在我身上(在 NodeJS 中),因为在使用异步函数的 lambda 中,我忘记添加 areturn resultValue来返回正确的值,所以 lambda 没有一个好的返回值,并用作null返回值。我认为如果在使用回调参数的 lambda 中您忘记调用,这也可能发生callback(null, result)


推荐阅读