자습서: Lambda 프록시 통합을 통해 REST API 생성
Lambda 프록시 통합은 API 메서드나 전체 API를 Lambda 함수와 통합할 수 있는 유연하고 간단한 API Gateway API 통합 유형입니다. Lambda 함수는 Lambda가 지원하는 어떤 언어로도 작성할 수 있습니다. 이것은 프록시 통합이기 때문에 API를 다시 배포할 필요 없어 언제든지 Lambda 함수 구현을 변경할 수 있습니다.
이 자습서에서는 다음 작업을 수행합니다.
-
"Hello, World!" 만들기 API의 백엔드가 될 Lambda 함수를 만듭니다.
-
"Hello, World!" 만들기 및 테스트 Lambda 프록시 통합을 사용하여 API를 만들고 테스트합니다.
"Hello, World!" 만들기 Lambda 함수
“Hello, World!”를 생성하려면 Lambda 콘솔의 Lambda 함수
https://console.aws.amazon.com/lambda
에서 Lambda 콘솔에 로그인합니다. -
AWS 탐색 모음에서 AWS 리전을 선택합니다.
참고
Lambda 함수를 생성한 리전을 적어 둡니다. 이 리전은 API를 생성할 때 필요합니다.
-
탐색 창에서 함수를 선택합니다.
-
함수 생성을 선택합니다.
-
새로 작성을 선택합니다.
-
기본 정보에서 다음과 같이 합니다.
-
함수 이름에
GetStartedLambdaProxyIntegration
을 입력합니다. -
런타임에서 지원되는 최신 Node.js 또는 Python 런타임을 선택합니다.
아키텍처의 경우 기본 설정을 유지합니다.
-
권한(Permissions)에서 기본 실행 역할 변경(Change default execution role)을 확장합니다. 실행 역할 드롭다운 목록에서 AWS 정책 템플릿에서 새 역할 생성을 선택합니다.
-
역할 이름에
GetStartedLambdaBasicExecutionRole
을 입력합니다. -
[Policy templates] 필드를 비워둡니다.
-
함수 생성을 선택합니다.
-
-
다음 코드를 복사하여 인라인 코드 편집기의 함수 코드에 붙여 넣습니다.
-
[Deploy]를 선택합니다.
"Hello, World!" 만들기 API
이제 API Gateway 콘솔을 사용하여 “Hello, World!” Lambda 함수에 대한 API를 만듭니다.
“Hello, World!”를 생성하려면 API
https://console.aws.amazon.com/apigateway
에서 API Gateway 콘솔에 로그인합니다. -
API Gateway를 처음 사용하는 경우, 서비스의 기능을 소개하는 페이지가 나타납니다. REST API에서 빌드를 선택합니다. 예제 API 생성 팝업이 나타나면 확인을 선택합니다.
API Gateway를 처음 사용하는 것이 아닌 경우 API 생성을 선택합니다. REST API에서 빌드를 선택합니다.
API 이름에서
LambdaProxyAPI
을 입력합니다.(선택 사항) 설명에 설명을 입력합니다.
API 엔드포인트 유형 설정을 지역으로 유지합니다.
API 생성(Create API)을 선택합니다.
API를 생성한 후에는 리소스를 생성합니다. 일반적으로 API 리소스는 애플리케이션 로직에 따른 리소스 트리로 정리되어 있습니다. 이 예시에서는 /helloworld 리소스를 생성합니다.
리소스를 생성하려면
리소스 생성을 선택합니다.
프록시 리소스는 꺼진 상태로 둡니다.
리소스 경로를
/
로 유지합니다.리소스 이름에
helloworld
을 입력합니다.오리진 간 리소스 공유(CORS)를 꺼진 상태로 둡니다.
리소스 생성을 선택합니다.
프록시 통합에서는 전체 요청이 HTTP 메서드를 나타내는 catch-all ANY
메서드를 통해 백엔드 Lambda 함수로 그대로 전송됩니다. 실제 HTTP 메서드는 실행 시 클라이언트가 지정합니다. ANY
메서드를 통해 지원되는 모든 HTTP 메서드인 DELETE
, GET
, HEAD
, OPTIONS
, PATCH
, POST
, PUT
에 대해 단일 API 메서드 설정을 사용할 수 있습니다.
ANY
메서드를 생성하려면
/helloworld 리소스를 선택한 다음 메서드 생성을 선택합니다.
메서드 유형에서 ANY를 선택합니다.
통합 유형에서 Lambda 함수를 선택합니다.
Lambda 프록시 통합을 켭니다.
Lambda 함수에서 Lambda 함수를 생성한 AWS 리전을 선택하고 함수 이름을 입력합니다.
-
기본 제한 시간 값인 29초를 사용하려면 기본 제한 시간을 활성화된 상태로 유지합니다. 사용자 지정 제한 시간을 설정하려면 기본 제한 시간을 선택하고
50
~29000
밀리초 사이의 제한 시간 값을 입력합니다. 메서드 생성을 선택합니다.
API 배포 및 테스트
API를 배포하려면
Deploy API(API 배포)를 선택합니다.
스테이지에서 새 스테이지를 선택합니다.
단계 이름에
test
를 입력합니다.(선택 사항) 설명에 설명을 입력합니다.
배포를 선택합니다.
스테이지 세부 정보에서 복사 아이콘을 선택하여 API의 호출 URL을 복사합니다.
브라우저와 cURL을 사용하여 API의 Lambda 프록시 통합 테스트
브라우저 또는 cURL
쿼리 문자열 파라미터를 사용하여 GET
요청을 테스트하려면, API의 helloworld
리소스에 대한 URL을 브라우저 주소 표시줄에 입력합니다.
API helloworld
리소스의 URL을 만들려면 helloworld
리소스와 쿼리 문자열 파라미터 ?greeter=John
을 간접 호출 URL에 추가합니다. URL은 다음과 같이 표시되어야 합니다.
https://
r275xc9bmd
.execute-api.us-east-1
.amazonaws.com/test/helloworld?greeter=John
다른 메서드의 경우 POSTMAN
cURL을 사용하여 배포된 API를 테스트하려면 다음과 같이 합니다.
-
터미널 창을 엽니다.
-
다음 cURL 명령을 복사하여 터미널 창에 붙여 넣습니다. 호출 URL을 이전 단계에서 복사한 것으로 바꾸고 URL 끝에
/helloworld
를 추가합니다.참고
Windows에서 이 명령을 실행할 경우 다음 구문을 사용하십시오.
curl -v -X POST "https://
r275xc9bmd
.execute-api.us-east-1
.amazonaws.com/test/helloworld" -H "content-type: application/json" -d "{ \"greeter\": \"John\" }"?greeter=John
이라는 쿼리 문자열 파라미터와 함께 API를 직접적으로 호출하려면 다음과 같이 합니다.curl -X GET 'https://
r275xc9bmd
.execute-api.us-east-1
.amazonaws.com/test/helloworld?greeter=John'greeter:John
이라는 헤더 파라미터와 함께 API를 직접적으로 호출하려면 다음과 같이 합니다.curl -X GET https://
r275xc9bmd
.execute-api.us-east-1
.amazonaws.com/test/helloworld \ -H 'content-type: application/json' \ -H 'greeter: John'{"greeter":"John"}
이라는 본문과 함께 API를 직접적으로 호출하려면 다음과 같이 합니다.curl -X POST https://
r275xc9bmd
.execute-api.us-east-1
.amazonaws.com/test/helloworld \ -H 'content-type: application/json' \ -d '{ "greeter": "John" }'
이 모든 경우에 출력되는 것은 다음과 같은 응답 본문이 있는 200 응답입니다.
Hello, John!