Amazon GameLift에 사용자 지정 서버 빌드 업로드 - 아마존 GameLift

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

Amazon GameLift에 사용자 지정 서버 빌드 업로드

게임 서버를 Amazon GameLift와 통합한 후 빌드 파일을 Amazon GameLift에 업로드합니다. 이 주제에서는 게임의 빌드 파일을 패키징하고, 선택적 빌드 설치 스크립트를 생성한 다음, AWS Command Line Interface(AWS CLI) 또는 AWS SDK를 사용하여 파일을 업로드하는 방법을 다룹니다.

게임 빌드 파일 패키징하기

구성된 게임 서버를 Amazon GameLift에 업로드하기 전에 게임 빌드 파일을 빌드 디렉터리에 패키징합니다. 이 디렉터리에는 다음을 포함하여 게임 서버를 실행하고 게임 세션을 호스팅하는 데 필요한 모든 구성 요소가 포함되어야 합니다.

  • 게임 서버 바이너리 - 게임 서버를 실행하는 데 필요한 바이너리 파일. 같은 플랫폼에서 실행되도록 구축된 경우에 한해, 하나의 빌드에 여러 게임 서버의 바이너리를 포함할 수 있습니다. 지원되는 플랫폼 목록은 아마존을 통한 개발 지원 GameLift 섹션을 참조하세요.

  • 종속성 - 게임 서버 실행 파일을 실행하는 데 필요한 모든 종속 파일입니다. 예를 들어 자산, 구성 파일, 종속 라이브러리 등이 있습니다.

    참고

    C++용 Amazon GameLift Server SDK로 만든 게임 빌드(Unreal 플러그인으로 만든 빌드 포함)의 경우, Server SDK를 빌드할 때 사용한 것과 동일한 버전의 OpenSSL용 OpenSSL DLL을 포함합니다. 자세한 내용은 Server SDK README 파일을 참조하세요.

  • 설치 스크립트(선택 사항) - Amazon GameLift 호스팅 서버에 게임 빌드를 설치하는 작업을 처리하는 스크립트 파일입니다. 이 파일은 빌드 디렉터리의 루트에 배치합니다. Amazon GameLift는 플릿 생성의 일부로 설치 스크립트를 실행합니다.

다른 AWS 서비스의 리소스에 안전하게 액세스하기 위해 설치 스크립트를 포함하여 빌드에서 애플리케이션을 설정할 수 있습니다. 이를 수행하는 자세한 방법은 플릿에서 다른 AWS 리소스와 통신 섹션을 참조하세요.

빌드 파일을 패키징한 후에는 게임 서버가 새로 설치된 대상 OS에서 실행될 수 있는지 확인합니다. 이 단계를 통해 필요한 모든 종속성을 패키지에 포함시키고 설치 스크립트가 정확한지 확인합니다.

Amazon GameLift 빌드 생성

빌드를 생성하고 파일을 업로드할 때 몇 가지 옵션이 있습니다.

두 방법을 모두 사용하면 Amazon GameLift가 고유의 빌드 ID 및 기타 메타데이터를 사용하여 새 빌드 리소스를 생성합니다. 빌드는 초기화됨 상태에서 시작됩니다. Amazon GameLift가 게임 서버 파일을 획득한 후 빌드는 준비 완료 상태로 이동합니다.

빌드가 준비되면 새 Amazon GameLift 플릿에 배포할 수 있습니다. 자세한 내용은 Amazon GameLift 관리형 플릿 생성 섹션을 참조하세요. Amazon GameLift는 새 플릿을 설정할 때 빌드 파일을 각 플릿 인스턴스에 다운로드하고 빌드 파일을 설치합니다.

파일 디렉터리에서 빌드 생성

로컬 디렉터리 등 임의의 위치에 저장된 게임 빌드를 생성하려면 upload-build AWS CLI 명령을 사용합니다. 이 명령은 Amazon GameLift에 새 빌드 레코드를 생성하고 지정한 위치에서 파일을 업로드합니다.

업로드 요청을 보냅니다. 명령줄 창에 다음 upload-build 명령 및 파라미터를 입력합니다.

