- 개요
AWS Cognito UserPools에서 제공하는 GetUser API를 사용하여
로그인한 사용자가 자신의 프로필 정보와 속성을 조회할 수 있도록 설정한다
조회한 정보중에서 사용자명과 이메일 주소를 가져오고 이를 위젯 블루프린트에서 사용하도록 설계한다
- AWS 콘솔 작업
1) CognitoSignIn 람다 함수에 적용할 정책 생성 및 적용

로그인을 진행하는 CognitoSignIn 람다 함수에 적용할 정책을 생성한다
해당 정책은 로그인에서만 사용하므로 인라인 정책으로 생성한다
CognitoUserPools 서비스의 GetUser API를 사용한다

위와 같이 생성한 인라인 정책을 CognitoSignIn 람다 함수에 적용한다
2) CognitoSignIn 람다 함수 코드 수정
import { CognitoIdentityProviderClient, InitiateAuthCommand, GetUserCommand } from "@aws-sdk/client-cognito-identity-provider";
export const handler = async (event) => {
const cognitoIdentityProviderClient = new CognitoIdentityProviderClient( { region: process.env.REGION } );
const { username, password, refreshToken } = event;
if (refreshToken) {
const refreshTokensInput = {
AuthFlow: "REFRESH_TOKEN_AUTH",
ClientId: process.env.CLIENT_ID,
AuthParameters: {
REFRESH_TOKEN: refreshToken
}
};
const initiateAuthCommand = new InitiateAuthCommand(refreshTokensInput);
try {
const initiateAuthResponse = await cognitoIdentityProviderClient.send(initiateAuthCommand);
return initiateAuthResponse;
} catch(error) {
console.error(error);
return error;
}
} else {
const initiateAuthInput = {
AuthFlow: "USER_PASSWORD_AUTH",
ClientId: process.env.CLIENT_ID,
AuthParameters: {
USERNAME: username,
PASSWORD: password
}
};
const initiateAuthCommand = new InitiateAuthCommand(initiateAuthInput);
try {
const initiateAuthResponse = await cognitoIdentityProviderClient.send(initiateAuthCommand);
const getUserInput = {
AccessToken: initiateAuthResponse.AuthenticationResult.AccessToken
};
const getUserCommand = new GetUserCommand(getUserInput);
const getUserResponse = await cognitoIdentityProviderClient.send(getUserCommand);
let emailAttribute;
for(const attribute of getUserResponse.UserAttributes){
if(attribute.Name === "email") {
emailAttribute = attribute.Value;
break;
}
}
const response = {
...initiateAuthResponse,
email: emailAttribute
};
return response;
} catch(error) {
return error;
}
}
};
기존의 CognitoSignIn 람다 함수의 코드를 위와 같이 수정한다
- 로그인 성공 후에 GetUserCommand 명령어를 사용하여 사용자 상세 정보를 조회
- 조회된 사용자 속성 배열을 순회하면서 이메일 주소를 찾아 저장
- 인증 결과만 반환하던 기존의 코드와 다르게 새로운 오브젝트를 생성하여 인증 결과 + 이메일 주소를 반환
- 스크립트 작업
1) HTTPRequestTypes 클래스


서버에서 반환된 인증 처리 결과를 저장하는 DSInitiateAuthResponse 구조체에
이메일 주소 멤버변수를 추가하여 이메일 주소를 저장한다
또, Dump 함수에서 이메일 주소와 관련된 로그를 남기도록 수정한다
2) DSLocalPlayerSubsystem 클래스

DSLocalPlayerSubsystem 클래스에 멤버변수를 추가하여
서버에서 반환된 인증처리 결과를 바탕으로 유저 이름과 이메일 주소를 저장한다
3) PortalManager 클래스

서버에서 반환된 로그인 수행 결과를 처리하는 SignIn_Response 함수에 위의 로직을 추가한다
로그인 수행 결과를 바탕으로 DSLocalPlayerSubsystem에 추가한 사용자 이름과 이메일 주소를 저장한다
4) AccountDropdown 클래스

기존의 드롭다운 UI 클래스를 확장한 AccountDropdown 클래스를 추가한다
사용중인 드롭다운 위젯 블루프린트의 부모 클래스를 해당 클래스로 변경한다

필요한 데이터를 연동하는 NativeConstruct 함수를 위와 같이 구성하여
DSLocalPlayerSubsystem에서 저장한 사용자명을 사용하여 버튼의 텍스트를 설정한다

GetLocalPlayerSubsystem 함수를 구현하여 DSLocalPlayerSubsystem을 반환한다
5) AccountDropdown_Expanded 클래스

TextBlock_Email 멤버변수를 추가하여 로그인한 사용자의 이메일 주소를 표현한다


GetLocalPlayerSubsystem 함수를 구현하여 DSLocalPlayerSubsystem을 반환한다

NativeConstruct 함수에 로직을 추가하여
DSLocalPlayerSubsystem에 저장된 이메일 주소를 텍스트 블록 UI에 적용한다

SignOutButton_OnClicked 함수에서 GetLocalPlayerSubsystem 함수를 사용하도록 수정한다
- 블루프린트 작업
1) WBP_Dropdown 위젯 블루프린트

드롭다운 위젯 블루프린트의 부모 클래스를 변경한다
2) WBP_Expanded 위젯 블루프린트

로그인한 사용자의 이메일 주소를 보여줄 텍스트 블록 위젯을 추가한다
- 최종 실행 결과


'언리얼 엔진 - 게임 프로젝트 > AWS GameLift를 활용한 데디케이트 FPS 프로젝트' 카테고리의 다른 글
| Access Tokens - 12) PreToken 람다 트리거 생성 (0) | 2026.06.25 |
|---|---|
| Access Tokens - 11) 리소스 서버 설정 (0) | 2026.06.21 |
| Access Tokens - 9) 확장된 드롭다운 메뉴 UI 기능 추가 (0) | 2026.06.20 |
| Access Tokens - 8) 로그아웃 람다 함수 요청과 처리 설계 (0) | 2026.06.19 |
| Access Tokens - 7) 로그아웃 람다 생성 (0) | 2026.06.19 |