Если сервер выключен, невозможно «подключиться» к серверу. Поэтому требуется другой механизм, который можно использовать для запуска сервера.
Объедините это с вашим желанием минимизировать затраты, и единственное реальное решение - каким-то образом вызвать AWS лямбда-функцию, которая может запустить сервер .
Существует несколько способов, которыми пользователи могут запускать функцию AWS Lambda:
- Выполнить вызов API Gateway
- Загрузить объект в Amazon S3
- Каким-то образом поместить сообщение в SNS topi c или в очередь SQS
- Инициировать сигнал тревоги Amazon CloudWatch (который вызывает Lambda через SNS)
- ... и возможно, другие способы
При рассмотрении способа использования вы должны рассмотреть последствия для безопасности , такие как:
- Должны ли только авторизованные пользователи иметь возможность вызвать лямбда-функцию, или это нормально, что кто-нибудь (например, веб-сканер) может ее активировать.
- Хотите ли вы дать своим друзьям AWS учетные данные (не очень хорошая идея), которые они могли бы использовать для арт сервера напрямую, или это должен быть косвенный метод.
Честно говоря, я бы порекомендовал следующую архитектуру:
- Создать AWS Lambda функция , которая включает сервер
- Создание API Gateway , который запускает лямбда-функцию
- Дайте URL своим друзьям, которые звонят Шлюз API и передает «секретный» (фактически пароль)
- Шлюз API будет вызывать функцию Lambda , передавая секрет
- Функция Lambda подтверждает, что секрет верен и запускает экземпляр Amazon EC2 с установленным Minecraft
Вот учебное пособие, в котором показаны многие из этих концепций: Создание API-интерфейса шлюза API с помощью лямбда-интеграции
Цель секрета - избежать запуска сервера, если неавторизованный пользователь (или бот) попадет на конечную точку шлюза API. Они не будут предоставлять секрет, поэтому сервер не будет запущен.
Остановка сервера после периода неиспользования - это другое дело. Библиотека, на которую вы ссылались, может помочь найти способ сделать это. Вы можете запустить скрипт на сервере Minecraft, который следит за игрой и после некоторого периода бездействия просто вызывает операционную систему для завершения работы .