#amazon-web-services #aws-lambda #aws-media-convert
#amazon-веб-сервисы #aws-lambda #aws-media-convert
Вопрос:
В моем проекте пользователи могут загружать видео. Таким образом, когда пользователь загружает видео, название видео сохраняется в таблице, для поля «is_processed» по умолчанию установлено значение false.
Затем загруженное видео сохраняется в S3. Когда видео a поступает в S3, запускается лямбда-выражение, и видео передается в media convert. После преобразования видео в формат HLS оно снова сохраняется в отдельной корзине S3.
Теперь я хочу, чтобы мое поле «is_processed» было истинным, когда видео будет успешно преобразовано mediaconvert в HLS.
Итак, как я могу связаться с моим бэкэндом Laravel из AWS и сделать поле «is_processed» истинным для этого конкретного видео.
Ответ №1:
Один из способов сделать это — использовать комбинацию тегов метаданных, cloudwatch и другой функции Lambda.
- В MediaConvert для каждого задания можно использовать тег метаданных для присвоения уникального идентификатора. Например:
Ключ = uuid
Значение =< название видео>
Это значение необходимо будет вставить в вашу таблицу БД вместе с is_processed=false
Дополнительные сведения о тегах метаданных см. в разделе https://docs.aws.amazon.com/mediaconvert/latest/ug/user-metadata-tags.html
- Лямбда-функция, которую вы уже создали, запускает задание в MediaConvert. Следующим шагом в цепочке будет создание события cloudwatch для запуска другой лямбда-функции по завершении задания. Например:
Cloudwatch -> События -> Правила —> Создать правило
Имя службы = MediaConvert
Тип события = Изменение состояния задания MediaConvert
Конкретное состояние = завершено
Цели —> Лямбда-функция
Для получения дополнительной информации о событиях cloudwatch см. https://docs.aws.amazon.com/mediaconvert/latest/ug/cloudwatch_events.html
- После завершения задания MediaConvert будет отправлено событие CloudWatch, которое запустит вашу лямбда-функцию, чтобы показать, что задание выполнено. Вы можете использовать пару ключей uuid, определенную в метаданных пользователя, чтобы найти запись в базе данных, обновите с is_processed=false на is_processed= true.