Amazon web services 我应该基于当前的内部api创建公共api吗
我的项目是建立公共网站和内容管理系统(CMS)。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
我正在使用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
}
...