Amazon 컨테이너 플릿에 대한 GameLift 컨테이너 그룹 정의 생성 - 아마존 GameLift

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

Amazon 컨테이너 플릿에 대한 GameLift 컨테이너 그룹 정의 생성

이 설명서는 공개 프리뷰 릴리스에 포함된 기능을 위한 것입니다. 내용은 변경될 수 있습니다.

컨테이너 그룹 정의는 컨테이너화된 게임 서버 애플리케이션을 컨테이너 플릿에 배포하는 방법을 설명합니다. 플릿에서 실행할 컨테이너 세트와 이를 실행하는 방법을 식별하는 청사진입니다. 컨테이너 플릿을 생성할 때 플릿에 배포할 컨테이너 그룹 정의를 지정합니다. 컨테이너 그룹에 대한 자세한 내용은 을 참조하십시오컨테이너 플릿 구성 요소.

시작하기 전에

다음 단계를 완료합니다.

  • 게임 서버를 호스팅하기 위한 컨테이너 아키텍처를 설계하세요. Amazon GameLift 컨테이너 플릿 설계를 참조하세요.

  • 컨테이너 그룹에 포함할 컨테이너 정의를 계획하십시오. AWS CLI를 사용하는 경우 JSON 파일에 컨테이너 정의를 생성하십시오.

  • 최종 컨테이너 이미지를 컨테이너 그룹을 생성하려는 곳과 AWS 리전 동일한 Amazon Elastic Container 레지스트리 (Amazon ECR) 레지스트리에 푸시합니다. Amazon은 컨테이너 그룹 정의를 생성할 때 각 이미지의 스냅샷을 GameLift 저장하고 컨테이너 플릿에 배포할 때 사본을 사용합니다. 게임 서버 소프트웨어로 컨테이너 이미지 준비를 참조하세요.

  • AWS 사용자에게 Amazon ECR 리포지토리에 액세스할 수 있는 IAM 권한이 있는지 확인하십시오. Amazon의 사용자 권한 관리 GameLift를 참조하세요. 최소한 다음 작업에 대한 권한이 필요합니다.

    • ecr:DescribeImages

    • ecr:BatchGetImage

    • ecr:GetDownloadUrlForLayer

컨테이너 그룹 정의를 복제하십시오.

Amazon GameLift 콘솔을 사용하여 기존 컨테이너 그룹 정의를 복제할 수 있습니다.

컨테이너 그룹을 복제하려면
  1. Amazon GameLift 콘솔에서 왼쪽 탐색 창으로 이동하여 컨테이너 그룹을 선택합니다.

  2. 컨테이너 그룹 목록 페이지에서 복제하려는 기존 컨테이너 그룹을 선택합니다. 컨테이너 그룹을 선택하면 복제 버튼이 활성화됩니다.

  3. 복제를 선택합니다. 이 작업을 수행하면 설정이 미리 채워진 컨테이너 그룹 생성 마법사가 열립니다.

  4. 복제된 컨테이너 그룹의 새 이름을 입력합니다. 같은 지역의 컨테이너 그룹은 고유한 이름을 가져야 합니다.

  5. 컨테이너 그룹 및 컨테이너 정의 페이지를 단계별로 살펴보고 새 컨테이너 그룹을 생성하십시오.

복제 컨테이너 그룹 정의를 생성합니다.

레플리카 컨테이너 그룹은 게임 서버 소프트웨어를 관리합니다. 복제 컨테이너 그룹에는 Amazon GameLift Agent와 게임 서버 프로세스를 실행하는 컨테이너가 하나 이상 있습니다. 그룹에는 지원 소프트웨어를 실행하기 위한 추가 “사이드카” 컨테이너가 있을 수 있습니다.

이 주제에서는 Amazon GameLift 콘솔 또는 AWS CLI 도구를 사용하여 컨테이너 그룹 정의를 생성하는 방법을 설명합니다. 컨테이너 그룹 구성 설정에 대한 자세한 내용은 을 Amazon GameLift 컨테이너 플릿 설계 참조하십시오.

Console

Amazon GameLift 콘솔에서 컨테이너 그룹을 생성할 AWS 리전 위치를 선택합니다.

콘솔의 왼쪽 탐색 표시줄을 열고 컨테이너 그룹을 선택합니다. 컨테이너 그룹 페이지에서 컨테이너 그룹 생성을 선택합니다.

