遠端連線至 Amazon GameLift 機群執行個體 - Amazon GameLift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

遠端連線至 Amazon GameLift 機群執行個體

您可以連線至作用中 Amazon GameLift 受管EC2機群中的任何執行個體。遠端存取執行個體的常見原因包括:

  • 對遊戲伺服器整合的問題進行疑難排解。

  • 微調您的執行期組態和其他機群特定設定。

  • 取得即時遊戲伺服器活動,例如日誌追蹤。

  • 使用實際玩家流量執行基準工具。

  • 調查遊戲工作階段或伺服器程序的特定問題。

連線至執行個體時,請考慮下列潛在問題:

  • 您可以連線至作用中機群中的任何執行個體。一般而言,您無法連線至非作用中機群,例如正在啟用或處於錯誤狀態的機群。(這些機群在短時間內的可用性可能有限。) 如需機群啟用問題的協助,請參閱 除錯 Amazon GameLift 機群問題

  • 連線至作用中執行個體不會影響執行個體的託管活動。執行個體會根據執行期組態繼續啟動和停止伺服器程序。它會啟用並執行遊戲工作階段。執行個體可能會關閉,以回應縮減事件或其他事件。

  • 您對執行個體上的檔案或設定所做的任何變更都可能會影響執行個體的作用中遊戲工作階段和連線的播放器。

下列指示說明如何使用命令列介面 () AWS 遠端連線至執行個體CLI。您也可以使用 進行程式設計呼叫 AWS SDK,如 Amazon GameLift 服務API參考 所述。

收集執行個體資料

若要連線至 Amazon GameLift 受管EC2機群執行個體,您需要下列資訊:

  • 您要連線之執行個體的 ID。您可以使用執行個體 ID 或 ARN。

  • 執行個體上使用的 Amazon GameLift 伺服器SDK版本。伺服器與執行個體上執行的遊戲組建SDK整合。

下列指示說明如何使用 完成這些任務 AWS CLI。您必須知道要連線之執行個體的機群 ID。

  1. 取得運算名稱。取得機群中所有作用中運算的清單。使用機群 ID 或 呼叫 list-computeARN。對於單一位置機群,請僅指定機群識別碼。對於多位置機群,請指定機群識別碼和位置。使用受管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 或 呼叫 describe-buildARN,以取得建置的伺服器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": "5.1.1", . . . }

連線至執行個體 (伺服器 SDK 5)

如果您要連線的執行個體正在執行伺服器SDK版本為 5.x 的遊戲組建,請使用 Amazon EC2 Systems Manager (SSM) 連線至執行個體。您可存取執行 Windows 或 Linux 的遠端執行個體。

開始之前:

完成SSM設定步驟,並在本機機器上安裝SSM外掛程式。如需詳細資訊,請參閱 Amazon Systems Manager 使用者指南 中的設定SSM和安裝 的 Session Manager 外掛程式。 AWS CLI EC2

  1. 要求存取執行個體登入資料。get-compute-access 使用要連線之執行個體的機群 ID 和運算名稱呼叫 。Amazon GameLift 會傳回一組用於存取執行個體的臨時憑證。例如:

    請求

    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. 匯出存取憑證 (選用)。您可以將憑證匯出至環境變數,並使用它們為預設使用者設定 AWS CLI。如需更多詳細資訊,請參閱 AWS Command Line Interface 使用者指南中的環境變數以設定 AWS 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工作階段。包含執行個體的區域 AWS 或位置。如需詳細資訊,包括如何設定SSM和SSM外掛程式,請參閱 Amazon EC2 Systems Manager 使用者指南 中的啟動工作階段 (AWS CLI)

    開始工作階段請求會自動使用您在步驟 1 中取得的憑證。

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

    如果您收到存取遭拒的錯誤,您可能會將AWS_PROFILE環境變數設定為 AWS 設定檔,這會導致 AWS CLI使用錯誤的登入資料進行遠端存取。若要解決此問題,請暫時取消設定AWS_PROFILE環境變數。或者,您可以為遠端存取憑證建立自訂 AWS 設定檔,並將--profile命令列參數新增至您的start-session請求。

連線至執行個體 (伺服器 SDK 4.x 或更早版本)

如果您要連線的執行個體正在執行伺服器SDK版本 4 或更早版本的遊戲組建,請使用下列指示。您可以連線至執行 Windows 或 Linux 的執行個體。使用遠端桌面通訊協定 (RDP) 用戶端連線至 Windows 執行個體。使用SSH用戶端連線至 Linux 執行個體。

  1. 要求存取執行個體登入資料。當您有執行個體 ID 時,請使用 命令get-instance-access來請求存取憑證。如果成功,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,您可以將 --query--output 參數納入您的get-instance-access請求,以自動產生.pem檔案。

      .pem 檔案設定權限時,請執行下列命令:

      $ chmod 400 MyPrivateKey.pem
  2. 開啟連接埠用於遠端連線。您可以透過機 GameLift 群組態中授權的任何連接埠存取 Amazon 機群中的執行個體。您可使用 describe-fleet-port-settings 命令檢視機群連接埠設定。

    我們建議的最佳實務,是僅在需要時開啟連接埠用於遠端存取,並於完成時加以關閉。您無法在建立機群後更新連接埠設定,但必須在其處於作用中狀態之前更新。如果您卡住,請在開啟連接埠設定的情況下重新建立機群。

    使用 命令update-fleet-port-settings來新增遠端連線的連接埠設定 (例如 22 的 SSH或 3389的 RDP)。針對 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"

    下列範例會在 Windows 機群上開啟連接埠 3389

    $ AWS 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。其中包括一或多個遊戲伺服器可執行檔、資產和相依項目。遊戲組建檔案位於名為 的根目錄中game

    • 在 Windows 上: c:\game

    • 在 Linux 上:/local/game

  • 遊戲記錄檔。在任何您指定的目錄路徑中,尋找遊戲伺服器在game根目錄中產生的日誌檔案。

  • Amazon GameLift 託管資源。根目錄Whitewater包含 Amazon GameLift 服務用來管理遊戲託管活動的檔案。請勿因任何原因修改這些檔案。

  • 執行時間組態。請勿存取個別執行個體的執行期組態。若要變更執行期組態屬性,請更新機群的執行期組態 (請參閱 AWS SDK操作UpdateRuntimeConfiguration或 AWS CLI update-runtime-configuration)。

  • 機群資料。JSON 檔案包含執行個體所屬機群的相關資訊,供執行個體上執行的伺服器程序使用。JSON 檔案位於下列位置:

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

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

  • TLS 憑證。如果執行個體位於已啟用TLS憑證產生功能的機群,請在下列位置尋找憑證檔案,包括憑證、憑證鏈、私有金鑰和根憑證:

    • 在 Windows 上: c:\\GameMetadata\Certificates

    • 在 Linux 上:/local/gamemetadata/certificates/