6

Ich habe ein Problem mit AWS Lambda, bei dem meine Bilder in der Größe alle paar Uploads beschädigt werden. Ich habe ein Skript geschrieben, das von S3 ausgeht und es in 3 Größen in einen anderen Bucket ändert, meist mit Filestreams. Hier ist der Code:AWS Lambda-Image beschädigt

https://github.com/handonam/AWS-Resizer/blob/493ff10c317e7150d1ac040f54065083963a9c67/createThumbnails.js

Sie können die größeren 512px Upscaling-Datei (die Größe angepasst) zusammen mit dem Original (200px)

Resizing to 512px

Und eine andere Größenänderung 120px Resizing to 120px

Mein Lambda-Verbrauch sieht größtenteils gut aus. Es ist in der gleichen Region mit 768 MB Speicher und 20 Sekunden Timeout eingerichtet. Die Scripts werden etwa 2 Sekunden lang mit 90/768 MB für kleine Bilder (zB 500 Pixel breit) oder 14 Sekunden (648/768 MB) für sehr viel größere Bilder (zB 2000 Pixel) ausgeführt. Aber selbst für ein kleines Bild stirbt die Größe auf mir. Wenn ich Filestreams verlasse und einfach in den Puffer schreibe (genau wie der aws example), dann wird die Bildverarbeitung mit einem Pufferbuffet enden, und Lambda wird viel zu viele Ressourcen verbrauchen.

Jede Führung ist willkommen!

+0

Während ich zugeben werde, dass ich nicht genau weiß, was Sie hier tun, bemerke ich, dass Sie async.waterfall [.. ... .. function transform (next) ... .. . ... .. .. Wenn ich die Farbhervorhebung in diesem Abschnitt sehe, bin ich mir nicht ganz sicher, ob dieser Teil des Codes wie erwartet funktioniert. – Uvar

+0

@Uvar können Sie erklären, was Sie mit der Farbhervorhebung meinen? – Handonam

Antwort

0

Was ist die Chance, dass Ihr Code nicht threadsafe ist? d.h., einige gleichzeitige Läufe des Skripts kollidieren? Die beschädigte Datei, die Sie anzeigen, hat möglicherweise falsche Dimensionen.

+0

Ich führe das Skript nur einmal pro Bild aus, wo ich ein Bild einzeln hochlade. – Handonam

Verwandte Themen