Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Bereitstellen eines Express-Servers mithilfe des Deployment-Manifests
In diesem Beispiel wird erklärt, wie ein einfacher Express-Server mithilfe der Amplify Hosting-Bereitstellungsspezifikation bereitgestellt wird. Sie können das bereitgestellte Bereitstellungsmanifest nutzen, um Routing, Rechenressourcen und andere Konfigurationen anzugeben.
Richten Sie vor der Bereitstellung auf Amplify Hosting lokal einen Express-Server ein
-
Erstellen Sie ein neues Verzeichnis für Ihr Projekt und installieren Sie Express und Typescript.
mkdir express-app cd express-app # The following command will prompt you for information about your project npm init # Install express, typescript and types npm install express --save npm install typescript ts-node @types/node @types/express --save-dev -
Fügen Sie dem Stammverzeichnis Ihres Projekts eine
tsconfig.jsonDatei mit dem folgenden Inhalt hinzu.{ "compilerOptions": { "target": "es6", "module": "commonjs", "outDir": "./dist", "strict": true, "esModuleInterop": true, "skipLibCheck": true, "forceConsistentCasingInFileNames": true }, "include": ["src/**/*.ts"], "exclude": ["node_modules"] } -
Erstellen Sie ein Verzeichnis mit dem Namen
srcin Ihrem Projektstamm. -
Erstellen Sie eine
index.tsDatei imsrcVerzeichnis. Dies ist der Einstiegspunkt zu der Anwendung, die einen Express-Server startet. Der Server sollte so konfiguriert sein, dass er auf Port 3000 lauscht.// src/index.ts import express from 'express'; const app: express.Application = express(); const port = 3000; app.use(express.text()); app.listen(port, () => { console.log(`server is listening on ${port}`); }); // Homepage app.get('/', (req: express.Request, res: express.Response) => { res.status(200).send("Hello World!"); }); // GET app.get('/get', (req: express.Request, res: express.Response) => { res.status(200).header("x-get-header", "get-header-value").send("get-response-from-compute"); }); //POST app.post('/post', (req: express.Request, res: express.Response) => { res.status(200).header("x-post-header", "post-header-value").send(req.body.toString()); }); //PUT app.put('/put', (req: express.Request, res: express.Response) => { res.status(200).header("x-put-header", "put-header-value").send(req.body.toString()); }); //PATCH app.patch('/patch', (req: express.Request, res: express.Response) => { res.status(200).header("x-patch-header", "patch-header-value").send(req.body.toString()); }); // Delete app.delete('/delete', (req: express.Request, res: express.Response) => { res.status(200).header("x-delete-header", "delete-header-value").send(); }); -
Fügen Sie Ihrer
package.jsonDatei die folgenden Skripts hinzu."scripts": { "start": "ts-node src/index.ts", "build": "tsc", "serve": "node dist/index.js" } -
Erstellen Sie ein Verzeichnis mit dem Namen
publicim Stammverzeichnis Ihres Projekts. Erstellen Sie dann eine Dateihello-world.txtmit dem folgenden Namen.Hello world! -
Fügen Sie Ihrem Projektstamm eine
.gitignoreDatei mit dem folgenden Inhalt hinzu..amplify-hosting dist node_modules
Richten Sie das Amplify-Bereitstellungsmanifest ein
-
Erstellen Sie eine Datei mit dem Namen
deploy-manifest.jsonim Stammverzeichnis Ihres Projekts. -
Kopieren Sie das folgende Manifest und fügen Sie es in Ihre
deploy-manifest.jsonDatei ein.{ "version": 1, "framework": { "name": "express", "version": "4.18.2" }, "imageSettings": { "sizes": [ 100, 200, 1920 ], "domains": [], "remotePatterns": [], "formats": [], "minimumCacheTTL": 60, "dangerouslyAllowSVG": false }, "routes": [ { "path": "/_amplify/image", "target": { "kind": "ImageOptimization", "cacheControl": "public, max-age=3600, immutable" } }, { "path": "/*.*", "target": { "kind": "Static", "cacheControl": "public, max-age=2" }, "fallback": { "kind": "Compute", "src": "default" } }, { "path": "/*", "target": { "kind": "Compute", "src": "default" } } ], "computeResources": [ { "name": "default", "runtime": "nodejs22.x", "entrypoint": "index.js" } ] }Das Manifest beschreibt, wie Amplify Hosting die Bereitstellung Ihrer Anwendung handhaben sollte. Die primären Einstellungen sind die folgenden.
-
Version — Gibt die Version der Bereitstellungsspezifikation an, die Sie verwenden.
-
Framework — Passen Sie dies an, um Ihr Express Server-Setup zu spezifizieren.
-
ImageSettings — Dieser Abschnitt ist für einen Express Server optional, sofern Sie sich nicht mit der Bildoptimierung befassen.
-
Routen — Diese sind entscheidend, um den Verkehr in die richtigen Bereiche Ihrer App zu leiten. Die
"kind": "Compute"Route leitet den Verkehr an Ihre Serverlogik weiter. -
ComputeResources — Verwenden Sie diesen Abschnitt, um die Laufzeit und den Express Einstiegspunkt Ihres Servers anzugeben.
-
Als Nächstes richten Sie ein Post-Build-Skript ein, das die erstellten Anwendungsartefakte in das Bereitstellungspaket verschiebt. .amplify-hosting Die Verzeichnisstruktur entspricht der Amplify Hosting-Bereitstellungsspezifikation.
Richten Sie das Post-Build-Skript ein
-
Erstellen Sie ein Verzeichnis mit dem Namen
binin Ihrem Projektstamm. -
Erstellen Sie eine Datei mit dem Namen
postbuild.shimbinVerzeichnis. Fügen Sie der Dateipostbuild.shdie folgenden Inhalte hinzu.#!/bin/bash rm -rf ./.amplify-hosting mkdir -p ./.amplify-hosting/compute cp -r ./dist ./.amplify-hosting/compute/default cp -r ./node_modules ./.amplify-hosting/compute/default/node_modules cp -r public ./.amplify-hosting/static cp deploy-manifest.json ./.amplify-hosting/deploy-manifest.json -
Fügen Sie Ihrer
package.jsonDatei einpostbuildSkript hinzu. Die Datei sollte wie folgt aussehen."scripts": { "start": "ts-node src/index.ts", "build": "tsc", "serve": "node dist/index.js", "postbuild": "chmod +x bin/postbuild.sh && ./bin/postbuild.sh" } -
Führen Sie den folgenden Befehl aus, um Ihre Anwendung zu erstellen.
npm run build -
(Optional) Passen Sie Ihre Routen für Express an. Sie können die Routen in Ihrem Bereitstellungsmanifest an Ihren Express-Server anpassen. Wenn Sie beispielsweise keine statischen Assets im
publicVerzeichnis haben, benötigen Sie möglicherweise nur die Catch-All-Route, die zu"path": "/*"Compute führt. Das hängt von der Einrichtung Ihres Servers ab.
Ihre endgültige Verzeichnisstruktur sollte wie folgt aussehen.
express-app/ ├── .amplify-hosting/ │ ├── compute/ │ │ └── default/ │ │ ├── node_modules/ │ │ └── index.js │ ├── static/ │ │ └── hello.txt │ └── deploy-manifest.json ├── bin/ │ ├── .amplify-hosting/ │ │ ├── compute/ │ │ │ └── default/ │ │ └── static/ │ └── postbuild.sh* ├── dist/ │ └── index.js ├── node_modules/ ├── public/ │ └── hello.txt ├── src/ │ └── index.ts ├── deploy-manifest.json ├── package.json ├── package-lock.json └── tsconfig.json
Stellen Sie Ihren Server bereit
-
Pushen Sie Ihren Code in Ihr Git-Repository und stellen Sie Ihre App dann auf Amplify Hosting bereit.
-
Aktualisieren Sie Ihre Build-Einstellungen
.amplify-hostingso, dassbaseDirectorysie auf Folgendes verweisen. Während des Builds erkennt Amplify die Manifest-Datei im.amplify-hostingVerzeichnis und stellt Ihren Express-Server wie konfiguriert bereit.version: 1 frontend: phases: preBuild: commands: - nvm use 18 - npm install build: commands: - npm run build artifacts: baseDirectory: .amplify-hosting files: - '**/*' -
Um zu überprüfen, ob Ihre Bereitstellung erfolgreich war und Ihr Server ordnungsgemäß läuft, besuchen Sie Ihre App unter der von Amplify Hosting bereitgestellten Standard-URL.