Schnellstart ohne Server | Komentor

Ich habe diesen Beitrag ursprünglich geschrieben hier.

Serverless ist ein Framework zum Erstellen von Anwendungen mithilfe von Platform-as-a-Service-Anbietern. Im Moment erlaubt es nur die Verwendung von Amazon Web Services, aber Microsoft Azure sollte bald unterstützt werden.

Um Serverless zu verwenden, benötigen wir NodeJS Version 6.6.0 oder höher.

NodeJS kann mit der Anwendung Node Version Manager (NVM) einfach installiert und verwaltet werden.
Ich verwende Ubuntu 15.10 als lokale Umgebung und habe NVM wie beschrieben installiert hier mit:

curl -o-  | bash

Es hat einen Eintrag zum Klassenpfad in meiner ~/.bashrc hinzugefügt
Damit der Befehl “nvm” in der Shell erkannt wird, sollten wir .bashrc mit neu laden

. ~/.bashrc

Dann können wir alle verfügbaren Versionen von NodeJS auflisten:

nvm ls-remote

Es würde so etwas drucken wie:

v6.8.0
v6.8.1
v6.9.0   (LTS: Boron)
v6.9.1   (LTS: Boron)
v6.9.2   (LTS: Boron)
v6.9.3   (LTS: Boron)
v6.9.4   (LTS: Boron)
v6.9.5   (LTS: Boron)
v6.10.0   (Latest LTS: Boron)

Wir können die gewünschte Version installieren:

nvm install v6.10.0

Zuerst müssen wir Servlerless installieren:

npm install serverless -g

Wir können Anwendungs-Stubs aus bestehenden AWS-Vorlagen generieren.

Lassen Sie uns einen neuen Projektordner erstellen – nennen Sie ihn “Serverless-Reservation”.

Im Ordner von der Befehlszeile können wir die Stubs generieren:

serverless create -t aws-nodejs

Es gibt auch Vorlagen für Python und Java, aber wir werden im Moment NodeJS verwenden, weil es besser in die Servlerless-Framework-Landschaft passt (das Framework selbst ist auch in NodeJS geschrieben). Darüber hinaus ist die NodeJS-Leistung auf AWS Lambda bekanntermaßen besser als zB Java.

Wir sollten jetzt das anfängliche Projekt-Setup erstellt haben und können damit beginnen, neue Funktionen hinzuzufügen.
Es gibt 3 Dateien:

  • handler.js, die den Code für die erste Demo-Funktion „Hello World“ enthält. Ein „Funktions“-Begriff im Serverless-Framework bedeutet AWS Lambda-Funktion. Ein „Ereignis“-Begriff bedeutet HTTP-Endpunkt in AWS API Gateway.
  • serverless.yml, eine Konfigurationsdatei, in der wir Projektfunktionen, Ereignisse, die sie auslösen, und andere verschiedene Ressourcen wie z. B. S3-Buckets, DynamoDB-Tabellen definieren. Diese Datei wird vom Framework in Single übersetzt AWS CloudFormation Vorlage, die die AWS-Infrastruktur definiert. Dann wird es auf AWS bereitgestellt.

Wir sollten ein paar Dinge in automatisch generierten Quellen aktualisieren:

  1. Ändern Sie die Eigenschaft “service” in serverless.yml
service: serverless-reservation
  1. Fügen Sie einen neuen API Gateway-Endpunkt hinzu
    Zuerst werden wir versuchen, nur eine vorhandene (generierte) Funktion vom HTTP-Endpunkt aufzurufen, also fügen wir ein Ereignis unter der vorhandenen Funktion hinzu.
functions:
  hello:
    handler: handler.hello
    events:
      - http:
          path: hello
          method: get

Dies besagt, dass die Funktion handler.hello (aus der Datei handler.js ) aufgerufen werden soll, wenn der Benutzer den Endpunkt /hello abfragt

Wir können testen, wie sich die API auf unserem lokalen Server verhält, bevor wir sie auf AWS bereitstellen. Dies ist sehr nützlich für das Schreiben von Tests.

