Tutorial: Bereitstellen einer ASP.NET Core-Anwendung mit Elastic Beanstalk unter Linux - AWS Elastic Beanstalk

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.

Tutorial: Bereitstellen einer ASP.NET Core-Anwendung mit Elastic Beanstalk unter Linux

In diesem Tutorial werden die Schritte zum Erstellen einer neuen ASP.NET-Core-Anwendung und deren Bereitstellung in einer Amazon-Linux-2-Umgebung mit Elastic Beanstalk beschrieben.

In diesem Tutorial verwenden Sie zunächst das dotnet-Befehlszeilen-Tool des .NET Core SDK, um Folgendes zu tun:

  • Generieren Sie eine Anwendung, die HTTP-Anforderungen mit ASP.NET bedient.

  • Installieren Sie Laufzeitabhängigkeiten.

  • Kompilieren und führen Sie Ihre Webanwendung lokal aus.

  • Veröffentlichen Sie Ihre Anwendungsartefakte in einem Ausgabeverzeichnis. Die Artefakte umfassen den kompilierten Quellcode, Laufzeitabhängigkeiten und Konfigurationsdateien.

Als Nächstes führen Sie die folgenden Schritte mit Ihrer neu erstellten Anwendung aus:

  • Erstellen Sie das Quell-Bundle Ihrer Anwendung, das Ihre veröffentlichten Artefakte enthält.

  • Erstellen Sie eine Amazon Linux 2-Umgebung und stellen Sie Ihre Anwendung mit Elastic Beanstalk darin bereit.

  • Öffnen Sie die Website-URL, die von Elastic Beanstalk erstellt wurde, um Ihre Anwendung auszuführen.

Der Anwendungsquellcode ist hier verfügbar: dotnet-core-linux-tutorial-source.zip .

Das bereitstellbare Quell-Bundle ist hier verfügbar: dotnet-core-linux-tutorial-bundle .

Voraussetzungen

In diesem Tutorial wird das .NET Core SDK verwendet, um eine einfache .NET Core-Webanwendung zu generieren, lokal auszuführen und ein Bereitstellungspaket zu erstellen.

Voraussetzungen
  • .NET-Core 3.1. oder höher

So installieren Sie das .NET Core SDK
  1. Laden Sie das Installationsprogramm unter microsoft.com/net/core herunter. Wählen Sie Ihre Entwicklungsplattform. Wählen Sie Download .NET Core SDK (.NET Core SDK herunterladen) aus.

  2. Führen Sie das Installationsprogramm aus und folgen Sie den Anweisungen.

Anmerkung

Obwohl die Beispiele in diesem Tutorial Auflistungen aus der Windows-Befehlszeile sind, unterstützt das .NET Core SDK Entwicklungsplattformen auf mehreren Betriebssystemen. Die in diesem Tutorial gezeigten dotnet-Befehle sind über verschiedene Entwicklungsplattformen hinweg konsistent.

In diesem Tutorial wird ein ZIP-Befehlszeilenprogramm zum Erstellen eines Quell-Bundles verwendet, das Sie in Elastic Beanstalk bereitstellen können. Um den Befehl zip in Windows zu verwenden, können Sie UnxUtils installieren. (UnxUtils ist eine einfache Sammlung nützlicher Befehlszeilen-Dienstprogramme wie zip und ls.) Alternativ können Sie den Windows-Explorer oder ein beliebiges anderes ZIP-Programm für die Erstellung von Quell-Bundle-Archiven nutzen.

So installieren Sie UnxUtils
  1. Laden Sie UnxUtils herunter.

  2. Extrahieren Sie das Archiv in ein lokales Verzeichnis. Beispiel, C:\Program Files (x86).

  3. Fügen Sie den Pfad zu den binären Dateien zu Ihrer Windows PATH-Benutzervariable hinzu. Beispiel, C:\Program Files (x86)\UnxUtils\usr\local\wbin.

    1. Betätigen Sie die Windows-Taste und geben Sie anschließend ei environment variables.

    2. Wählen Sie Edit environment variables for your account (Umgebungsvariablen für Ihr Konto bearbeiten).

    3. Wählen Sie PATH (PFAD) und Edit (Bearbeiten) aus.

    4. Fügen Sie im Feld Variable value (Variablenwert) Pfade hinzu, getrennt durch Semikola. Beispiel: C:\item1\path;C:\item2\path

    5. Klicken Sie zweimal auf OK, um die neuen Einstellungen anzuwenden.

    6. Schließen Sie alle laufenden Eingabeaufforderungsfenster und öffnen Sie dann erneut ein Eingabeaufforderungsfenster.

  4. Öffnen Sie ein neues Eingabeaufforderungsfenster und überprüfen Sie mit dem Befehl zip, ob alles funktioniert.

    > zip -h Copyright (C) 1990-1999 Info-ZIP Type 'zip "-L"' for software license. ...

