public class LambdaFunctionHandler implements RequestHandler<Person, String> {
private static AmazonDynamoDB client;
private static Item item;
// TODO: implement your handler
@Override
public String handleRequest(Person input, Context context) {
context.getLogger().log("Input: " + input.toString());
try {
//initialize the connection
init();
DynamoDB dynamoDB = new DynamoDB(client);
Table table = dynamoDB.getTable("Person");
item = table.getItem("PersonID", input.getPersonID());
} catch (Exception e) {
// TODO: handle exception
System.out.println(e.getMessage());
}
return item.toJSON();
}
}
Здравствуйте, я пытаюсь заставить этот пример работать, чтобы более глубоко понять функциональность лямбда-выражения AWS. У объекта person есть только одно поле - id как переменная с конструктором, получателем и установщиком. Запрос на вызов, который я отправил, представляет собой json в этой форме:
{
"PersonID": 1
}
Моя проблема возникает, когда я запускаю его (функция запуска на AWS lambda), ввод человека не принимает значение из запроса json и имеет значение null, поэтому он рушится (исключение нулевого указателя). У вас есть какие-нибудь рекомендации?
Честно говоря, я не тестировал со строкой. Как я могу быть уверен в том, что передается, как вы сказали?
Вы можете попробовать изменить input в своем обработчике с Person на String. Мне интересно, связана ли проблема с доставкой тела POST или с его десериализацией в Person.
Возможно, проблема связана с соглашениями об именах POJO / JavaBean. Вместо PersonID в вашем событии JSON попробуйте personID с методом получения getPersonID (). Это при условии, что он разрешает ID и не требует, чтобы вы называли его Id.
@ jarmod2 Ваша идея была правильной, следуя соглашениям об именах, сериализация произошла сразу без нулевого указателя. Спасибо за это.
@Giota - Потрясающе. Я нашел решение своей проблемы в этом посте. Я боролся с той же проблемой. Было бы хорошо, если бы вы могли опубликовать ответ на этот пост и принять его




Вы уверены, что json передается? Вы пробовали просто использовать String вместо Person в качестве теста?