So stellen Sie eine Node.js-App auf der AWS Elastic Beanstalk bereit

Ich habe fast einen Monat gebraucht, um herauszufinden, wie ein Amazon Web Services-Konto (AWS) eingerichtet, eine Node.js-App für die Bereitstellung konfiguriert und dann tatsächlich bereitgestellt wird.

Vieles davon versuchte, die Dokumentation von Amazon zu entschlüsseln. Hoffentlich bringt Sie dieser Leitfaden auf den Weg zur Bereitstellung von lokal, um ohne allzu große Kopfschmerzen zu leben.

Ich befinde mich in Los Angeles. Wenn Sie also Ihre Konfiguration einrichten, sind die Standardeinstellungen möglicherweise nicht genau dieselben.

Voraussetzungen

  1. Grundlegende Kommandozeilenkenntnisse

    Ich bin sicher, dass Sie dies ohne die Befehlszeile tun können, aber es ist viel einfacher, die CLI zu verwenden

  2. Ein AWS-Konto
  3. Die Elastic Beanstalk-Befehlszeilenschnittstelle (EB CLI)

    Anweisungen zur Installation unten

  4. Grundkenntnisse in Git

Einrichten eines AWS-Kontos

Als erstes müssen Sie ein AWS-Konto einrichten. Wenn Sie bereits ein Konto haben, stellen Sie sicher, dass Sie einen IAM-Benutzer haben, der über API-Schlüssel und den entsprechenden Zugriff verfügt.

Ein Konto erstellen

Ziemlich einfach. Ein Konto erstellen. Der Anmeldevorgang sollte Sie ziemlich einfach durch alles führen. Wenn Sie zum ersten Mal ein AWS-Konto einrichten, erhalten Sie Root-Zugriff. Es wird jedoch empfohlen, einen separaten Benutzer zu erstellen, mit dem Sie sich regelmäßig anmelden.

Richten Sie Ihr IAM ein

HINWEIS: Ich bin kein Experte für AWS Identity and Access Management (IAM). Die von mir ergriffenen Maßnahmen waren für meinen persönlichen Anwendungsfall bestimmt und möglicherweise nicht für Ihre Bedürfnisse geeignet. Überprüfen Sie die Berechtigungen gründlich, bevor Sie Benutzern Zugriff gewähren.

AWS veröffentlicht regelmäßig Best Practices. Eine davon ab 2016 erhalten Sie hier.

Richten Sie eine Gruppe ein

Erstellen Sie eine Gruppe, die Berechtigungen verwaltet, bevor Sie einen Benutzer einrichten, mit dem Sie sich anmelden können. In meinem Fall habe ich eine SuperAdmin- Gruppe eingerichtet, in die ich mich einfügen wollte, damit ich auf alles zugreifen kann.

Für diese Gruppe habe ich AdministratorAccess als Berechtigung ausgewählt, da es im Grunde genommen darum geht, sich anzumelden und auf alles selbst zuzugreifen.

Weitere Informationen zu IAM-Gruppen finden Sie hier.

Richten Sie einen IAM-Benutzer ein

Das Einrichten eines Benutzers ist ziemlich einfach. Wenn Sie jedoch nicht weiterkommen, lesen Sie die IAM-Seite für AWS. Sie haben viele nützliche Videos.

Denken Sie daran:

  1. Geben Sie ihnen Zugriffsschlüsselberechtigungen

    (siehe Bild unten)

  2. Ordnen Sie sie der entsprechenden IAM-Gruppe zu

Sobald Sie Ihr eigenes Benutzer-Setup haben, melden Sie sich vom Stammverzeichnis ab und wieder als Ihr neuer IAM-Benutzer an.

Einrichten der lokalen Umgebung

Nachdem wir unsere Kontoschlüssel bereit haben, können wir mit der Bereitstellung beginnen.

Was ist elastische Bohnenstange?

Elastic Beanstalk (EB) ist eine recht einfache Methode zum Einrichten skalierbarer Anwendungen. Es verwendet EC2-Instanzen (Amazon Elastic Compute Cloud), S3-Buckets (Amazon Simple Storage Service) und Load Balancer, um Ihre Anwendungsarchitektur für Sie zu verwalten.

Wenn Sie aufgrund der Netzwerkanforderungen schnell skalieren müssen, ist dies der Fall. Es ist auch wirklich erstaunlich, Updates zu pushen, da es "fortlaufende Updates" ausführen kann, die es der Anwendung ermöglichen, online zu bleiben, während Sie aktualisieren. Ordentlich.

So verhindern Sie, dass Elastic Beanstalk Sie eine Tonne kostet