Generieren eines .NET Core-Projekts als Webanwendung

Verwenden Sie das Befehlszeilen-Tool dotnet, um ein neues C# .NET Core-Webanwendungsprojekt zu erstellen und lokal auszuführen. Die standardmäßige .NET Core-Webanwendung zeigt Hello World! an.

So erstellen Sie ein neues .NET Core-Projekt
  1. Öffnen Sie ein neues Befehlszeilenfenster und navigieren Sie zu Ihrem Benutzerordner.

    > cd %USERPROFILE%
  2. Erstellen Sie mit dem Befehl dotnet new ein neues .NET Core-Projekt.

    C:\Users\username> dotnet new web -o dotnet-core-tutorial The template "ASP.NET Core Empty" was created successfully. Processing post-creation actions... Running 'dotnet restore' on dotnet-core-tutorial\dotnet-core-tutorial.csproj... Determining projects to restore... Restored C:\Users\username\dotnet-core-tutorial\dotnet-core-tutorial.csproj (in 154 ms). Restore succeeded.
So führen Sie die Website lokal aus
  1. Verwenden Sie den Befehl dotnet restore zum Installieren von Abhängigkeiten.

    C:\Users\username> cd dotnet-core-tutorial C:\Users\username\dotnet-core-tutorial> dotnet restore Determining projects to restore... All projects are up-to-date for restore.
  2. Verwenden Sie den dotnet run Befehl, um die Anwendung zu erstellen und lokal zu starten.

    C:\Users\username\dotnet-core-tutorial> dotnet run info: Microsoft.Hosting.Lifetime[0] Now listening on: https://localhost:5001 info: Microsoft.Hosting.Lifetime[0] Now listening on: http://localhost:5000 info: Microsoft.Hosting.Lifetime[0] Application started. Press Ctrl+C to shut down. info: Microsoft.Hosting.Lifetime[0] Hosting environment: Development info: Microsoft.Hosting.Lifetime[0] Content root path: C:\Users\username\dotnet-core-tutorial
  3. Öffnen Sie localhost:5000, um die Website in Ihrem Standard-Webbrowser anzuzeigen.

    Die Anwendung gibt Hello World! aus, was in Ihrem Webbrowser angezeigt wird.

Um die Anwendung auf einem Webserver auszuführen, muss der kompilierte Quellcode mit Laufzeitabhängigkeiten in einer web.config-Konfigurationsdatei gebündelt werden. Das Tool dotnet bietet einen publish-Befehl, mit dem diese Dateien basierend auf der Konfiguration in dotnet-core-tutorial.csproj in einem Verzeichnis gesammelt werden.

So erstellen Sie die Website
  • Mit dem Befehl dotnet publish geben Sie kompilierten Code und Abhängigkeiten in einem Ordner mit dem Namen site aus.

    C:\users\username\dotnet-core-tutorial> dotnet publish -o site Microsoft (R) Build Engine version 16.7.0-preview-20360-03+188921e2f for .NET Copyright (C) Microsoft Corporation. All rights reserved. Determining projects to restore... All projects are up-to-date for restore. dotnet-core-tutorial -> C:\Users\username\dotnet-core-tutorial\bin\Debug\netcoreapp3.1\dotnet-core-tutorial.dll dotnet-core-tutorial -> C:\Users\username\dotnet-core-tutorial\site\
So erstellen Sie ein Quell-Bundle
  • Verwenden Sie den Befehl zip zum Erstellen eines Quell-Bundles mit dem Namen dotnet-core-tutorial.zip.

    Das Quell-Bundle enthält alle Dateien, die im Website-Ordner veröffentlicht wurden.

    Anmerkung

    Wenn Sie ein anderes ZIP-Dienstprogramm verwenden, müssen Sie alle Dateien dem Stammordner des resultierenden ZIP-Archivs hinzufügen. Dies ist für eine erfolgreiche Bereitstellung der Anwendung in Ihrer Elastic Beanstalk-Umgebung erforderlich.

    C:\users\username\dotnet-core-tutorial> cd site C:\users\username\dotnet-core-tutorial\site>zip -r ../dotnet-core-tutorial.zip . adding: appsettings.Development.json (164 bytes security) (deflated 38%) adding: appsettings.json (164 bytes security) (deflated 39%) adding: dotnet-core-tutorial.deps.json (164 bytes security) (deflated 93%) adding: dotnet-core-tutorial.dll (164 bytes security) (deflated 58%) adding: dotnet-core-tutorial.exe (164 bytes security) (deflated 57%) adding: dotnet-core-tutorial.pdb (164 bytes security) (deflated 48%) adding: dotnet-core-tutorial.runtimeconfig.json (164 bytes security) (deflated 33%) adding: web.config (164 bytes security) (deflated 41%)
    Anmerkung

    In diesem Tutorial führen Sie nur eine Anwendung auf dem Webserver aus, daher ist in Ihrem Quell-Bundle keine Procfile erforderlich. Um jedoch mehrere Anwendungen auf demselben Webserver bereitstellen zu können, müssen Sie eine Procfile einschließen. Weitere Informationen finden Sie unter Verwendung einer Procfile-Datei für die Konfiguration Ihrer .NET Core unter Linux-Umgebung.

