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

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

远程连接到Amazon GameLift Servers舰队实例

您可以连接到处于活动状态的Amazon GameLift Servers托管 EC2 队列中的任何实例。远程访问实例的常见原因包括:

  • 排查游戏服务器集成问题。

  • 微调运行时配置和其他特定于实例集的设置。

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

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

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

连接到实例时,请考虑以下潜在问题:

  • 您可以连接到活动实例集中的任何实例。通常,您无法连接到非活动实例集,例如正在激活或处于错误状态的实例集。(这些实例集的可用性可能会在短时间内受到限制。) 有关实例集激活问题的帮助,请参阅调试 Amazon GameLift Servers 队组问题

  • 连接到一个活动实例不会影响该实例的托管活动。该实例会继续基于运行时配置启动和停止服务器进程。它会激活并运行游戏会话。该实例可能会因缩减事件或其他事件而关闭。

  • 您对实例上的文件或设置所做的任何更改都可能影响实例的活动游戏会话和连接的玩家。

使用控制台进行远程访问

有几种不同的方法可以直接访问队列实例。传统方式是使用 CLI。在 Amazon GameLift Servers 控制台中,使用导航窗格打开托管 EC2 队列页面。

  1. 选择您要查看的舰队实例的 ID。

  2. 在 MyFleet 详细信息页面上,打开实例选项卡以显示队列的所有计算实例。选择您要查看的实例。

  3. 选择 Connect 在控制台窗口中打开 CloudShell 终端。

  4. 单击 “运行” 启动新环境的创建并运行脚本,通过进行身份验证。 Amazon Key Management Service

使用... 进行远程访问 Amazon CLI

以下说明介绍了如何使用 Amazon 命令行界面(CLI)远程连接到实例。您还可以使用 Amazon SDK 进行编程调用,如服务 API 参考中所述Amazon GameLift Servers。

收集实例数据

要连接到Amazon GameLift Servers托管 EC2 队列实例,您需要以下信息:

  • 要连接到的实例的 ID。您可以使用实例 ID 或 ARN。

  • 实例上正在使用的Amazon GameLift Servers版本的服务器 SDK。服务器 SDK 与实例上运行的游戏生成包集成。

以下说明描述了如何使用 Amazon CLI 完成这些任务。您必须知道要连接到的实例的实例集 ID。

  1. 获取计算名称。获取实例集中所有活动计算的列表。使用实例集 ID 或 ARN 调用 list-compute。对于单位置实例集,请仅指定实例集标识符。对于多位置实例集,请指定实例集标识符和位置。对于托管 EC2 队列,list-compute返回队列实例列表,属性ComputeName为实例 ID。查找要访问的计算。

    请求

    aws gamelift list-compute \ --fleet-id "fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa" \ --location ""sa-east-1"

    响应

    { "ComputeList": [ { "FleetId": "fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa", "FleetArn": "arn:aws:gamelift:us-west-2::fleet/fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa", "ComputeName": "i-0abc12d3e45fa6b78", "IpAddress": "00.00.000.00", "DnsName": "b08444ki909kvqu6zpw3is24x5pyz4b6m05i3jbxvpk9craztu0lqrbbrbnbkks.uwp57060n1k6dnlnw49b78hg1rw4rcz7.us-west-2.amazongamelift.com", "ComputeStatus": "Active", "Location": "sa-east-1", "CreationTime": "2023-07-09T22:51:45.931000-07:00", "OperatingSystem": "AMAZON_LINUX_2023", "Type": "c4.large" } ] }
  2. 查找服务器 SDK 版本。要获取此信息,您需要查找部署到实例集的生成包。服务器 SDK 版本是一个生成包属性。

    1. describe-fleet-attributes使用舰队 ID 或 ARN 致电以获取舰队的构建 ID 和 ARN。

    2. 使用生成包 ID 或 ARN 调用 describe-build,以获取生成包的服务器 SDK 版本。

      例如:

      请求

    aws gamelift describe-fleet-attributes / --fleet-ids "fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa"

    响应

    { "FleetAttributes": [ { "FleetId": "fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa", "ComputeType": "EC2", "BuildId": "build-3333cccc-44dd-55ee-66ff-00001111aa22", . . . } ] }

    请求

    aws gamelift describe-build / --build-id "build-3333cccc-44dd-55ee-66ff-00001111aa22"

    响应

    "Build": { "BuildId": "build-1111aaaa-22bb-33cc-44dd-5555eeee66ff", "Name": "My_Game_Server_Build_One", "OperatingSystem": "AMAZON_LINUX_2", "ServerSdkVersion": "5.1.1", . . . }

连接到实例(服务器 SDK 5)