Dies gilt nur für neue Benutzer, die sich noch für den kostenlosen Tarif qualifizieren:

  1. Sie erhalten 750 Stunden t2.micro EC2-Zeit pro Monat. Auf diese Weise können Sie einen einzelnen Server in Vollzeit ausführen.

    Wenn Sie jedoch einen weiteren Server hinzufügen, werden Sie dafür bezahlen.

  2. Sie könnten Ihre gesamte Serverlogik auf Lambda-Funktionen umstellen, aber das ist ein Thema für einen anderen Tag (und es gibt auch einige Nachteile).

    Wenn Sie interessiert sind, lesen Sie diesen Artikel.

Wie viel kostet das allerdings?

Gute Frage. Hier ist ein Beispiel meiner Rechnung. Dies ist mit der Node.js-Anwendung, über die ich diesen Artikel schreibe (EB, Cloudfront, S3 Buckets).

Wenn Sie sich fragen, wie viel es kosten wird, nachdem der kostenlose Plan abgelaufen ist, lesen Sie dies.

Erstellen einer EB-Umgebung in Ihrer Anwendung

Dies ist kein Node.js-Tutorial, da dies außerhalb des Geltungsbereichs dieses Artikels liegt. Wenn Sie jedoch eine Anwendung zum Herumschrauben benötigen, lesen Sie den Express-Anwendungsgenerator. Es wird dir zumindest eine "Hallo Welt" geben. Es ist das, was ich initfür mein Projekt verwendet habe.

In Zukunft wird davon ausgegangen, dass Sie bereits eine Node.js-Anwendung haben, die ohne Probleme lokal ausgeführt wird.

Einrichten der EB CLI

Als erstes muss die AWS / EB-CLI ausgeführt werden. Diese besteht lediglich aus der Installation einiger Tools und dem Einrichten der Konfiguration.

Die AWS-Dokumente erklären es besser als ich es jemals könnte. Schauen Sie sich diese hier an.

Hinweis: Wenn Sie jemals Probleme mit den API-Schlüsseln haben, können Sie diese überprüfen / ändern, indem Sie die Konfigurationsdatei bearbeiten.

open ~/.aws/config

Erstbereitstellung

Jetzt haben wir alle unsere Werkzeuge in der Reihe, was kommt als nächstes?

eb init

Wenn Sie diesen Befehl ausführen, werden Ihnen eine Menge Fragen gestellt:

  1. Sie werden aufgefordert, eine Region auszuwählen.

    Standard ist us-west-2: US West (Oregon)

  2. Sie werden gefragt, welche Anwendung Sie verwenden oder eine neue erstellen sollen.

    Die erste Option sollte darin bestehen, eine neue zu erstellen.

  3. Sie werden gefragt, ob Sie AWS CodeCommit verwenden möchten.

    Ich habe keine Erfahrung damit, aber ich benutze nur GitHub, also sagte ich nein.

Richten Sie Ihre Env-Variablen ein

Dies war wahrscheinlich mein größter Schmerzpunkt. Ich weiß nicht, ob mein Gehirn über der Dokumentation glasiert ist oder was. Sobald ich es herausgefunden habe, ist es eigentlich ganz einfach. Und die Konfigurationsdateien sind in YAML ❤️ geschrieben.

Wenn Sie eb init, wird ein Ordner .elasticbeanstalkin Ihrem Stammverzeichnis erstellt. Sie müssen sich hier nicht wirklich mit irgendetwas herumschlagen, da es automatisch eingerichtet werden sollte, wenn Sie den Befehl zum ersten Mal ausführen.

Erstellen Sie jedoch einen neuen Ordner, damit Ihre Umgebungsvariablen und alle anderen Konfigurationen, die Sie zur Startzeit ausführen müssen, verfügbar sind: .ebextensions

Die Ordnerstruktur sollte ungefähr so ​​aussehen:

- .ebextensions -- 01_yourconfig.config - .elasticbeanstalk -- config.yml

Die Konfigurationsdateien werden, wie bereits erwähnt, in YAML geschrieben. Um Ihnen eine Vorstellung davon zu geben, wie sie aussehen sollten, finden Sie hier einige Beispiele:

Umgebungsvariablendatei:

# 01_envar.config option_settings: aws:elasticbeanstalk:application:environment: PORT: 8081 NODE_ENV: production

Eine Datei zum Konfigurieren von Node.js:

Sie müssen das nicht wirklich angeben, NodeVersionda es Ihnen das neueste gibt, das es auf den EC2-Instanzen kann. Aber es ist hier nur für den Fall.

# 02_nodecommand.config option_settings: aws:elasticbeanstalk:container:nodejs: NodeCommand: "npm run start" NodeVersion: 8.8.1

