Amazon web services 我应该基于当前的内部api创建公共api吗

Amazon web services 我应该基于当前的内部api创建公共api吗,amazon-web-services,api,rest,aws-lambda,aws-api-gateway,Amazon Web Services,Api,Rest,Aws Lambda,Aws Api Gateway,我的项目是建立公共网站和内容管理系统(CMS)。 我正在使用Lambda和API网关作为API。 CMS当前有一个api GET请求,用于从下表获取所有数据。 “横幅”表格 属性: -id:string(主键/分区键) -标题:字符串 -isActive:布尔值 这是我的lambda函数: getBanner.js 'use strict' const AWS = require('aws-sdk'); exports.handler = async function (event, con

我的项目是建立公共网站和内容管理系统(CMS)。
我正在使用Lambda和API网关作为API。
CMS当前有一个api GET请求,用于从下表获取所有数据。

“横幅”表格

属性:
-id:string(主键/分区键)
-标题:字符串
-isActive:布尔值

这是我的lambda函数:
getBanner.js

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

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

    let responseBody = "";
    let statusCode = 0;

    const params = {
        TableName : "Banner",
    };

    try{
        const data = await documentClient.scan(params).promise();
        responseBody = JSON.stringify(data.Items);
        statusCode = 200
    }catch(err){
        statusCode = 403
    }

    const response = {
        statusCode: statusCode,
        body: responseBody
    }

    return response
}

我需要一个api来获取isActive=true的所有横幅。

我可以想到两种方法

1.修改现有的lambda函数

我可以添加如下内容:

…
if(event.queryStringParameters.isActive === true){
     // add filter or query to get all result
}
...
但是,如果每个人不使用queryStringParameters,他们都可以获得所有数据(包括isActive=false的结果),
这是我想要避免的,因为isActive=false的数据不应该被公众看到。

2.创建新的lambda函数

这可能是保护数据的最佳方式。
但是我有很多API遇到同样的情况(具有“inActive”属性),这意味着我需要创建很多公共API。

我应该使用哪种方法?

您可以创建指向相同Lambda函数的公共API网关,在API网关配置中,它总是传递
isActive=true
参数,这样公共API的用户就不能覆盖它。

这意味着我应该在API网关控制台中创建另一个API?是的,这就是“创建另一个API网关”的意思。您能解释一下如何设置API网关配置吗?非常感谢
…
if(event.queryStringParameters.isActive === true){
     // add filter or query to get all result
}
...