У меня есть лямбда-триггер, который срабатывает всякий раз, когда новый объект добавляется в корзину S3. Лямбда-функция - это, по сути, bash-скрипт, который преобразует любой аудиофайл в формат wav
, используя ffmpeg
.
Однако, когда я загружаю файл в S3, Lambda запускается до завершения загрузки,Я получаю ошибку:
START RequestId: ef00f261-b051-42ab-85db-c458f39a5635 Version: $LATEST
fatal error: An error occurred (404) when calling the HeadObject operation: Key "incoming/JP2Z+4yklCnHZRQ8JzW5nfsc3MzBKRXQb3Jt6WJf9q3y0+eCWWcvwuzmusxuTDPRQ=" does not exist
END RequestId: ef00f261-b051-42ab-85db-c458f39a5635
incoming/
- это мой каталог в корзине. Я загружаю файл mp3
, но это ответ, который я получаю.
Мой function.sh
файл
function handler () {
EVENT_DATA=$1
filename=$(echo $1 | grep incoming | cut -f 2 -d "/" | cut -f 1 -d '"')
filename_noext=$(echo $filename | cut -f 1 -d '.')
/var/task/aws s3 cp s3://mybucket/incoming/$filename /tmp/
/var/task/ffmpeg -i /tmp/$filename -ar 8000 /tmp/$filename_noext.wav
/var/task/aws s3 cp /tmp/$filename_noext.wav s3://mybucket/outgoing/
/var/task/aws s3 rm s3://mybucket --recursive --exclude="*" --include="incoming/$filename"
rm -rf /tmp/$filename
}
Кто-нибудь может сказать, что здесь происходит?
РЕДАКТИРОВАТЬ: весь конвейер работает в случайном порядке, если я делаю это с одним файлом за раз, и повторю пару раз, это работает. Это только у меня или интеграция S3-Lambda нестабильна?