View a markdown version of this page

컨테이너에 연결 - Amazon GameLift Servers

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

컨테이너에 연결

Amazon GameLift Servers 컨테이너 플릿의 경우 플릿 인스턴스에서 실행되는 게임 서버 컨테이너에 액세스할 수 있습니다. 컨테이너 액세스를 사용하여 게임 세션 문제를 해결하고, 로그를 검사하고, 런타임 문제를 디버깅합니다.

컨테이너에 연결

시작하기 전에:

플릿 인스턴스에 연결합니다. 지침은 플릿 인스턴스에 연결 섹션을 참조하세요.

다음 명령을 실행하여 인스턴스에서 실행 중인 컨테이너를 나열합니다.

sudo docker ps

출력에는 게임 서버 컨테이너 및 내부 컨테이너를 포함하여 인스턴스에서 실행되는 모든 컨테이너가 나열Amazon GameLift Servers됩니다. 게임 서버 이미지가 있는 컨테이너를 찾아 게임 서버 컨테이너를 식별합니다.

출력 예제:

CONTAINER ID IMAGE COMMAND CREATED STATUS b9676e9489f5 game-server-container "/bin/sh -c ./$GAME_…" 2 days ago Up 2 days 1d1c8443efe2 support-container "/bin/sh -c ./$SUPPO…" 2 days ago Up 2 days

게임 서버 컨테이너에 연결하려면 CONTAINER ID 열의 컨테이너 짧은 ID를 사용합니다. 이렇게 하면 컨테이너 파일 시스템에 대한 전체 읽기 및 쓰기 액세스 권한이 부여됩니다.

sudo docker exec -it container-short-id sh

콘솔을 통해 컨테이너에 연결

Amazon EC2 Systems Manager(SSM)를 사용하여 Amazon GameLift Servers 콘솔에서 게임 서버 컨테이너에 연결할 수 있습니다. 이 방법을 통해 추가 설정 또는 자격 증명 관리 없이 보안 액세스를 제공합니다. 컴퓨팅 탭 또는 플릿 세부 정보 페이지의 게임 세션 탭에서 컨테이너에 연결할 수 있습니다.

  1. Amazon GameLift Servers 콘솔의 탐색 창에서 관리형 컨테이너를 선택한 다음 플릿을 선택합니다.

  2. 액세스하려는 컨테이너 또는 게임 세션이 포함된 플릿 ID를 선택합니다.

  3. 플릿 세부 정보 페이지에서 다음 탭 중 하나를 선택합니다.

    • 컴퓨팅 - 플릿에서 실행되는 컨테이너를 나열합니다. 연결할 컨테이너를 선택합니다.

    • 게임 세션 - 플릿의 게임 세션을 나열합니다. 게임 세션을 선택하여 호스팅하는 컨테이너에 연결합니다.

  4. 연결을 선택합니다. 표시된 명령을 복사하여 컨테이너에 연결한 다음 연결을 다시 선택합니다.

  5. 연결 대화 상자에서 실행을 선택하여 새 SSM 세션을 생성합니다. 시스템은 AWS Key Management Service(AWS KMS)를 통해 세션을 인증하고 브라우저에서 터미널을 엽니다.

  6. 인스턴스에 연결했으면 4단계의 docker 명령을 붙여 넣고 인스턴스에서 실행하여 컨테이너에 액세스합니다.

게임 세션을 호스팅하는 컨테이너에 연결

특정 게임 세션을 호스팅하는 게임 서버 컨테이너에 연결하려면 다음 단계를 따릅니다.

  1. 컴퓨팅 이름을 가져옵니다. describe-game-sessions를 호출하여 게임 세션에 ComputeName 대한를 가져옵니다.

    요청

    aws gamelift describe-game-sessions \ --fleet-id fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa \ --game-session-id arn:aws:gamelift:us-west-2::gamesession/fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa/gs-1111aaaa-2222-3333-4444-5555bbbb66cc

    응답

    { "GameSessions": [ { "GameSessionId": "arn:aws:gamelift:us-west-2::gamesession/fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa/gs-1111aaaa-2222-3333-4444-5555bbbb66cc", "FleetId": "fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa", "ComputeName": "62c5ff7f7a9a445d84877074c80aeafc", "Status": "ACTIVE", . . . } ] }

    응답의 ComputeName 값을 기록해 둡니다(예: 62c5ff7f7a9a445d84877074c80aeafc).

  2. 컴퓨팅 액세스 및 컨테이너 속성을 가져옵니다. 플릿 ID와 컴퓨팅 이름을 사용하여 get-compute-access를 호출합니다.

    응답에는 다음 필드가 포함됩니다.

    • ContainerIdentifiers - 각 컨테이너ContainerRuntimeIdContainerName 및 입니다.

    • GameServerContainerGroupDefinitionArn - 컨테이너 그룹 정의의 ARN입니다.

    • Credentials - 인스턴스에 연결하기 위한 임시 자격 증명입니다.

    요청

    aws gamelift get-compute-access \ --fleet-id fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa \ --compute-name 62c5ff7f7a9a445d84877074c80aeafc

    응답

    { "ComputeName": "62c5ff7f7a9a445d84877074c80aeafc", "ContainerIdentifiers": [ { "ContainerName": "game-server", "ContainerRuntimeId": "02accb92cd9bef3373300e7151d5c2b3dcca3b06eff1bb4e345085fc008d4678" } ], "Credentials": { "AccessKeyId": "ASIAIOSFODNN7EXAMPLE", "SecretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", "SessionToken": "AQoDYXdzEJr...<remainder of session token>" }, "FleetId": "fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa", "GameServerContainerGroupDefinitionArn": "arn:aws:gamelift:us-west-2::containergroupdefinition/MyGameServerGroup" }
  3. 인스턴스에 연결합니다. 2단계의 자격 증명을 사용하여 플릿 인스턴스에 연결합니다. 자세한 지침은 플릿 인스턴스에 연결 섹션을 참조하세요.

  4. 게임 서버 컨테이너 이름을 찾습니다. 2단계GameServerContainerGroupDefinitionArn의를 사용하여 describe-container-group-definition을 호출하여 게임 서버 컨테이너 이름을 식별합니다.

    요청

    aws gamelift describe-container-group-definition \ --name arn:aws:gamelift:us-west-2::containergroupdefinition/MyGameServerGroup

    응답

    { "ContainerGroupDefinition": { "ContainerGroupDefinitionArn": "arn:aws:gamelift:us-west-2:123456789012:containergroupdefinition/MyGameServerGroup:3", "Name": "MyGameServerGroup", "ContainerGroupType": "GAME_SERVER", "GameServerContainerDefinition": { "ContainerName": "game-server", . . . }, . . . } }

    GameServerContainerDefinition.ContainerName 값을 기록해 둡니다(예: game-server).

  5. 게임 서버 컨테이너 런타임 ID를 식별합니다. 이전 단계의 게임 서버 컨테이너 이름을 사용하여 2단계의 get-compute-access 응답ContainerIdentifiers에서에서 일치하는 항목을 찾습니다. ContainerRuntimeId 값을 기록해 둡니다.

  6. 컨테이너에 연결합니다. 를 컨테이너 IDContainerRuntimeId로 사용하고 다음 명령을 실행합니다.

    sudo docker exec -it 02accb92cd9bef3373300e7151d5c2b3dcca3b06eff1bb4e345085fc008d4678 sh