1.AWS Lambda 官网地址(有实例可以参考) https://docs.aws.amazon.com/zh_cn/lambda/latest/dg/services-apigateway-code.html
2.本地通过Lambda访问数据库数据并抛出数据,这是使用的是node.js
2.1因为数据库非本地,而是远程数据库,所以涉及到异步处理,所以使用案例中异步处理程序
2.2使用异步处理函数必须注意, return 返回的必须是promise,也就是说单纯的return Obj/Arr 是不行的
let mysql = require("mysql");
//远程数据库 参数参考网址:https://www.runoob.com/nodejs/nodejs-mysql.html
const db_config={
connectionLimit : 10,
host:"数据库地址",
user:"用户名",
password:"密码",
port:"端口号:默认3306",
database:"数据库名",
}
var pool = mysql.createPool(db_config);
// event 中包含整个请求的内容
exports.handler = async function(event) {
//可以打印出来方便自己使用里面的参数
console.log(event)
const promise = new Promise(function(resolve, reject) {
let sql = "SELECT * FROM 表名 WHERE 1=1 "
pool.getConnection(function(err,conn){
if(err){
resolve(formatResponse(serialize(responseBody(-1,'GetConnection Error'))))
}else{
conn.query(sql,function(err,result){
if(err){
resolve(formatResponse(serialize(responseBody(-1,'Query Error'))))
}else{
//数据库数据
console.log(result)
//释放连接
conn.release();
resolve(formatResponse(serialize(responseBody(0,'success',list))))
}
}
}
}
})
return promise
})
//请求返回数据格式
var responseBody = function(code,message,result){
return {
"code": code,
"message": message,
"requestId":uuid(),
"result": result
}
}
var formatResponse = function(body){
var response = {
"statusCode": 200,
//允许跨域
"headers": {
"Access-Control-Allow-Origin":"*",
"Access-Control-Allow-Headers":"DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization",
"Access-Control-Allow-Methods":"PUT,POST,GET,DELETE,OPTIONS",
"Content-Type": "application/json"
},
"isBase64Encoded": false,
"multiValueHeaders": {
"X-Custom-Header": ["My value", "My other value"],
},
"body": body
}
return response
}
var serialize = function(object) {
return JSON.stringify(object, null, 2)
}