AWS ist ein beliebter Cloud -Anbieter, der die Bereitstellung und Skalierung großer Anwendungen ermöglicht. Das Mastering mindestens eine Cloud -Plattform ist eine wesentliche Fähigkeit für Software program -Ingenieure und Datenwissenschaftler. Das lokale Ausführen einer Anwendung reicht nicht aus, um sie in der Produktion verwendbar zu machen. Sie muss auf einem Server bereitgestellt werden, um den Endbenutzern zugänglich zu machen.
In diesem Tutorial werden wir ein Beispiel für die Bereitstellung einer Fastapi -Anwendung durchlaufen. Während sich das Beispiel auf die Kern -EC2 -Netzwerkkonzepte konzentriert, sind die Prinzipien im Großen und Ganzen auch für andere Arten von Anwendungen anwendbar.
Bitte beachten Sie, dass dieses Tutorial keine Finest Practices für die Verwendung von AWS abdeckt. Stattdessen ist es das Ziel, den Lesern eine praktische Einführung in die Anwendungsbereitstellung mithilfe von EC2-Instanzen zu geben.
# 01. Instanzkreation
Navigieren zum EC2 Dashboard im AWS -Dienstmenü und wählen Sie eine neue Instanz. Dadurch wird eine Seite geöffnet, auf der wir Instanzparameter definieren können.

Wählen Sie den entsprechenden Instanztyp aus. In diesem Tutorial starten wir einen sehr einfachen Server mit minimalen technischen Anforderungen so. t3.nano sollte für unsere Bedürfnisse ausreichen.

Für seine Container verwendet AWS die SSH -Authentifizierung. Beim Erstellen einer neuen Instanz ist es erforderlich, ein neues Schlüsselpaar zu erstellen, mit dem wir uns mit dem SSH -Protokoll von der lokalen Maschine anmelden können. Klicken Sie auf Erstellen Sie neues Schlüsselpaar.

Weisen Sie dem neuen Schlüssel einen Namen zu. Wir werden hier nicht in die möglichen Optionen eintauchen, daher wählen wir RSA als Schlüsselpaartyp und .pem als personal Schlüsseldateiformat.

Um Zeit zu sparen, werden wir uns in unserer Demonstrationsanwendung nicht um Sicherheit sorgen. Für die Netzwerkeinstellungen ticken Sie alle Kontrollkästchen, die SSH-, HTTP- und HTTPS -Datenverkehr entsprechen.

Großartig! Durch Klicken StartinstanzAWS wird eine neue Instanz erstellen.

Nachdem die Instanz erstellt wurde, a .Pem Die Datei wird in Ihren lokalen Pc heruntergeladen. Diese Datei enthält den privaten Schlüssel, der die SSH -Authentifizierung ermöglicht. Speichern Sie diese Datei als gute Praxis an einem sicheren Ort, da AWS keine Möglichkeit bietet, sie wiederherzustellen, wenn sie verloren geht.
Durch das Öffnen des EC2 -Dashboards werden Sie feststellen, dass die erstellte Instanz über eine zugehörige IP -Adresse verfügt. Diese IP wird unter dem Etikett angezeigt „Öffentliche IPv4 -Adresse“. Zum Beispiel ist es im Bild unten, es ist es „16.16.202.153“. Sobald wir unsere Anwendung bereitstellen, ist sie mit dieser IP -Adresse aus einem Browser zugegriffen.

# 02. SSH -Verbindung
AWS bietet verschiedene Möglichkeiten zur Authentifizierung. In unserem Fall werden wir den SSH -Mechanismus verwenden.
Klicken Sie im Instanzmenü, klicken Sie auf Verbinden und auswählen SSH -Kunde von der oberen Bar.

