В настоящее время я занимаюсь обработкой видео на локальном сервере, которую я хотел бы передать на аутсорсинг в облако. Я хорошо знаком с Google Cloud, поэтому я бы выбрал Google. Процесс будет состоять из:
- Загрузка видеофайлов в облачное хранилище
- Обработка файла в экземпляре Compute Engine
- Сохранение обработанного видео в облачном хранилище
В среднем мне нужен экземпляр Compute Engine на 1 час в день. Есть ли простой способ автоматически включать экземпляр и выключать его по требованию? Как мне это сделать?
решение1
Есть более простой способ сделать это.
GCP предлагает услугу под названиемОблачные функции. В них можно поместить скрипты, которые вызываются по Событиям илиТриггеры. Один из них являетсяТриггеры облачного хранилищакоторые активируются событиями облачного хранилища, такими как создание объекта (загрузка файлов) или удаление объекта (удаление файлов).
Функция облака может прочитать файл (в данном случае видео), выполнить все процессы в нем и вернуть результат или, в вашем случае, сохранить результат в контейнере GCS (может быть в том же, куда был загружен файл, может быть в другом).Здесьвы можете найти примеры кода для взаимодействия с только что загруженным вами файлом.
Чтобы сохранить обработанное видео, пожалуйста, ознакомьтесь сКлиентские библиотеки облачного хранилища. В зависимости от того, какой язык вы будете использовать (поддерживаемые языки для облачного хранилища и облачных функцийNode.js,Питон,Идти,ДжаваиС#) вам следует проверитьпримеры кодаЗагрузить результат в ведро.
Использование Cloud Functions — гораздо более дешевый вариант по сравнению с Compute Engine, поскольку вы будете использовать эти ресурсы только тогда, когда они необходимы. Единственный недостаток здесь в том, что вы ограниченыПамять и процессорэта услуга поддерживает.
Если ресурсы (от 128 МБ до 4096 МБ памяти) не подходят для процесса, который вы хотите выполнить, вы также можете выполнить следующие действия:
- Создайте экземпляр Compute Engine с помощьюТип аппарататребуется для вашего варианта использования. Поместите скрипт, где будет выполняться весь процесс. После создания и настройки всего,останови это.
- Создайте функцию облака с триггерами событий GCS (с уже предоставленной документацией) и всякий раз, когда она вызывается, снова запускайте GCE через код. Это можно сделать с помощьюКлиентские библиотеки Compute Engineили черезAPI-интерфейс(Я могу представить себе HTTPS-запрос на вашем любимом языке).
- Отправьте всю информацию в GCE и дайте машине поработать (возможно, вам придется добавить некоторый код для ожидания ответа от GCE в Cloud Functions).
- По завершении загрузите файл в облачное хранилище и сообщите Cloud Functions, что все готово.
- Получив это подтверждение, сообщите Cloud Functions о необходимости снова остановить GCE.
Помните, что Compute Engine взимает с вас плату завремя работы виртуальных машинТаким образом, реализация этого альтернативного сценария также может предоставить вам необходимое решение с необходимыми ресурсами по разумной цене.
Планирование GCE с помощью Cloud Schedulerэто тоже вариант, но вы не знаете наверняка, когда будет использоваться GCE, поэтому использование облачных функций потребует меньше продуктов и меньших усилий с вашей стороны.