本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Connect 连接到舰队实例
您可以远程连接到任何活动的Amazon GameLift Servers托管 EC2 或托管容器队列实例,以解决游戏服务器问题、检查日志和调试运行时行为。使用Amazon GameLift Servers控制台或 Amazon CLI 进行连接。
通过控制台进行远程访问
您可以通过 Amazon GameLift Servers 控制台使用 Amazon EC2 Systems Manager(SSM)直接连接到实例集实例。此方法无需额外设置或凭证管理即可提供安全访问。对于容器队列,在连接到实例后,您可以访问在其上运行的单个容器。有关更多信息,请参阅 Connect 到容器。
-
在 Amazon GameLift Servers 控制台中,从导航窗格中选择托管式 EC2 或托管容器,然后选择实例集。
-
选择包含您要访问的实例的实例集 ID。
-
在实例集详细信息页面上,选择实例选项卡以查看实例集的所有计算实例。
-
选择要连接到的实例,然后选择连接。此操作将弹出“连接到实例”对话框,该对话框会显示连接详细信息,同时允许您查看用于连接到实例的脚本。再次选择连接进行确认。
-
在连接对话框中,选择运行以创建新的 SSM 会话。系统通过 Amazon 密钥管理服务 (Amazon KMS) 对您的会话进行身份验证,并在浏览器中打开终端。
注意
基于控制台的远程访问适用于运行服务器 SDK 5.x 版本的实例集。对于运行较早 SDK 版本的舰队,请使用下一节中描述的 Amazon CLI 方法。
使用 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。
-
获取计算名称。获取实例集中所有活动计算的列表。使用实例集 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" } ] } -
查找服务器 SDK 版本。要获取此信息,您需要查找部署到实例集的生成包。服务器 SDK 版本是一个生成包属性。
-
describe-fleet-attributes使用舰队 ID 或 ARN 致电以获取舰队的构建 ID 和 ARN。
使用生成包 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_2023", "ServerSdkVersion": "4.0.2", . . . } -
连接到实例(服务器 SDK 5)
如果要连接到的实例正在运行使用服务器 SDK 版本 5.x 的游戏生成包,请使用 Amazon EC2 Systems Manager(SSM)连接到该实例。您可以访问在 Windows 或 Linux 上运行的远程实例。对于容器队列,在连接到实例后,您可以访问在其上运行的单个容器。有关更多信息,请参阅 Connect 到容器。
开始之前:
-
请求实例的访问凭证。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" } -
导出访问凭证(可选)。您可以将凭证导出到环境变量,并使用它们为默认用户配置 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> -
连接到实例集实例。使用要连接到的实例启动 SSM 会话。包括实例的 Amazon 地区或位置。有关更多信息,包括如何设置 SSM 和 SSM 插件,请参阅 Amazon EC2 Systems 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 实例。
-
请求实例的访问凭证。如果您有实例 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
-
-
为远程连接打开端口。您可以通过实例集配置中授权的任何端口访问 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" -
打开远程连接客户端。为 Windows 实例使用远程桌面,为 Linux 实例使用 SSH。使用 IP 地址连接到实例、端口设置和访问凭证。
SSH 示例:
ssh -i MyPrivateKey.pem gl-user-remote@192.0.2.0
查看远程实例上的文件
一旦连接到队列实例,您就拥有完全的用户和管理访问权限。这意味着您也有权限对游戏托管服务进行操作,因此可能引发服务异常或故障。如果该实例托管有活跃玩家的游戏,则可能会导致游戏会话崩溃并丢掉玩家,或者中断游戏关闭进程,这可能会导致保存的游戏数据和日志出现错误。
对于容器舰队,在访问容器后(请参阅Connect 到容器),以下文件位置将应用于容器文件系统中。对于 EC2 队列,这些文件位置直接应用于实例。
在托管实例上查找以下资源:
-
游戏生成包文件。这些文件是您上传到 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
-