

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

# 컨테이너에 연결
<a name="containers-remote-access"></a>

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

## 컨테이너에 연결
<a name="containers-remote-access-connect"></a>

**시작하기 전에:**  
플릿 인스턴스에 연결합니다. 지침은 [플릿 인스턴스에 연결](fleets-remote-access.md) 섹션을 참조하세요.

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

```
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
```

## 콘솔을 통해 컨테이너에 연결
<a name="containers-remote-access-console"></a>

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

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

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

1. 플릿 세부 정보 페이지에서 다음 탭 중 하나를 선택합니다.
   + **컴퓨팅 **- 플릿에서 실행되는 컨테이너를 나열합니다. 연결할 컨테이너를 선택합니다.
   + **게임 세션** - 플릿의 게임 세션을 나열합니다. 게임 세션을 선택하여 호스팅하는 컨테이너에 연결합니다.

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

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

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

## 게임 세션을 호스팅하는 컨테이너에 연결
<a name="containers-remote-access-game-session"></a>

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

1. **컴퓨팅 이름을 가져옵니다.** [describe-game-sessions](https://docs.aws.amazon.com/cli/latest/reference/gamelift/describe-game-sessions.html)를 호출하여 게임 세션에 `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`).

1. **컴퓨팅 액세스 및 컨테이너 속성을 가져옵니다.** 플릿 ID와 컴퓨팅 이름을 사용하여 [get-compute-access](https://docs.aws.amazon.com/cli/latest/reference/gamelift/get-compute-access.html)를 호출합니다.

   응답에는 다음 필드가 포함됩니다.
   + `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"
   }
   ```

1. **인스턴스에 연결합니다.** 2단계의 자격 증명을 사용하여 플릿 인스턴스에 연결합니다. 자세한 지침은 [플릿 인스턴스에 연결](fleets-remote-access.md) 섹션을 참조하세요.

1. **게임 서버 컨테이너 이름을 찾습니다.** 2단계`GameServerContainerGroupDefinitionArn`의를 사용하여 [describe-container-group-definition](https://docs.aws.amazon.com/cli/latest/reference/gamelift/describe-container-group-definition.html)을 호출하여 게임 서버 컨테이너 이름을 식별합니다.

   **요청**

   ```
   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`).

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

1. **컨테이너에 연결합니다.** 를 컨테이너 ID`ContainerRuntimeId`로 사용하고 다음 명령을 실행합니다.

   ```
   sudo docker exec -it 02accb92cd9bef3373300e7151d5c2b3dcca3b06eff1bb4e345085fc008d4678 sh
   ```

## 컨테이너 포트 매핑 보기
<a name="containers-remote-access-port-mappings"></a>

포트 매핑은 컨테이너 포트가 플릿 인스턴스의 연결 포트에 매핑되는 방법을 보여줍니다. 인바운드 트래픽을 허용하는 각 컨테이너 포트에는 인스턴스의 연결 포트가 할당됩니다. 포트 매핑을 확인하여 컨테이너 포트에 매핑되는 연결 포트를 검색하거나 연결 문제를 해결할 수 있습니다. Amazon GameLift Servers 콘솔에서 포트 매핑을 보거나 AWS CLI 또는 AWS SDK를 사용할 수 있습니다.

### 콘솔에서 포트 매핑 보기
<a name="containers-remote-access-port-mappings-console"></a>

Amazon GameLift Servers 콘솔의 탐색 창에서 **관리형 컨테이너**를 선택한 다음 **플릿**을 선택합니다. 플릿을 선택하여 플릿 세부 정보 페이지를 엽니다. 다음 위치에서 포트 매핑을 볼 수 있습니다.
+ **인스턴스 세부 정보 페이지** - 선택한 인스턴스의 인스턴스별 컨테이너 그룹에 대한 포트 매핑을 표시합니다.
+ **컴퓨팅 세부 정보 페이지** - 선택한 컴퓨팅의 게임 서버 컨테이너 그룹에 대한 포트 매핑을 표시합니다.

두 페이지에는 컨테이너 이름별로 포트 매핑을 필터링하는 검색 필드가 포함되어 있습니다.

### 를 사용하여 포트 매핑 보기 AWS CLI
<a name="containers-remote-access-port-mappings-cli"></a>

`describe-container-group-port-mappings` 명령을 사용하여 플릿 인스턴스의 컨테이너 그룹에 대한 포트 매핑을 검색합니다. 컨테이너 그룹 유형과 `--compute-name` (게임 서버 그룹의 경우) 또는 `--instance-id` (인스턴스 그룹당)를 지정합니다. 선택적으로 `--container-name` 파라미터를 포함하여 결과를 특정 컨테이너로 필터링할 수 있습니다.

**예: 게임 서버 컨테이너 그룹**

다음 명령은 특정 컴퓨팅의 게임 서버 컨테이너 그룹에 대한 포트 매핑을 검색합니다.

```
aws gamelift describe-container-group-port-mappings \
    --fleet-id fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa \
    --container-group-type GAME_SERVER \
    --compute-name 62c5ff7f7a9a445d84877074c80aeafc
```

성공하면는 다음과 같은 응답을 Amazon GameLift Servers 반환합니다.

```
{
  "FleetId": "fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa",
  "Location": "us-west-2",
  "ContainerGroupDefinitionArn": "arn:aws:gamelift:us-west-2:123456789012:containergroupdefinition/MyGameServerGroup",
  "ContainerGroupType": "GAME_SERVER",
  "ComputeName": "62c5ff7f7a9a445d84877074c80aeafc",
  "InstanceId": "i-1234567890abcdef0",
  "ContainerGroupPortMappings": [
    {
      "ContainerName": "MyGameServer",
      "ContainerRuntimeId": "a1b2c3d4e5f6",
      "ContainerPortMappings": [
        {
          "ContainerPort": 7777,
          "ConnectionPort": 1025,
          "Protocol": "UDP"
        },
        {
          "ContainerPort": 8080,
          "ConnectionPort": 1026,
          "Protocol": "TCP"
        }
      ]
    }
  ]
}
```

**예: 인스턴스별 컨테이너 그룹**

다음 명령은 특정 인스턴스의 인스턴스별 컨테이너 그룹에 대한 포트 매핑을 검색합니다.

```
aws gamelift describe-container-group-port-mappings \
    --fleet-id fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa \
    --container-group-type PER_INSTANCE \
    --instance-id i-1234567890abcdef0
```

성공하면는 다음과 같은 응답을 Amazon GameLift Servers 반환합니다.

```
{
  "FleetId": "fleet-2222bbbb-33cc-44dd-55ee-6666ffff77aa",
  "Location": "us-west-2",
  "ContainerGroupDefinitionArn": "arn:aws:gamelift:us-west-2:123456789012:containergroupdefinition/MyPerInstanceGroup",
  "ContainerGroupType": "PER_INSTANCE",
  "InstanceId": "i-1234567890abcdef0",
  "ContainerGroupPortMappings": [
    {
      "ContainerName": "MySupportContainer",
      "ContainerRuntimeId": "f6e5d4c3b2a1",
      "ContainerPortMappings": [
        {
          "ContainerPort": 8443,
          "ConnectionPort": 2025,
          "Protocol": "TCP"
        }
      ]
    }
  ]
}
```