Как передать параметры в функцию Lambda с помощью API-шлюза для запроса элементов из DynamoDB? - PullRequest
0 голосов
/ 21 января 2019

У меня есть лямбда-функция для запроса данных из таблицы DynamoDB. Лямбда-функция выглядит следующим образом:

'use strict';

var AWS = require('aws-sdk'),
documentClient = new AWS.DynamoDB.DocumentClient(); 

exports.listItems = function(event, context, callback){
var params = {
TableName : event.tablename,
IndexName : "active_flag-index",
KeyConditionExpression: "#active = :active",
FilterExpression: "#deliverable = :deliverable and #type = :type",
ProjectionExpression: "#name, price, item_description, item_type",
ExpressionAttributeNames:{
    "#active": "active_flag",
    "#deliverable": "deliverable_flag",
    "#name": "name",
    "#type": "item_type"
},
ExpressionAttributeValues: {
    ":active": "active",
    ":deliverable": "deliverable",
    ":type": event.type
}
};
documentClient.query(params, function(err, data) {
if (err) {
    console.error("Unable to query. Error:", JSON.stringify(err, null, 2));
} else {
    console.log("Query succeeded.");
    data.Items.forEach(function(item) {
        console.log(" -", item.name + ": " + item.price);
    });
}
});
}

Параметры теста { "tablename": "vijayarams_items", "тип": "основное блюдо" } Используя параметры этого теста, элементы, соответствующие основному блюду, извлекаются успешно. Теперь я не уверен, как передать эти параметры, используя API для вызова этой лямбда-функции. Я создал API с методом GET, но метод GET не использует тело запроса для отправки параметров. Пожалуйста, расскажите мне, как действовать дальше. Я могу создавать таблицы, обновлять элементы, используя метод POST, используя AJAX и передавая параметры в тело. Я просто не могу запросить элементы из таблицы, используя заданные параметры.

1 Ответ

0 голосов
/ 21 января 2019

Как правило, REST API передает параметры через строку запроса, например:

GET /resources?param1=value1&param2=value2.

Вы можете определить свои параметры на уровне шлюза API, как описано здесь: https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-method-settings-method-request.html#setup-method-request-parameters

Затем в своем лямбда-коде вам нужно прочитать значения, переданные API-шлюзом во входящем запросе, и использовать их для построения объекта DynamoDB params.Точный формат входящего запроса находится здесь: https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html#api-gateway-simple-proxy-for-lambda-input-format

Я бы предложил вам прочитать это руководство, оно объясняет все детали, пошагово.https://docs.aws.amazon.com/apigateway/latest/developerguide/integrating-api-with-aws-services-lambda.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...