Amazon GameLift 플릿 인스턴스에 원격으로 연결 - Amazon GameLift

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon GameLift 플릿 인스턴스에 원격으로 연결

활성 Amazon GameLift 관리형 EC2플릿의 모든 인스턴스에 연결할 수 있습니다. 인스턴스에 원격으로 액세스하는 일반적인 이유는 다음과 같습니다.

  • 게임 서버 통합 문제를 해결합니다.

  • 런타임 구성 및 기타 플릿별 설정을 미세 조정합니다.

  • 로그 추적과 같은 실시간 게임 서버 활동을 가져옵니다.

  • 실제 플레이어 트래픽을 사용하여 벤치마킹 도구를 실행합니다.

  • 게임 세션 또는 서버 프로세스의 특정 문제를 조사합니다.

인스턴스에 연결할 때 다음과 같은 잠재적 문제를 고려하세요.

  • 활성 플릿의 모든 인스턴스에 연결할 수 있습니다. 일반적으로 활성화 중이거나 오류 상태인 플릿과 같이 비활성 플릿에는 연결할 수 없습니다. (이러한 플릿은 단기간 동안 가용성이 제한될 수 있습니다.) 플릿 활성화 문제에 대한 도움이 필요하면 Amazon GameLift 플릿 문제 디버깅 섹션을 참조하세요.

  • 활성 인스턴스에 연결해도 인스턴스의 호스팅 활동에는 영향을 주지 않습니다. 인스턴스는 런타임 구성을 기반으로 서버 프로세스를 계속 시작하고 중지합니다. 게임 세션을 활성화하고 실행합니다. 스케일 다운 이벤트 또는 기타 이벤트에 대한 응답으로 인스턴스가 종료될 수 있습니다.

  • 인스턴스의 파일 또는 설정을 변경하면 인스턴스의 활성 게임 세션과 연결된 플레이어에 영향을 미칠 수 있습니다.

다음 지침은 명령줄 인터페이스()를 사용하여 인스턴스에 AWS 원격으로 연결하는 방법을 설명합니다CLI. Amazon GameLift 서비스 API 참조 에 설명된 AWS SDK대로 를 사용하여 프로그래밍 방식으로 호출할 수도 있습니다.

인스턴스 데이터 수집

Amazon GameLift 관리형 EC2플릿 인스턴스에 연결하려면 다음 정보가 필요합니다.

  • 연결하려는 인스턴스의 ID입니다. 인스턴스 ID 또는 를 사용할 수 있습니다ARN.

  • 인스턴스에서 사용 중인 Amazon GameLift 서버 SDK 버전입니다. 서버SDK는 인스턴스에서 실행 중인 게임 빌드와 통합됩니다.

다음 지침은 를 사용하여 이러한 작업을 완료하는 방법을 설명합니다 AWS CLI. 연결하려는 인스턴스의 플릿 ID를 알아야 합니다.

  1. 컴퓨팅 이름을 가져옵니다. 플릿의 모든 활성 컴퓨팅 목록을 가져옵니다. 통화 목록 - 플릿 ID 또는 를 사용하여 계산합니다ARN. 단일 위치 플릿의 경우 플릿 식별자만 지정합니다. 다중 위치 플릿의 경우 플릿 식별자와 위치를 지정합니다. 관리형 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 또는 를 describe-fleet-attributes 사용하여 ARN플릿의 빌드 ID 및 를 가져옵니다ARN.

    2. 빌드 ID 또는 를 사용하여 describe-build를 호출ARN하여 빌드의 서버 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 및 설치를 참조하세요. AWS CLI

  1. 인스턴스에 대한 액세스 자격 증명을 요청합니다. 연결하려는 인스턴스의 플릿 ID와 컴퓨팅 이름을 get-compute-access 호출합니다. 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 프로파일을 생성하고 start-session 요청에 --profile 명령줄 파라미터를 추가할 수 있습니다.

인스턴스에 연결(서버 SDK 4.x 이하)

연결하려는 인스턴스가 서버 SDK 버전 4 이하의 게임 빌드를 실행하는 경우 다음 지침을 사용합니다. Windows 또는 Linux를 실행하는 인스턴스에 연결할 수 있습니다. 원격 데스크톱 프로토콜(RDP) 클라이언트를 사용하여 Windows 인스턴스에 연결합니다. SSH 클라이언트를 사용하여 Linux 인스턴스에 연결합니다.

  1. 인스턴스에 대한 액세스 자격 증명을 요청합니다. 인스턴스 ID가 있는 경우 명령을 사용하여 액세스 자격 증명을 get-instance-access 요청합니다. 성공하면 Amazon은 인스턴스의 운영 체제, IP 주소 및 자격 증명 세트(사용자 이름 및 보안 암호 키)를 GameLift 반환합니다. 자격 증명 형식은 인스턴스 운영 체제에 따라 다릅니다. 다음 지침에 따라 RDP 또는 에 대한 자격 증명을 검색합니다SSH.

    • Windows 인스턴스의 경우 - Windows 인스턴스에 연결하려면 에 사용자 이름과 암호가 RDP 필요합니다. get-instance-access 요청이 단순한 문자열로 이러한 값을 반환하므로 이 반환된 값을 그대로 사용할 수 있습니다. 예제 자격 증명:

      "Credentials": { "Secret": "aA1bBB2cCCd3EEE", "UserName": "gl-user-remote" }
    • Linux 인스턴스의 경우 - Linux 인스턴스에 연결하려면 에 사용자 이름과 프라이빗 키가 SSH 필요합니다. Amazon은 RSA 프라이빗 키를 GameLift 발급하고 줄 바꿈을 나타내는 새 줄 문자(\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" }

      를 사용할 때 get-instance-access 요청에 --query--output 파라미터를 포함하여 .pem 파일을 자동으로 생성할 AWS CLI수 있습니다.

      .pem 파일에 대한 권한을 설정하려면 다음 명령을 실행합니다.

      $ chmod 400 MyPrivateKey.pem
  2. 원격 연결을 위한 포트를 엽니다. GameLift 플릿 구성에서 승인된 모든 포트를 통해 Amazon 플릿의 인스턴스에 액세스할 수 있습니다. describe-fleet-port-settings 명령을 사용하여 플릿의 포트 설정을 볼 수 있습니다.

    모범 사례로, 필요할 때만 원격 액세스용 포트를 열고 완료되면 닫을 것을 권장합니다. 플릿을 생성한 후에는 활성화되기 전에 포트 설정을 업데이트할 수 없습니다. 멈춘 경우 포트 설정이 열린 상태로 플릿을 다시 생성합니다.

    명령을 사용하여 원격 연결에 대한 포트 설정(예: 22 의 경우 SSH 또는 의 3389 경우)을 update-fleet-port-settings 추가합니다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 호스팅 리소스. 루트 디렉터리에는 Amazon GameLift 서비스가 게임 호스팅 활동을 관리하는 데 사용하는 파일이 Whitewater 포함되어 있습니다. 어떤 이유로든 이러한 파일을 수정하지 마세요.

  • 런타임 구성. 개별 인스턴스의 런타임 구성에 액세스하지 마세요. 런타임 구성 속성을 변경하려면 플릿의 런타임 구성을 업데이트합니다(SDK작업 UpdateRuntimeConfiguration 또는 참조 AWS 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/