Развертывание инстансов ботов в AWS

У меня нет опыта развертывания AWS или ботов в производственной среде, поэтому я ищу рекомендации по передовым методам.

Проект представляет собой простой бот для автоматизации Twitter, написанный как приложение node.js. В настоящее время я использую Cloud9 в AWS для его размещения, но мне кажется, что это не самый эффективный способ.

Что мне нужно:

  • Возможность легко развернуть бота / кодовую базу.
  • Несколько экземпляров, чтобы я мог развернуть новый экземпляр для каждого пользователя.
  • Легкость доступа к журналам и обновлениям.
  • Отчет об использовании.
  • Возможность подключения к интерфейсу для пользователей.

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

Текущий рабочий процесс для развертывания нового бота:

  1. Создать экземпляр Cloud9 EC2
  2. Установить зависимости
  3. Git clone из репозитория
  4. Редактировать конфигурацию с помощью ключей доступа пользователей
  5. Запускаем бота с консоли
  6. Оставить работать в фоновом режиме

До сих пор это было очень просто, но я просто не знаю, практично ли это. Ценю любой совет!


person CodeSpent    schedule 27.04.2018    source источник


Ответы (1)


Учитывая, что бот должен работать постоянно (то есть его нельзя просто запускать по запросу на пару минут, что исключает использование AWS Lambda) и что каждому пользователю нужны свои собственные, я бы попробовал AWS ECS.

Ваша первоначальная настройка будет выглядеть примерно так:

  1. Сначала создайте образ Docker для запуска своего бота и загрузите его в ECR или Docker Hub.
  2. Настроить ECS. Я рекомендую использовать AWS Fargate, чтобы вам не приходилось управлять экземплярами VPC и EC2 только для запуска ваших контейнеров. Вы захотите создать определение задачи с помощью своего бота. Образ Docker.
  3. При необходимости запускайте новые задачи, используя определение задачи. Это можно сделать через AWS API, AWS SDK, в консоли AWS и т. Д.

Для обновления ботов нужно просто обновить образ Docker и определение задачи, а затем перезапустить задачи, чтобы они использовали новый образ.

У вас должна быть возможность настроить ведение журнала и мониторинг / оповещение с помощью CloudWatch также для ваших задач ECS.

Отчеты об использовании зависят от того, о чем именно вы хотите сообщить. Вы можете получить все, что вам нужно, из событий / показателей CloudWatch, или вы можете захотеть отправить данные из ваших контейнеров в какое-либо решение для хранения (RDS, DynamoDB, S3 и т. Д.).

Привязка внешнего интерфейса к ботам зависит от того, как они настроены. Например, если у них есть серверы REST, которые прослушивают определенный порт, вы сможете задействовать его, если они работают на ECS.

person Tom    schedule 29.04.2018
comment
Привет, извините за поздний ответ, этот ответ действительно через несколько месяцев, поэтому я хотел просто поиграть с тем, что вы написали, чтобы сначала ознакомиться, но, похоже, это идеальное решение с нашим интерфейсом, работающим на скриптах Google для обработки входа в систему без необходимости создавать нашу собственную систему. Спасибо за помощь! - person CodeSpent; 30.04.2018
comment
Учитывая, что у каждого пользователя будет отдельный экземпляр config.js со своим собственным потребителем / доступом и различными параметрами настроек, что было бы наилучшим способом развернуть их там, где это различие не повлияет на другие экземпляры, а также с использованием некоторой формы избыточности для обеспечения бесперебойной работы? - person CodeSpent; 30.04.2018
comment
Может ли это быть эффективным путем создания переменных среды из сценария POST формы? - person CodeSpent; 30.04.2018
comment
Да, я бы, вероятно, попросил config.js использовать переменные среды, которые вы можете переопределить для каждой выполняемой задачи. Вы можете переопределить при запуске задач через AWS CLI или AWS SDK (например, NodeJS), и тогда будет легко запустить задачу с определенными пользовательскими настройками или даже несколько задач с одинаковыми настройками для обеспечения избыточности. - person Tom; 01.05.2018