언리얼 엔진 - 게임 프로젝트/AWS GameLift를 활용한 데디케이트 FPS 프로젝트

API Gateway - 7) 메타 데이터 + 페이로드 + 에러 파싱

monstro 2026. 5. 16. 20:55
728x90
반응형

- 개요

클라이언트가 AWS GameLift 서비스를 서버에 HTTP 요청한 후에

서버는 클라이언트에게 요청한 서비스의 실행 결과를 반환한다

반환된 실행 결과를 파싱하여 각각의 상황에 맞춰 사용할 수 있도록 설계한다

 

- HTTP 통신 결과의 구성

1) 메타 데이터

메타 데이터는 HTTP 통신 자체의 결과요청의 처리 과정에 대한 정보를 의미한다

구성은 다음과 같다

  • httpStatusCode : 서버가 처리한 결과를 의미하는 3자리 숫자의 HTTP 상태 코드
  • requestId : AWS가 각 요청에 부여하는 고유 ID 
  • attempts : 요청이 성공하기까지 시도한 횟수
  • totalRetryDelay : 서비스 수행을 재시도했을 경우의 총 지연 시간

 

2) 페이로드

페이로드는 클라이언트가 필요로 해서 요청한 본문 데이터를 의미하고, 실제 서비스의 결과물을 의미한다

프로젝트에서는 List Fleets 명령어의 페이로드를 사용하였으며 구성은 다음과 같다

  • FleetIds : 반환된 플릿들의 고유 ID 목록
  • NextToken : 데이터가 너무 많을 때, 다음 페이지의 데이터를 가져오기 위한 페이지 토큰

 

3) 에러

에러는 서버로부터 요청이 정상적으로 처리되지 못했을 때 반환되는 예외 정보를 의미한다

  • 일반 에러 : 클라이언트로부터 발생한 에러
  • fault 에러 : 서버 또는 AWS 내부적으로 발생한 에러

 

- C++ 사이드

1) DedicatedServers 모듈 관련

1 - 1) DedicatedServers 클래스

헤더 파일

 

cpp 파일

 

헤더 파일에서 DECLARE_LOG_CATEGORY_EXTERN 매크로를 사용하여

Log 단계의 모든 세부 정보를 출력하는 LogDedicatedServers 로그를 선언한다

cpp 파일에서 DEFINE_LOG_CATEGORY 매크로를 사용하여 선언한 로그를 생성한다

 

1 - 2) HTTPRequestTypes 클래스

메타데이터 구조체

 

페이로드 구조체

 

서버로부터 반환된 결과값을 구성하는 메타데이터 페이로드의 구조체를 생성한다

각각의 구조체에서는 Dump 함수를 호출하여 각각의 구조체의 정보를 출력한다

 

 

메타데이터의 Dump 함수는 위와 같다

메타데이터를 구성하는 4가지 정보를 출력한다

 

 

페이로드의 Dump 함수는 위와 같다

List Fleets 명령어에 대한 페이로드이므로 반환된 플릿 ID의 목록을 순회하며 출력하고

페이지 토큰이 존재하면 페이지 토큰도 출력한다

 

1 - 3) APITestManager 클래스

 

ListFleets_Response 함수의 로직을 위와 같이 수정한다

List Fleet 명령어를 실행한 결과를 서버로부터 수신받은 후에 일반 에러fault 에러가 확인되면 로그를 남기고 종료한다

얼리 리턴되지 않았다면 리플렉션 시스템을 사용하여 메타 데이터 구조체와 페이로드 구조체를 생성하고

Dump 함수를 호출하여 필요한 정보를 로그로 출력한다

 

- 최종 실행 결과

728x90
반응형