Web Study/Server

AWS 를 사용한 서버리스 아키텍쳐 적용기(삽질기) (3) - API Gateway 1

지로원 2019. 5. 9. 16:52

0. API Gateway 란? 

이름에 보이는 것 처럼 API 와 관련이 있다는 것을 유추할 수 있숩니다. 

AWS에서 정의되어 있는 것을 살펴보면, 'Amazon API Gateway는 규모와 상관없이 REST 및 WebSocket API를 생성, 게시, 유지하고 모니터링 및 보안하기 위한 AWS 서비스입니다.' 라고 명시되어 있숩니다.

쉽게 말해, API를 조금 더 쉽게 작성하고 사용할 수 있게 해주는 API 호스팅 서비스라고 해보겠습니다.

API gateway architecture

위는 api gateway의 아키텍쳐 입니다.

왼쪽에서부터 enduser가 사용하는 client App, API Gateway, AWS의 각종 서비스들로 구분됩니다.

AWS 클라우드 기반 어플리케이션을 구축할 때의 편리성, 보안성 등을 쉽게 얻을 수 있습니다.

API Gateway 기능

더보기

Amazon API Gateway는 다음과 같은 기능을 제공합니다.

API Gateway 기능의 전체 목록은 문서 이력 단원을 참조하십시오.

일단 이정도에서 각설하고.... 실습을 해봅시다!

 

1. 람다에서 트리거 추가

앞에서 생성했던 람다함수에서 Designer 메뉴 좌측에 트리거 추가라고 있고 이를 통해 트리거를 간단하게 추가할 수 있습니다.

다양한 트리거를 추가할 수 있지만 API gateway 트리거를 추가해보겠습니다.

클릭하게 되면 우측과 같이 'lambdaTest' 함수 밑에 'API 게이트웨이' 라는 항목이 생깁니다.

트리거 추가

클릭하게 되면 밑의 화면과 같이 트리거 구성 설정을 할 수 있습니다.

맨 위의 설정부터 차례대로 보면, 우선 API는 기존에 생성된 API가 없으므로 새 API 생성을 그대로 두면 됩니다.

 

보안 같은 경우 'IAM','API 키 설정', '열기' 가 있는데 저는 API 키 설정을 선택하겠습니다. 

'IAM 설정'을 하실 경우 추가적으로 IAM 구성을 해줘야 합니다. '열기'의 경우 말그대로 열어놓는 것인데 내부적으로만 사용되는 것이 아닌 이상 당연히 안쓰는게 좋습니다. 왜? 그냥 열어놨다가 제한없이 사용되면 돈이 줄줄....

 

그 후 추가 세팅 탭에서 API 이름과 배포 단계 이름을 설정하면 됩니당.

전 건드릴게 없어서 그냥 다 냅뒀습니다. 나머지는 읽어보면 다 아니깐 건너뛰겠습니다.

트리거 구성 설정

구성을 완료하면 새로운 트리거가 생성된 것을 확인할 수 있습니다. 

맨 위에 저장을 눌러줘야 저장됩니다.

완료되면 아래와 같이 api 엔드포인트와 키가 발급됩니다

트리거 정보

2. REST 구성

lambdaTest-API를 클릭하면 api 세팅화면으로 들어가게 됩니다.

최초에 보이는 것은 ANY라는 메소드가 있습니다.

API gateway 설정

 

리소스에서 /lambdaTest를 클릭한 뒤 작업에서 메서드 생성을 눌러 POST 메서드를 만들어 줍니다.

lambda 함수 입력부분에는 앞에서 만든 lambdaTest 를 쓰면 됩니다.

 

POST 메서드 생성

3. lambda 함수 변형 및 테스트

아래와 같이 람다함수를 조금 수정해 주겠습니다.

람다 함수 수정

게이트웨이에서 생성한 POST 메서드를 클릭하면 클라이언트에서 테스트를 해볼 수 있습니다.

요청 본문에 아래와 같이 key값과 value 값을 설정해주고 테스트 버튼을 돌린 결과,

우측에 상태 200으로 성공한 것을 확인할 수 있습니다. response 전체가 리턴되기 때문에 응답 본문에 response가 리턴된 것을 확인할 수 있습니다. 

 

4. 배포

본격적으로 사용하기 위해 배포를 해주겠습니다.

배포에 앞서 아무나 접근해서 api콜을 마구잡이로 날리면 안되기 때문에 설정을 변경해줘야 합니다.

메서드 요청을 클릭한 뒤 보이는 설정에서 'API 키가 필요함' 을 false에서 true 로 변경해줍니다.

그 후 작업 메뉴에서 API 배포를 클릭합니다.

설정 변경
API 키 설정 변경 뒤 배포

배포를 클릭하면 아래와 같이 확인 창이 하나 뜨게 되는데 배포 스테이지를 설정할 수 있습니다.

배포 버전을 관리할 때 변경해서 사용하면 됩니다. 여기선 default 그대로 배포하겠습니다.

API 배포

기존에 post 요청을 보냈을 때와 배포를 완료한 후 post 요청을 보냈을 경우에 다른 응답이 오게 됩니다.

'Forbidden' 이라는 응답이 오는 것을 확인할 수 있습니다.

기존
설정 변경 후

 

5. 최종 수정 후 테스트

그 후 사용량 계획에 API키 탭에서 API 키를 추가하면 됩니다.

배포 스테이지까지 연결되면 끝!

사용량계획 메뉴

모든 설정을 끝내준 뒤에 Header에 x-api-key라는 이름에 API 키 값을 넣어서 요청하면 

정상적으로 작동하는 것을 확인할 수 있다.

x-api-key 추가

이 API key는 헤더에 넣고 요청하면 노출되기 때문에 숨기는 것이 좋습니다.

API gateway에서 권한 부여자를 만들어서 이 부분을 제어할 수 있습니다.

cognito 또는 lambda를 통해 제어할 수 있다고 나와있는데 

이 부분은 다음에 알아보도록 하겠슴다.