aws gamelift upload-build \ --name user-defined name of build \ --operating-system supported OS \ --server-sdk-version Amazon GameLift server SDK version \ --build-root build path \ --build-version user-defined build number \ --region region name
  • operating-system - 게임 서버 빌드의 런타임 환경. OS 값을 지정해야 합니다. 나중에 업데이트할 수 없습니다.

  • server-sdk-version - 게임 서버가 통합되는 Amazon GameLift Server SDK 버전입니다. 값을 입력하지 않으면 Amazon GameLift에서 기본값 4.0.2를 사용합니다. Server SDK 버전을 잘못 지정하면 Amazon GameLift 서비스에 대한 연결을 설정하도록 InitSdk를 호출할 때 게임 서버 빌드가 실패할 수 있습니다.

  • build-root - 빌드 파일의 디렉터리 경로입니다.

  • name - 새 빌드를 설명하는 이름입니다.

  • build-version - 빌드 파일의 버전 세부 정보입니다.

  • region - 빌드를 생성하려는 AWS 리전입니다. 플릿을 배포하려고 계획하는 리전에서 빌드를 생성합니다. 여러 리전에서 게임을 배포하는 경우 각 리전에서 빌드를 생성합니다.

    참고

    aws configure get region을 사용하여 현재 기본 리전을 확인합니다. 기본 리전을 변경하려면 aws configure set region region name 명령을 사용합니다.

aws gamelift upload-build \ --operating-system AMAZON_LINUX_2023 \ --server-sdk-version "5.0.0" \ --build-root "~/mygame" \ --name "My Game Nightly Build" \ --build-version "build 255" \ --region us-west-2
aws gamelift upload-build \ --operating-system WINDOWS_2016 \ --server-sdk-version "5.0.0" \ --build-root "C:\mygame" \ --name "My Game Nightly Build" \ --build-version "build 255" \ --region us-west-2

업로드 요청에 대한 응답으로 Amazon GameLift는 업로드 진행 상황을 제공합니다. 업로드에 성공하면 Amazon GameLift는 새 빌드 레코드 ID를 반환합니다. 업로드 시간은 게임 파일의 크기와 연결 속도에 따라 달라집니다.

Amazon S3 내 파일을 사용하여 빌드 생성

Amazon S3에 빌드 파일을 저장하고 여기에서 Amazon GameLift에 업로드할 수 있습니다. 빌드를 생성할 때 S3 버킷 위치를 지정하면 Amazon GameLift는 Amazon S3에서 직접 빌드 파일을 검색합니다.

빌드 리소스를 생성하려면
  1. 빌드 파일을 Amazon S3에 저장합니다. 패키지된 빌드 파일을 포함하는 .zip 파일을 만들어 AWS 계정의 S3 버킷에 업로드합니다. Amazon GameLift 빌드를 생성할 때 필요하므로 버킷 레이블과 파일 이름을 기록해 둡니다.

  2. 빌드 파일에 Amazon GameLift 액세스 권한을 부여합니다. Amazon S3의 게임 빌드 파일에 액세스의 지침에 따라 IAM 역할을 생성합니다. 역할을 생성한 후에 빌드를 생성할 때 필요하므로 새 역할의 Amazon 리소스 이름(ARN)을 기록해 둡니다.

  3. 빌드를 생성합니다. Amazon GameLift 콘솔 또는 AWS CLI를 사용하여 새 빌드 레코드를 생성합니다. Amazon GameLift에 사용되는 IAM 권한 예제에 설명된 대로 PassRole 권한이 있어야 합니다.

Console
  1. Amazon GameLift 콘솔의 탐색 창에서 호스팅, 빌드를 선택합니다.

  2. 빌드 페이지에서 빌드 생성을 선택합니다.

  3. 빌드 생성 페이지의 빌드 설정에서 다음을 수행하세요.

    1. 이름에 스크립트 이름을 입력합니다.

    2. 버전에 버전을 입력합니다. 빌드의 콘텐츠를 업데이트할 수 있으므로 버전 데이터를 통해 업데이트를 추적할 수 있습니다.

    3. 운영 체제(OS)에 게임 서버 빌드의 OS를 선택합니다. 나중에는 이 값을 업데이트할 수 없습니다.

    4. 게임 서버 빌드에는 Amazon S3에 업로드한 빌드 객체의 S3 URI를 입력하고 객체 버전을 선택합니다. Amazon S3 URI와 객체 버전이 기억나지 않는 경우, S3 찾아보기를 선택하고 빌드 객체를 검색합니다.

    5. IAM 역할에는 Amazon GameLift에서 S3 버킷 및 빌드 객체에 액세스할 수 있도록 생성한 역할을 선택합니다.

  4. (선택 사항) 태그에서 쌍을 입력하여 빌드에 태그를 추가합니다.

  5. 생성을 선택합니다.

Amazon GameLift는 새 빌드에 ID를 할당하고 지정된.zip 파일을 업로드합니다. 빌드 페이지에서 상태를 포함한 새 빌드를 볼 수 있습니다.