Starten einer Elastic Beanstalk-Umgebung und Bereitstellen der Anwendung

Sie verwenden die Elastic Beanstalk-Konsole, um eine Elastic Beanstalk-Umgebung zu starten und das Quell-Bundle bereitzustellen.

Sie können das Quell-Bundle hier herunterladen: dotnet-core-linux-tutorial-bundle

So starten Sie eine Umgebung und stellen Ihren Code bereit (Konsole)
  1. Öffnen Sie die Elastic Beanstalk-Konsole mit diesem vorkonfigurierten Link: console.aws.amazon.com/elasticbeanstalk/home#/newApplication?applicationName=tutorials&environmentType=LoadBalanced

  2. Wählen Sie für Platform (Plattform) die Option .NET Core on Linux (.NET Core unter Linux) aus.

  3. Wählen Sie Local file (Lokale Datei), wählen Sie Choose file (Datei wählen) und öffnen Sie das Quell-Bundle.

  4. Klicken Sie auf Review and launch (Überprüfen und starten).

  5. Prüfen Sie die verfügbaren Einstellungen und wählen Sie Create app (Anwendung erstellen) aus. Die Anwendung schreibt Hello World! als Antwort und gibt diese zurück.

Es dauert etwa zehn Minuten, die Umgebung zu erstellen und Ihren Code bereitzustellen.

Beim Starten einer Umgebung werden die folgenden Ressourcen erstellt:

  • EC2 instance (EC2-Instance) – Eine virtuelle Maschine von Amazon Elastic Compute Cloud (Amazon EC2), die so konfiguriert ist, dass Web-Apps auf der von Ihnen ausgewählten Plattform ausgeführt werden.

    Jede Plattform führt eine spezifische Gruppe von Software, Konfigurationsdateien und Skripts zur Unterstützung einer bestimmten Sprachversion, eines Frameworks, Webcontainers oder einer Kombination daraus aus. Die meisten Plattformen verwenden entweder Apache oder NGINX als Reverse-Proxy, der vor der Web-App platziert ist, Anforderungen weiterleitet, statische Komponenten bedient und Zugriffs- und Fehlerprotokolle generiert.

  • Instance security group (Instance-Sicherheitsgruppe): Eine Amazon EC2-Sicherheitsgruppe, die so konfiguriert ist, dass eingehender Datenverkehr auf Port 80 erlaubt ist. Mit dieser Ressource kann HTTP-Datenverkehr vom Load Balancer die EC2-Instance mit Ihrer Web-App erreichen. Standardmäßig ist Datenverkehr auf anderen Ports nicht zulässig.

  • Load balancer (Load Balancer)– Ein Elastic Load Balancing Load Balancer ist für die Verteilung von Anforderungen an die Instances, auf denen Ihre Anwendung ausgeführt wird, konfiguriert. Mit einem Load Balancer müssen Ihre Instances nicht mehr direkt für das Internet zugänglich gemacht werden.

  • Load balancer security group (Load Balancer-Sicherheitsgruppe): Eine Amazon EC2-Sicherheitsgruppe, die so konfiguriert ist, dass eingehender Datenverkehr auf Port 80 erlaubt ist. Diese Ressource ermöglicht, dass HTTP-Datenverkehr aus dem Internet den Load Balancer erreicht. Standardmäßig ist Datenverkehr auf anderen Ports nicht zulässig.

  • Auto Scaling group (Auto Scaling-Gruppe) – Eine Auto Scaling-Gruppe, die so konfiguriert ist, dass sie eine Instance ersetzt, wenn diese beendet wird oder nicht verfügbar ist.

  • Amazon S3-Bucket – Ein Speicherort für Ihren Quellcode, Protokolle und andere Artefakte, die bei der Verwendung von Elastic Beanstalk erstellt werden.

  • Amazon- CloudWatch Alarme – Zwei CloudWatch Alarme, die die Last der Instances in Ihrer Umgebung überwachen und ausgelöst werden, wenn die Last zu hoch oder zu niedrig ist. Wenn ein Alarm ausgelöst wird, wird Ihre Auto Scaling-Gruppe nach oben oder nach unten skaliert.

  • -AWS CloudFormation Stack – Elastic Beanstalk verwendet AWS CloudFormation , um die Ressourcen in Ihrer Umgebung zu starten und Konfigurationsänderungen zu propagieren. Die Ressourcen werden in einer Vorlage definiert, die Sie in der AWS CloudFormation -Konsole anzeigen können.

  • Domainname – Ein Domainname, der auf Ihre Web-App in der Form subdomain.region.elasticbeanstalk.com weiterleitet.

    Anmerkung

    Um die Sicherheit Ihrer Elastic-Beanstalk-Anwendungen zu erhöhen, ist die Domain elasticbeanstalk.com in der Public Suffix List (PSL) registriert. Aus Sicherheitsgründen empfehlen wir Ihnen, Cookies mit einem __Host--Präfix zu verwenden, falls Sie jemals sensible Cookies im Standard-Domainnamen für Ihre Elastic-Beanstalk-Anwendungen einrichten müssen. Diese Vorgehensweise hilft Ihnen dabei, Ihre Domain vor CSRF-Versuchen (Cross-Site Request Forgery Attempts, Anforderungsfälschung zwischen Websites) zu schützen. Weitere Informationen finden Sie auf der Set-Cookie-Seite im Mozilla Developer Network.

