Amazon Web Services 한국 블로그

API Gateway 업데이트 – 간편한 API 개발을 위한 신규 통합 기능

Amazon API Gateway는 손쉽게 확장성 높은 애플리케이션 백엔드를 만들고 실행할 수 있을 뿐만 아니라 사용량 제어 등의 기능을 통해 API 서비스를 서드파티 개발자에게 제공함으로서 생태계를 만들 수 있습니다. 본 서비스에 이용되는 몇 가지 용어에 대해 한번 살펴 보겠습니다.

  • 엔드포인트(Endpoint)API Gateway에서 접근하기 위한 URL 주소로서, GET, PUT 및 POST 같은 HTTP 호출을 할 수 있습니다.
  • 리소스(Resource) – 엔드포인트 내에서 상징적으로 존재하는 각 이름 항목으로 계층 구조로 표시됩니다.
  • 동작(Behavior) – 애플리케이션 코드가 HTTP 응답을 받기 위해 엔드포인트와 리소스로 보내는 HTTP 메소드 같은 행동
  • 통합(Integration)API Gateway에 엔드포인트, 리소스, 및 HTTP 메소드를 연결

오늘 이러한 통합 모델(Intergration Model)에 새로운 기능 몇 가지를 추가하여, 기존 애플리케이션을 새로운 API 엔트포인트로 이전할 때 도움을 줄 수 있게 되었습니다.

  • 경로 변수 처리(Catch-all Path Variables) – 일반 경로 내에 들어 있는 모든 경로와 동작을 각각 제어 하는 대신, 전체 요청을 가로채서 하나의 함수에서 처리할 수 있습니다. 예를 들어, 단일 경로 정의 (/store/{proxy+})를 통해 /store/list-products, /store/add-product/store/delete-product 경로 모두를 하나의 함수에서 제어 가능합니다.
  • 통합 메소드 처리(ANY Method) – 개별 HTTP 메소드(GET, POST, PUT 등)를 개별 동작으로 처리하는 대신, ANY 메소드를 설정하면, 모든 요청 내 동작을 처리할 수 있습니다.
  • 람다 함수 통합(Lambda Function Integration) – 신규 기본 맵핑 템플릿을 통해서 전체 요청을 람다함수로 보내고 HTTP 응답으로 보낼 수 있습니다.
  • HTTP 엔드포인트 통합(HTTP Endpoint Integration) – 신규 기본 템플릿을 통해서 모든 요청을 HTTP 엔드포인트로 보내고 변경 없이 응답을 반환할 수 있습니다. 이를 통해 아주 간단하게 HTTP 프록시로서 사용 가능합니다.

하나 하나 자세하게 알아보도록 하겠습니다.

경로 변수 처리
전자 상거래 API를 만든다고 가정할 경우, 아래와 같이 만들 수 있을 것입니다.

이제 /store 리소스를 만듭니다.

이제 경로 변수 처리 기능을 활용하여 /store로 들어오는 모든 요청을 처리할 수 있습니다. ( Configure as proxy resource를 체크합니다.)

{proxy+}는 모든 서브 리소스에 대해 실제 리소스로만 보내기 때문에, 리소스 경로의 마지막 요소로만 사용해야 합니다. 또한, /store/us/clothing, /store/us/clothing/children 등그 이하의 모든 경로에 대해서 처리하게 됩니다. 이를 통해 프록시 기능 처럼 람다함수나 HTTP 엔드포인트로 연결할 수 있습니다.

통합 메소드 처리
리소스에서 메소드를 선택할 때, 각 HTTP 메소드를 개별 동작으로 지정하지 않아도 됩니다.

대신 ANY 항목을 선택하면, 리소스 내 모든 메소드에 대해 똑같은 통합 동작을 제공할 수 있습니다.

더 깔끔하고 간편하고 쉽게 설정할 수 있을 뿐 아니라 전체를 처리하는 코드에서 각각 메소드 네임을 검사해서 적당한 응답을 줄 수 있습니다. 위와 같이 경로 변수를 만들 때 ANY 메소드가 자동으로 만들어 집니다. 개별 리소스에도 적용할 수 있을 뿐 아니라 (DELETE를 다르게 처리하고자 할 때) 설정에서 쉽게 재정의도 가능합니다.

람다 함수 통합
람다 함수를 사용하는 부분에서도 개선이 이루어졌습니다. 새로운 람다 함수 통합 템플릿을 통해 자동으로 HTTP 요청 내용- 헤더, 쿼리 파라미터, 요청 내용(payload) 등을 함수에서 사용할 수 있도록 할 수 있습니다. 템플릿에서 람다 함수의 반환 값으로 제공되어 상태 코드, 헤드 및 요청 내용을 객체로 변환해서 HTTP 응답을 구조적으로 제공 가능합니다.

아래에 기술 문서(Lambda Function for Proxy Integration)에서 가져온 간단한 샘플 함수 코드가 있습니다.

이와 같이 /store를 연결하였습니다.

이제 코드를 배포하고 간단하게 테스트를 해 봅니다.

함수가 실행되었고, 콘솔에서 응답 내용, 헤더 및 로그가 표시되었습니다. 이 부분이 첫번째 부분입니다.

이제 람다 콘솔에서 함수 실행 결과를 CloudWatch 로그를 통해 살펴 보겠습니다.

열 번째 행에서 노란색으로 표시한 함수 실행 메시지가 만들어 진 것을 볼 수 있습니다.

요약하면, 여러분의 API 리소스에서 별도의 설정 및 맵핑 시간을 들일 필요 없이 HTTP 요청에 대해 응답하는 람다 함수를 만들어 처리할 수 있게 됩니다. 즉, 람다 콘솔에서 이를 추가하는 것도 쉽고 새로운 람다 함수를 만들 때 API 게이트웨이 엔드포인트를 설정할 수도 있습니다.

HTTP 함수 통합
기존 데이터 센터나 Amazon EC2 인스턴스 내에 실행되는 HTTP 엔드포인트로도 API 요청을 보낼 수 있습니다. 특히, 별도 설정 없이도 integration typeHTTP를 선택하고, Use HTTP Proxy integration를 선택하여 엔드포인트 이름을 넣으면 됩니다.

HTTP 메소드에 ANY를 선택하면 모든 요청에 대해 바로 지정한 곳으로 호출을 재전송 할 수 있습니다.

정식 출시
본 기능은 추가 비용 없이 API Gateway를 제공하는 모든 리전에서 바로 사용 가능합니다.

Jeff;

이 글은 API Gateway Update – New Features Simplify API Development의 한국어 번역입니다.