Учитывая, что бот должен постоянно работать (то есть его нельзя просто запустить по требованию в течение пары минут, что исключает AWS Lambda), и что каждый пользователь нуждается в своем собственном, я бы дал AWS ECS попытка.
Ваша первоначальная настройка будет выглядеть примерно так:
- Сначала создайте образ Docker для запуска вашего бота и загрузите его в ECR или Docker Hub .
- Настройка ECS. Я рекомендую использовать AWS Fargate , чтобы вам не приходилось управлять экземплярами VPC и EC2 только для запуска ваших контейнеров. Вам нужно создать определение задачи , используя образ вашего бота Docker.
- Запускать новые задачи по мере необходимости, используя определение задачи. Это можно сделать через API-интерфейс AWS, AWS SDK, в консоли AWS и т. Д.
Обновление ботов потребует обновления образа Docker и определения задачи, а затем перезапускает задачи, чтобы они использовали новый образ.
Вы также сможете настроить ведение журнала и мониторинг / тревогу с помощью CloudWatch и для ваших задач ECS.
Отчет об использовании зависит от того, что именно вы хотите сообщить. Вы можете получать все, что вам нужно, из событий / метрик CloudWatch или отправлять данные из ваших контейнеров в какое-либо решение для хранения данных (RDS, DynamoDB, S3 и т. Д.).
Привязка внешнего интерфейса к ботам зависит от того, как они настроены. Например, если у них есть REST-серверы, которые прослушивают определенный порт, вы сможете подключиться к нему, если они работают на ECS.