1단계: 그룹 세부 정보를 정의합니다.
  1. 컨테이너 그룹 정의 이름을 입력합니다. 이 이름은 AWS 계정 및 지역에 고유해야 합니다. 콘솔에는 그룹 정의가 이름별로 나열되므로 의미 있는 레이블을 지정하는 데 유용할 수 있습니다.

  2. 복제본 스케줄링 전략을 선택합니다.

  3. 총 메모리 제한에는 컨테이너 그룹에 사용할 수 있는 최대 메모리를 입력합니다. 이 값을 계산하는 데 도움이 필요하면 을 참조하십시오리소스 제한 설정.

  4. 총 CPU 제한에는 컨테이너 그룹에 사용할 수 있는 최대 컴퓨팅 성능을 입력합니다. 이 값을 계산하는 데 도움이 필요하면 을 참조하십시오리소스 제한 설정.

2단계: 컨테이너 정의 추가

게임 서버 애플리케이션과 Amazon GameLift Agent를 사용하여 컨테이너를 정의합니다. 필수 복제 컨테이너입니다.

  1. 컨테이너 정의 이름을 입력합니다. 그룹에 정의된 각 컨테이너는 고유한 이름 값을 가져야 합니다.

  2. 컨테이너 이미지의 Amazon ECR 이미지 URI를 식별합니다. 다음 형식 중 하나를 입력합니다.

    • 이미지 URI만 해당: [AWS 계정].dkr.ecr.[AWS 리전].amazonaws.com/[repository ID]

    • 이미지 URI+ 다이제스트: [AWS 계정].dkr.ecr.[AWS 리전].amazonaws.com/[repository ID]@[digest]

    • 이미지 URI+ 태그: [AWS 계정].dkr.ecr.[AWS 리전].amazonaws.com/[repository ID]:[tag]

  3. 기본 컨테이너의 경우 첫 번째 컨테이너 정의에서 Yes가 자동으로 선택됩니다. 다른 컨테이너 정의를 추가하는 경우 각 정의에 대해 이 설정을 켜거나 끌 수 있습니다. 자세한 내용은 필수 컨테이너를 지정하세요.를 참조하세요.

  4. 하나 이상의 내부 컨테이너 포트 범위를 설정합니다. 이 컨테이너는 게임 서버를 호스팅하므로 컨테이너 그룹에서 각 서버 프로세스를 실행하기에 충분한 포트가 있는 범위를 정의하십시오. 자세한 내용은 네트워크 연결을 구성합니다.를 참조하세요.

  5. 선택적 설정 OverridesEnvironment 변수를 사용하면 실행 시 컨테이너에 전달할 값을 지정할 수 있습니다. 여기서 설정한 값은 컨테이너 이미지에 이미 있는 모든 설정보다 우선합니다.

  6. 선택적 컨테이너 제한을 설정하여 이 컨테이너의 리소스 할당을 관리하세요. 자세한 내용은 리소스 제한 설정를 참조하세요.

  7. 필요에 따라 필수가 아닌 컨테이너를 추가로 정의하십시오.

    • 컨테이너 정의 이름ECR 이미지 URI를 입력합니다. 필수적이지 않은 컨테이너는 Amazon GameLift Agent를 실행해서는 안 됩니다.

    • 컨테이너에 네트워크 액세스가 필요한 프로세스가 있는 경우에만 내부 컨테이너 포트 범위를 설정하십시오.

    • 선택적으로 컨테이너에 대한 건강 검사를 설정합니다. 필수가 아닌 컨테이너가 상태 점검에 실패하면 오류가 발생한 컨테이너만 다시 시작하라는 메시지가 표시됩니다.

    • 필요에 따라 오버라이드, 환경 변수, 리소스 할당 제한을 설정할 수도 있습니다.

3단계: 종속성 구성

컨테이너 그룹 정의에 컨테이너가 두 개 이상 있는 경우 컨테이너 간 종속성을 정의할 수 있습니다. 종속성을 사용하여 컨테이너 조건에 따라 시작 및 종료 시퀀스를 설정합니다. 자세한 내용은 컨테이너 종속성 설정를 참조하세요.

  1. 종속성을 추가하려는 컨테이너 이름을 식별하십시오. 이 컨테이너는 종속성 조건이 충족될 때까지 시작되지 않습니다.

  2. 종속성 컨테이너 이름 및 조건을 식별하십시오. 이 컨테이너는 조건을 충족해야 종속 컨테이너를 시작할 수 있습니다.

  3. 필요에 따라 추가 종속성을 설정합니다. 모든 컨테이너에 대해 여러 종속성을 만들 수 있습니다. 순환 종속성을 만들지 마세요.