Dies ist für mich die einfachste Möglichkeit, die Konfigurationseinstellungen zu verwalten, sie können jedoch im EB-Dashboard unter Konfiguration angepasst werden.

Wenn Sie mehr wissen möchten, finden Sie hier einen erstaunlichen Artikel zu genau diesem Thema.

Erstellen Sie eine Umgebung

eb create 

dann bereitstellen

eb deploy

Vorausgesetzt, alles ist gut gelaufen, wird Ihre App jetzt in der „Cloud“ bereitgestellt.

Probieren Sie es aus mit eb open

Bereitstellen von Änderungen

Sobald Sie alles eingerichtet haben, können Sie Änderungen ganz einfach vornehmen.

HINWEIS: Änderungen müssen an Git festgeschrieben werden, bevor sie in die Umgebung übertragen werden.

Das habe ich beim ersten Mal nicht bemerkt und es hat ewig gedauert, bis ich es herausgefunden habe. Machen Sie nicht den gleichen Fehler - übernehmen Sie diese Änderungen!

Wenn Sie die Änderungen festgeschrieben haben, geben Sie einfach den folgenden Befehl ein und warten Sie, bis der Kurs ausgeführt wurde.

eb deploy 

Andere praktische EBCLI-Befehle

So öffnen Sie die Instanz im Terminal, was erheblich einfacher ist, als sich zunächst das Wörterbuch einer URL zu merken, die AWS Ihnen zur Verfügung stellt:

eb open

So öffnen Sie die Konsole:

eb console

So bringen Sie Protokolldateien direkt auf Ihr Terminal:

eb logs

Was kommt als nächstes?

Benutzerdefinierter Domainname

Wenn Sie ausführen, werden eb openSie feststellen, dass die URL eine verrückte lange URL ist. Wenn Sie möchten, können Sie es über Route 53 an Ihre Domain anschließen. Zum größten Teil handelt es sich dabei um Standard-DNS-Einträge. Sie können die DNS-Verwaltung überall dort belassen, wo Sie Ihre Domain registriert haben, aber ich finde es einfach einfacher, alles an einem Ort zu haben.

SSL Cert

Es ist auch ziemlich einfach, ein SSL-Zertifikat für Ihre Instanz zu erhalten. Besuchen Sie den Zertifikatmanager und erstellen Sie ein neues Zertifikat für Ihre Domain. Dies ist ebenfalls ein einfacher Vorgang.

Hinweis: Wenn Sie sich mit einem SSL - Zertifikat für Cloudfront planen, Sie haben den Prozess von der N. Virginia Zone zu initiieren. Sie können Ihre Zone oben rechts auf dem Bildschirm ändern.

Sobald es überprüft und einsatzbereit ist, werfen Sie es in Ihre EB-Konfiguration. Am einfachsten ist es, zur Konsole zu gehen und sie auszuwählen.

  1. Gehen Sie zu Ihrem EB-Dashboard
  2. Wählen Sie Ihre Anwendung
  3. Wählen Sie Ihre Umgebung
  4. Klicken Sie auf "Konfiguration" und wählen Sie das SSL-Zertifikat.

Noch ein Hinweis: Manchmal haben Sie Probleme mit dem Zertifikatmanager, wenn Sie ein brandneues Konto haben. Wenn Sie beim Erstellen eines Zertifikats aufgefordert werden, sich an den Kundendienst zu wenden, tun Sie dies, und das Problem wird behoben.

Fazit

Beeindruckend. Was für eine Fahrt. Hoffentlich waren Sie erfolgreich und mussten nicht zu oft zu den AWS-Dokumenten laufen. Aber wenn ich ehrlich zu mir selbst bin, mussten Sie es sicher mindestens einmal. AWS ist ein monströser Dienst und wird von Tag zu Tag größer.

Unterstützung

Hat Ihnen dieser Artikel gefallen? Möchten Sie mehr sehen? Haben Sie ein paar Dollar übrig? Schauen Sie sich den Link unten an. Jede Tasse Kaffee wird in ein paar hundert Codezeilen umgewandelt :)

Kaufen Sie Jared Nutt einen Kaffee - BuyMeACoffee.com

Der in Los Angeles ansässige Webentwickler versucht sein Bestes, um zu Open Source-Software beizutragen und großartige Tutorials zu schreiben. buymeacoff.ee

Ressourcen

AWS In einfachem Englisch

Kennenlernen und Lieben von AWS Elastic Beanstalk-Konfigurationsdateien (.ebextensions)

Erste Schritte mit AWS

acloudguru (Kein kostenloser Service, es gibt jedoch einen kostenlosen und sehr informativen Einführungskurs)