헷갈리는 개념 정리
API Gateway, Cognito, Lambda, Trigger, 그리고 이들이 어떻게 연결되는지
🧭 전체 그림
[사용자 브라우저]
↓ 요청
[API Gateway] ← 인증: Cognito User Pool Authorizer or Lambda Authorizer
↓ 인증 통과 시
[AWS Lambda 함수 실행]
↓ 필요 시
[DB, 외부 API 등과 연결]
🔹 1. API Gateway – "사용자 요청을 받아주는 관문"
✔️ 개념:
- AWS에서 제공하는 HTTP 요청을 받아주는 서비스
- 사용자가 브라우저나 클라이언트 앱에서 보내는 요청을 받아서, 뒤에 있는 Lambda, EC2 등으로 전달함
✔️ 왜 중요할까?
- URL 경로(
/projects, /users, 등)마다 다른 Lambda를 연결할 수 있고
- 권한 제어, 요청 유효성 검사, 트래픽 관리 등도 여기서 설정할 수 있음
✔️ 예시:
사용자가 /projects에 POST 요청을 보내면, API Gateway가 이를 받아서 createProjectLambda 함수로 전달해줌
🔹 2. Cognito – "로그인/사용자 인증 서비스"
✔️ 개념:
- AWS의 사용자 인증(User Pool) 및 권한 관리(User Group) 서비스
- 로그인 기능, 사용자 등록, 패스워드 관리 등을 직접 구현하지 않고 Cognito로 위임할 수 있음
✔️ 왜 중요할까?
- 로그인한 사용자인지 판별하거나
- 사용자의 그룹(ex:
guest, user, paid, admin)에 따라 기능 제한할 수 있음
✔️ 관련 Authorizer:
- Cognito User Pool Authorizer: 로그인만 확인 (유효한 토큰인지?)
- Lambda Authorizer: 토큰 분석해서 그룹별로 경로 제한 가능 (좀 더 유연하고 세밀한 제어)
🔹 3. Lambda – "실제로 로직을 실행하는 함수"
✔️ 개념:
- 이벤트 기반 서버리스 함수
- API Gateway, S3, DynamoDB, CloudWatch 등 여러 곳에서 호출될 수 있음
✔️ 왜 중요할까?
- API 요청을 받아서 실제로 데이터베이스에 값을 저장하거나, 로직을 수행하는 역할
- 서버를 직접 띄우지 않고도 작은 유닛 단위로 코드 실행 가능
✔️ 예시:
createProjectLambda() 함수에서 /projects POST 요청을 처리해 새로운 프로젝트 생성 로직 실행
🔹 4. Trigger – "Lambda를 실행시키는 조건 또는 연결"
✔️ 개념:
- Lambda 함수는 스스로 실행되지 않음
- API Gateway, S3 업로드, DynamoDB 업데이트, EventBridge 등 다양한 이벤트를 "트리거"로 등록해서 실행
✔️ 왜 중요할까?
- "언제 이 Lambda가 실행돼야 하나?"를 정의하는 핵심 요소
- 콘솔에서 Lambda에 들어가면 "트리거" 탭에서 어떤 서비스가 연결돼 있는지 확인 가능
🧩 이들 사이의 관계 – 실무 흐름 예시
예시 시나리오: 유료 사용자만 프로젝트를 만들 수 있는 시스템
- 사용자는 클라이언트 앱에서
/projects 경로에 POST 요청
- API Gateway가 요청을 받고, Cognito User Pool Authorizer를 통해 로그인된 사용자인지 확인
- 요청이 통과되면 →
createProjectLambda() 함수 실행
- Lambda 함수 내부에서
user.group == "paid"인지 확인하여 유료 사용자만 처리
- 조건 충족 시, DB에 프로젝트 생성
🔄 복습
-
Lambda Authorizer가 연결돼 있는지 확인 방법
→ API Gateway 콘솔에서 메서드
→ 요청 인증 방식 확인
→ Lambda Authorizer가 없고, Cognito만 사용 중이라서 람다에서 권한 체크 필요
-
Trigger란?
→ Lambda를 실행시키는 이벤트 (API Gateway도 trigger 중 하나)
✅ 정리 요약
| 구성 요소 | 역할 | 예 |
|---|
| API Gateway | 요청 받기 | /projects 호출 |
| Cognito | 로그인/사용자 인증 | user@domain.com, 그룹: paid |
| Lambda | 실제 로직 실행 | 프로젝트 생성 함수 |
| Trigger | Lambda 실행 조건 | API Gateway 요청, S3 업로드 등 |