Elastic Beanstalk verwaltet all diese Ressourcen. Wenn Sie die Umgebung beenden, werden alle darin enthaltenen Ressourcen von Elastic Beanstalk beendet.

Anmerkung

Der von Elastic Beanstalk erstellte Amazon-S3-Bucket wird zwischen den Umgebungen geteilt und nicht gelöscht, wenn Sie die Umgebung beenden. Weitere Informationen finden Sie unter Verwenden von Elastic Beanstalk mit Amazon S3.

Bereinigen

Wenn Sie nicht mehr mit Elastic Beanstalk arbeiten, können Sie Ihre Umgebung beenden. Elastic Beanstalk beendet alle AWS Ressourcen, die Ihrer Umgebung zugeordnet sind, z. B. Amazon EC2-Instances, Datenbank-Instances, Load Balancer, Sicherheitsgruppen und Alarme.

So beenden Sie die Elastic Beanstalk-Umgebung
  1. Öffnen Sie die Elastic Beanstalk-Konsole und wählen Sie in der Liste Regionen Ihre aus AWS-Region.

  2. Wählen Sie im Navigationsbereich Environments (Umgebungen) aus und wählen Sie dann in der Liste den Namen Ihrer Umgebung aus.

    Anmerkung

    Wenn Sie viele Umgebungen haben, filtern Sie Umgebungsliste mit der Suchleiste.

  3. Klicken Sie auf Actions (Aktionen) und dann auf Terminate Environment (Umgebung beenden).

  4. Verwenden Sie das Dialogfeld auf dem Bildschirm, um die Beendigung der Umgebung zu bestätigen.

Mit Elastic Beanstalk können Sie ganz einfach und jederzeit eine neue Umgebung für Ihre Anwendung erstellen.

Nächste Schritte

Im weiteren Verlauf der Anwendungsentwicklung möchten Sie vielleicht Umgebungen verwalten und Anwendungen bereitstellen, ohne manuell eine ZIP-Datei zu erstellen und diese in die Elastic-Beanstalk-Konsole hochzuladen. Die Elastic Beanstalk Command Line Interface (EB CLI) bietet easy-to-use Befehle zum Erstellen, Konfigurieren und Bereitstellen von Anwendungen in Elastic Beanstalk-Umgebungen über die Befehlszeilenschnittstelle.

Wenn Sie Visual Studio zur Entwicklung Ihrer Anwendung verwenden, können Sie auch verwenden, AWS Toolkit for Visual Studio um Änderungen in Ihrem Code bereitzustellen, Ihre Elastic Beanstalk-Umgebungen zu verwalten und andere - AWS Ressourcen zu verwalten. Weitere Informationen finden Sie unter Der AWS Toolkit for Visual Studio.

Zu Entwicklungs- und Testzwecken können Sie die Bereitstellungsfunktionalität von Elastic Beanstalk verwenden, um eine verwaltete DB-Instance direkt zu Ihrer Umgebung hinzuzufügen. Informationen zur Einrichtung einer Datenbank in der Umgebung finden Sie unter Hinzufügen einer Datenbank zu Ihrer Elastic Beanstalk-Umgebung.

Sofern Sie planen, die Anwendung in einer Produktionsumgebung einzusetzen, empfehlen wir, dass Sie einen benutzerdefinierten Domainnamen für die Umgebung konfigurieren und für sichere Verbindungen HTTPS aktivieren.