AWS CLI

새로운 빌드를 정의하고 서버 빌드 파일을 업로드하려면 create-build 명령을 사용합니다.

  1. 명령줄 창을 열고 AWS CLI를 사용할 수 있는 디렉터리로 전환합니다.

  2. 다음 create-build 명령을 입력합니다.

    aws gamelift create-build \ --name user-defined name of build \ --server-sdk-version Amazon GameLift server SDK version \ --operating-system supported OS \ --build-version user-defined build number \ --storage-location "Bucket"=S3 bucket label,"Key"=Build .zip file name,"RoleArn"=Access role ARN} \ --region region name
    • name - 새 빌드를 설명하는 이름입니다.

    • server-sdk-version - 게임 서버를 Amazon GameLift와 통합하는 데 사용되는 Amazon GameLift Server SDK 버전입니다. 값을 입력하지 않으면 Amazon GameLift에서 기본값 4.0.2를 사용합니다.

    • operating-system - 게임 서버 빌드의 런타임 환경. OS 값을 지정해야 합니다. 나중에 업데이트할 수 없습니다.

    • build-version - 빌드 파일의 버전 세부 정보입니다. 게임 서버의 새 버전이 나올 때마다 새 빌드 리소스가 필요하기 때문에 이 정보가 유용할 수 있습니다.

    • storage-location

      • Bucket - 빌드가 포함되어 있는 S3 버킷의 이름입니다. 예: “my_build_files”.

      • Key - 빌드 파일을 포함하는 .zip 파일의 이름입니다. 예: “my_game_build_7.0.1, 7.0.2”.

      • RoleARN - 생성한 IAM 역할에 할당된 ARN입니다. 예: “arn:aws:iam::111122223333:role/GameLiftAccess”. 정책에 대한 예는 Amazon S3의 게임 빌드 파일에 액세스 섹션을 참조하세요.

    • region - 플릿을 배포하려고 계획하는 AWS 리전에서 빌드를 생성합니다. 여러 리전에서 게임을 배포하는 경우 각 리전에서 빌드를 생성합니다.

      참고

      configure get 명령을 사용하여 현재 기본 리전을 확인하는 것이 좋습니다. 기본 리전을 변경하려면 configure set 명령을 사용합니다.

    aws gamelift create-build \ --operating-system WINDOWS_2016 \ --storage-location "Bucket"="my_game_build_files","Key"="mygame_build_101.zip","RoleArn"="arn:aws:iam::111122223333:role/gamelift" \ --name "My Game Nightly Build" \ --build-version "build 101" \ --region us-west-2
  3. 새 빌드를 보려면 describe-build 명령을 사용합니다.

빌드 파일 업데이트

Amazon GameLift 콘솔 또는 update-buildAWS CLI 명령을 사용하여 빌드 리소스의 메타데이터를 업데이트할 수 있습니다.

Amazon GameLift 빌드를 생성한 후에는 해당 빌드와 연결된 빌드 파일을 업데이트할 수 없습니다. 각각의 새 파일 세트에 대해 새 Amazon GameLift 빌드를 생성합니다. Amazon GameLift는 upload-build 명령을 사용하여 각 요청에 대해 새 빌드 레코드를 자동으로 생성합니다. create-build 명령을 사용하여 빌드 파일을 제공하는 경우 다른 이름의 새 빌드 .zip 파일을 Amazon S3로 업로드하고 새 파일을 이름을 참조하여 빌드를 생성합니다.

다음은 업데이트된 빌드를 배포할 때의 팁입니다.

  • 필요에 따라 대기열을 사용하고 및 플릿을 스왑합니다. Amazon GameLift를 사용하여 게임 클라이언트를 설정할 때는 플릿 대신 대기열을 지정합니다. 대기열을 사용하면 새 빌드를 포함한 새 플릿을 대기열에 추가하고 기존 플릿을 제거할 수 있습니다. 자세한 내용은 게임 세션 배치에 대한 Amazon GameLift 대기열 설정 섹션을 참조하세요.

  • 별칭을 사용하여 플레이어를 새 게임 빌드로 이전합니다. 게임 클라이언트를 Amazon GameLift와 통합할 때는 플릿 ID 대신 플릿 별칭을 지정합니다. 자세한 내용은 Amazon GameLift 플릿에 별칭 추가 섹션을 참조하세요.

  • 자동화된 빌드 업데이트를 설정합니다. Amazon GameLift 배포를 빌드 시스템에 통합하는 방법에 대한 샘플 스크립트와 자세한 내용은 AWS GameTech 블로그의 Automating Deployments to Amazon GameLift를 참조하세요.

