Amazon GameLift
开发人员指南 (版本 )
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

远程访问队组实例

您可以远程访问当前在 Amazon GameLift 队组中运行的任何队组实例。此功能对于队组激活问题的故障排除非常有用。您也可以使用此功能获取实时游戏服务器活动,例如跟踪日志更新或者使用实际玩家流量运行基准测试工具。

远程访问单个 Amazon GameLift 实例时,请记住以下内容:

  • Amazon GameLift 服务将继续管理队组的活动和容量。建立到实例的远程连接不会以任何方式影响 Amazon GameLift 如何进行管理。因此,实例将继续执行队组运行时配置、停止和启动服务器进程,创建和终止游戏会话,并允许玩家连接。此外,作为缩减事件的一部分,Amazon GameLift 服务可以随时终止实例。

  • 对托管活动游戏会话并有活动玩家连接的实例进行本地更改会显著影响玩家体验。例如,您的本地更改可能会删除单个玩家,造成游戏会话崩溃,甚至关闭整个实例,影响多个游戏会话和玩家。

有关如何在 Amazon GameLift 实例上部署和管理游戏的更多信息,请参阅以下主题:

连接到实例

您可以访问在 Windows 或 Linux 上运行的远程实例。要连接到 Windows 实例,请使用远程桌面协议 (RDP) 客户端。要连接到 Linux 实例,请使用 SSH 客户端。