Öffnen Sie das lokale Terminal und kopieren und führen Sie den Befehl 3 kopieren und ausführen.chmod 400 "<key_name>.pem") zusammen mit dem unter dem angezeigten Befehl „Beispiel“ Etikett. Stellen Sie sicher, dass Ihr aktuelles Terminalverzeichnis dem Ort entspricht, an dem die .Pem Der Schlüssel wurde im vorherigen Schritt heruntergeladen.
Während der SSH -Verbindung kann das Terminal dazu auffordern, weiterzumachen. Wenn dies der Fall ist, geben Sie ein „Ja“.
Zu diesem Zeitpunkt sind wir erfolgreich vom lokalen Terminal mit der EC2 -Instanz verbunden. Alle in das Terminal eingegebenen Befehle werden nun direkt im EC2 -Container ausgeführt.
# 03. Umgebungskonfiguration
Nach der Verbindung zur Instanz vom lokalen Terminal besteht der nächste Schritt darin, den Paketmanager zu aktualisieren und Python zusammen mit Nginx zu installieren.
sudo apt-get replace
sudo apt set up -y python3-pip nginx
Um den Verkehr zu unserer Anwendung umzuleiten, müssen wir eine Nginx -Konfigurationsdatei erstellen. Diese Datei sollte im Verzeichnis platziert werden /and so forth/nginx/sites-enabled/ und kann einen benutzerdefinierten Namen haben. Wir werden die folgende Konfiguration hinzufügen:
server {
hear 80;
server_name <Public_IP_Address>;
location / {
proxy_pass http://127.0.0.1:8000;
}
}
Grundsätzlich geben wir an, dass eine externe Anfrage, die an die IP -Adresse der EC2 -Instanz an der Standardport 80 gesendet wurde http://127.0.0.1:8000. Zur Erinnerung ist dies die Commonplace -HTTP -Adresse und die von Fastapi zugewiesene Port.
Um diese Änderungen anzuwenden, müssen wir Nginx neu starten:
sudo service nginx restart
Wenn wir einen Fastapi -Server haben, den wir starten möchten, wäre es am einfachsten, ihn auf Github zu veröffentlichen und das Repository in die EC2 -Instanz zu klonen.
git clone <GitHub_URL> <listing>
cd <listing>
Erstellen und aktivieren Sie eine virtuelle Umgebung:
python3 -m venv venv
supply venv/bin/activate
Installieren Sie die erforderlichen Python -Anforderungen (vorausgesetzt, das geklonte Repository enthält a Anforderungen.txt Datei):
pip3 set up -r necessities.txt
Führen Sie den Server aus:
python3 -m uvicorn <server_filename>:app
Öffnen Sie den Browser und geben Sie die IP -Adresse der Instanz ein.
Stellen Sie sicher, dass Sie das HTTP -Protokoll (nicht HTTPS) verwenden. Zum Beispiel: <a href="http://16.16.202.153/" rel="noreferrer noopener" goal="_blank">http://16.16.202.153</a>. Die Firewall kann Ihre Verbindung blockieren, aber Sie sollten die Webseite öffnen. Hinzufügen /docs Nach der URL, um eine schnelle API zu öffnen, Prahlerei.
Übung
Wenn Sie ein Fastapi -Beispiel ausführen möchten, können Sie ein einfaches Repository erstellen, das aus nur einem besteht primary.py Datei und a Anforderungen.txt.
primary.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"message": "Hi there, World!"}
Anforderungen.txt
fastapi
uvicorn
Dateien hochladen
Wenn Sie versuchen, eine Datei auf einen Server hochzuladen und einen 413 -Standing mit der Fehlermeldung zu erhalten „Fehler: Anfrage Entität zu groß“Dies ist wahrscheinlich, weil Nginx eine Grenze für die maximale Dateigröße hat, die hochgeladen werden kann. Um dieses Downside zu beheben, gehen Sie zur Nginx -Konfigurationsdatei und geben Sie die maximal zulässige Dateigröße an, indem Sie die verwenden client_max_body_size Richtlinie (das Einstellen auf 0 gibt keine Grenzen für Eingabedateigrößen an):
server {
hear 80;
server_name <PUBLIC_IP_ADDRESS>;
location / {
proxy_pass http://127.0.0.1:8000;
client_max_body_size 0;
}
}
Vergessen Sie nach dem Ändern der Konfigurationsdatei nicht, Nginx neu zu starten.
Abschluss
In diesem Artikel haben wir gelernt, wie man schnell eine laufende EC2 -Instanz mit einem Fastapi -Server erstellt. Obwohl wir nicht den besten Bereitstellungs- und Sicherheitspraktiken befolgt haben, warfare das Hauptziel des Artikels, Anfängern nur minimale Informationen bereitzustellen, um ihren ersten Server auf AWS zu starten.
Der nächste logische Schritt in der AWS -Studien -Roadmap besteht darin, mehrere EC2 -Instanzen zu erstellen und sie miteinander zu verbinden.
Alle Bilder, sofern nicht anders angegeben, werden vom Autor angegeben.
