Heim >Web-Frontend >js-Tutorial >Eine Anleitung zur serverlosen Bereitstellung mit Express und MongoDB
Dieses Tutorial zeigt meinen bevorzugten datenbankgesteuerten Workflow für Webanwendungen. Es ist für Entwickler, die in einzelnen Projekten die Entwicklung vollständiger Stapel erreichen möchten, ohne eine komplexe Multi-Service-Infrastruktur einzurichten und aufrechtzuerhalten. Wir werden eine sehr grundlegende Webanwendung in Node.js und Express bereitstellen. Es ermöglicht den Besuchern, Notizen zu schreiben und zu speichern sowie zuvor geschriebene Notizen zu lesen. Die Daten werden in der MongoDB -Datenbank gespeichert. Wir werden GitHub -Aktionen verwenden, um eine CI https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712CD -Workflow für die Bereitstellung unserer Anwendungen für AWS Lambda zu erstellen. Der Fokus liegt auf Einfachheit, Praktikabilität und Kosteneinsparungen. Da AWS und MongoDB sehr großzügige freie Ebenen haben, können Sie kostenlos lernen. Denken Sie jedoch daran, dass, wenn Sie nicht ein paar Cent zahlen möchten, die Bewerbung später einsetzen. Da Ihre App öffentlich verfügbar ist, kann dies auf lange Sicht theoretisch die kostenlose Stufe überwiegen. Wenn Sie jedoch vorhaben, diese App -Erweiterung für eigene Zwecke zu verwenden, kann ich dieses Setup empfehlen, da sie für eine mäßig gehandelte Website sehr erschwinglich ist. Sie finden den gesamten Code für dieses Tutorial in unserem GitHub -Konto. Erstellen einer Anwendung erfordert einige Sachen. Stellen Sie sicher, dass Node und Docker in Ihrem System installiert sind. Um Knoten zu installieren, können Sie den Node Version Manager (NVM) verwenden (siehe Anweisungen hier). Installieren Sie für Docker die neueste Version von Docker Desktop für Ihr Betriebssystem. Bitte beachten Sie, dass wir Docker verwenden, um MongoDB -Instanzen auf unserer Maschine auszuführen. Alternativ können Sie die MongoDB Community Edition manuell installieren. Hier finden Sie einige Anweisungen. Sie müssen auch ein Konto auf Github, MongoDB und Amazon Web Services (AWS) haben. Bei der Registrierung bei AWS müssen Sie Ihre Kreditkartennummer eingeben. Wie oben erwähnt, werden die Schritte in diesem Tutorial die freie Stufe nicht überschreiten. Einige vorbereitende Kenntnisse über Knoten und Express können hilfreich sein. Okay, lass uns anfangen. Wir brauchen zuerst einen leeren Ordner mit der neuen Package.json -Datei. Wenn Sie NPM init machen, können Sie einen erstellen. Wir müssen die folgenden Abhängigkeiten installieren:
Schlüsselpunkte
Voraussetzungen
Lokale Entwicklung
<code class="language-bash"> <https:> npm install-Save Express Mongoose AWS-Serverless-Express && npm install--Save-dev gleichzeitig <https:> <h3>
<https:> 1
<p> Da wir die MongoDB -Datenbank verwenden, um unsere Daten zu speichern, ist die Ausführung einer Datenbankinstanz auf einem lokalen Computer für die Entwicklung hilfreich. Hier verwenden wir das neueste <em> Mongo <https:> Docker -Bild. Wenn Docker auf Ihrem Computer installiert ist, geben Sie einfach Docker Run Mongo in das Terminal ein. Das Bild wird aus DockerHub extrahiert und in einem neuen Container gestartet. Wenn Sie mit Docker nicht vertraut sind, spielt es keine Rolle. Sie müssen nur wissen, dass eine MongoDB -Instanz auf Ihrem Computer ausgeführt wird und Sie damit kommunizieren können. <https:>
<p> Um mit der Datenbank zu kommunizieren, müssen wir eine Verbindung initialisieren. Wir tun dies in einer neuen Datei namens mongoose.js.Mongoose 是帮助我们进行 MongoDB 对象建模的库 : <https:>
<pre class="brush:php;toolbar:false"> <code class="language-javascript"> https://www.php.cn/link/29a9f8c8460e5e2be4edde57fd83712https://www.php.cn/link/29A9f8460e2be4ed
const mongoose = erfordern ("mongoose");
const uri = process.env.mongoDB_url;
Verbinden Sie die Verbindung;
const Connect = async () = & gt; {
versuchen {
connection = erwarten mongoose.createconnection (URI, {{
usenewurlParser: wahr,
UseFindandModify: Falsch,
useUnifiedTopology: true,
BufferCommands: Falsch, https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712Https://www.php.cn/link/29A9f8c860e5e5e5e5e5
bufferMaxEntries: 0, https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712 and MongoDB driver buffering
});
Rückgabeverbindung;
} catch (e) {
console.Error ("konnte nicht mit MongoDB herstellen ...");
werfen e;
}
};
Funktion getConnection () {
Rückgabeverbindung;
}
module.exports = {Connect, getConnection}; <https:> <https:>
<p> 此文件导出一个包含两个函数的对象。Connect () 创建一个到我们环境变量中指定位置的 MongoDB 的连接。该连接存储在一个名为 Verbindung 的变量中。getConnection () 只是返回 Verbindung 变量。您可能想知道为什么我们不直接返回 Verbindung 变量本身。这是因为 node.js 在第一次加载后会缓存所需的模块。因此 , 我们使用一个函数从我们的 mongoose.js 模块中提取最新的Verbindung 变量。 <https:>
<p> 现在我们的应用程序能够连接到数据库 , 我们也希望在其中存储数据 我们也希望在其中存储数据 更具体地说 更具体地说 , 是我们可以在用户界面中编写的笔记。因此 , 我们将为我们的笔记创建一个数据模型。这在 Modelle 文件夹内名为 Notes.js 的新文件中完成 : <https:>
<pre class="brush:php;toolbar:false"> <code class="language-javascript"> https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712Https://www.php.cn/link/29A9f8460e5e5e2be4ed4ed4ed4ed.2be4ed4.2Be4ED4ED4.57fd83712.5e5e2be2be2be4ed. cn/link/29a9f8c8460e5e2be4edde557fd83712notes.js
const mongoose = erfordern ("mongoose");
const {getConnection} = require ("..httpps: //www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712Mongoose");
const conn = getConnection ();
const schema = mongoose.schema;
module.exports = conn.model (
"Notiz",
Neues Schema ({text: {type: string, erforderlich: true}})
); <https:> <https:>
<p> 在这里 , 我们从 mongoose.js 模块中提取当前连接 , 并在其上注册一个名为 Anmerkung 的模型。它有一个非常基本的模式 , 只包含一个名为 text 的必需属性 , 类型为 类型为 类型为 类型为 类型为 类型为 类型为 类型为 类型为 类型为 类型为 类型为 类型为 类型为 类型为 类型为 类型为 类型为 类型为 类型为 类型为 类型为 类型为 类型为 类型为 类型为 类型为 类型为 类型为 类型为 类型为 类型为 类型为 类型为 string 。Mit diesem Modell können wir in der Datenbank gespeicherte Dokumente konstruieren. <https:>
<h3> 2
<https:> Als nächstes erstellen wir eine einfache Express -Anwendung. Erstellen Sie eine Datei namens app.js im Projektstammverzeichnis.它具有以下内容 : <https:>
<pre class="brush:php;toolbar:false"> <code class="language-javascript"> https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712https://www.php.cn/link/29A9f8c8460e5e5e2be2be4edde2be4edde57fd83712.5e5e2be2be4edDe57fd83712.5e5e2be2be2be4edde57fd83712.5e5e2be2be4edde2be4edde57fd83712.2e2be2be4edde57fd83712
const express = require ("express");
const App = express ();
app.use (express.urlencoded ({erweitert: false}));
app.get ("https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712", async (req, res) = & gt; {
versuchen {
const note = require (".https: //www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712ModelShttps: //www.php.cn/link/29a9f8460e5be4de2Be4de2Be4de2Be4de2BE4DE57fd83712noTe5e5Be4de2be2be2be2be2be2be2be2be2Be2be2Be2be2be2Be4de27fd83712note5e5be5
const notes = warte note.find ({});
return res.status (200) .Send (
`
<style>
html {
Text-Align: Mitte;
Hintergrundfarbe: #93c5fd;
Schriftfamilie: "Segoe Ui", Tahoma, Genf, Verdana, Sans-Serif;
Farbe: weiß;
Schriftgröße: 2Rem;
}
textarea {
Größenänderung: Keine;
Grenze: 2px Solid #9ca3af;
Border-Radius: 4px;
Hintergrundfarbe: #F3F4F6;
Polsterung: 0,5Rem;
Breite: 90%;
}
Taste {
Padding-Links: 2Rem;
Padding-Right: 2Rem;
Padding-Top: 7px;
Padding-Bottom: 7px;
Hintergrundfarbe: #F3F4F6;
Grenze: 2px Solid #9ca3af;
Farbe: #4b5563;
Border-Radius: 4px;
}
P {
Grenzboden: 2px fest;
Polsterung: 1Rem;
Text-Align: links;
}
<https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712style>
<form method="POST">
<textarea name="text"> <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712textarea> <br>
<button type="submit"> Speichern <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712button>
<https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712form>
<h1> meine Notizen <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712h1>
$ {Notes.map ((n) = & gt; `<p> $ {n.text} <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p>`) .Join ("")}
`
);
} catch (e) {
return res.send (e);
}
});
app.post ("https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712", async (req, res) = & gt; {{{{{{{
versuchen {
const note = require (".https: //www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712ModelShttps: //www.php.cn/link/29a9f8460e5be4de2Be4de2Be4de2Be4de2BE4DE57fd83712noTe5e5Be4de2be2be2be2be2be2be2be2be2Be2be2Be2be2be2Be4de27fd83712note5e5be5
const note = neuer note (req.body);
erwarten, note.save ();
return res.send ("Notiz gespeichert. <a href='https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712'> aktualisieren <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712a>");
} catch (e) {
return res.send (e);
}
});
module.exports = app; <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code> <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712pre>
<p> Wie gesagt, die App ist sehr unhöflich und wird nur als Demonstration verwendet. Zunächst starten wir eine Express -Anwendung. Wir sagen es dann, dass wir die eingehende Anforderungsbehörde für uns analysieren sollen, indem wir die eingebaute, urlencodierte Middleware verwenden, um die übermittelten Formulardaten zu verwenden. Die Anwendung verfügt über zwei Methoden, um Anforderungen im Anwendungsstammverzeichnis zu bearbeiten: <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<ul>
<li>
<p> app.get ("https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712", ...) handelt HTTP -Anfragen. Wenn unser Benutzer die Seite lädt, wird sie aufgerufen. Wir möchten ihnen eine einfache Seite zeigen, auf der sie Notizen eingeben und speichern können. Darüber hinaus möchten wir zuvor geschriebene Notizen anzeigen. In der Rückruffunktion des Anforderungshandlers benötigen wir unser Notizmodell. Das Modell muss in der Rückruffunktion unseres Postanforderungs -Handlers erforderlich sein, da eine aktuelle Datenbankverbindung erforderlich ist. Die Verbindung besteht möglicherweise nicht, wenn die App.js -Datei zum ersten Mal geladen wird. Anschließend wenden wir die Find -Methode an, um alle Notizen in der Datenbank zu empfangen. Diese Methode gibt ein Versprechen zurück. Also warten wir darauf, dass es analysiert wird. Last but not least verwenden wir die Send -Methode des Antwortobjekts (RES), um die Zeichenfolge an den Client zurück zu senden. Diese Zeichenfolge enthält die HTML -Syntax, die der Browser als das tatsächliche HTML -Element rendert. Für jede Notiz in unserer Datenbank fügen wir einfach ein Absatzelement hinzu, das seinen Text enthält. <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<p> Hier können Sie dieses sehr bescheidene Beispiel in eine schöne Benutzeroberfläche umwandeln. Sie können frei wählen, was an den Kunden gesendet werden soll. Dies könnte beispielsweise eine vollbündelte Client -Reaktionsanwendung sein. Sie können auch eine serverseitige Rendering-Methode auswählen-beispielsweise eine Express-Ansichts-Engine wie Lenker. Je nachdem, was es ist, müssen Sie möglicherweise mehr Routen zu Ihrer Anwendung hinzufügen und statische Dateien wie JS -Pakete bereitstellen. <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712li>
<li>
<p> app.post ("https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712", ...) Die HTTP -Postanfragen bearbeitet. Wenn der Benutzer seine Notizen speichert, wird er aufgerufen. Auch hier brauchen wir zuerst unser Notizmodell. Auf die Anforderungsnutzlast kann über das Körperattribut des Anforderungsobjekts (REQ) zugegriffen werden. Es enthält den vom Benutzer eingereichten Text. Wir verwenden es, um ein neues Dokument zu erstellen und es mithilfe der von Mongoose bereitgestellten Speichernmethode zu speichern. Auch hier warten wir, bis dieser asynchrone Betrieb abgeschlossen ist, dann den Benutzer benachrichtigt und ihnen die Möglichkeit geben, die Seite zu aktualisieren. <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712li>
<https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712ul>
<p> Damit unsere Anwendung tatsächlich HTTP -Anfragen anhören kann, müssen wir die von Express bereitgestellte Hörmethode aufrufen.Wir werden dies in einer separaten Datei dev.js tun, die dem Projekt Root -Verzeichnis hinzugefügt wurde: <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<pre class="brush:php;toolbar:false"> <code class="language-javascript"> https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712Https://www.php.cn/link/29a9f8c860e::::::::::::::::::::::::::::::::::::::::::::::::: :: ::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::
const app = required (".https: //www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712app");
const {connect} = require (".https: //www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712mongoose");
verbinden();
const port = 4000;
app.listen (port, () = & gt; {
console.log (`App hört Port $ {port}`);
}); <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code> <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712pre>
<p> Hier rufen wir die Verbindungsfunktion in der Datei mongoose.js auf. Dadurch wird eine Datenbankverbindung initiiert. Zu guter Letzt hören wir an, HTTP -Anfragen auf Port 4000 zu hören. <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<p> Mongo -Docker -Bilder mit zwei separaten Befehlen starten und unsere Anwendung ist etwas problematisch. Deshalb fügen wir unserer Package.json -Datei einige Skripte hinzu: <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<pre class="brush:php;toolbar:false"> <code class="language-json"> "Skripte": {
"Start": "Gleichzeitig 'npm: mongoDB' 'npm: dev'",
"dev": "mongodb_url = mongoDB: https: //www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712https: //www.php.cn/link/29A9Af8c8460E2555557f8c8460e2Be4En5555557f8c8460e2 : 27017 node dev.js ",
"MongoDB": "Docker Run -P 27017: 27017 Mongo"
} <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code> <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712pre>
<p> mongoDB startet eine MongoDB -Instanz- und Kartenbehälteranschluss 27017 bis Port 27017 der lokalen Maschine. DEV startet unsere Anwendung und legt die in der Mongoose.js -Datei geladene Umgebungsvariable mongoDB_url fest, um mit unserer Datenbank zu kommunizieren. Das Start -Skript führt beide Skripte parallel aus. Jetzt müssen wir nur noch NPM -Start im Terminal ausführen, um unsere Anwendung zu starten. <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<p> Sie können jetzt auf http zugreifen: https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712https://www.php.cn/link/29a9f8c8460E5e5e5e5e5e5e2be2Be4edde55 in Ihren Stöbern 000 zum Laden der Anwendung.<https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<p> <img src="/static/imghwm/default1.png" data-src="https:https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712img.php.cnhttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712uploadhttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712articlehttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712000https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712000https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712000https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712173916284121297.jpg" class="lazy" alt="A Guide to Serverless Deployment with Express and MongoDB " https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712> <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<h2> <strong> Bereitstellung <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712strong> <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712h2>
<p> Es ist Zeit, unsere Anwendung bereitzustellen. Wir werden Lambda -Funktionen auf AWS, MongoDB Atlas und AWS API Gateway verwenden. <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<h3> 1. Warum benutzen wir sie? <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712h3>
<p> Lambda -Funktion ist eine Möglichkeit, Code als Antwort auf HTTP -Anforderungen auszuführen, ohne den Server zu pflegen. Sie laufen nur auf Demand, was bedeutet, dass Sie nicht für die Serverzeit bezahlen müssen, wenn niemand Ihren Dienst anruft. Auf der anderen Seite wird AWS automatisch skaliert und mehr Lambda -Instanzen starten. <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<p> Wie der Name schon sagt, sind Lambda -Funktionen Funktionen, die Sie mit dem ausfüllen können, was Sie wollen. Es gibt nur eine Ausnahme: Ihr Code sollte nicht staatlich sein, da die Lambda -Instanz geschlossen wird, sobald er nicht mehr ausgeführt wird. <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<p> Wir wickeln die gesamte Anwendung in eine Lambda -Funktion ein und stellen sie auf AWS Lambda ein. AWS Lambda hat eine sehr großzügige, unbegrenzte kostenlose Stufe, die eine Million kostenlose Anfragen pro Monat und 400.000 GB Sekunden umfasst! Sie können also sicher mit dem Dienst experimentieren und mehrere Lambda -Funktionen bereitstellen, ohne dafür zu bezahlen. Denken Sie daran, wenn Sie sie nicht mehr verwenden möchten, löschen Sie diese Funktionen. <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<h3> 2.
<https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712h3> Melden Sie sich jetzt bei Ihrer AWS -Verwaltungskonsole an und navigieren Sie zu AWS Lambda. Klicken Sie unter dem Abschnitt <p> Funktionen <em> auf <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712em>, um eine Funktion <em> zu erstellen. Vorher ist es wichtig, dass Sie die Region für die Bereitstellung des Dienstes angegeben haben. Auf einem Desktop -Computer können Sie einen Bereich in der oberen rechten Ecke der Verwaltungskonsole auswählen. <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712em>
<https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p> Wählen Sie <p>, um von Grund auf zu erstellen <em> und benennen Sie Ihre Funktion.Ich habe es <em> express-lambda-exampel <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712em> genannt. Wählen Sie unter <em> Laufzeit <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712em> <em> node.js 12x <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712em> aus und erstellen Sie die Funktion. Sie sehen ein Fenster wie unten gezeigt: <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<p> <img src="/static/imghwm/default1.png" data-src="https:https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712img.php.cnhttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712uploadhttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712articlehttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712000https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712000https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712000https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712173916284443353.jpg" class="lazy" alt="A Guide to Serverless Deployment with Express and MongoDB " https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712> <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<p> Unsere Lambda -Funktion enthält bereits einen Testcode. Sie können dies ignorieren, weil wir es später überschreiben werden. Wenn Sie die Seite nach unten scrollen, sehen Sie einen Abschnitt namens <em> Umgebungsvariable <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712em>. Denken Sie daran, dass wir in unserem vorherigen lokalen Entwicklungsskript eine Variable namens mongoDB_url definiert haben? Wir müssen hier die gleichen Variablen erstellen, damit unsere Lambda -Instanz mit unserer Datenbank kommunizieren kann. <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<p> Wir haben die Datenbank jedoch noch nicht ausgeführt. Für diesen Zweck möchten wir unsere lokalen Maschinen nicht nutzen. Deshalb werden wir einen MongoDB Atlas Free Tier -Cluster erstellen. <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<h3> 3.
<https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712h3> Um einen kostenlosen Tiercluster zu erstellen, erstellen Sie ein Konto auf mongodb.com. Während des Registrierungsprozesses werden Sie aufgefordert, den Cluster -Typ auszuwählen. Wählen Sie den kostenlosen gemeinsam genutzten Cluster <p>. Der nächste Schritt besteht darin, Ihr Projekt zu benennen. Darüber hinaus können Sie Ihre bevorzugte Programmiersprache auswählen. <em>
<https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712em> Im nächsten Schritt können Sie Cloud -Anbieter und Regionen auswählen. Da wir bereits AWS für unsere Node.js -Anwendung verwenden, empfehle ich Ihnen, sie auszuwählen und wenn möglich, wählen Sie dieselbe Region, die Sie auf AWS ausgewählt haben. Im nächsten Abschnitt können Sie entscheiden, welches Niveau verwendet werden soll. Wählen Sie die <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p> m0 Sandbox <p> aus. MongoDB empfiehlt nicht, diese Hierarchie in Produktionsumgebungen zu verwenden, aber für Anfänger bietet sie alles, was Sie benötigen.<https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<p> <img src="/static/imghwm/default1.png" data-src="https:https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712img.php.cnhttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712uploadhttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712articlehttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712000https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712000https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712000https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712173916284592009.jpg" class="lazy" alt="A Guide to Serverless Deployment with Express and MongoDB " https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712> <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<p> Ein paar Minuten später ist unser Cluster bereit für den Einsatz. Das einzige, was jetzt fehlt, ist der Zugang dazu. Klicken Sie im Menü auf <em>, um auf <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712em> zuzugreifen und einen neuen Benutzer zu erstellen. Die Authentifizierungsmethode ist <em> Passwort <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712em>. Zuschüsse des Benutzers gelesen und schreibt Berechtigungen. Danach müssen wir die IP -Adressen, die auf unsere Datenbank zugreifen können, die Whitelist. Sie können dies unter dem Abschnitt <em> Netzwerkzugriff <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712em> tun. <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<p> Leider kennen wir die IP jeder Lambda -Instanz nicht, die versucht, eine Verbindung zu unserem Cluster herzustellen. Wir werden also alle IP -Adressen mit 0,0.0.0 https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd837120 aufweichen. Bitte beachten Sie, dass dies nicht empfohlen wird, wenn Sie sensible Daten haben und einen hohen Datenschutzgrad sicherstellen möchten. Unsere Cluster werden jetzt nur durch die Anmeldeinformationen geschützt, die wir den Datenbankbenutzern geben. Das Einrichten von Peer -Verbindungen ist eine mögliche Lösung für dieses Problem. <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<p> Gehen Sie jetzt zurück zu Ihrem Cluster und klicken Sie auf <em> Verbindung <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712em>. Klicken Sie im Fenster Popup-Modus auf <em>, um Ihre Anwendung <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712em> zu verbinden. Wählen Sie dann node.js Version 2.2.12 oder höher und kopieren Sie die Verbindungszeichenfolge. Kehren Sie zu unserer Lambda -Funktionskonsole auf AWS zurück, erstellen Sie eine neue Umgebungsvariable namens mongodb_url und fügen Sie die Verbindungszeichenfolge darin ein. Stellen Sie sicher, dass Sie den Platzhalter in der Zeichenfolge durch die Anmeldeinformationen des Datenbankbenutzers und den Namen der Datenbank ersetzen. <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<h3> 4.
<https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712h3> Um AWS Lambda unsere Anwendung anzurufen, müssen wir ein neues Eintragskript einrichten, das dem in der Dev.js -Datei ähnelt.Wir werden es index.js nennen, das Folgendes hat: <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<pre class="brush:php;toolbar:false"> <code class="language-javascript"> https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712Https://www.php.cn/link/29a9f8c860e5e5e2be4edde2be4edde57fd83712e5e2be4ed
const awsserverlessExpress = required ("aws-serverless-express");
const {connect} = require (".https: //www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712mongoose");
lass connection = null;
module.exports.handler = async (Ereignis, Kontext) = & Gt;
context.callbackwaitsforeMptyEventLoop = false;
if (connection === null) connection = warte connect ();
const app = required (".https: //www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712app");
const server = awsServerlessExpress.CreateServer (App);
AWSServerlessExpress.Proxy zurückgeben (Server, Ereignis, Kontext, "Versprechen"). Versprechen;
}; <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code> <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712pre>
<p> Hier verwenden wir die AWS-Serverless-Express-Bibliothek. Es hat im Grunde die gleiche Funktionalität wie die Hörmethode in Dev.js. Dadurch können unsere Anwendung Kundenanforderungen in einer Lambda -Umgebung bearbeiten. <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<p> Jetzt gibt es eine wichtige Sache über unsere Lambda.js -Datei. Jedes Mal, wenn die Lambda -Funktion aufgerufen wird, wird die Handler -Funktion ausgeführt. Alles außerhalb der Handler -Funktion wird einmal gestartet, wenn der Lambda -Container begonnen wird und zwischen mehreren Lambda -Anrufen bestehen kann. Aus diesem Grund speichern wir MongoDB -Verbindungsobjekte im globalen Umfang der Datei. Jedes Mal, wenn die Handler -Funktion ausgeführt wird, wird überprüft, ob die Verbindung gestartet wurde. In diesem Fall wiederverwendet die Funktion sie wieder, anstatt sich jedes Mal wieder mit der Datenbank zu verbinden. Dies ist sehr wichtig, da es viel Ausführungszeit spart. Damit die Verbindung in mehreren Aufrufen bestehen kann, müssen wir den Context.CallbackwaitForEMptyEventLoop auf false festlegen. Weitere Informationen zu dieser Funktion finden Sie hier. <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<h3> 5.
<https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712h3> Der nächste Schritt besteht darin, einen CI https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712CD -Workflow unter Verwendung von GitHub -Aktionen zu erstellen. Dies bedeutet, dass wir jedes Mal, wenn wir eine Codewechsel in das Github -Repository drücken, eine Pipeline auslösen möchten. Die Pipeline übernimmt automatisch die Aktualisierung unserer Lambda -Funktionen auf AWS. Jakob Lind beschreibt diesen Prozess in seinem Artikel "So einrichten AWS Lambda und automatische Bereitstellung mit Github -Aktionen" gut. Ich werde kurz die Hauptteile zusammenfassen. <p>
<https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p> Um GitHub aufzustellen und den Workflow zu starten, sind wir auf dem Pfad https://www.php.cn/link/29a9f8c8460e5e2be4eddede557fd83712.githubhtps://www.php.cn/link/link/29a9f844040404040404040401004010ung eines Camns.php.php.cn/link/29a9f8c840f8c84f840f840f8404f84040f840404040404040404040404010ung eines Camns.php.php.cn/link/29a9f8c840f8c842010f8c84f80f840f820 .yml in e2be4edde557fd83712Workflows Datei.它包含以下 yaml 代码 : <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<pre class="brush:php;toolbar:false"> <code class="language-yaml"># https://www.php.cn/link/29a9f8c8460e5e2be4edde57fd83712.githubhtps://www.php.cn/link/29a9f84660e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5e5712712ee5e5e5e5e5e5e5e57120E5e5e5e5e5e5e5e57fdpdps5e5e5e5e5e5e5e5Et www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712deploy.yml
Name: Bereitstellung in Lambda
An:
drücken:
Zweige:
- hauptsächlich
Jobs:
einsetzen:
Name: Bereitstellung
Strategie:
Matrix:
Node-Version: [12.x]
Läufe: Ubuntu-latest
Schritte:
- verwendet: actionshttps: //www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712Checkout@v1
- Name: Setup NodeJs Setup
Verwendete: actionshttps: //www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712Setup-node@v1
mit:
Node-Version: $ {{matrix.node-version}}
- Name: NPM Installation
Run: NPM CI -Produktion
- Name: Zip
Verwendete: montudorhttps: //www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712action-zip@v0.1.1
mit:
ARGS: ZIP -qq -r .https: //www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712app.zip .https: //www.php.cn/link/29Fd83f8c8460e5Edde557fd83f81En2Ent83f81
- Name: Drücken Sie nach Lambda
Verwendete: AppleboyHttps: //www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712lambda-action@master
mit:
AWS_ACCESS_KEY_ID: $ {{secrets.aws_access_key}}
AWS_SECRET_ACCESS_KEY: $ {{Secrets.aws_secret_key}}
aws_region: eu-central-1 # 请替换为您的 aws 区域
Funktion_Name: Express-Lambda-Beispiel
ZIP_FILE: app.zip <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712code> <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712pre>
<p> 该文件告诉 GitHub -Aktionen 在每次推送到存储库的主分支时执行一个名为 Bereitstellen 的作业。对我来说 , 将其仅限于主分支非常有用。因此 , 您可以安全地推送到您的开发分支 , 而不会将不需要的代码部署。 <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<p> Bereitstellen 作业只是安装所有必要的库 , 将整个项目压缩 , 并将其推送到 aws lambda 。请注意 , yaml 文件需要通过环境变量访问 aws 访问密钥 : aws_access_key 和 aws_secret_key 。您可以通过在 aws 上的身份和访问管理控制台中创建新用户来生成这些密钥。获得密钥后 , 您需要将它们另存为 Github 项目设置下的环境变量 , 位于 <em> Geheimnisse <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712em> 下。 <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<p> 要使您的应用程序在 aws lambda 上准备好 , 您需要提交您的代码并将其推送到 Github 存储库的主分支。 <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<h3> 6. 使用 AWS API Gateway 使我们的应用程序可访问 <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712h3>
<p> 现在我们的应用程序已准备好用于实时环境。但是 , 我们没有通过 Web 访问它的方法。这就是我们接下来使用 AWS API Gateway 所做的。Bitte beachten Sie, dass das API -Gateway auch eine kostenlose Stufe hat. Dieses Paket ist jedoch auf 12 Monate begrenzt. <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<p> Navigieren Sie in Ihrer AWS -Konsole zum API -Gateway -Dienst und klicken Sie auf <em> API <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712em>, wählen Sie <em> REST API <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712em>, nennen Sie es und speichern Sie es. <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<p> Um das API -Gateway mit unserer Lambda -Funktion zu verbinden, erstellen wir eine neue Methode, die alle HTTP -Anforderungen an unsere Lambda -Funktion weiterleitet. Daher wählen Sie im Dropdown-Menü <em> Betrieb <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712em> die Methode <em> erstellen <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712em> und wählen Sie <em> alle <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712em>. Sie sollten einen Bildschirm sehen, wie im folgenden Bild gezeigt. Stellen Sie sicher, dass das Kontrollkästchen <em> Lambda Agent Integration <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712em> verwendet wird. Geben Sie den Namen der Lambda -Funktion ein und speichern Sie ihn. <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<p> <img src="/static/imghwm/default1.png" data-src="https:https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712img.php.cnhttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712uploadhttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712articlehttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712000https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712000https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712000https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712173916284649066.jpg" class="lazy" alt="A Guide to Serverless Deployment with Express and MongoDB " https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712> <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<p> Als nächstes müssen wir die Lambda -Proxy -Integration einrichten. Dies bedeutet im Grunde, dass alle Kundenanfragen ebenso wie in unserer Lambda -Funktion umgeleitet werden sollten. Daher erstellen wir eine neue Ressource im Dropdown-Menü <em> Aktion <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712em>. Wählen Sie im Fenster "Popup-Modus" das Kontrollkästchen <em> als Proxy-Ressource <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712em> aus (siehe unten) und speichern Sie.<https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<p> <img src="/static/imghwm/default1.png" data-src="https:https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712img.php.cnhttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712uploadhttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712articlehttps://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712000https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712000https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712000https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712173916284977045.jpg" class="lazy" alt="A Guide to Serverless Deployment with Express and MongoDB " https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712> <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<p> Dies erstellt eine andere Methode, die wir mit der Lambda -Funktion verbinden müssen. <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<p> Last but not least stellen wir unsere API bereit, indem wir <em> API <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712em> im Dropdown-Menü <em> Aktion <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712em> bereitstellen. Wählen Sie im Popup-Fenster <em> [neue Stufe] <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712em>, nennen Sie die Bühne und stellen Sie sie bereit. <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<p> Das war's. Sie können auf unsere Anwendung zugreifen, indem Sie auf die <em> -Ruf -URL <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712em> im <em> Bühneneditor <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712em> der erstellten Phase klicken. <em> rufen Sie URL <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712em> auf. Ist die öffentliche URL auf unser API -Gateway zugeordnet. Natürlich können Sie dazu auch eine benutzerdefinierte Domain verwenden. <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<h2> <strong> Schlussfolgerung <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712strong> <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712h2>
<p> Sie sehen, dass die Bereitstellung komplexerer Anwendungen, die Datenbanken erfordern, nicht unbedingt schwierig ist. Natürlich ist der Workflow, den ich Ihnen zeige, alles andere als perfekt und es fehlen viele der Funktionen, die große Anwendungen langfristig benötigen. Aber für mich hat es sich für Websites mit geringem und moderaten Verkehr als einfach, praktisch und wirtschaftlich erwiesen. Ich habe einen sehr ähnlichen Technologie -Stack verwendet, um JSChallenger zu erstellen und bereitzustellen. <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<p> Wenn Sie Ideen oder Kommentare haben, wenden Sie sich bitte an: @kueckelheim über Twitter. <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<h2> <strong> FAQs (FAQs) auf der serverlosen Bereitstellung mit Express und MongoDB <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712strong> <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712h2>
<h3> Was sind die Vorteile der Verwendung von Express und MongoDB für die serverlose Bereitstellung? <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712h3>
<p> serverlose Bereitstellung mit Express und MongoDB hat mehrere Vorteile.Erstens ermöglicht es Entwicklern, sich auf das Schreiben von Code zu konzentrieren, ohne sich um die Serververwaltung zu kümmern. Dies liegt daran, dass die serverlose Architektur den Server automatisch für Sie verwaltet. Zweitens ist es kostengünstig, weil Sie nur die Berechnungszeit, die Sie konsumieren, bezahlen müssen. Wenn Ihr Code nicht ausgeführt wird, werden keine Gebühren erhoben. Drittens skalieren serverlose Bereitstellungen automatisch basierend auf Ihrer Workload -Größe. Dies bedeutet, dass Ihre Bewerbung mehr Anfragen bearbeiten kann, wenn die Nachfrage ohne manuelle Intervention steigt. <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<h3> Wie kann ich meine serverlose Anwendung debuggen? <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712h3>
<p> serverlosen Anwendungen abtropfen können aufgrund seiner verteilten Natur etwas schwierig sein. Es gibt jedoch verschiedene Möglichkeiten, wie Sie Ihre Anwendung debuggen können. Eine der häufigsten Methoden ist die Verwendung von Protokollierung. Sie können wichtige Informationen zur Anwendungsausführung aufzeichnen und diese Protokolle dann analysieren, um Probleme zu finden. Ein weiterer Ansatz ist die Verwendung verteilter Tracking-Tools wie AWS-Röntgenaufnahmen. Diese Tools bieten Einblicke in die Anwendungsleistung und die Tatsache, dass Engpässe auftreten. <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<h3> Kann ich Express Middleware in einer serverlosen Anwendung verwenden? <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712h3>
<p> Ja, Sie können Express Middleware in serverlosen Anwendungen verwenden. Express Middleware-Funktionen sind Funktionen, die auf das Anforderungsobjekt (REQ), das Antwortobjekt (RES) und die nächste Middleware-Funktion im Anwendungsanforderungsesponse-Zyklus zugreifen können. Diese Funktionen können jeden Code ausführen, die Anforderungs- und Antwortobjekte ändern, den Anforderungs-Wirkungs-Zyklus beenden und die nächste Middleware-Funktion aufrufen. <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<h3> Wie schützt ich meine serverlose Anwendung? <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712h3>
<p> Schutz serverloser Anwendungen umfasst mehrere Schritte. Zunächst sollten Sie dem Prinzip der geringsten Berechtigungen folgen. Dies bedeutet, dass Sie Ihrer Funktion nur die erforderlichen Berechtigungen erteilen sollten. Zweitens sollten Sie sensible Daten in Ruhe und während der Übertragung verschlüsseln. Drittens sollten Sie Ihre Abhängigkeiten regelmäßig aktualisieren, um bekannte Schwachstellen zu vermeiden. Schließlich sollten Sie Ihre Anwendung auf abnormale Aktivitäten überwachen. <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<h3> Wie teste ich meine serverlose Anwendung lokal? <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712h3>
<p> Sie können Tools wie Serverless Offline verwenden, um serverlose Anwendungen lokal zu testen. Dieses Tool emuliert AWS Lambda und API-Gateway auf Ihrem lokalen Computer, sodass Sie serverlose Anwendungen testen können, ohne es bereitzustellen. Sie können auch Unit -Test -Frameworks wie Scherz verwenden, um Ihre individuellen Funktionen zu testen. <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<h3> Wie überwacht man meine serverlose Anwendung? <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712h3>
<p> In verschiedenen Tools können serverlose Anwendungen überwacht werden. AWS bietet einige Überwachungstools wie CloudWatch und Röntgenaufnahme.CloudWatch bietet Ihnen Daten und umsetzbare Erkenntnisse zur Überwachung Ihrer Anwendungen, zum Verständnis und zur Reaktion auf systemweite Leistungsänderungen, zur Optimierung der Ressourcenauslastung und zum Einverständnis einer einheitlichen Sicht auf den Betriebsstatus. Röntgenaufnahmen hilft Entwicklern dabei, verteilte Anwendungen der Produktion zu analysieren und zu debuggen, z. B. diejenigen, die mit Microservice-Architekturen erstellt wurden. <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<h3> Wie kann ich mit fehlern in serverlosen Anwendungen umgehen? <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712h3>
<p> Sie können den Try-Catch-Block in Ihrem Code verwenden, um Fehler in serverlosen Anwendungen zu verarbeiten. Sie können auch Middleware -Funktionen verwenden, um Fehler zu behandeln. Darüber hinaus wird AWS Lambda die fehlgeschlagene Lambda -Funktion automatisch wiederholt und Sie können andere Wiederholung konfigurieren. <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<h3> Wie optimieren Sie die Leistung serverloser Anwendungen? <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712h3>
<p> Optimierung der Leistung einer serverlosen Anwendung umfasst mehrere Schritte. Zunächst sollten Sie die entsprechende Speichergröße für Ihre Funktion auswählen. Zweitens sollten Sie die Größe des Bereitstellungspakets minimieren, um die Kaltstartzeit zu verkürzen. Drittens sollten Sie einen Verbindungspool verwenden, um die Datenbankverbindung wiederzuverwenden. Schließlich sollten Sie Cache verwenden, um die Anzahl der Datenbankaufrufe zu reduzieren. <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<h3> Kann ich MongoDB -Atlas mit serverlosen Anwendungen verwenden? <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712h3>
<p> Ja, Sie können MongoDB -Atlas mit serverlosen Anwendungen verwenden. MongoDB Atlas ist eine vollständig verwaltete Cloud -Datenbank, die von derselben Person entwickelt wurde, die MongoDB erstellt hat. Es bietet eine einfache Möglichkeit, MongoDB in der Cloud Ihrer Wahl bereitzustellen, zu bedienen und zu skalieren. <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p>
<h3> Wie kann ich meine vorhandene Express -Anwendung in eine serverlose Architektur migrieren? <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712h3>
<p> Die Migration einer vorhandenen Express -Anwendung in eine serverlose Architektur umfasst mehrere Schritte. Zunächst sollten Sie Ihre Anwendung in kleinere, staatenlose Funktionen umrüsten. Zweitens sollten Sie alle Middleware ersetzen, die mit der serverlosen Architektur nicht kompatibel sind. Schließlich sollten Sie Ihre Anwendung gründlich testen, um sicherzustellen, dass sie in einer serverlosen Umgebung ordnungsgemäß funktioniert. <https://www.php.cn/link/29a9f8c8460e5e2be4edde557fd83712p></style></code>
Das obige ist der detaillierte Inhalt vonEine Anleitung zur serverlosen Bereitstellung mit Express und MongoDB. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!