使用 AWS CLI 获取访问远程实例时需要的信息。如需帮助,请参阅 AWS CLI 命令参考获取并安装 AWS Command Line Interface 工具。您还可以使用 AWS 开发工具包,Amazon GameLift 服务 API 参考中的文档可用

  1. 查找您要连接到的实例的 ID。 请求访问时,您必须指定实例 ID。使用 AWS CLI 命令 describe-instances(或 API 调用 DescribeInstances)与队组 ID 来获取有关队列中所有实例的信息。有关帮助(包括示例请求和响应),请参阅 CLI 或 API 参考指南。

  2. 请求实例的访问凭证。 一旦有了实例 ID,请使用命令 get-instance-access(或 API 调用 GetInstanceAccess)来请求访问凭证和其他信息。有关帮助(包括示例请求和响应),请参阅 CLI 或 API 参考指南。如果成功,Amazon GameLift 将返回实例的操作系统、IP 地址和一组凭证 (用户名和私有密钥)。凭证格式取决于实例的操作系统。使用以下说明来检索 RDP 或 SSH 的凭证。

    • 对于 Windows 实例 – 要连接到 Windows 实例,RDP 需要用户名和密码。get-instance-access 请求会以简单字符串的格式返回这些值,因此您可以原样使用返回的值。凭证示例:

      "Credentials": { "Secret": "aA1bBB2cCCd3EEE", "UserName": "gl-user-remote" }
    • 对于 Linux 实例 – 要连接到 Linux 实例,SSH 需要用户名和私有密钥。Amazon GameLift 发布 RSA 私有密钥并将其作为单个字符串返回,使用换行符 (\n) 表示换行符。要使私有密钥可用,您必须:(1) 将字符串转换为 .pem 文件,以及 (2) 为新文件设置权限。返回凭证示例:

      "Credentials": { "Secret": "-----BEGIN RSA PRIVATE KEY-----nEXAMPLEKEYKCAQEAy7WZhaDsrA1W3mRlQtvhwyORRX8gnxgDAfRt/gx42kWXsT4rXE/b5CpSgie/\nvBoU7jLxx92pNHoFnByP+Dc21eyyz6CvjTmWA0JwfWiW5/akH7iO5dSrvC7dQkW2duV5QuUdE0QW\nZ/aNxMniGQE6XAgfwlnXVBwrerrQo+ZWQeqiUwwMkuEbLeJFLhMCvYURpUMSC1oehm449ilx9X1F\nG50TCFeOzfl8dqqCP6GzbPaIjiU19xX/azOR9V+tpUOzEL+wmXnZt3/nHPQ5xvD2OJH67km6SuPW\noPzev/D8V+x4+bHthfSjR9Y7DvQFjfBVwHXigBdtZcU2/wei8D/HYwIDAQABAoIBAGZ1kaEvnrqu\n/uler7vgIn5m7lN5LKw4hJLAIW6tUT/fzvtcHK0SkbQCQXuriHmQ2MQyJX/0kn2NfjLV/ufGxbL1\nmb5qwMGUnEpJaZD6QSSs3kICLwWUYUiGfc0uiSbmJoap/GTLU0W5Mfcv36PaBUNy5p53V6G7hXb2\nbahyWyJNfjLe4M86yd2YK3V2CmK+X/BOsShnJ36+hjrXPPWmV3N9zEmCdJjA+K15DYmhm/tJWSD9\n81oGk9TopEp7CkIfatEATyyZiVqoRq6k64iuM9JkA3OzdXzMQexXVJ1TLZVEH0E7bhlY9d8O1ozR\noQs/FiZNAx2iijCWyv0lpjE73+kCgYEA9mZtyhkHkFDpwrSM1APaL8oNAbbjwEy7Z5Mqfql+lIp1\nYkriL0DbLXlvRAH+yHPRit2hHOjtUNZh4Axv+cpg09qbUI3+43eEy24B7G/Uh+GTfbjsXsOxQx/x\np9otyVwc7hsQ5TA5PZb+mvkJ5OBEKzet9XcKwONBYELGhnEPe7cCgYEA06Vgov6YHleHui9kHuws\nayav0elc5zkxjF9nfHFJRry21R1trw2Vdpn+9g481URrpzWVOEihvm+xTtmaZlSp//lkq75XDwnU\nWA8gkn6O3QE3fq2yN98BURsAKdJfJ5RL1HvGQvTe10HLYYXpJnEkHv+Unl2ajLivWUt5pbBrKbUC\ngYBjbO+OZk0sCcpZ29sbzjYjpIddErySIyRX5gV2uNQwAjLdp9PfN295yQ+BxMBXiIycWVQiw0bH\noMo7yykABY7Ozd5wQewBQ4AdSlWSX4nGDtsiFxWiI5sKuAAeOCbTosy1s8w8fxoJ5Tz1sdoxNeGs\nArq6Wv/G16zQuAE9zK9vvwKBgF+09VI/1wJBirsDGz9whVWfFPrTkJNvJZzYt69qezxlsjgFKshy\nWBhd4xHZtmCqpBPlAymEjr/TOlbxyARmXMnIOWIAnNXMGB4KGSyl1mzSVAoQ+fqR+cJ3d0dyPl1j\njjb0Ed/NY8frlNDxAVHE8BSkdsx2f6ELEyBKJSRr9snRAoGAMrTwYneXzvTskF/S5Fyu0iOegLDa\nNWUH38v/nDCgEpIXD5Hn3qAEcju1IjmbwlvtW+nY2jVhv7UGd8MjwUTNGItdb6nsYqM2asrnF3qS\nVRkAKKKYeGjkpUfVTrW0YFjXkfcrR/V+QFL5OndHAKJXjW7a4ejJLncTzmZSpYzwApc=\n-----END RSA PRIVATE KEY-----", "UserName": "gl-user-remote" }

      使用 AWS CLI 时,您可以通过包括在 get-instance-access 请求中包含 --query--output 参数,自动生成正确格式的 .pem 文件。

      要在 .pem 文件上设置权限,请运行以下命令:

      $ chmod 400 MyPrivateKey.pem
  3. 为远程连接打开端口。 Amazon GameLift 队组中的实例只能通过在队组配置中授权的端口进行访问。您可以使用命令 describe-fleet-port-settings 查看队组的端口设置。

    作为最佳实践,我们建议您仅在需要时为远程访问打开这些端口,并在完成后关闭它们。使用命令 update-fleet-port-settings 为远程连接添加端口设置 (例如 SSH 为 22,RDP 为 3389)。对于 IP 范围值,指定您计划用于连接的设备的 IP 地址 (转换为 CIDR 格式)。例如:

    $ aws gamelift update-fleet-port-settings --fleet-id "fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa" --inbound-permission-authorizations "FromPort=22,ToPort=22,IpRange=54.186.139.221/32,Protocol=TCP"
  4. 打开远程连接客户端。 为 Windows 实例使用远程桌面,为 Linux 实例使用 SSH。使用 IP 地址连接到实例、端口设置和访问凭证。

    SSH 示例:

    ssh -i MyPrivateKey.pem gl-user-remote@192.0.2.0

查看和更新远程实例

当远程连接到实例时,您具有完整的用户和管理访问权限。这意味着,您也具备导致游戏托管错误和故障的能力。如果实例托管着有活动玩家的游戏,您就面临着游戏会话崩溃和玩家掉线的风险,以及中断游戏关闭进程并导致已保存游戏数据和日志中出错。

在以下位置可以找到实例上的托管资源:

  • 游戏生成包文件。 这些是包括在您上传到 Amazon GameLift 的游戏生成包中的文件。它们包括一个或多个游戏服务器可执行文件、资产和依赖项。这些文件位于名为 game 的根目录中:

    • 在 Windows 上: c:\game

    • 在 Linux 上: /local/game

  • 游戏日志文件。 您的游戏服务器生成的任何日志文件存储在您指定的任何目录路径的 game 根目录中。

  • Amazon GameLift 托管资源。 Amazon GameLift 服务用于管理游戏托管的文件位于名为 Whitewater 的根目录中。这些文件不应出于任何原因更改。

  • 运行时配置。 队组运行时配置对于单个实例不可访问。要测试更改运行时配置(启动路径、启动参数、最大并发进程数),您必须更新队组范围的运行时配置(请参阅 AWS 开发工具包操作 UpdateRuntimeConfiguration 或 AWS CLI update-runtime-configuration)。