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

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

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

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

  • 針對遊戲伺服器整合的問題進行故障診斷。

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

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

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

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

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

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

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

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

使用主控台進行遠端存取

有幾種不同的方式可以直接存取機群執行個體。傳統方法是使用 CLI。在 Amazon GameLift Servers 主控台中,使用導覽窗格開啟受管 EC2 機群頁面。

  1. 選擇您要查看的機群執行個體 ID。

  2. 在 MyFleet 詳細資訊頁面上,開啟執行個體索引標籤以顯示機群的所有運算執行個體。選擇您要查看的執行個體。

  3. 選擇連線以在主控台視窗中開啟 CloudShell 終端機。

  4. 按一下執行以開始建立新環境並執行指令碼,透過 驗證 AWS Key Management Service。

使用 進行遠端存取 AWS CLI

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

收集執行個體資料

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

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

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

下列指示說明使用 CLI AWS 完成這些任務的方式。您必須知道要連線之執行個體的機群 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. 使用機群 ID 或 ARN 呼叫 describe-fleet-attributes,以取得機群的建置 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_2023", "ServerSdkVersion": "5.1.1", . . . }

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

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

開始之前:

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

  1. 要求存取執行個體登入資料。使用機群 ID 和您要連線之執行個體的運算名稱呼叫 get-compute-access。 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. 匯出存取登入資料 (選用)。您可以將登入資料匯出至環境變數,並使用它們來設定預設使用者的 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 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" }

      使用 AWS CLI 時,您可以將 --query--output 參數納入您的get-instance-access請求,以自動產生.pem檔案。

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

      $ chmod 400 MyPrivateKey.pem
  2. 開啟連接埠用於遠端連線。您可以透過機Amazon GameLift Servers群組態中授權的任何連接埠存取機群中的執行個體。您可使用 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 Servers。其中包括一或多個遊戲伺服器可執行檔、資產和相依性。遊戲組建檔案位於名為 的根目錄中game

    • 在 Windows 上: c:\game

    • 在 Linux 上:/local/game

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

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

  • 執行時間組態。請勿存取個別執行個體的執行期組態。若要變更執行時間組態屬性,請更新機群的執行時間組態 (請參閱 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/