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)