본문 바로가기

Cloud/AWS

[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 키가 발급 되었고 해당 사용량 계획에 연결 된 것을 확인하실 수 있습니다.



마지막으로, 한가지 더 설정해줘야하는 부분은 실제 제한할 API에 API 키 필요함 옵션을 반드시 true로 설정해야 API Key 제한이 적용되므로, 이 부분을 항상 체크해야합니다.



여기까지 설정되었다면, nCloud_SENS API에 대한 사용량 계획 설정이 완료 되었습니다. 이제 실제로 발급한 API Key가 적용되었는지, 사용량 계획이 정상적으로 제한되는 지 확인해봐야합니다.



실제 테스트를 위해서, 우선 발급받은 API Key를 확인하고 복사해둡니다.



포스트맨에서 해당 API의 배포 스테이지 URL과 기본 요청헤더, 파라미터를 설정한 뒤 Send를 날려보면, 401 Forbidden 에러가 발생되며 API가 Send되지 않습니다. 이유는 헤더에 발급받은 API Key정보를 설정하지 않았기 때문에 발생되는 에러입니다.


헤더에 X-API-Key를 설정하고 위에서 발급받은 API key를 넣고 요청을 send하면 메시지가 발송되는 것을 확인하실 수 있습니다. 그리고 제가 아까 일 요청 건수를 5건으로 제한하고 다섯번 이상 API를 요청하니까 429 Too Many Request 에러가 발생하고 메시지로 Limit Exceeded라는 제한 초과 메시지를 보내게 됩니다.


여기까지해서 API Key발급을 통한 요청 권한 관리, 사용량 계획을 통한 요청 한도 관리를 설정해보았습니다.

감사합니다.