远程访问亚马逊 GameLift 舰队实例 - 亚马逊 GameLift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

远程访问亚马逊 GameLift 舰队实例

您可以远程访问您的 Amazon GameLift 队列中当前正在运行的任何实例。直接访问实例的一些常见原因包括:

  • 要解决以下问题,请执行以下操作:

    • 如何根据您的运行时配置启动和停止游戏服务器进程。

    • 您的游戏服务器如何与亚马逊 GameLift 服务交互。

    • 游戏会话和玩家连接问题。

    • 配对回填问题.

  • 获取实时游戏服务器活动,例如跟踪日志更新。

  • 使用实际玩家流量运行基准测试工具。

  • 调查游戏会话或游戏服务器进程的具体问题。

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

  • 只能远程访问活跃队列中的实例。如果您的队列无法激活,则无法获取实例连接信息。有关舰队激活问题的帮助,请参阅调试亚马逊 GameLift 舰队问题

  • 远程连接到实例不会影响实例活动。该实例将继续启动和停止服务器进程,当 Amazon GameLift 将其置于实例上时托管游戏会话,并且可以随时终止以应对缩减事件或 Spot 中断。

  • 您对实例所做的任何更改都可能影响该实例的活跃游戏会话和连接的玩家。

连接到 实例

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

使用 Amazon CLI 获取访问远程实例时需要的信息。如需帮助,请参阅Amazon CLI命令参考。您也可以使用Amazon软件开发工具包,其文档可在亚马逊 GameLift服务 API 参考中找到。

  1. 打开亚马逊 GameLift 控制台

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

  3. 请求实例的访问凭证。获得实例 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" }

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

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

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

    作为最佳实践,我们建议您仅在需要时为远程访问打开这些端口,并在完成后关闭它们。例如,一旦创建了队列但在激活之前,就无法更新其端口设置。如果您卡住了,请在打开端口设置的情况下重新创建舰队。

    使用命令 update-fleet-port-settings 为远程连接添加端口设置 (例如 SSH 为 22,RDP 为 3389)。对于 IP 范围值,指定您计划用于连接的设备的 IP 地址 (转换为 CIDR 格式)。示例:

    $ Amazon 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"

    以下示例在 Windows 队列上打开端口 3389

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

    SSH 示例:

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

查看远程实例上的文件

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

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

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

    • 在 Windows 上: c:\game

    • 在 Linux 上: /local/game

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

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

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

  • 舰队数据。实例所属队列的属性存储在 JSON 文件中。这些信息可以由在实例上运行的服务器进程使用。JSON 文件存储在以下位置:

    • 在 Windows 上: C:\GameMetadata\gamelift-metadata.json

    • 在 Linux 上: /local/gamemetadata/gamelift-metadata.json