Verwenden der Go-Plattform von Elastic Beanstalk - AWS Elastic Beanstalk

Verwenden der Go-Plattform von Elastic Beanstalk

Mit AWS Elastic Beanstalk können Sie Go-basierte Webanwendungen ausführen, erstellen und konfigurieren. Bei einfachen Go-Anwendungen gibt es zwei Möglichkeiten, Ihre Anwendung bereitzustellen:

  • Stellen Sie ein Quell-Bundle mit einer Quelldatei im Stammverzeichnis namens application.go bereit, das das Hauptpaket Ihrer Anwendung enthält. Elastic Beanstalk entwickelt den binären Wert mithilfe des folgenden Befehls:

    go build -o bin/application application.go

    Nachdem die Anwendung erstellt wurde, startet Elastic Beanstalk sie auf Port 5000.

  • Stellen Sie ein Quell-Bundle mit einer Binärdatei namens application bereit. Die Binärdatei befindet sich entweder im Stammverzeichnis des Quell-Bundle oder im bin/-Verzeichnis des Quell-Bundle. Wenn Sie die application-Binärdatei in beiden Speicherorten platzieren, verwendet Elastic Beanstalk die Datei im bin/-Verzeichnis.

    Elastic Beanstalk startet diese Anwendung auf Port 5000.

In beiden Fällen können Sie mit Go 1.11 oder höher auch Modulanforderungen in einer Datei namens go.mod angeben. Weitere Informationen finden Sie unter Migrating to Go Modules (Migration zu Go-Modulen) im Go-Blog.

Bei komplexeren Go-Anwendungen gibt es zwei Möglichkeiten, um Ihre Anwendung bereitzustellen:

  • Stellen Sie ein Quell-Bundle bereit, das Ihre Anwendungsquelldateien zusammen mit einer Buildfile-Datei und einer Procfile-Datei enthält. Die Buildfile-Datei enthält einen Befehl zum Erstellen der Anwendung und die Procfile-Datei enthält Anweisungen zum Ausführen der Anwendung.

  • Stellen Sie ein Quell-Bundle bereit, das Ihre Binärdateien der Anwendung mit einer Procfile-Datei enthält. Die Procfile-Datei enthält Anweisungen zur Ausführung der Anwendung.

Die Go-Plattform umfasst einen Proxy-Server, der statische Komponenten bereitstellt und den Datenverkehr an Ihre Anwendung weiterleitet. Bei erweiterten Szenarien können Sie die Standard-Proxy-Konfiguration erweitern oder überschreiben.

Details zu den verschiedenen Erweiterungsmöglichkeiten einer Linux-basierten Elastic Beanstalk-Plattform finden Sie unter Erweitern von Elastic Beanstalk-Linux-Plattformen.

Konfigurieren Ihrer Go-Umgebung

Mit den Einstellungen der Go-Plattform können Sie das Verhalten Ihrer Amazon EC2-Instances optimieren. Sie können die Konfiguration der Amazon EC2-Instance der Elastic Beanstalk-Umgebung mit der Elastic Beanstalk-Konsole bearbeiten.

Mithilfe der Elastic Beanstalk-Konsole aktivieren Sie die Protokollrotation an Amazon S3 und konfigurieren Variablen, die die Anwendung aus der Umgebung auslesen kann.

So konfigurieren Sie Ihre Go-Umgebung in der Elastic Beanstalk-Konsole

  1. Öffnen Sie die Elastic-Beanstalk-Konsole und wählen Sie in der Liste Regions (Regionen) Ihre AWS-Region aus.

  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, verwenden Sie die Suchleiste, um die Umgebungsliste zu filtern.

  3. Wählen Sie im Navigationsbereich Configuration (Konfiguration) aus.

  4. Wählen Sie in der Software-Konfigurationskategorie Edit (Bearbeiten) aus.

Protokolloptionen

Im Abschnitt mit den Protokolloptionen sind zwei Einstellungen vorhanden:

  • Instance profile (Instance-Profil) – Gibt das Instance-Profil an, das zum Zugriff auf den entsprechenden Amazon S3-Bucket der Anwendung berechtigt ist.

  • Enable log file rotation to Amazon S3 (Protokolldateirotation für Amazon S3 aktivieren) – Gibt an, ob die Protokolldateien für die Amazon EC2-Instances der Anwendung in den der Anwendung zugeordneten Amazon S3-Bucket kopiert werden sollen.

Statische Dateien

