Я пытался вызвать мою AWS лямбда-функцию (через оставшуюся часть Api Gateway), которая написана в Java, которая принимает в качестве входных данных параметр Object, который впоследствии обрабатывается как простая строка. Я проверил это через AWS Lambda Console и через клиент для отдыха, такой как Postman, и он отлично работает. Это мой обработчик Java:
public class LambdaInsertMessage implements RequestHandler<Object, String>{
@Override
public String handleRequest(Object obj, Context context) {
String input = obj.toString();
//insert input in my database
return "ok";
}
}
Теперь я пытаюсь интегрировать его в мою html веб-страницу (которая находится в моем хранилище S3, настроенном для публикации c stati c хостинг). Это мой Javascript фрагмент кода:
/*
* Takes the message inserted in the textarea and send it to my Lambda
*/
function sendMessage() {
var message = document.getElementById('messageInput').value;
var xhttp = new XMLHttpRequest();
xhttp.open("GET", "https://xxx.execute-api.us-east-1.amazonaws.com/insert", true);
xhttp.send(message);
}
Это не работает, потому что функция Lambda вызывается правильно, но получает входной пустой объект, а не сообщение, которое я вставил в страница (var message
правильно оценена, когда я отлаживаю консоль браузера).
У меня есть еще один лямбда-вызов на странице, которая представляет собой простой привет мир, в котором я не добавляю никаких данных во ввод и Lambda работает правильно, я могу записать ответ, отправленный моей функцией Lambda:
function helloWorld() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
console.log(this.responseText);
}
};
xhttp.open("GET", "https://xxxx.execute-api.us-east-1.amazonaws.com/helloWorld", true);
xhttp.send();
}
Так что моя проблема в том, что на моей странице html я могу получить данные из своих функций Lambda, но не отправлять входные данные им. Что я делаю не так?
Спасибо за помощь!