빌드 설치 스크립트 추가

게임 빌드의 운영 체제(OS)에 맞게 다음과 같이 설치 스크립트를 생성합니다.

  • Windows: install.bat이라는 배치 파일을 생성합니다.

  • Linux의: install.sh라는 쉘 스크립트 파일을 생성합니다.

설치 스크립트를 생성할 때는 다음 사항을 염두합니다.

  • 스크립트는 어떤 사용자 입력도 가져올 수 없습니다.

  • Amazon GameLift는 빌드를 설치하고 다음 위치의 호스팅 서버에 빌드 패키지의 파일 디렉터리를 다시 생성합니다.

    • Windows 플릿: C:\game

    • Linux 플릿: /local/game

  • Linux 플릿에 대한 설치 프로세스 중에 사용자로 실행을 통해 인스턴스 파일 구조에 대한 액세스를 제한했습니다. 이 사용자는 빌드 파일이 설치된 디렉터리에 대한 전체 권한을 가집니다. 설치 스크립트가 관리자 권한이 필요한 작업을 수행하는 경우 sudo를 사용하여 관리자 액세스를 지정합니다. Windows 플릿용 사용자로 실행을 통해 기본적으로 관리자 권한을 가집니다. 설치 스크립트와 관련해 권한 실패가 발생하면 스크립트에 문제가 있음을 나타내는 이벤트 메시지가 생성됩니다.

  • Linux에서 Amazon GameLift는 bash 같은 공통 쉘 인터프리터 언어를 지원합니다. 설치 스크립트 맨 위에 shebang(예: #!/bin/bash)을 추가합니다. 선호하는 쉘 명령이 지원되는지 확인하려면 활성 Linux 인스턴스에 원격으로 액세스하여 쉘 프롬프트를 엽니다. 자세한 내용은 Amazon GameLift 플릿 인스턴스에 원격으로 연결 섹션을 참조하세요.

  • 설치 스크립트는 VPC 피어링 연결을 사용할 수 없습니다. VPC 피어링 연결은 Amazon GameLift가 플릿 인스턴스에 빌드를 설치하기 전까지는 사용할 수 없습니다.

예 Windows 설치 bash 파일

여기 나온 install.bat 파일은 게임 서버에 필요한 Visual C++ 런타임 구성 요소를 설치하고 로그 파일에 결과를 기록하는 방법을 보여줍니다. 스크립트는 루트의 빌드 패키지에 구성 요소 파일을 포함합니다.

vcredist_x64.exe /install /quiet /norestart /log c:\game\vcredist_2013_x64.log
예 Linux 설치 쉘 스크립트

이 예제 install.sh 파일은 설치 스크립트에서 bash를 사용하고 결과를 로그 파일에 기록합니다.

#!/bin/bash echo 'Hello World' > install.log

이 예제 install.sh 파일은 Amazon CloudWatch 에이전트를 사용하여 시스템 수준 및 사용자 지정 지표를 수집하고 로그 순환을 처리하는 방법을 보여줍니다. Amazon GameLift는 서비스 VPC에서 실행되므로 사용자를 대신하여 AWS Identity and Access Management(IAM) 역할을 맡을 수 있는 권한을 Amazon GameLift에 부여해야 합니다. Amazon GameLift가 역할을 맡도록 허용하려면 AWS 관리형 정책 CloudWatchAgentAdminPolicy를 포함하는 역할을 생성하고 플릿을 생성할 때 해당 역할을 사용합니다.

sudo yum install -y amazon-cloudwatch-agent sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm sudo yum install -y collectd cat <<'EOF' > /tmp/config.json { "agent": { "metrics_collection_interval": 60, "run_as_user": "root", "credentials": { "role_arn": "arn:aws:iam::account#:role/rolename" } }, "logs": { "logs_collected": { "files": { "collect_list": [ { "file_path": "/tmp/log", "log_group_name": "gllog", "log_stream_name": "{instance_id}" } ] } } }, "metrics": { "namespace": "GL_Metric", "append_dimensions": { "ImageId": "${aws:ImageId}", "InstanceId": "${aws:InstanceId}", "InstanceType": "${aws:InstanceType}" }, "metrics_collected": { // Configure metrics you want to collect. // For more information, see Manually create or edit the CloudWatch agent configuration file. } } } EOF sudo mv /tmp/config.json /opt/aws/amazon-cloudwatch-agent/bin/config.json sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json sudo systemctl enable amazon-cloudwatch-agent.service