본문 바로가기
Amazon Web Service

[AWS] AWS실습👉 API Gateway 개념과 특징 그리고 API Gateway 생성 S3연동 PUT매서드 실 그리고 파일 업로드 실습, 웹사이트에서 API Gateway-S3연동 실습 후 파일업로드 해보기(Postman 활용)

by 클수저 2024. 1. 23.
728x90
반응형

What is API Gateway?


Amazon API Gateway
규모에 상관없이 API 생성, 유지 관리, 모니터링과 보호를 할 수 있게 해주는 서비스이다.
단순하게 본다면 API관련 서비스이다. 
많은 API들의 대문(게이트웨이)과 같은 역할을 한다고 보면 된다.

즉, API가 지나가는 통로인 셈이다.


API Gateway를 이용하면 통합적으로 엔드포인트와 REST API를 관리가 가능하다.

  • 백엔드 HTTP 엔드포인트, AWS Lambda 함수 또는 기타 AWS 서비스를 노출하기 위한 RESTful 애플리케이션 프로그래밍 인터페이스(API)의 생성, 배포 및 관리.
  • AWS Lambda 함수 또는 기타 AWS 서비스를 노출하기 위한 WebSocket API의 생성, 배포 및 관리.
  • 프런트 엔드 HTTP 및 WebSocket 엔드포인트를 통해 노출된 API 메서드 호출.

API Gateway 개념 및 특징

API Gateway는 API에 대한 모든 서비스를 제공해준다.


API Gateway종류

  • HTTP API : 단조로운 방식, 기능도 많이 없고 단순히 Proxy용도로 사용한다. 기능이 단순한 만큼 가격이 저렴하다.
  • REST API : REST가 제약사항이 있다. 기능적으로 세부적인 기능을 제공.
  • WebSocket APT : 실시간 채팅 서비스 같이 실시간 애플리케이션에서 많이 사용.

API Gateway 특징

 


API Gateway 실습하기(S3와 연동까지!)

EC2 서버 생성

실습을 위한 EC2 서버 생성

EC2 서버 접속

sudo su 루트권한 변경

yum -y install httpd아파치 데몬 설치

아파치 데몬 실행

touch /var/www/html/index.html

touch 명령어를 통한 index.html 파일 생성


API Gateway 서비스 시작 화면

 

REST API 설정 화면

 

생성 후 화면

 

 

API를 활용하기 위한 리소스 경로를 생성한다.

S3와 연동하기 때문에, S3의 폴더를 리소스로 한다.

{folder} 로 작성!

 

리소스 생성완료

 

S3의 경우 정적데이터 즉, Object를 데이터로 받기 때문에 두번째 경로는 object로 작성한다.

여기서 중요한 점!

 

S3 폴더 안에 있는 데이터를 받아오는 것이기 때문에 리소스 경로/{folder}/ 로 작성!

리소스 이름은 {object}로 작성!

 

최종적인 API 큰 틀 완성!


생성한 API리소스에서 매서드를 등록한다.

이번에 실습하는 매서드는 PUT이다.

 

매서드 생성을 누르면 위와 같은 화면이 뜬다.

매서드를 선택하고, AWS서비스와 연동하는 것이라면 AWS서비스를 클릭한다. 나는 S3와 연동할 예정이다.

리전,서비스,매서드를 선택한다.

 

S3와 연동했기 때문에 연동했을 서비스는 역할이 중요하다.

IAM 역할에서 AWS서비스와 연동해주는게 중요하다!

새로운 역할을 생성한다.

역시 AWS서비스와 연동하기 때문에 AWS서비스 선택 -> S3 선택

권한 추가 화면

S3 권한에서 어떤 정책을 부여할지 선택한다.

S3 정책을 추가

AmazonS3FullAccess 권한을 추가한다.

S3에 대한 모든 권한을 부여하는 것이다.

정책 설정

 

S3서비스 선택 이후 어떤 명령을 역할로 줄것인지 선택한다.

나는 PUT매서드를 할것이기 때문에 PutObject 설정!

리소스는 모두로 선택

역할을 생성하면 오른쪽 ARN 이 제일 중요하다!

해당 ARN은 API에 있는 매서드에 연동하는 것이다!


API 서비스에서 매서드를 생성한다.

매서드를 생성하면 가장 중요한 것은,

경로재정의 와 실행역할이 매우 중요하다!

경로 재정의는 맨 처음 설정한,

S3의 {bucket}/{key}로 설정한다.

실행역할은 위에서 작성한 ARN을 넣어준다.

매서드 생성 된 화면

 

PUT매서드에 대한 URL 경로를 수정해야한다.

PUT 매서드에서 통합요청 -> 편집

URL 경로 파라미터를 추가!

 

S3 경로와 연결을 해줘야하기 때문에

bucket, key 를 작성하고 매핑은 method.request.path.000 로 작성한다.
매핑은 API에서 작성한 경로를 적는다.

 

 

 

이진 미디어 유형 관리!

이 부분이 매우 중요하다. 왜냐하면 놓칠 수 있는 구간이다.

즉, API를 통해서 받아오는 데이터를 어떻게 처리할 것인가?를 설정한다.

지금은 모든것을 받아오기 때문에 */* 로 작성!

배포API 설정

Deploy API를 통해 스테이지를 설정한다.

 

최종 생성된, 해당 URL로 API통신을 한다.


Postman으로 테스트를 진행!

Postman에서 매서드를 PUT으로 설정하고 API URL을 삽입!

Params에 리소스에 있는 경로를 입력해준다.

URL에 S3 네이밍 입력

URL뒤에 통신하고자 하는 S3 Bucket 이름 추가

S3버킷에 넣을 파일이름을 추

버킷이름 뒤에 새로 올릴 파일 이름을 작성!

Body 👉 binary 👉 추가할 파일을 Local에서 선택!

 

위와 같이 S3에 파일이 업로드 된 것을 확인 할 수 있다!

 


HTML파일로 웹사이트에서 파일 업로드해서 S3에 업로드

EC2서버 접속

vi /var/www/html/index.html

 

vim 안에 위에 HTML 코드를 입력!

여기서 중요한 사항!!!

const apiUrl = {API Gateway 스테이지 주소 + S3버킷이름}

위 코드에서 코드를 수정해야한다!

이것만 주의하자!

 

EC2 퍼블릭 도메인으로 접속하면, 위와같은 화면을 볼 수 있다.

업로드 할 파일을 선택해서 올려보자!

 

위와 같이 S3에서 업로드한 파일이 올라간 것을 볼 수 있다.

 

실습 끝~~~~~~~~

728x90
반응형