如果您要连接的实例正在使用服务器 SDK 版本 5.x 运行游戏版本,请使用 Amazon Sy EC2 stems Manager (SSM) 连接到该实例。您可以访问在 Windows 或 Linux 上运行的远程实例。

开始之前:

完成 SSM 设置步骤并在本地计算机上安装 SSM 插件。有关更多信息,请参阅 Amazon Syst EC2 ems Manager 用户指南中的设置 SSM 和为 Amazon CLI 安装会话管理器插件

  1. 请求实例的访问凭证。get-compute-access使用您要连接的实例的队列 ID 和计算名称进行调用。 Amazon GameLift Servers返回一组用于访问实例的临时证书。例如:

    请求

    aws gamelift get-compute-access \ --compute-name i-11111111a222b333c \ --fleet-id fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa --region us-west-2

    响应

    { "ComputeName": " i-11111111a222b333c ", "Credentials": { "AccessKeyId": " ASIAIOSFODNN7EXAMPLE ", "SecretAccessKey": " wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY ", "SessionToken": " AQoDYXdzEJr...<remainder of session token>" }, "FleetArn": " arn:aws:gamelift:us-west-2::fleet/fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa ", "FleetId": " fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa " }
  2. 导出访问凭证(可选)。您可以将凭证导出到环境变量,并使用它们为默认用户配置 Amazon CLI。有关更多详细信息,请参阅《 Amazon Command Line Interface 用户指南》中的用于配置 Amazon CLI 的环境变量

    export AWS_ACCESS_KEY_ID=ASIAIOSFODNN7EXAMPLE export AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY export AWS_SESSION_TOKEN=AQoDYXdzEJr...<remainder of session token>
  3. 连接到实例集实例。使用要连接到的实例启动 SSM 会话。包括实例的 Amazon 地区或位置。有关更多信息,包括如何设置 SSM 和 SSM 插件,请参阅 A mazon S EC2 ystems Manager 用户指南中的启动会话 (Amazon CLI)

    start-session 请求将自动使用您在步骤 1 中获得的凭证。

    aws ssm start-session \ --target i-11111111a222b333c \ --region us-west-2 \
    注意

    如果您遇到拒绝访问错误,则可能将Amazon_PROFILE环境变量设置为 Amazon 配置文件,这会导致 Amazon CLI 使用错误的凭据进行远程访问。要解决此问题,请暂时取消设置您的 Amazon_PROFILE 环境变量。或者,您可以为远程访问凭证创建自定义 Amazon 配置文件,并将--profile命令行参数添加到start-session请求中。

连接到实例(服务器 SDK 4.x 或更早版本)

如果要连接到的实例正在运行使用服务器 SDK 版本 4 或更早版本的游戏生成包,请按照以下说明进行操作。您可以连接到在 Windows 或 Linux 上运行的实例。使用远程桌面协议(RDP)客户端连接到 Windows 实例。使用 SSH 客户端连接到 Linux 实例。

  1. 请求实例的访问凭证。如果您有实例 ID,请使用命令请求get-instance-access访问证书。如果成功,Amazon GameLift Servers 将返回实例的操作系统、IP 地址和一组凭证(用户名和私有密钥)。凭证格式取决于实例的操作系统。使用以下说明来检索 RDP 或 SSH 的凭证。

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

      "Credentials": { "Secret": "aA1bBB2cCCd3EEE", "UserName": "gl-user-remote" }
    • 对于 Linux 实例 — 要连接到 Linux 实例,SSH 需要用户名和私钥。 Amazon GameLift Servers发放 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 时,您可以通过在请求中包含 --query和--out put 参数来自动生成.pem文件。get-instance-access

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

      $ chmod 400 MyPrivateKey.pem
  2. 为远程连接打开端口。您可以通过Amazon GameLift Servers队列配置中授权的任何端口访问队列中的实例。您可以使用命令 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"
  3. 打开远程连接客户端。为 Windows 实例使用远程桌面,为 Linux 实例使用 SSH。使用 IP 地址连接到实例、端口设置和访问凭证。

    SSH 示例:

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

查看远程实例上的文件

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

在托管实例上查找以下资源:

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

    • 在 Windows 上:c:\game

    • 在 Linux 上:/local/game

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

  • Amazon GameLift Servers 托管资源。根目录Whitewater包含Amazon GameLift Servers服务用来管理游戏托管活动的文件。请勿出于任何原因修改这些文件。

  • 运行时配置。请勿访问单个实例的运行时配置。要更改运行时配置属性,请更新队列的运行时配置(请参阅 Amazon SDK 操作UpdateRuntimeConfiguration或 Amazon CLI update-runtime-configuration)。

  • 实例集数据。JSON 文件包含实例所属的实例集的相关信息,供在实例上运行的服务器进程使用。JSON 文件位于以下位置:

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

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