Исключение проверки: значение атрибута выражения содержит недопустимый ключ

#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.