6

Mam problem z AWS Lambda, w którym moje obrazy o zmienionym rozmiarze są uszkodzone co kilka przesłanych plików. Napisałem skrypt, który ściąga z S3 i zmienia rozmiar na 3 rozmiary w inne, najczęściej z strumieniami plików. Oto kod:AWS Obraz Lambda jest uszkodzony

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

można zobaczyć w powiększeniu 512px powiększone plik (zmienionym) wraz z oryginałem (200px)

Resizing to 512px

I kolejna zmiana rozmiaru do 120 pikseli Resizing to 120px

Moje zużycie lambda wygląda w pełni w porządku w przeważającej części. Jest ustawiony w tym samym regionie z pamięcią 768 MB i limitem czasu 20 sekund. Skrypty są wykonywane przez około 2 sekundy przy użyciu 90/768 MB dla małych obrazów (na przykład o szerokości 500 pikseli) lub 14 sekund przy 648/768 MB na znacznie większych obrazach, na przykład o szerokości 2000 pikseli. Ale nawet dla małego obrazu, zmiana rozmiaru na mnie umiera. Jeśli zrezygnuję z strumieni plików i po prostu piszę do bufora (podobnie jak aws example), przetwarzanie obrazu zakończy się bufora bufora, a lambda zużyje zbyt wiele zasobów.

Wszelkie wskazówki są mile widziane!

+0

Chociaż przyznaję, że nie jestem biegły w tym co tu robisz, zauważam, że w pewnym momencie nazywasz async.waterfall [... ... .. funkcja transform (next) .... .. ... .. .. Widząc podświetlanie kolorów w tej sekcji, nie jestem całkiem pewien, czy ten fragment kodu działa zgodnie z oczekiwaniami. – Uvar

+0

@Uvar możesz wyjaśnić, co masz na myśli przez podświetlanie kolorów? – Handonam

Odpowiedz

0

Jaka jest szansa, że ​​twój kod nie jest bezpieczny dla wątków? tj. zderzają się niektóre równoległe przebiegi skryptu? Zepsuty plik, który wyświetlasz, wygląda na nieprawidłowy.

+0

Uruchomiłem skrypt tylko raz na obraz, w którym przesyłam obraz pojedynczo. – Handonam