Как узнать, когда Elemental MediaConvert завершит работу, с помощью aws.sdk?

Я хотел бы добавить возможность пользователям загружать видео на веб-сайт. Меня интересует AWS Elemental MediaConvert для обработки необходимого перекодирования.

Используя aws sdk, я могу отправить задание aws Elemental MediaConvert для перекодирования вот так ...

const result = await new AWS.MediaConvert({apiVersion: '2017-08-29'}).createJob(params).promise()

... Однако это просто возвращает только что созданное задание. Кажется, я нигде не вижу, как на самом деле узнать, когда работа будет завершена. Мне интересно: есть ли простой способ узнать, когда задание действительно завершается (или терпит неудачу), чтобы я мог отправить ответ клиенту?


person user1031947    schedule 11.02.2019    source источник


Ответы (2)


Один из способов сделать это - использовать CloudWatch Events и Simple Notification Service (SNS).

Вам нужно будет:

  1. Настройте конечную точку HTTP на своем веб-сервере для обработки входящих уведомлений.
  2. Создайте тему SNS и подпишитесь на свою конечную точку HTTP на тему .
  3. Настройте правило события CloudWatch, как описано в zolaemil, и установите цель события в теме соцсети.

Когда ваше задание MediaConvert завершится, оно вызовет событие CloudWatch и отправит результат задания в социальную сеть, которая затем перешлет его на ваш веб-сервер. Таким образом, вы эффективно отправляете из MediaConvert на свой веб-сервер вместо опроса.

person alenz    schedule 04.04.2019

Вы можете настроить правила Cloudwatch на основе событий MediaConvert. Например.

{
  "source": [
    "aws.mediaconvert"
  ],
  "detail-type": [
    "MediaConvert Job State Change"
  ],
  "detail": {
    "status": [
      "COMPLETE"
    ]
  }
}

который может быть нацелен на ряд вещей, включая функции лямбда, темы социальных сетей и многое другое.

person zolaemil    schedule 11.02.2019
comment
Спасибо за ответ - я просмотрел правила Cloudwatch, однако, насколько я могу судить, его можно использовать только для таргетинга на новую службу ... т.е. я могу использовать его для вызова новой лямбды .... Но это не так. не помогите мне, если я жду ответа клиенту ... Мне нужен способ узнать, когда mediaconvert завершится, из вызывающего кода, который изначально создает задание. - person user1031947; 12.02.2019
comment
Чтобы строго ответить на ваш вопрос, вам нужно будет опросить задание на основе идентификатора, который вы вернули при его создании. Однако вы действительно не хотите блокировать лямбду во время преобразования! Таким образом, вы, по сути, заплатите дважды за преобразование: один раз за MediaConvert плюс продолжительность лямбда-выражения, пока оно ожидает и не делает ничего полезного. А поскольку задания MediaConvert, как правило, требуют большого количества процессов, это может быть довольно значительным, не говоря уже о том, что преобразование занимает больше времени, чем максимальная продолжительность вашей лямбда. - person zolaemil; 15.02.2019
comment
@ user1031947 нет способа сделать это, так как это асинхронный вызов. Что вы можете сделать, так это опросить или использовать веб-сокет. К сожалению, это не совсем просто - person Madeo; 07.05.2020
comment
Есть идеи, что может привести к тому, что полное событие не будет вызываться последовательно? - person Scott Wilson; 18.12.2020