Achtung: Diese Seite enthält Partner- und Werbe-Links. Daher ist diese Seite im Gesamten als Werbeanzeige zu verstehen!
Bei der Entwicklung meines ersten Alexa-Skills, dem Nörgelgenerator, bin ich auch zum ersten Mal wirklich in Kontakt mit AWS Lambda gekommen. Ein Dienst, der es erlaubt, Code-Schnipsel quasi ohne eigene Server betreiben zu müssen, kostengünstig in der Cloud auszuführen. Diese Schnipsel führen dann meist sehr kleine Funktionen aus. In meinem Fall war das die Generierung der Antwort, die letztlich auf meinem Amazon Echo Dot ausgegeben wird. Schnell hat mich aber der Inline-Editor genervt und auch der Prozess zum manuellen Aktualisieren der auf AWS Lambda gehosteten Codebasis war mir viel zu aufwendig. Ein gulp.js-Script musste her.
Die Entwicklungszeit dieses Scripts hatte ich bereits nach ungefähr dem fünften nicht mehr manuellen Aktualisieren wieder reingeholt. Es tut nichts weiter als den gesamten Code im Ordner src
-Ordner mit Hilfe von gulp-zip in eine ZIP-Datei zu komprimieren. Das neu erstellte Archiv wird direkt mit gulp-awslambda auf AWS Lambda geladen. Ich tippe nur noch ein einfaches gulp
in meine Konsole und meine Lambda-Funktion wird automatisch und fehlerunanfällig aktualisiert.
gulpfile.js
const gulp = require('gulp');
const lambda = require('gulp-awslambda');
const zip = require('gulp-zip');
gulp.task(
'default', function () {
gulp.src(['src/**/*'])
.pipe(zip('build.zip'))
.pipe(lambda('noergel', { 'region': 'eu-west-1' }))
.pipe(gulp.dest('dist'))
}
);
Damit gulp-awslambda auch Zugriff auf den AWS-Account hat, müssen die Zugangsdaten noch entsprechend der Dokumentation hinterlegt werden. Außerdem muss natürlich noergel
gegen den Namen der zu aktualisierenden Lambda-Funktion ausgetauscht werden. Auch eu-west-1
(Kürzel für den AWS-Standort in Irland) muss im Zweifel gegen den richtigen Region-Code ausgetauscht werden. Alle verfügbaren Regionen sind in der AWS-Dokumentation "AWS Regions and Endpoints" zu finden.
Der ganze Prozess ließe sich mit einem geschickt eingesetzten gulp-watch noch weiter automatisieren. Ich finde es im Lambda-Kontext aber doch sinnvoller, das letztliche Update noch zumindest manuell anstoßen zu müssen, um eine höhere Stabilität zu gewährleisten. Ich speichere auch oft unfertigen Code ab, der so nicht sofort in der Amazon-Cloud landet.