4단계: 검토 및 생성
  1. 모든 컨테이너 그룹 정의 설정을 검토하십시오. 컨테이너 그룹 정의를 생성한 후에는 구성을 변경할 수 없습니다. 편집을 사용하여 그룹의 각 컨테이너 정의를 비롯한 모든 섹션을 변경할 수 있습니다.

  2. 검토를 마치면 [Create] 를 선택합니다.

    요청이 성공하면 콘솔에 새 컨테이너 그룹 정의 리소스의 세부 정보 페이지가 표시됩니다. Amazon이 COPYING 그룹의 모든 컨테이너 이미지에 대한 스냅샷을 GameLift 생성하기 시작하는 시점의 초기 상태입니다. 이 단계가 완료되면 컨테이너 그룹 정의 상태가 로 READY 변경됩니다. 컨테이너 그룹 정의를 사용하여 컨테이너 플릿을 생성하려면 먼저 컨테이너 그룹 정의가 READY 상태에 있어야 합니다.

AWS CLI

AWS CLI를 사용하여 컨테이너 그룹 정의를 생성할 때는 컨테이너 정의 구성을 별도의 JSON 파일에 유지 관리하십시오. CLI 명령에서 파일을 참조할 수 있습니다. 스키마 예제는 컨테이너 정의 파일 생성 JSON 을 참조하십시오.

컨테이너 그룹 정의 생성

새 컨테이너 그룹 정의를 생성하려면 create-container-group-definition CLI 명령을 사용합니다. 이 명령에 대한 자세한 내용은 AWS CLI 명령 참조를 참조하십시오 create-container-group-definition.

예 : 복제 컨테이너 그룹

이 예제는 복제 컨테이너 그룹 정의에 대한 요청을 보여줍니다. 복제본과 데몬 그룹 정의를 만들기 위한 명령 구조는 기본적으로 동일합니다. 각 그룹 유형에 대한 구체적인 세부 정보는 개별 컨테이너 정의에 설명되어 있습니다.

이 예제에서는 이 그룹의 컨테이너 정의가 포함된 JSON 파일을 생성했다고 가정합니다.

aws gamelift create-container-group-definition \ --name MyAdventureGameContainerGroup \ --operating-system AMAZON_LINUX_2023 \ --scheduling-strategy REPLICA \ --total-memory-limit 4096 \ --total-cpu-limit 1024 \ --container-definitions file://SimpleServer.json

컨테이너 정의 파일 생성 JSON

컨테이너 그룹 정의를 생성할 때 그룹의 컨테이너도 정의합니다. 컨테이너 정의는 컨테이너 이미지가 저장되는 Amazon ECR 리포지토리, 네트워크 포트에 대한 선택적 구성, CPU 및 메모리 사용 제한, 기타 설정을 지정합니다. 컨테이너 그룹 내 모든 컨테이너에 대한 구성이 포함된 단일 JSON 파일을 생성하는 것이 좋습니다. 파일을 유지 관리하는 것은 이러한 중요한 구성을 저장, 공유, 버전 추적하는 데 유용합니다. AWS CLI를 사용하여 컨테이너 그룹 정의를 생성하는 경우 명령에서 파일을 참조할 수 있습니다.

컨테이너 정의를 만들려면
  1. .JSON 파일을 만들고 엽니다. 예:

    [~/work/glc]$ vim SimpleServer.json
  2. 그룹의 각 컨테이너에 대해 별도의 컨테이너 정의를 생성합니다. 다음 예제 콘텐츠를 복사하고 컨테이너에 필요한 대로 수정하십시오. 컨테이너 정의 구문에 대한 자세한 내용은 Amazon GameLift API 참조를 참조하십시오 ContainerDefinitionInput.

  3. AWS CLI 명령에서 참조할 수 있도록 파일을 로컬에 저장합니다.

이 예제에서는 복제 컨테이너 그룹의 필수 컨테이너를 설명합니다. 필수 복제 컨테이너에는 게임 서버 애플리케이션인 Amazon GameLift Agent가 포함되며 게임 호스팅을 위한 기타 지원 소프트웨어가 포함될 수 있습니다. 정의에는 이름, 이미지 URI 및 포트 구성이 포함되어야 합니다. 이 예제에서는 일부 컨테이너별 리소스 제한도 설정합니다.

[ { "ContainerName": "SimpleServer", "ImageUri": "111122223333.dkr.ecr.us-east-1.amazonaws.com/gl-containers:complex-server", "Essential": true, "Cpu": 256, "MemoryLimits": { "HardLimit": 128 }, "PortConfiguration": { "ContainerPortRanges": [ { "FromPort": 2000, "Protocol": "TCP", "ToPort": 2100 } ] } } ]