#javascript #aws-lambda #aws-api-gateway #aws-dynamodb
Вопрос:
Я пытаюсь отфильтровать результаты сканирования таблицы DynamoDB, используя выражение фильтра в моем запросе. Я использую функцию Lambda, развернутую на API-шлюзе на AWS.
Функция, запрашивающая конечную точку
// Scan the table for entries and use data to populate HTML table.
async function scanTable(){
var query = {
TableName: "bookings",
ProjectionExpression: "id, username, start_booking, end_booking",
FilterExpression: "username = :u",
ExpressionAttributeValues: {":u":"human@gmail.com"}
};
try{
const response = await axios({ method: 'get', url: `${url}/bookings`, params: query });
}catch(err){
console.log(err);
}
}
Лямбда-функция
'use strict'
const AWS = require('aws-sdk');
exports.handler = async (event, context) => {
const documentClient = new AWS.DynamoDB.DocumentClient({convertEmptyValues: true});
let responseBody = "";
let statusCode = 0;
const params = (event.queryStringParameters);
// console.log(params);
try{
const data = await documentClient.scan(params).promise();
responseBody = JSON.stringify(data.Items);
statusCode = 200;
}catch(err){
responseBody = `Unable to get the bookings: ${err}`;
statusCode = 403;
}
console.log("Response Body: " responseBody);
const response = {
statusCode: statusCode,
headers: {
"Content-Type": "application/json",
"Access-Control-Allow-Origin": "*"
},
body: responseBody
};
return response;
}
Полная ошибка, которую я получаю, это
ValidationException: ExpressionAttributeValues contains invalid key: Syntax error; key: "11"
где значение ключа в конце ошибки (ключ:»11″) изменяется в некоторой степени в зависимости от значения, присвоенного в атрибуте ExpressionAttributeValues. Я попытался следовать примеру FilterExpression в документах DynamoDB для функции сканирования, но безрезультатно. Вот еще один пример.
Вот аналогичный вопрос с форумов AWS.