2016-09-02 10 views
1

Ich habe eine Anwendung, die blockweise (x Pixel mal x Pixel) Verarbeitung (die parallel sein kann) in Python. Ich brauche nur einen Rat, was architektonisch am besten ist.AWS Bildverarbeitung (Lambda vs EC2)

  1. Verwendung Lambda-Funktion, wenn das Bild auf S3 hochgeladen, die die Verarbeitung tut (aber ich bin verwirrt, wie ich die Vorteile der Parallelisierung oder HPC nehmen kann, wäre es für jeden mehr Lambda-Funktionen wird der Aufruf Teil des zu verarbeitenden Bildes?)

  2. Mit SQS und EC2 (ich recherchiere gerade, aber treffe eine Wand).

Ich wollte nur wissen, was der bessere Ansatz wäre. Ich recherchiere ständig, und mir ist klar, dass deine Zeit wertvoll ist, aber ich wollte nur sehen, ob jemand hier etwas Ähnliches getan hat.

Vielen Dank!

Antwort

0

Ich bin glaube nicht, dass es ein einziger bester Weg, dies zu tun, da es sehr abhängig ist von Ihren Projekt, Ziele, Einschränkungen usw.

Als Beispiel habe ich auf einem gearbeitet habe ähnlich klingendes Problem: Ich musste eine SVG-Datei verarbeiten, abhängig von Daten, die einer Lambda-Funktion zur Verfügung gestellt wurden.

Zunächst sah ich etwas ähnlich wie (1) S3->Lambda, aber es passte nicht in die Problemdomäne aufgrund der Natur der Lambda-Funktion, die durch das S3-Objekt-erstellt Ereignis ausgelöst wird. Es war besser für mich, die Lambda-Funktion bei Bedarf anrufen zu können.

Aus diesem Grund habe ich meine Lambda-Funktion direkt über eine HTTP-Anfrage an API Gateway (API Gateway->Lambda) aufgerufen. Potenziell könnte dies Ihnen erlauben, verschiedene Lambda-Funktionen pro Teil des Bildes, das gerade verarbeitet wird, aufzurufen, aber es wird wiederum sehr davon abhängen, was Sie erreichen wollen.

+0

Warum mussten Sie API-Gateway verwenden, können Sie nicht eine Lambda-Funktion innerhalb einer anderen Lambda-Funktion aufrufen? Also manuell die Lambda-Funktion aufrufen, ohne API Gateway zu verwenden? – RandN88

+0

Ja, Sie können, der erste Aufruf über das API-Gateway war der Auslöser für den Lambda-Prozess und nicht etwa für das S3-Objekt-Erstelltereignis. Sobald die anfängliche "Start" -Lambda-Funktion aufgerufen wurde, riefen andere Lambda-Funktionen einander an. – Fermin