AWS Lambda запускается случайным образом для загрузки S3 - PullRequest
1 голос
/ 12 октября 2019

У меня есть лямбда-триггер, который срабатывает всякий раз, когда новый объект добавляется в корзину 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 нестабильна?

1 Ответ

1 голос
/ 12 октября 2019
  • Некоторое время назад у меня были похожие проблемы, и я помню, что событие s3:ObjectCreated:Put запускается для небольших файлов.
  • Если размер файла большой, то запускается событие s3:ObjectCreated:CompleteMultipartUpload.
  • Если вы используете aws cli для PUT файла в s3, тогда он выполняет многопартийную загрузку внутри.
  • Поскольку вы копируете в другое ведро outgoing, то стоит просто проверить, имеет ли значение s3:ObjectCreated:* и посмотреть, как он себя ведет. (Убедитесь, что вы не попадаете в цикл лямбды, запускаемый из-за копирования файласнова в том же ведре).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...