블로그 썸네일

외부 API와 연동하다보면 사용 요청을 하면 API Key를 발급해주는 시스템이 상당히 많습니다. 예를 들어 아래 스크린샷은 accuweather에서 날씨 정보 연동을 요청한 결과 발급 받은 API Key이고 이 값을 HTTP 리퀘스트 헤더에 x-api-key로 넣으라는 경우입니다. 

accuweather에서 발급한 API Key

간혹 이것이 인증 정보를 착각하는 분들이 많이 계신 것 같은데요, x-api-key의 용도는 인증보다는 Throttling 목적으로 생성되는 것이 일반적입니다. AccuWeather API의 경우 하루 최대 50번의 API 리퀘트를 허용하는데요, 만약 이 limit를 오버하면 정상적인 값을 받을 수 없습니다. x-api-key 값을 헤더에 보내지 않거나 존재하지 않는 값을 보내면, 요청한 건수를 알 수 없기 때문에 401 Unauthorized 에러를 리턴하는 것이고요.

x-api-key throttling을 위한 대표 라이브러리로는 Java의 Bucket4j가 있고, AWS의 경우에는 API Gateway에서 API Key를 생성한 후 Usage Plan을 할당할 수 있습니다.

AWS API Gateway

API를 하나 선택하면 API Keys에서 생성된 API 키들도 볼 수 있고, 새로은 API 키도 생성할 수 있습니다. 그 후 Usage Plan에서 아래와 같은 Limit들을 할당해 줄 수 있습니다.

AWS Usage Plan

이 경우는 초당 1000 리퀘스트까지 가능하고 동시접속은 300, 일간 10,000 요청을 처리할 수 있도록 설정되어 있는 예 입니다.

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기