serverless invoke local -f hello

wird drucken:

{
    "statusCode": 200,
    "body": "{\"message\":\"Go Serverless v1.0! Your function executed successfully!\",\"input\":\"\"}"
}

Wir können es auch direkt auf AWS aufrufen

serverless invoke -f hello

Bevor wir die App auf AWS bereitstellen, müssen wir zunächst ein Konto einrichten und den Zugriff konfigurieren.
Es gibt bereits eine schöne Aufzeichnung, die zeigt, wie die Anmeldeinformationen eingerichtet werden. Es wurde erstellt, als die AWS-Seite noch ein altes Erscheinungsbild hatte, aber sie ist immer noch umfassend.

Sobald wir Anmeldeinformationen haben, müssen wir Serverless darüber informieren

serverless config credentials --provider aws --key AKIAZCITC7GETPUUBS6Q --secret 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 --profile dev_profile

Hier lege ich ein neues Profil namens “dev_profile” mit Anmeldeinformationen fest. Es wird ein Eintrag in der Datei „~/.aws/credentials“ hinzugefügt.
Lassen Sie uns das Profil in unserer Anwendung “serverless.yml” konfigurieren

provider:
  name: aws
  runtime: nodejs4.3
  stage: dev
  profile: dev_profile

Stellen wir unsere erste App bereit.

serverless deploy -r us-east-1 -s dev

Im obigen Befehl definieren wir explizit region (-r) , staging (-s).
Sie sind optional, aber nützlich, wenn wir mehrere Umgebungen in verschiedenen Regionen hatten.
Die Standardregion, die verwendet wird, wenn keine Parameter angegeben sind, ist „us-east-1“, die Standardbereitstellung ist „dev“.

Ein sehr nettes Feature für schnellere Bereitstellungen ist es, nur eine bestimmte Funktion erneut bereitzustellen, z. B. die, an der wir kürzlich gearbeitet haben, anstatt die gesamte Anwendung erneut bereitzustellen.
Wir können es mit

servlerless deploy -f <function name>

in unserem Fall wäre es

servlerless deploy -f hello

Es sollte mit der Nachricht erfolgreich sein:

Serverless: Stack update finished...
Service Information
service: serverless-reservation
stage: dev
region: us-east-1
api keys:
  None
endpoints:
  GET - 
functions:
  hello: serverless-reservation-dev-hello

Wenn wir uns bei der AWS-Konsole anmelden und zu CloudFormation in der Region us-east-1 gehen, sollten wir sehen

CloudFormation-Stack für unsere App

Wir können die URL ausprobieren und sehen, wie sie funktioniert. Dafür werde ich verwenden Postbote
aber wir könnten es mit Curl als Verkauf versuchen (Curl)

Antwort.png

Eine weitere großartige Funktion ist die Verfolgung von Live-Protokollen.

serverless logs -f hello -t

Es würde etw zurückgeben wie:

START RequestId: eb672679-0032-11e7-84fe-85f7a97485e6 Version: $LATEST
END RequestId: eb672679-0032-11e7-84fe-85f7a97485e6
REPORT RequestId: eb672679-0032-11e7-84fe-85f7a97485e6	Duration: 0.54 ms	Billed Duration: 100 ms 	Memory Size: 1024 MB	Max Memory Used: 16 MB

Auf diese Weise müssen wir keine Protokolle über die AWS-Konsole herunterladen.

Wenn wir die App schließlich nicht mehr auf AWS behalten und die Rechnungen bezahlen möchten, können wir sie entfernen.

serverless remove

Bisher haben wir gesehen, wie man einen Demo-Endpunkt auf AWS mit Serverless ausführt.
Jetzt müssen wir tatsächlich etwas Nützliches für unsere serverlose Reservierungs-App entwickeln.
Machen wir im nächsten Beitrag.

Verweise

Similar Posts

Leave a Reply

Your email address will not be published.