2015-07-27 7 views
7

Ich versuche, Datei von iOS zu AWS API Gateway hochzuladen und es an Lambda-Funktion zu übergeben, Wie kann ich dieses Szenario implementieren?Wie lade ich eine Datei zur Lambda-Funktion oder zum API-Gateway hoch?

Ich kann multipart/form-data zum Hochladen auf AWS API Gateway verwenden, aber wie Eingabe-Modell Binärdaten zu unterstützen?

[Edit1] von Antwort bewegt von Spektre

Dank für Antwort, nach ein wenig des Lesens ich heraus, dass es keine Möglichkeit, Datei zu Lambda hochladen (und es ist nicht logisch, weil es Ereignis basiert) und die Nur ein gültiger Anwendungsfall zum Hochladen nach S3 und zur Benachrichtigung von S3 über Lambda.

+0

** [Edit1] ** Antwort von @kixorz ungültige Antwort von Spektre bewegt: Sie benötigen eine Integration anfordern und Inhaltstypen konfigurieren und dann können Sie laden, wie Sie es zu jedem anderen Web-Service. – Spektre

Antwort

8

Ich würde empfehlen, direkt S3 Upload mit einem der AWS SDKs zu verwenden. AWS Lambda eignet sich für die Verarbeitung kurzer Ereignisse, nicht für Inhaltsübertragungen wie Uploads. Sie können die Abrechnung und die Limits überprüfen, um eine fundiertere Entscheidung zu treffen, ob es wirklich etwas ist, nach dem Sie suchen.

+3

Das stimmt gerade jetzt nicht genau. Bei Datei-Uploads gibt es eine Zeitüberschreitung von 5 Minuten - wenn der Upload Ihrer Datei nicht innerhalb dieser Zeit abgeschlossen werden kann, muss die App eine Überprüfung der Architektur durchführen. Das direkte Hochladen auf S3 hat seine Vor- und Nachteile - Sicherheit, Datenumwandlungsbeschränkungen usw. – Vladimir

+0

Was ist nicht wahr? API Gateway unterstützt jetzt binär, aber das ändert nichts an der obigen Empfehlung. – kixorz

+3

Das obige ist keine Empfehlung, sondern eine Warnung - es gibt keinen wirklichen Grund, Lambda nicht für Datei-Uploads zu verwenden. Die Verwendung von S3 zum Hochladen von einer Website, obwohl in vielen Situationen sehr nützlich, schafft eine weitere Verarbeitungsschicht. Indem Sie direkt zu Lambda hochladen, können Sie Ihre Transformation zum Zeitpunkt des Uploads vornehmen und das Ergebnis einmal in S3 veröffentlichen. Auf der anderen Seite erfordert das Hochladen nach S3 zuerst eine Lambda-Funktion, die aufgerufen wird, um die Datei zu transformieren und sie dann erneut in einem anderen Bucket (oder Pfad) zu speichern. Alles hat seine Vor- und Nachteile - es gibt keine richtige Antwort, vor allem ohne mehr Informationen. – Vladimir