LambdaCall не возвращает полезную нагрузку в InvokeResult

Я создал функцию в лямбда-выражении AWS, которая вызывает вторую лямбда-функцию с помощью LambdaCall.

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

Полезная нагрузка представляет собой строку «Версия». Во второй лямбде код 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 имеет нулевую полезную нагрузку. Любая идея, что я делаю неправильно?

1 ответ

Это случилось со мной (в NodeJS), потому что в лямбде, использующей асинхронную функцию, я забыл добавить return resultValueчтобы вернуть правильное значение, поэтому у лямбда не было хорошего значения для возврата, и использовалось nullкак возвращаемое значение. Я думаю, что это тоже могло произойти, если в лямбда-выражении, используя параметр обратного вызова, вы забыли позвонить callback(null, result)

Другие вопросы по тегам