Как 2 API в шлюзе API используют одну и ту же лямбда-функцию, но разные переменные среды

В настоящее время у меня есть API под названием «cms-api», который содержит функцию сканирования Dynamodb.

getOrganization.js

'use strict'
const AWS = require('aws-sdk');

exports.handler = async function (event, context, callback) {
    const documentClient = new AWS.DynamoDB.DocumentClient();

    let responseBody = "";

    const params = {
        TableName : "Organization"
    };

    try{
        const data = await documentClient.scan(params).promise();
    }catch(err){
        responseBody = `Unable to get Organization: ${err}`;
    }
}

Таблица «Организация» имеет следующие атрибуты

------------------------------------------
Id    isActive    name
1    true              tim
2    false            tom
3    true             ken
4    true            joe
------------------------------------------

Позже я создаю еще один API в шлюзе API под названием web-API.
Я хочу использовать ту же лямбда-функцию getOrganization.js в своем ресурсе.
Но getOrganization.js должен возвращать данные только с isActive = true.

Является ли это возможным? Или мне каждый раз создавать новую лямбда-функцию?

Прикрепил мое соображение ранее. ">должен ли я создать публичный API на основе текущего внутреннего API




Ответы (1)


Как правило, рекомендуется использовать переменные этапа в своих API-шлюз. Они позволяют вам:

Вы также можете использовать переменные этапа для передачи параметров конфигурации в функцию Lambda через ваши шаблоны сопоставления. Например, вы можете повторно использовать одну и ту же функцию Lambda для нескольких этапов вашего API, но функция должна считывать данные из другой таблицы Amazon DynamoDB в зависимости от того, какой этап вызывается. В шаблонах сопоставления, которые генерируют запрос для функции Lambda, вы можете использовать переменные этапа для передачи имени таблицы в Lambda.

person Marcin    schedule 04.12.2020
comment
Так ты имеешь в виду, что мне не нужно создавать новый API? - person CCCC; 04.12.2020
comment
@CCCC У вас может быть два разных этапа в одном API. На каждом этапе будут использоваться разные значения переменных этапа, которые вы можете передать одной функции, как описано в документации. - person Marcin; 05.12.2020