라벨이 API Gateway인 게시물 표시

[AWS] API Gateway API Key 발급 및 사용량 계획 생성하기

이미지
안녕하세요. 남산돈가스입니다.

오늘은 AWS의 API Gateway에서 연결 된 API들의 API키 발급을 통한 요청 제한, 그리고 사용량 계획을 통한 사용량 조절을 알아보겠습니다.

네이버클라우드에서 제공하는 SENS를 통해서 문자 발송서비스를 OPEN API로 요청하는 법을 지난 포스팅에서 다루어 보았습니다.

문자발송서비스를 앞으로 다양한 사용자에게 제공한다고 가정해보았을 때, 각각의 사용자들의 모두 컨트롤하기 어려운 상황에 놓이기 마련입니다.

그런 경우에 대비하여 API Gateway는 연결해놓은 API에 한하여 사용자들에게 API Key를 관리하여 요청 권한을 제공하고, 사용량 계획을 이용하여 일,월 요청 수 또는 n초 당 m개의 요청 수를 제한하는 기능을 제공하고있습니다.

이 두가지의 기능만을 이용한다면, 다양한 사용자에 대한 API 관리가 용이해질 수 있습니다.

그럼, 차근차근 하나씩 설정을 해보도록하겠습니다.

먼저 API Gateway 콘솔 화면에서 좌측 사용량 계획탭을 선택합니다.

사용량 계획에 대한 이름과 설명을 입력한 뒤, 중간의 조절 부분을 보시면 요율과 버스트를 설정할 수 있습니다. 요율을 n초당 요청 수를 설정하는 곳이고, 버스트는 해당 n초에 대해서 m번의 요청을 가능도록 하는 지 설정하는 부분입니다.

조절부분의 설정을 마치셨다면, 하단의 할당량에서 일,주,월 당 n개의 요청건수를 허용하는 양을 설정합니다.


사용량 계획 설정을 마치고 다음을 선택하면, 연결 된 API 스테이지를 설정하는 화면입니다.
앞에서 설정한 사용량 계획을 어떤 API에 적용할 지 설정하는 부분입니다.
저는 nCloud_SENS API의 dev스테이지에 사용량을 설정했습니다.



다음 화면은 사용량 계획 API 키를 발급하는 화면입니다. 'API 키 생성 후 사용량 계획에 추가' 버튼을 선택합니다.



API 키 생성 팝업에서 저는 남산돈가스(사용자)의 API 키를 발급했습니다.



다음과 같이 nd_api_key라는 API 키가 발급 되었고 해당 사용량 계획…

AWS API Gateway - HTTP 사용자 지정 통합을 사용하여 API 생성

이미지
안녕하세요. 남산돈가스입니다.

API Server를 운영하면서 백엔드에 대한 클라이언트 요청 데이터를 변환하거나 백엔드 응답 데이터를 변환하하는 경우에 AWS API Gateway에서 제공하는 HTTP 사용자 지정 통합을 사용하여 효과적으로 API 를 관리 할 수 있습니다.

또한 API를 API Gateway에 연결함으로써 해당 API에 대한 권한 및 스테이지 관리 등을 간편하게 관리할 수 있다는 점에서 API Gateway를 사용하는 이유를 설명할 수 있습니다.

예전 Lambda function을 등록하고 해당 Lambda를 API Gateway에 연결하여 API로 연동하는 포스팅에 이어 이번 포스팅에서는 HTTP 프록시를 API Gateway에 연결하는 작업을 진행해보려고 합니다.



먼저 AWS에 접속하고 새로운 API Gateway에 접속합니다.



API Gateway를 생성하면 위와 같이 /에 대한 매서드만 생성되어있는 상태를 확인하실 수 있습니다.


작업탭에서 리소스 생성 버튼을 선택합니다.



여기서 각각의 API에 대한 리소스와 매서드를 설정하려고한다면, 사용되는 path주소를 입력하여 리소스를 생성합니다.
 ( ex. pet에 대한 API를 생성하고자 한다면 /pet 와 같은 리소스를 생성하고 pet에 대한 메서드를 등록하여 사용할 수 있습니다.)

이번 포스팅에서는 해당 API URL에 대한 모든 리소스를 통합하여 관리하려고 하므로 '프록시 리소스로 구성'을 체크하고 리소스 경로에 {proxy+} 를 입력합니다.

프록시 리소스로 구성될 경우 이어서 설정할 API URL하위에 있는 리소스에 모든 경로를 해당 API 설정으로 처리함을 의미합니다. 또한 프록시 설정으로 리소스를 생성할 경우 ANY메서드로 자동 생성되는데 이 또한 리소스에 대한 'POST', 'GET', 'PUT', 'DELETE' 등 모든 메서드를 통합으로 관리한다는 것을 의미하게 됩니다.


{proxy+} 리소스를 생성…