TP#134

AWS Lambdas lokal debuggen? Serverless-offline to the rescue

Problem

Ihr seid auch in der Neuzeit angekommen und schreibt euren Business Code jetzt serverless? Super! Die einzelnen Lambda-Funktionen laufen in der Amazon-Infrastruktur und man muss nur ein paar Zeilen JavaScript in der AWS Console schreiben. Aber will man das? Vielleicht doch lieber eine IDE nutzen und TypeScript schreiben? Geht klar. Aber woher weiß ich dann, dass mein Lambda-Code auch funktioniert, ohne ihn zu AWS zu deployen?

Lösung

Nutzt das Tool serverless (kurz: sls) in Kombination mit dem Plugin serverless-offline! Allgemeint hilft euch sls bei der lokalen Entwicklung der Lambdas, beim Deployment zu AWS etc. Es gibt etliche Plugins – eins davon ist serverless-offline. Dieses Plugin simuliert ein lokales AWS Api-Gateway. Mit diesem Gateway werden die einzelnen Lambda-Funktionen verknüpft und ihr könnt es lokal z. B. mittels Postman oder IDEA Scratch File testen.

Beispiel

In eurer sls Konfiguration müsst ihr http-Events für alle Lambdas definieren, welche ins lokale Gateway inkludiert werden sollen. Im TypeScript sieht das für eine getCoffee Funktion ungefähr so aus:
functions: {
   getCoffee: {
      events: [
        {
          // 'http' simulates the RestApi of AWS
          http: {
            method: 'get',
            path: '/coffee',
          },
        },
      ],
      handler: 'src/config/handlers/getCoffee',
    },
}
Ihr legt euch ein Nodejs Run/Debug-Profil an, welches sls offline startet:
Working directory: ~/Code/CoffeeLambdas
JavaScript file: ~/.nvm/versions/node/v12.14.1/bin/serverless # npm global binary file for sls
Application parameters: offline start --aws-profile jambit --stage dev
Environment variables: SLS_DEBUG=* # activate debug output to get more details
Breakpoint im Code setzen und einen Request gegen das lokale Gateway feuern! Happy Debugging!

Weiterführende Aspekte

---

Autor: Robert Gruner / Software Engineer / Standort Leipzig

Local debugging of AWS lambdas? Serverless-offline to the rescue

Cookie-Einstellungen

Diese Website verwendet Cookies, um Inhalte und Anzeigen zu personalisieren, Funktionen für soziale Medien anbieten zu können und Zugriffe auf die Website zu analysieren. Zudem werden Informationen zu Ihrer Verwendung der Website an Partner für soziale Medien, Werbung und Analysen weitergegeben. Die Partner führen diese Informationen möglicherweise mit weiteren Daten zusammen, die Sie ihnen bereitgestellt haben oder die sie im Rahmen Ihrer Nutzung der Dienste gesammelt haben.

Weitere Informationen finden Sie in unserer Datenschutzerklärung. Dort können Sie nachträglich auch Ihre Cookie-Einstellungen ändern.

contact icon

Kontakt aufnehmen