Я пытаюсь использовать AWS DynamoDB, Lambda, API Gateway и S3 для создания простого веб-сайта. У DDB есть таблица, и в таблице есть одна запись. S3 имеет простой файл для HTML для веб-сайта. Цель состоит в том, чтобы отобразить запись, расположенную в DDB на веб-сайте, если я обновлю значение в DDB, то при обновлении веб-сайта следует изменить номер, чтобы отразить обновление в DDB. На данный момент у меня есть лямбда-функция, которая успешно извлекает запись из DDB. Я застрял в попытке сказать файлу HTML, чтобы он вызывал лямбда-функцию и возвращал данные (используя API Gateway). Я никогда раньше не работал с AWS, простите, если это даже не правильный подход для этой цели.
Ниже приведен код для лямбда-функции:
'use-strict';
const AWS = require('aws-sdk');
const docClient = new AWS.DynamoDB.DocumentClient({region: 'us-location-x'});
exports.handler = (event, context, callback) => {
let tableToRead = {
TableName: 'dataStore',
Limit: 10
};
docClient.scan(tableToRead, function(err,data){
if(err){
callback(err,null);
} else {
callback(null,data);
}
});
};
И это HTML на S3:
<html>
<head>
</head>
<body>
<h1> This number that's in DDB </h1>
<div id="entries">
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<script type="text/javascript">
//This is the link generated by API Gateway
var API_URL = 'https://xxxxxxxxxx.execute-api.us-location-x.amazonaws.com/prod/retrieveDDB';
$(document).ready(function(){
$.ajax({
type: 'GET',
url: API_URL,
success: function(data){
$('#entries').html('');
data.Items.forEach(function(tableItem){
$('#entries').append('<p>' + tableItem.Row + '</p>');
})
}
});
});
</script>
</body>
</html>
Когда я запускаю лямбда-функцию с помощью кнопки «test», она успешно извлекает данные из DDB. Но когда я пытаюсь запустить HTML, он говорит текст заголовка, но затем не добавляет значение из DDB. Я предполагаю, что я просто не понимаю, как вызвать / проанализировать лямбда-данные (если я даже настроил их правильно). Заранее спасибо за любую помощь!