AWS Lambda-und zip-upload von S3
Diese Funktion ist mir nicht klar über die Vorteile (die ich nicht finden, eine gute Dokumentation):
- Ist es einfach schneller in die Falle der Wiederverwendung der gleichen zip-für viele lambda-Funktionen, denn Sie laden nur 1 mal und geben Sie einfach die S3-link-URL auf jede lambda-Funktion?
- Wenn Sie eine S3-link, werden alle Ihre lambda-Funktionen werden aktualisiert mit dem neuesten code automatisch, wenn Sie re-upload der zip-Datei, das heißt, ist die zip-Datei auf S3 eine "Referenz" zu verwenden bei jedem Aufruf eine lambda-Funktion?
Danke.
EDIT:
Ich wurde gefragt, "Warum wollen Sie den gleichen code für mehrere Lambda-Funktionen überhaupt?"
Weil ich AWS Lambda mit AWS-API-Gateway, also ich habe 1 Projekt mit all meinen Handler die eigentliche "Endpunkte" für meine RESTful-API.
EDIT #2:
Ich kann bestätigen, dass das hochladen von einer veränderten version der zip-Datei auf S3 nicht ändern, dass die vorhandene lambda-Funktionen Ergebnis.
Wenn ein AWS Kerl liest diese Nachricht, das wäre toll, haben eine Art von batch-update-Funktion, die updates eine Reihe von ausgewählten lambda-Funktionen mit 1 zip-Datei auf S3 in 1 klicken Sie auf (oder gar eine "automatische update" - Funktion, die erkennt, Wann die Datei aktualisiert wurde ;-))
Lassen Sie uns sagen, Sie haben das 50-Handler in 1 Projekt, dann ändern Sie etwas, Globale Auswirkungen auf alle von Ihnen, derzeit müssen Sie gehen Sie durch alle Ihre lambda-Funktionen und aktualisieren Sie die zip-Datei manuell...
- Sie können einen trigger auf einem S3-bucket zur Automatisierung der Aktualisierung eine Reihe von lambda-Funktionen, wenn eine Datei hochgeladen wird.
- guter Vorschlag, ich habe bereits verwenden der event-Funktion für andere Sachen, aber das bedeutet, dass Sie einen anderen Lambda-Funktion zum aktualisieren der code von anderen Funktionen Recht? In meinem Fall nutze ich Java und ich die Version mit Maven in S3-buckets, so dass ich dachte, der mit einem lokalen script aufrufen der AWS-Befehlszeilen-Schnittstelle (update-Funktion-code).
- Du hast Recht, ja - ich habe tatsächlich viel mehr Details in meiner Antwort weiter unten, die enthält auch eines link zu einem Skript, das Sie anpassen können für Ihre Anforderungen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den code importiert aus der zip-Lambda. Es ist genau das gleiche wie das hochladen der zip-Datei durch die Lambda-Konsole oder die API. Allerdings, wenn Ihre Lambda-Funktion ist groß (Sie sagen, >10MB), Sie empfehlen den Upload auf S3 und dann mit der S3-import-Funktionalität, denn das ist stabiler als direkt hochladen von der Lambda-Seite. Andere als die, ist kein Vorteil.
Also zur Frage 1: Nein. Warum willst du den gleichen code für mehrere Lambda-Funktionen überhaupt?
Frage 2: Wenn Sie überschreiben die zip, die Sie nicht aktualisieren Sie die Lambda-Funktion von code.
event
der einzelnen Lambda-Funktion zu unterscheiden Endpunkt anfordert.Zu beantworten, was ich glaube, ist die Essenz Ihrer Frage, AWS ermöglicht die Nutzung von S3 als die Herkunft für Ihren Lambda zip-Datei, weil manchmal das hochladen großer Dateien über Ihren browser können timeout. Auch, speichern Sie Ihren code auf S3 können Sie speichern es zentral, eher als auf dem computer, und ich bin sicher, es gibt eine CodeCommit tie-in auch dort.
Mithilfe der S3-Methode der Upload-code Lambda ermöglicht auch den upload von größeren Dateien (AWS hat eine 10 MB Grenze beim hochladen via web-browser).
Hinzufügen, um anderen Menschen die Anwendungsfälle, mit der Fähigkeit zu aktualisieren, eine Lambda-Funktion von S3 ist sehr nützlich, innerhalb einer automatisierten Bereitstellung /CI-Prozesses.
Den Anweisungen unter Neue Deployment-Optionen für AWS Lambda gehören ein einfacher Lambda-Funktion, die verwendet werden können, um zu kopieren, eine ZIP-Datei aus S3 Lambda selbst, als auch die Anweisungen für die Auslösung seiner Ausführung, wenn eine neue Datei hochgeladen wird.
Als ein Beispiel, wie einfach dies kann die Entwicklung und Bereitstellung, mein Aktueller workflow:
Update ich meine lambda-Knoten-Anwendung auf meinem lokalen Rechner, und
git commit
es zu einem remote-repository.Einer Jenkins-Instanz holt sich das Begehen, zieht die entsprechenden Dateien, fügt diese in eine ZIP-Datei und lädt diese zu einem S3-bucket.
Den LambdaDeployment Funktion dann automatisch setzt diese neue version für mich, ohne mich zu müssen, auch lassen meine Entwicklungsumgebung.
Hängt von aws-cli installieren und aws-Profil-setup -