API Gateway를 배우기 전에~~~
API란?
Application Programming Interface
- 응용 프로그램 프로그래밍 인터페이스
클라이언트, 서버와 같은 서로다른 프로그램들이 서로 요청과 응답을 주고 받을 수 있게 만든 체계. 이를 통해 어떤게 요청인지 구분하고 그에 맞는 응답을 주도록 만듦
- 다양한 request를 API가 중간에 받아서 (고객이 ~~이런 요청이 있구나 하고) 요청한 페이지를 보여주는 것
- 중간에서 요청을 받고 받은 요청을 해결해주는 고!
- 전에 읽었던 책이 도움이 된다
RESTful API?
- API 종류들 중 하나 (가장 흔히 사용되는 것)
- REpresentational State Transfer
(상태의 변화를 주기위해 정보를 서버와 클라이언트사이에 주고받기 위해 사용됨)
- CREATE(post), READ(get), UPDATE(put), DELETE(delete)
- JSON형태로 요청을 받고 해결함 (주고 받는 형태가 모두 JSON)
- ex)
{ “customer_id”: “simon_05”, “category”: “car”}
API Gateway
- 대부분의 어플리케이션은 RESTful API 기반으로 운용됨
- 매우 힘든 RESTful API 관리
- Authentication & Authorization (모든 사람들의 API요청을 허용하면 안됨_회원용/VIP용 게시판 같은거)
- API 요청을 모니터링 해야함
- 더나은 성능을 위해 API요청 캐시 시스템 필요
API Gateway란?
- 뛰어난 확장성 제공 및 API를 만들고 운영하고 모니터링(cloudwatch통해서) 가능
- Back-end 서비스(웹 어플리케이션, EC2)에 들어있는 데이터 접근 허용
- Pay As You Go(계속비용X. API사용할 때, 요청시 드는 메모리 등에 따라서 비용 계산)
실습
DynamoDB, Lambda, API Gateway 사용해보자
- API는 PUT,GET등의 요청을 받으면, Lambda로 전달. 사용자의 요청에 따라 Lambda에서 DynamoDB 테이블의 데이터를 관리함(생성, 제거, 등등)
- DynamoDB생성하기, API 생성하기
- DynamoDB는 간단히 만들어주고 API는 지역으로 설정하여 만들어준다.
- 리소스 생성!
- 리소스 : API의 머리같은거. 이 아래에 다양한 메소드(CREATE(post), READ(get), UPDATE(put), DELETE(delete))들을 만드는 것!
- 메소드 생성
- POST로 DynamoDB에 데이터 넣기
- 람다에서 함수 생성하기(Dynamo Role이 있어야함)
- Lambda 함수를 호출하기 위해 API Gateway 권한을 부여하려고 합니다.
: 사용자가 POST요청을하면 람다를 실행한다는 말
그럼 이제 사용자가 POST요청을하면 람다를 실행한다는 구조가 보이죠
- lambda에서 event가 어떻게 처리되는지 보기위해 test를 진행해봅니다.
lambda function으로 간단하게 이벤트를 출력하는 함수를 넣고 API를 돌려봅니다.
def lambda_handler(event, context):
return str(event)
그럼 이렇게 상태 200(좋다는거거든요~) 이 뜨고 요청본문으로 적은게 이벤트로 출력된 것을 볼 수 있다.
파라미터 이벤트를 활용해서 람다에서 API요청을 처리할 수 있다는거!
이제 람다함수를 고쳐보자! 해당 put_item을 가진 코드를 넣어본다
def lambda_handler(event, context):
table.put_item(Item=event)
그럼 알람도 잘띄워지고 DynamoDB에 데이터가 들어간 것도 확인할 수 있다! 와우
데이터를 넣을 때 중복값이 있으면 알람처리하기, 빠진 값이 있으면 넣지 않게 하기 등등 가능할 거 같음 와우