我如何创建一个Minecraft EC2服务器,当有人尝试使用它时自动启动

时间:2020-03-22 23:35:12

标签: amazon-web-services amazon-ec2 minecraft

当前,我在C5 EC2实例上运行着一个工作正常的Minecraft服务器。问题是我必须手动启动和停止服务器,这对我的朋友们可能很烦。我想知道是否有可能使EC2状态自动化,以便在玩家尝试加入服务器时立即运行。这类似于我听说Mojang将AWS用于以下方面的Minecraft领域的行为: https://aws.amazon.com/blogs/aws/hosting-minecraft-realms-on-aws/

我已经查看了有关此的教程,这是我能碰到的最好的东西: https://github.com/trevor-laher/OnDemandMinecraft

该解决方案的问题在于,它需要一个单独的网站来登录用户并启动EC2实例,而我希望启动和关闭是完全自动化的。

我将不胜感激。

2 个答案:

答案 0 :(得分:1)

如果服务器关闭,则无法“连接”到服务器。因此,需要另一种可用于启动服务器的机制。

结合您的期望以最小化成本,唯一真正的解决方案是以某种方式触发可启动服务器的AWS Lambda函数。

有几种方法可以让用户触发AWS Lambda函数:

  • 拨打API网关
  • 将对象上传到Amazon S3
  • 以某种方式将消息放入SNS主题或SQS队列中
  • 触发Amazon CloudWatch警报(通过SNS调用Lambda)
  • ...以及其他可能的方式

在考虑使用的方法时,您应考虑安全隐患,例如:

  • 是否只有授权用户才能触发Lambda函数,还是可以由任何人(例如Web爬网程序)触发Lambda函数。
  • 您是否愿意为您的朋友提供AWS凭证(不是一个好主意),他们可以用来直接启动服务器,或者它是否应该是间接方法。

坦率地说,我会推荐以下架构:

  • 创建一个 AWS Lambda函数以打开服务器
  • 创建一个触发Lambda函数的 API网关
  • 给您的朋友一个 URL ,以调用API网关并传递一个“秘密”(实际上是一个密码)
  • API网关将调用Lambda函数,并传递秘密
  • Lambda函数确认密码正确无误,并启动安装了Minecraft的Amazon EC2实例

这里是一本教程,展示了许多这些概念:Build an API Gateway API with Lambda Integration

该秘密的目的是避免在未经授权的人(或机器人)碰巧访问API网关端点时避免服务器启动。它们不会提供机密,因此将不会启动服务器。

一段时间不使用后,

停止服务器是另一回事。您引用的库可能能够帮助您找到一种方法。您可以在Minecraft服务器上运行一个脚本来监视游戏,并且在一段时间不活动之后,只需调用操作系统执行关机

答案 1 :(得分:0)

您可以使用BungeeCord集线器服务器,然后该服务器允许用户开始与主服务器的连接并通过向上旋转。 AWS。

这将要求蹦极服务器始终处于启动状态,但是托管小型蹦极服务器的成本应该相对便宜。

我认为,如果没有小型服务器来接收启动AWS机器的初始请求,您将无法执行任何操作。