
**ALB + Cognito + Lambda 조합으로 “로그인/로그아웃”을 처리하고,
실제 앱 서버는 프라이빗 서브넷에서만 돌리는 구조
이 계정 안에

사각형 안이 VPC.
중요한 포인트: Application instance는 Private subnet 에 있음.

유저가 HTTPS 로 접속하는 진입점.
Listener Rule 예:
path=/login → Login Lambda 로 라우팅path=/logout → Logout Lambda 로 라우팅/, /app/* 등 → Application instance 타깃 그룹으로 라우팅
ALB 에서 /login 요청이 들어오면 이 Lambda 가 호출.
역할:

ALB 에서 /logout 요청이 오면 호출.
역할(그림에 텍스트로 있음):

유저 풀/도메인을 가진 ID 공급자(IdP) 역할.
Login Lambda 가 여기에 리다이렉트해서
또한, “Access protected resources” 화살표:

실제 비즈니스 로직이 도는 서버:
ALB 에서 온 요청만 받음.
유저가 인증된 상태인지, 토큰/쿠키를 보고 권한 체크.
User → 브라우저에서 https://my-alb.example.com 접속.
ALB:
/login 으로 리다이렉트.ALB (path=/login) → Login Lambda 호출.
Login Lambda:
/authorize 로 리다이렉트 응답을 돌려줌.브라우저가 Cognito 로그인 화면으로 이동 → 유저가 로그인.
Cognito가 인증 성공 후, 설정된 redirect URI(다시 Login Lambda)로 auth code 전달.
Login Lambda 가 code 를 받아 Cognito 토큰으로 교환하고,
/ 같은 URL 로 리다이렉트 응답.이후 요청부터는 ALB 가 Any other path value for homepage 룰에 따라
Application instance 로 바로 보내고,
앱은 세션/토큰을 보고 인증된 사용자로 처리.
User 가 /, /dashboard 등으로 요청.
ALB 룰: Any other path value for homepage
→ 그대로 Application instance 타깃 그룹으로 라우팅.
Application instance:
User 가 “로그아웃” 버튼 클릭 → /logout 으로 요청.
ALB Path=/logout 룰 → Logout Lambda 호출.
Logout Lambda:
/logout 엔드포인트 호출해서 Cognito 세션 제거Lambda 가 적절한 페이지(예: 로그인 페이지, 메인 랜딩 페이지)로 리다이렉트 응답.
이후 유저가 다시 접근하면 → 다시 /login 으로 유도.
프론트 도어는 ALB 하나
애플리케이션 서버는 Private subnet
인증/세션 관리는 Cognito + Lambda 로 분리
필요하면 Login Lambda 에서