[AWS]API Gateway (중간에 알아서 처리해주는 착하지만 어려운 녀석 API)

차보경·2022년 11월 7일
1

AWS

목록 보기
9/13
post-thumbnail

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 테이블의 데이터를 관리함(생성, 제거, 등등)
  1. DynamoDB생성하기, API 생성하기
  • DynamoDB는 간단히 만들어주고 API는 지역으로 설정하여 만들어준다.
  1. 리소스 생성!
  • 리소스 : API의 머리같은거. 이 아래에 다양한 메소드(CREATE(post), READ(get), UPDATE(put), DELETE(delete))들을 만드는 것!
  1. 메소드 생성
  • POST로 DynamoDB에 데이터 넣기
  • 람다에서 함수 생성하기(Dynamo Role이 있어야함)
  • Lambda 함수를 호출하기 위해 API Gateway 권한을 부여하려고 합니다.
    : 사용자가 POST요청을하면 람다를 실행한다는 말

그럼 이제 사용자가 POST요청을하면 람다를 실행한다는 구조가 보이죠

  • lambda에서 event가 어떻게 처리되는지 보기위해 test를 진행해봅니다.
    lambda function으로 간단하게 이벤트를 출력하는 함수를 넣고 API를 돌려봅니다.
def lambda_handler(event, context):
    return str(event) # Event는 JSON형태라 str로 변경해줌


그럼 이렇게 상태 200(좋다는거거든요~) 이 뜨고 요청본문으로 적은게 이벤트로 출력된 것을 볼 수 있다.
파라미터 이벤트를 활용해서 람다에서 API요청을 처리할 수 있다는거!

이제 람다함수를 고쳐보자! 해당 put_item을 가진 코드를 넣어본다

def lambda_handler(event, context):
    table.put_item(Item=event)



그럼 알람도 잘띄워지고 DynamoDB에 데이터가 들어간 것도 확인할 수 있다! 와우

데이터를 넣을 때 중복값이 있으면 알람처리하기, 빠진 값이 있으면 넣지 않게 하기 등등 가능할 거 같음 와우

profile
차보의 Data Engineer 도전기♥ (근데 기록을 곁들인)

0개의 댓글