So stellen Sie eine Node.js-App für AWS Elastic Beanstalk bereit

Ich habe fast einen Monat gebraucht, um herauszufinden, wie ich ein Amazon Web Services-Konto (AWS) einrichten, eine Node.js-App für die Bereitstellung konfigurieren und dann tatsächlich bereitstellen kann.

Viele davon versuchten, die Dokumentation von Amazon zu entschlüsseln. Hoffentlich wird dieser Leitfaden Sie auf den Weg bringen, sich von einem Ort zu einem Ort zu begeben, an dem Sie ohne allzu große Kopfschmerzen leben können.

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

Voraussetzungen

  1. Grundlegende Kenntnisse in der Befehlszeile
    Ich bin sicher, dass Sie dies ohne die Befehlszeile tun können, aber die Verwendung der CLI ist einfacher
  2. Ein AWS-Konto
  3. Das Elastic Beanstalk Command Line Interface (EB CLI)
    Anweisungen zur Installation weiter 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 ist jedoch eine bewährte Sicherheitsmethode, einen separaten Benutzer zu erstellen, mit dem Sie sich regelmäßig anmelden.

Richten Sie Ihren IAM ein

ANMERKUNG: Ich bin kein Experte für AWS Identity and Access Management (IAM). Die Maßnahmen, die ich ergriffen habe, waren für meinen persönlichen Anwendungsfall bestimmt und passen möglicherweise nicht zu Ihren Anforderungen. Überprüfen Sie die Berechtigungen sorgfältig, bevor Sie Benutzern Zugriff gewähren.

AWS veröffentlicht regelmäßig Best Practices. Ab 2016 erhalten Sie hier eine.

Richten Sie eine Gruppe ein

Erstellen Sie vor dem Einrichten eines Benutzers, mit dem Sie sich anmelden möchten, eine Gruppe, die die Berechtigungen verwaltet. In meinem Fall habe ich eine SuperAdmin-Gruppe eingerichtet, in die ich mich einordnen wollte, damit ich auf alles zugreifen kann.

Für diese Gruppe habe ich AdministratorAccess als Berechtigung ausgewählt, da es im Wesentlichen 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 recht einfach, aber wenn Sie nicht weiterkommen, lesen Sie die IAM-Seite für AWS. Sie haben viele nützliche Videos.

Denken Sie daran:

  1. Geben Sie ihnen Zugriffsberechtigungen
    (siehe Bild unten)
  2. Ordnen Sie sie der entsprechenden IAM-Gruppe zu

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

Lokale Umgebung einrichten

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

Was ist elastische Bohnenstange?

Elastic Beanstalk (EB) ist eine relativ 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 Netzwerknachfrage schnell skalieren müssen, tun Sie dies. Es ist auch wirklich erstaunlich, Updates zu pushen, da es "rollierende Updates" ausführen kann, die es der Anwendung ermöglichen, online zu bleiben, während Sie aktualisieren. Ordentlich.

Wie Sie verhindern können, 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 ganztägig ausführen.
    Wenn Sie jedoch einen weiteren Server hinzufügen, werden Sie dafür bezahlen.
  2. Sie könnten all Ihre Serverlogik auf Lambda-Funktionen umstellen, aber das ist ein Thema für einen anderen Tag (und es gibt auch ein paar Nachteile).
    Wenn Sie interessiert sind, lesen Sie diesen Artikel.

Wie viel wird es kosten?

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

Wenn Sie sich fragen, wie viel es kostet, 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 Herumdrehen benötigen, lesen Sie den Express-Anwendungsgenerator. Zumindest gibt es dir eine "Hallo Welt". Es ist das, was ich als Init für mein Projekt verwendet habe.

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

Einrichten der EB-CLI

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

Die AWS-Dokumente erklären es besser, als ich es jemals könnte. Sehen Sie sie sich 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.

öffne ~ / .aws / config

Erstbereitstellung

Jetzt haben wir alle unsere Werkzeuge in der Reihe. Wie geht es weiter?

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 möchten.
    Die erste Möglichkeit sollte sein, 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 habe ich nein gesagt.

Richten Sie Ihre Umgebungsvariablen ein

Dies war wahrscheinlich mein größter Schmerzpunkt. Ich weiß nicht, ob mein Gehirn die Dokumentation verglaset hat oder was. Sobald ich es jedoch herausgefunden habe, ist es wirklich sehr einfach. Und die Konfigurationsdateien sind in YAML geschrieben.

YAML> JSON

Wenn Sie den Befehl eb init ausführen, wird ein Ordner ".elasticbeanstalk" in 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 jede andere Konfiguration zur Startzeit ausgeführt werden können: .ebextensions

Die Ordnerstruktur sollte ungefähr so ​​aussehen:

- .Erweiterungen
- 01_ihreconfig.config
- .elasticbeanstalk
- config.yml

Die Konfigurationsdateien sind, 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: Produktion

Eine Datei zum Konfigurieren von Node.js:
Sie müssen die NodeVersion nicht wirklich angeben, da sie Ihnen die neueste Version für die EC2-Instanzen liefert. Aber es ist nur für den Fall da.

# 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 interessanten Artikel zu diesem Thema.

Erstellen Sie eine Umgebung

eb erstelle 

dann bereitstellen

eb bereitstellen

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

Probieren Sie es mit eb open aus

Änderungen bereitstellen

Sobald Sie alle Einstellungen vorgenommen haben, ist das Übertragen von Änderungen kinderleicht.

ANMERKUNG: Änderungen müssen an Git übergeben werden, bevor sie an die Umgebung gesendet 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 übernommen haben, geben Sie einfach den folgenden Befehl ein und warten Sie, bis er ausgeführt wird.

eb deploy 

Andere praktische EBCLI-Befehle

So öffnen Sie die Instanz im Terminal: Dies ist erheblich einfacher, als sich das Wörterbuch einer URL zu merken, die AWS Ihnen zuerst gibt:

Eb offen

So öffnen Sie die Konsole:

eb Konsole

So senden Sie Protokolldateien direkt an Ihr Terminal:

eb logs

Was kommt als nächstes?

Benutzerdefinierter Domainname

Wenn Sie eb open ausführen, werden Sie 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. Meistens handelt es sich dabei um Standard-DNS-Einträge. Sie können die DNS-Verwaltung überall dort lassen, wo Sie Ihre Domain registriert haben, aber ich finde es einfacher, alles auf einmal zu haben.

SSL-Zertifikat

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

Hinweis: Wenn Sie ein SSL-Zertifikat für Cloudfront verwenden möchten, müssen Sie den Prozess von der Zone in N. Virginia aus starten. Sie können Ihre Zone oben rechts auf dem Bildschirm ändern.

Sobald es verifiziert 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 können Probleme mit dem Zertifikatsmanager auftreten, wenn Sie ein brandneues Konto haben. Wenn Sie aufgefordert werden, sich beim Erstellen eines Zertifikats an den Kundensupport zu wenden, beheben Sie dies.

Fazit

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

Jetzt kannst auch du die Cloud anschreien

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. Aus jeder Tasse Kaffee werden noch ein paar hundert Codezeilen :)

Ressourcen

AWS Im Klartext

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

Erste Schritte mit AWS

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