Amazon web services aws-我应该创建两个lambda函数来处理dynamodb查询和非查询用例吗?
假设我有一张“横幅”表。Amazon web services aws-我应该创建两个lambda函数来处理dynamodb查询和非查询用例吗?,amazon-web-services,aws-lambda,amazon-dynamodb,Amazon Web Services,Aws Lambda,Amazon Dynamodb,假设我有一张“横幅”表。 此表有两种可能的用例。 1.从表中获取所有横幅数据 我的lambda函数可能如下所示: 'use strict' const AWS = require('aws-sdk'); exports.handler = async function (event, context, callback) { const documentClient = new AWS.DynamoDB.DocumentClient(); let responseBody =
此表有两种可能的用例。
1.从表中获取所有横幅数据 我的lambda函数可能如下所示:
'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){
responseBody = `Unabel to get products: ${err}`;
statusCode = 403
}
const response = {
statusCode: statusCode,
headers:{
"Content-Type": "application/json",
'Access-Control-Allow-Origin': '*', // Required for CORS support to work
},
body: responseBody
}
return response
}
2.按用户分区键查询/GSI我可能需要根据条幅id或条幅标题进行查询,以获得相应的表。
起初,我想将这两个用户案例合并到一个lambda函数中。
直到我打开下面的帖子。
其中一条评论为我提供了一种对这2个用户案例进行动态查询的方法,但他/她还提到:
you are giving anyone invoke the request the ability to put any query in the request, that might put you vulnerable to some type of SQL Injection attacks.
这让我思考是否应该在两个lambda函数中分离这两个用户案例?这类事情的一般做法是什么?一般来说,如果“SQL注入”可以被阻止,最好将其分为两个函数,Lambda处理程序应该单独负责。如果您想重用代码,您可以创建一些可以使用公共代码创建的公共DAL。一般来说,如果“SQL注入”可以被阻止,最好将其分为两个函数,Lambda处理程序应该是单独负责的。如果您想重用代码,您可以创建一些可以使用通用代码创建的通用DAL。我认为这取决于个人偏好,但我建议将功能拆分为两个lambda 听起来您有两种访问模式:
让你的lambda代码集中在一个单一的职责上,这将使开发、测试和调试更容易。我认为这取决于个人偏好,但我建议将功能分成两个lambda 听起来您有两种访问模式: