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
functions: {
getCoffee: {
events: [
{
// 'http' simulates the RestApi of AWS
http: {
method: 'get',
path: '/coffee',
},
},
],
handler: 'src/config/handlers/getCoffee',
},
}
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
Weiterführende Aspekte
- https://www.serverless.com/framework/docs/providers/: Supportet nicht nur AWS, sondern auch Azure, Google etc.
- https://github.com/dherault/serverless-offline: Source des empfohlenen Plugins
- https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-vs-rest.html: Unterscheidung der Api-Gateway-Typen
- https://www.jetbrains.com/help/idea/run-debug-configuration.html: Doku zur Run-/Debug-Profil-Konfiguration in IntelliJ IDEs
- https://www.jetbrains.com/help/idea/scratches.html: Doku zu Scratch Files
---
Autor: Robert Gruner / Software Engineer / Standort Leipzig
Zum Toilet Paper #134: AWS Lambdas lokal debuggen (pdf)
Lust, das nächste ToiletPaper zu schreiben? Jetzt bei jambit bewerben!