AWS API Gateway

흑이·2023년 1월 27일
1

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 생성

  • REST API 선택

  • 엔드포인트 유형
    • 프라이빗(VPC내에 구축할떄 사용)
    • 최적화된 에지(요청하는 고객의 위치에 가까운 엣지 로케이션에서 처리)
    • 지역 ( 설정된 지역내에서만 사용 ex.서울)

  • 작업 -> 리소스 생성
  • 리소스는 API의 머리에 해당, 머리를 만들고 머리안에서 다양한 메소드를 만들어야 함
  • 메소드(POST, GET, 등)

  • POST 설정

  • 사용자가 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!"}

  • 수정 및 Deploy

  • 요청 본문은 동일하게 하여 테스트 진행, 결과 확인

5. DynamoDB 확인

  • API Gateway -> Lambda -> DynamoDB로 데이터 삽입 내역 확인


https://www.inflearn.com/course/aws-%EC%9E%85%EB%AC%B8/dashboard

1개의 댓글

comment-user-thumbnail
2023년 1월 27일

깔끔하게 정리하셨네요 좋은 글 감사합니다.

답글 달기