【发布时间】:2020-08-17 20:32:51
【问题描述】:
我正在努力使用 Lamda 功能配置后端,目前我有完整的堆栈应用程序,并且在本地它工作正常。 我还设法部署了 mysql 服务器(aws rds)和前端页面(S3 存储桶),当我尝试部署后端(Lamda 函数)时,我有点困惑。
如果有人可以在这里为我的以下问题提供建议或指点,我真的很感激。
Q1- 我已经挖掘并可以看到我可以使用 export.handler 但在这里我有 two API 调用,我需要制作两个单独的函数吗?如果是,那么做我需要上传两个 zip 文件以及两个文件中的所有其他依赖项
Q2- 是否是从 Lamda 函数连接到 rds DB 的正确方法,如下所示,我是否仍然能够执行相同的 connect.query commads....来使用 mysql(它是如果我从本地访问 aws-rds,目前工作正常)
let connection = mysql.createConnection({
host: "root.cjfdyreioui1.eu-west-2.rds.amazonaws.com", // here i connect to rds aws
user: "root",
password: "abc1234",
database: "join_us",
insecureAuth: true,
});
-Backend-codeserver.js 的片段,我压缩了大约 30mb(我是否需要保留 index.js 文件名)
const express = require("express");
const mysql = require("mysql");
const jwt = require("jsonwebtoken");
const auth = require("./verifyTokenExisting");
const authNew = require("./verifyTokenNew");
const cors = require("cors");
const cookieParser = require("cookie-parser");
const pdf = require("html-pdf");
const pdfTemplate = require("./documents/pdfTemplate");
const fs = require("fs");
const app = express();
app.use(express.json());
app.use(cookieParser());
app.use(
cors({
credentials: true, // for cookies
origin: "http://localhost:3000",
optionsSuccessStatus: 200,
})
);
let connection = mysql.createConnection({
host: "root.cjfdyreioui1.eu-west-2.rds.amazonaws.com", // here i connect to rds aws
user: "root",
password: "abc1234",
database: "join_us",
insecureAuth: true,
});
//! when clicked on signin page to verify after signin/
app.post("/api/verifyifloginalready", (req, res) => {
let token = req.cookies.yogaoutlet_access_token;
//
if (!token) {
return res.status(401).end();
}
let decodepayload;
try {
decodepayload = jwt.verify(token, "lllfasdgfdadsfasdfdasfcadsf");
} catch (error) {
if (error instanceof jwt.JsonWebTokenError) {
// if invalid token
res.status(401).end();
} else {
res.status(400).end();
}
}
connection.query("SELECT * FROM users WHERE email=?;", [decodepayload.email], function (err, results) {
res.json(results);
});
});
////! LOGIN & LOGOUT
app.post("/api/newuser", (req, res) => {
let x1 = req.body;
if (req.body.logout === false) {
connection.query("SELECT * FROM users WHERE email=?;", [x1.email], function (err, results) {
if (err) console.log("13333", err);
else {
if (results[0].email && results[0].password) {
if ((results[0].password == x1.password && results[0].userloginStatus == true) || (results[0].password == x1.password && results[0].userloginStatus == null)) {
const payload = { email: results[0].email };
const token = jwt.sign(payload, "lllfasdgfdadsfasdfdasfcadsf");
res.cookie("yogaoutlet_access_token", token, {
maxAge: 25 * 24 * 60 * 60 * 1000,
httpOnly: true, // it will enable on frotend-javascript to not have access to cokkies
});
res.status(200).end();
connection.query(
"UPDATE users SET userloginStatus=? WHERE email=?",
["1", results[0].email],
function (err, results) {
if (err) throw err;
console.log(results);
}
);
} else {
res.json({
data: "invalid password",
});
}
} else res.redirect("http://localhost:3000/about");
}
});
} else {
const payload = { email: req.body.email };
console.log("339x", payload);
const token = jwt.sign(payload, "lllfasdgfdadsfasdfdasfcadsf");
res.clearCookie("yogaoutlet_access_token");
res
.json({
data: "User Logged out",
})
.end();
}
});
【问题讨论】:
标签: amazon-web-services amazon-s3 deployment aws-lambda