Вопрос или проблема
Работа, которую я выполняю, часто включает развертывание пакета заданий на машине, после чего я ухожу.
Чтобы минимизировать время ожидания, я огромный поклонник Pushover для уведомлений о завершении. Pushover фантастичен, потому что это вызов веб-сервиса API, который можно легко интегрировать в различные языки и скрипты.
Что я ищу, так это что-то очень похожее, что бы представляло собой доступную через веб-интерфейс панель прогресса, которая была бы так же легка для интеграции, как обычная командная библиотека панели прогресса. Таким образом, я могу лучше оценить, как скоро что-то завершится, если я нахожусь вдали от своей основной машины.
Идея была бы следующей: вызов API создает UID для панели прогресса с ожидаемым количеством обновлений. Затем клиент может обновить количество выполненных обновлений через другой вызов (curl
или httplib
, например). Панель прогресса сама должна быть доступна в виде простой веб-страницы.
Я надеюсь на сторонний сервис, так как не могу просто установить apache на машинах — обычно они находятся за фаерволом.
Примечание: Я определенно предпочел бы сервис, но гипотетически могу быть открыт для чего-то, что я мог бы разместить сам (AWS Free tier?).
Если ваш пакет – это Bash-скрипт за фаерволом, то идеальный способ сделать это – использовать AWS API Manager.
Например:
- Создайте некоторый счетчик в вашем shell-скрипте, который будет увеличиваться и после достижения некоторого значения обновит определенный S3 бакет
- Обновление в файлах бакета вызовет функцию Lambda, которая обновит некоторую глобальную переменную
- Вы можете создать API в API manager, который будет проверять эту переменную и возвращать прогресс
Конечно, вы можете легко создать веб-интерфейс для вашей Lambda.
Еще один вариант для этой задачи – WebSockets в API Manager, который позволяет безсерверное двустороннее общение, и это еще проще, потому что вам не нужен веб-интерфейс, и, вероятно, вам не нужна Lambda, API Manager может отправлять прогресс напрямую в ваш Pushover и/или устройство.
Еще один возможный вариант – Step Function, смотрите этот пример, который делает то же самое, что вы описали.
Множество способов реализации этого.
Ответ или решение
Удаленная панель прогресса: Реализация и Решения
В современном мире автоматизация процессов и мониторинг выполнения задач играют ключевую роль в оптимизации рабочего времени. Если вы часто запускаете пакетные задания на удаленной машине и хотите отслеживать их прогресс, вам может помочь реализация удаленной панели прогресса. Рассмотрим, как реализовать эту задачу с учетом ваших требований и особенностей инфраструктуры.
Введение в задачу
Из описания задачи видно, что вы ищете удобное решение для отслеживания состояния выполнения задач с минимальными затратами на интеграцию и maintenance. Вы уже используете Pushover для уведомлений, и цель состоит в том, чтобы добавить веб-доступное средство для визуализации прогресса задач. Идеальная реализация должна позволять выполнять API вызовы для создания и обновления прогресса, а также отображения этого прогресса в виде простой веб-страницы.
Возможные решения
Мы можем рассмотреть несколько подходов, включая как использование сторонних сервисов, так и разработку собственного решения, которое можно будет разместить на AWS.
-
Использование AWS API Gateway и S3
Вы можете настроить систему на основе AWS API Gateway и Amazon S3, чтобы реализовать свою панель прогресса. Этапы могут выглядеть следующим образом:
- Создание счетчика: В вашей оболочке (Bash) создайте счетчик, который будет увеличиваться по мере завершения задач.
- Обновление S3: После достижения определенного значения, экспортируйте состояние счетчика в файл в S3-бакете.
- Lambda-функция: Активируйте AWS Lambda для мониторинга изменений в S3. Функция будет считывать файл и обновлять глобальную переменную с текущим состоянием прогресса.
- API для получения данных: Настройте API в AWS API Gateway, который будет возвращать текущее состояние прогресса по запросу.
- Frontend (по желанию): По необходимости, создайте простой интерфейс для отображения прогресса.
-
Использование WebSockets в API Gateway
Если вам нужно более «реальное» время обновления, рассмотрите возможность использования WebSockets в AWS API Gateway. Это решение устранит необходимость в создании frontend интерфейса, так как API Gateway может отправлять обновления непосредственно на ваше устройство или в Pushover.
-
AWS Step Functions
Другой вариант — использовать AWS Step Functions для управления задачами. Эта служба позволяет визуализировать состояние выполнения задач и обладает встроенными возможностями для интеграции с другими сервисами AWS. Шаблоны работы можно найти в документации AWS.
Заключение
При выборе решения для реализации удаленной панели прогресса, рассматривайте как сторонние услуги, так и собственные хостинги. AWS предоставляет несколько инструментов, которые не только упростят интеграцию, но и обеспечат аккумуляцию и мониторинг данных. Выбор между API Gateway, WebSockets или Step Functions зависит от ваших специфических нужд и желаемого уровня взаимодействия с системой.
Организуйте свою работу более эффективно, используя возможности AWS, и следите за прогрессом задач даже в удаленном доступе.