728x90
반응형
- 개요
이전에 생성한 FindOrCreateGameSession 람다를 수정한다
우선, 반환된 플릿 ID들의 상세정보를 순회할 수 있도록 코드 구조를 변경한다
또, DescribeGameSessionsCommand 명령어를 추가하여
현재 활성화되어 있거나 과거에 생성된 GameSession의 상세 정보를 조회하는 기능을 추가한다
- 절차

FindOrCreateGameSession 람다에 적용한 정책을 위와 같이 수정한다
GameLift Servers 서비스의 DescribeGameSessions API를 사용할 수 있도록 추가한다
import {GameLiftClient, ListFleetsCommand, DescribeFleetAttributesCommand, DescribeGameSessionsCommand} from "@aws-sdk/client-gamelift";
export const handler = async (event) => {
const gameLiftClient = new GameLiftClient({region : process.env.REGION});
try {
const listFleetsInput = {
Limit: 10
};
const listFleetsCommand = new ListFleetsCommand(listFleetsInput);
const listFleetsResponse = await gameLiftClient.send(listFleetsCommand);
const fleetIds = listFleetsResponse.FleetIds;
const describeFleetAttributesInput = {
FleetIds : fleetIds,
Limit: 10
};
const describeFleetAttributesCommand = new DescribeFleetAttributesCommand(describeFleetAttributesInput);
const describeFleetAttributesResponse = await gameLiftClient.send(describeFleetAttributesCommand);
const fleetAttributes = describeFleetAttributesResponse.FleetAttributes;
let fleetId;
for (const fleetAttribute of fleetAttributes){
if(fleetAttribute.Status === "ACTIVE"){
fleetId = fleetAttribute.FleetId;
break;
}
}
const describeGameSessionsInput = {
FleetId : fleetId,
Limit : 10,
Location : "custom-Home-LocalPC", // 테스트용 Anywhere 로케이션(추후 EC2 Managed 로케이션으로 수정)
StatusFilter : "ACTIVE"
};
const describeGameSessionsCommand = new DescribeGameSessionsCommand(describeGameSessionsInput);
const describeGameSessionsResponse = await gameLiftClient.send(describeGameSessionsCommand);
return describeGameSessionsResponse;
} catch(error){
return error;
}
};
이후 람다의 코드를 위와 같이 수정한다
수정 사항은 다음과 같다
- DescribeFleetAttributes API 실행 결과에서 플릿들의 상세 속성 정보가 담긴 배열을 fleetAttributes 변수로 저장
- 플릿들의 상세 정보를 순회하면서 "ACTIVE" 상태의 플릿 ID를 fleetId 변수에 저장
- fleetId 변수 + 특정 로케이션 +"ACTIVE" 상태 필터를 사용해 현재 진행 중인 게임 세션 목록을 최대 10개 조회
- DescribeGameSessionsCommand API를 사용하여 조회된 게임 세션 목록 정보를 반환
- 실행
# 1) 토큰 발급
aws gamelift get-compute-auth-token ^
--fleet-id "플릿 ID" ^
--compute-name "컴퓨팅 자원 이름" ^
--region "사용중인 리전" ^
--profile "프로필 이름" // 해당 옵션은 필요한 경우 사용
# 2) 발급된 토큰을 사용하여 서버 exe 파일 실행
"경로\Build\Build_1\운영체제Server\프로젝트Server.exe" -log -glAnywhere ^
-glAnywhereAuthToken="발급된토큰" ^
-glAnywhereHostId="컴퓨팅 자원 이름" ^
-glAnywhereFleetId="플릿 ID" ^
-glAnywhereWebSocketUrl="리전에 따른 소켓 URL" ^
-port=7777 // 기본 포트번호
# 3) GameSession 생성(Anywhere)
aws gamelift create-game-session ^
--fleet-id "플릿 ID" ^
--name "생성할 게임세션 이름" ^
--maximum-player-session-count "최대 플레이어 수" ^
--region "해당 플릿의 리전" ^
--location "컴퓨팅 자원 이름" ^
--profile "프로필 이름" // 해당 옵션은 필요한 경우 사용
위와 같이 AWS CLI에 입력하여 Anywhere GameSession을 실행한다

람다의 실행 결과는 위와 같다
728x90
반응형
'언리얼 엔진 - 게임 프로젝트 > AWS GameLift를 활용한 데디케이트 FPS 프로젝트' 카테고리의 다른 글
| Game Sessions - 5) UI를 통한 GameSession 생성 (0) | 2026.05.22 |
|---|---|
| Game Sessions - 4) GameSession 생성 (0) | 2026.05.22 |
| Game Sessions - 2) 포탈 UI의 구조 설계 (0) | 2026.05.21 |
| Game Sessions - 1) GameSession 탐색 및 생성 (0) | 2026.05.21 |
| API Gateway - 최종) 구조 개선 (0) | 2026.05.17 |