- 개요
AWS Cognito의 사용자 풀에서 제공하는 Amazon Cognito Identity Provider API를 사용하여
회원가입에 사용하는 이메일 주소가 중복으로 사용되는 것을 방지한다
- 절차
1) 람다 함수 선언 + Lambda 트리거와 연결

위와 같이 이름을 구성하여 Lambda 함수를 생성한다

AWS 콘솔에서 위와 같이 Lambda 트리거를 생성할 수 있다
Lambda 트리거는 사용자 가입, 로그인, 토큰 발급 등의 인증 작업이 발생할 때,
개발자가 작성한 AWS Lambda 코드를 실행할 수 있게 해주는 기능이다

해당 Lambda 트리거는 회원가입을 하는 경우 이메일이 중복으로 사용되었는지 체크한다
따라서 위와 같이 트리거 유형을 가입으로, 가입을 사전 가입 트리거로 설정한다
이후 연동할 Lambda 함수를 위에서 선언한 Lambda 함수로 연결한다
2) 정책 생성 및 람다 함수에 적용

선언한 람다에 적용할 정책을 설정한다
가입된 사용자를 조회해야 하므로 Cognito User Pools 서비스의 ListUsers 작업을 사용한다
또, 리소스 ARN을 사용중인 사용자 풀의 ARN으로 설정하여 해당 풀을 대상으로 작업을 수행하도록 정책을 설정한다

생성한 정책의 이름을 위와 같이 설정한다

1)에서 생성한 람다 함수에 위와 같이 정책을 연결한다
3) 람다 함수 정의

1)에서 생성한 람다 함수의 내부에서 사용할 환경 변수를 생성한다
환경 변수를 사용하여 리전을 지정한다
import { CognitoIdentityProviderClient, ListUsersCommand } from "@aws-sdk/client-cognito-identity-provider";
export const handler = async (event) => {
const email = event.request.userAttributes.email;
const cognitoIdentityProviderClient = new CognitoIdentityProviderClient( { region: process.env.REGION } );
const listUsersInput = {
UserPoolId: event.userPoolId,
Filter: `email = "${email}"`
};
const listUsersCommand = new ListUsersCommand(listUsersInput);
try {
const listUsersResponse = await cognitoIdentityProviderClient.send(listUsersCommand);
if (listUsersResponse.Users.length > 0) {
throw new Error("A user with this email aleady exists.");
}
return event;
} catch(error) {
console.error(error);
throw new Error(error.message);
}
};
람다 함수의 코드를 위와 같이 구성하였다
- email 변수를 사용하여 사용자가 입력한 이메일 주소를 저장
- Cognito 서비스와 통신할 클라이언트 객체를 생성
- 필터링 조건을 설정하여 입력한 이메일이 "이미 존재하는지" 판단하며 ListUsersCommand 커맨드를 수행
- 중복된 메일이 없다면 event 값을 반환
- 중복된 메일이 있다면 특정 문자열로 구성된 예외를 반환
- 다른 문제가 발생했다면 해당 예외를 반환
- 최종 실행 결과

회원가입 람다 함수의 테스트 이벤트를 위와 같이 수정하여
사용자 이름은 다르게 설정하되, 이메일 주소는 이미 존재하는 사용자와 동일하도록 수정하였다

회원가입 람다 함수의 실행 결과는 위와 같이 예외가 발생한 것을 확인할 수 있다

CloudWatch 탭에서 확인해보면
CognitoPreSignUp_UniqueEmail 람다에서 의도한 예외가 발생한 것을 확인할 수 있다
'언리얼 엔진 - 게임 프로젝트 > AWS GameLift를 활용한 데디케이트 FPS 프로젝트' 카테고리의 다른 글
| Access Tokens - 3) Token 재발급 (0) | 2026.06.14 |
|---|---|
| Access Tokens - 2) LocalPlayerSubsystem 클래스 (0) | 2026.06.14 |
| AWS Cognito - 최종) 인증 코드 예외 처리 + SignIn API 요청과 처리 (0) | 2026.06.12 |
| AWS Cognito - 13) ConfirmSignUp API 요청과 처리 (0) | 2026.06.11 |
| AWS Cognito - 12) SignUp API 요청과 처리 (0) | 2026.06.11 |