Um die Leistung zu verbessern, können Sie im Abschnitt Static files (Statische Dateien) den Proxy-Server so konfigurieren, dass er statische Dateien (z. B. HTML oder Bilder) aus Verzeichnissen innerhalb Ihrer Webanwendung bereitstellt. Legen Sie für jedes Verzeichnis den virtuellen Pfad zum Verzeichnis-Mapping fest. Wenn der Proxy-Server eine Anfrage nach einer Datei unter dem angegebenen Pfad erhält, stellt er die Datei direkt bereit, anstatt die Anfrage an Ihre Anwendung weiterzuleiten.

Weitere Informationen zum Konfigurieren statischer Dateien mit der Elastic Beanstalk-Konsole finden Sie unter Bereitstellen von statischen Dateien.

Umgebungseigenschaften

Im Bereich Environment Properties (Umgebungseigenschaften) können Sie die Einstellungen für die Umgebungskonfiguration der Amazon EC2-Instances angeben, auf denen die Anwendung ausgeführt wird. Umgebungseigenschaften werden als Schlüssel/Wert-Paare an die Anwendung weitergeleitet.

Innerhalb der Go-Umgebung, die in Elastic Beanstalk ausgeführt wird, können Sie über die Funktion os.Getenv auf Umgebungsvariablen zugreifen. Beispielsweise können Sie mit folgendem Code eine Eigenschaft mit dem Namen API_ENDPOINT als Variable lesen:

endpoint := os.Getenv("API_ENDPOINT")

Weitere Informationen finden Sie unter Umgebungseigenschaften und andere Softwareeinstellungen.

Namespace der Go-Konfiguration

Mithilfe einer Konfigurationsdatei können Sie im Rahmen der Bereitstellung Konfigurationsoptionen festlegen und andere Instance-Konfigurationsaufgaben durchführen. Konfigurationsoptionen können durch den Elastic Beanstalk-Service oder die verwendete Plattform definiert und in Namespaces organisiert werden.

Die Go-Plattform definiert keine plattformspezifischen Namespaces. Sie können den Proxy so konfigurieren, dass statische Dateien mittels des aws:elasticbeanstalk:environment:proxy:staticfiles-Namespace bereitgestellt werden. Einzelheiten und ein Beispiel finden Sie unter Bereitstellen von statischen Dateien.

Elastic Beanstalk bietet zahlreiche Konfigurationsoptionen für die Anpassung Ihrer Umgebung. Neben den Konfigurationsdateien können Sie die Konfigurationsoptionen auch unter Verwendung der Konsole, gespeicherter Konfigurationen, der EB CLI oder der AWS CLI einrichten. Weitere Informationen finden Sie unter Konfigurationsoptionen.

Die Amazon Linux AMI (Vorgängerversion von Amazon Linux 2) Go-Plattform

Wenn Ihre Elastic Beanstalk Go-Umgebung eine Amazon Linux AMI-Plattformversion verwendet (Vorgängerversion von Amazon Linux 2), lesen Sie die zusätzlichen Informationen in diesem Abschnitt.

Mithilfe einer Konfigurationsdatei können Sie im Rahmen der Bereitstellung Konfigurationsoptionen festlegen und andere Instance-Konfigurationsaufgaben durchführen. Konfigurationsoptionen können durch den Elastic Beanstalk-Service oder die verwendete Plattform definiert und in Namespaces organisiert werden.

Anmerkung

Amazon Linux 2-Plattformversionen sind mit früheren Amazon Linux AMI-Plattformversionen nicht kompatibel. Wenn Sie Ihre Elastic Beanstalk-Anwendung zu Amazon Linux 2 migrieren, lesen Sie Migrieren Ihrer Elastic-Beanstalk-Linux-Anwendung auf Amazon Linux 2.

Die Amazon Linux AMI Go-Plattform unterstützt zusätzlich zu den Namespaces, die von allen Plattformen unterstützt werden, eine weitere Konfigurationsoption für einen plattformspezifischen Namespace. Mit dem aws:elasticbeanstalk:container:golang:staticfiles-Namespace können Sie Optionen definieren, um für die Webanwendung Pfade zu Ordnern im Quell-Bundle der Anwendung zuzuweisen, die statische Inhalte enthalten.

Diese Konfigurationsdatei weist den Proxy-Server beispielsweise an, Dateien im staticimages-Ordner im Pfad /images bereitzustellen:

Beispiel .ebextensions/go-settings.config

option_settings: aws:elasticbeanstalk:container:golang:staticfiles: /html: statichtml /images: staticimages

Elastic Beanstalk bietet zahlreiche Konfigurationsoptionen für die Anpassung Ihrer Umgebung. Neben den Konfigurationsdateien können Sie die Konfigurationsoptionen auch unter Verwendung der Konsole, gespeicherter Konfigurationen, der EB CLI oder der AWS CLI einrichten. Weitere Informationen finden Sie unter Konfigurationsoptionen.