API Gateway
- 대부분의 어플리케이션은 RESTful API 기반으로 운용됨
- 매우 힘든 RESTful API 관리
- Authentication & Authorization (인증 받은 사람만 보이는)
- API 요청을 모니터링 해야함
- 더나은 성능을 위해 API요청 캐시 시스템 필요
API Gateway란?
- 뛰어난 확장성 제공 및 API를 만들고 운영하고 모니터링 가능 (CloudWatch)
- Back-end 서비스 (웹 어플리케이션, EC2)에 들어있는 데이터 접근 허용
- Pay As You Go (API 사용할떄, API요청이 얼마나 오래 걸리는지, 얼마나 많은 데이터를 처리하는지에 따라 비용을 책정)
- 인증 인가 서비스
- 라우팅과 로드밸런싱
- 서비스 디스커버리(원하는 서비스의 IP, 포트 주소를 찾아주는 역할)
API Gateway 실습
- API Gateway 에서 요청을 받아 Lambda -> 데이터를 DynamoDB에 삽입
1. DynamoDB 생성
2. Lambda 함수 생성
- 기존에 만들어 놓은 역할 선택(Dynamodb 데이터 추가, Lambda 기본 권한)
- event는 딕셔너리 형태의 데이터를 받음 -> String 형태로 변환
3. API Gateway 생성
- 엔드포인트 유형
- 프라이빗(VPC내에 구축할떄 사용)
- 최적화된 에지(요청하는 고객의 위치에 가까운 엣지 로케이션에서 처리)
- 지역 ( 설정된 지역내에서만 사용 ex.서울)
- 작업 -> 리소스 생성
- 리소스는 API의 머리에 해당, 머리를 만들고 머리안에서 다양한 메소드를 만들어야 함
- 메소드(POST, GET, 등)
- 사용자가 POST 요청시 Lambda함수를 호출할 것을 허용한다는 의미
- 클라이언트가 요청(POST)를 받는다면 LAMBDA 함수 addCustomer를 호출하겠다는 전체적인 화면 구성이 나온다.
- 제일 왼쪽의 테스트 클릭하게 되면 API 콜을 테스트할 수 있다.
- JSON 형식으로
- 정상 로그 확인, 결과값 확인
- Lambda 함수에서 return(str(event))로 작성했기 때문에 응답값을 확인할 수 있다.
4. Lambda 함수 코드 수정
import boto3
resource = boto3.resource('dynamodb') //dynamodb를 리소스로 정의
table = resource.Table('customers') // 테이블 이름 부여
def lambda_handler(event, context):
table.put_item(Item=event) // 테이블 안의 이벤트를 받아서 데이터를 넣음
return {"code":200, "message": "Data Successfully Inserted!"}
- 요청 본문은 동일하게 하여 테스트 진행, 결과 확인
5. DynamoDB 확인
- API Gateway -> Lambda -> DynamoDB로 데이터 삽입 내역 확인
https://www.inflearn.com/course/aws-%EC%9E%85%EB%AC%B8/dashboard
깔끔하게 정리하셨네요 좋은 글 감사합니다.