기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
컨테이너에 연결
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 -itcontainer-short-idsh
콘솔을 통해 컨테이너에 연결
Amazon EC2 Systems Manager(SSM)를 사용하여 Amazon GameLift Servers 콘솔에서 게임 서버 컨테이너에 연결할 수 있습니다. 이 방법을 통해 추가 설정 또는 자격 증명 관리 없이 보안 액세스를 제공합니다. 컴퓨팅 탭 또는 플릿 세부 정보 페이지의 게임 세션 탭에서 컨테이너에 연결할 수 있습니다.
-
Amazon GameLift Servers 콘솔의 탐색 창에서 관리형 컨테이너를 선택한 다음 플릿을 선택합니다.
-
액세스하려는 컨테이너 또는 게임 세션이 포함된 플릿 ID를 선택합니다.
-
플릿 세부 정보 페이지에서 다음 탭 중 하나를 선택합니다.
컴퓨팅 - 플릿에서 실행되는 컨테이너를 나열합니다. 연결할 컨테이너를 선택합니다.
게임 세션 - 플릿의 게임 세션을 나열합니다. 게임 세션을 선택하여 호스팅하는 컨테이너에 연결합니다.
-
연결을 선택합니다. 표시된 명령을 복사하여 컨테이너에 연결한 다음 연결을 다시 선택합니다.
-
연결 대화 상자에서 실행을 선택하여 새 SSM 세션을 생성합니다. 시스템은 AWS Key Management Service(AWS KMS)를 통해 세션을 인증하고 브라우저에서 터미널을 엽니다.
-
인스턴스에 연결했으면 4단계의 docker 명령을 붙여 넣고 인스턴스에서 실행하여 컨테이너에 액세스합니다.
게임 세션을 호스팅하는 컨테이너에 연결
특정 게임 세션을 호스팅하는 게임 서버 컨테이너에 연결하려면 다음 단계를 따릅니다.
-
컴퓨팅 이름을 가져옵니다. 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). -
컴퓨팅 액세스 및 컨테이너 속성을 가져옵니다. 플릿 ID와 컴퓨팅 이름을 사용하여 get-compute-access를 호출합니다.
응답에는 다음 필드가 포함됩니다.
ContainerIdentifiers- 각 컨테이너ContainerRuntimeId의ContainerName및 입니다.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" } -
인스턴스에 연결합니다. 2단계의 자격 증명을 사용하여 플릿 인스턴스에 연결합니다. 자세한 지침은 플릿 인스턴스에 연결 섹션을 참조하세요.
-
게임 서버 컨테이너 이름을 찾습니다. 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). -
게임 서버 컨테이너 런타임 ID를 식별합니다. 이전 단계의 게임 서버 컨테이너 이름을 사용하여 2단계의
get-compute-access응답ContainerIdentifiers에서에서 일치하는 항목을 찾습니다.ContainerRuntimeId값을 기록해 둡니다. -
컨테이너에 연결합니다. 를 컨테이너 ID
ContainerRuntimeId로 사용하고 다음 명령을 실행합니다.sudo docker exec -it 02accb92cd9bef3373300e7151d5c2b3dcca3b06eff1bb4e345085fc008d4678 sh