일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 비구조화 할당
- 온프레미스
- Service
- elasticsearch
- optional chaining
- cognito
- api gateway
- On-Premise
- vgw
- docker swarm
- Custom Resource
- Proxy Resource
- grafana
- Endpoints
- DynamoDB
- VPC
- AWS
- 구조분해 할당
- 옵셔널 체이닝
- null 병합 연산자
- Site-to-Site VPN
- CloudFormation
- 단축 평가
- Await
- 자바스크립트
- Kubernetes
- prometheus
- transit gateway
- docker
- JavaScript
- Today
- Total
만자의 개발일지
[AWS] API Gateway Proxy Resource 사용하기 본문
Proxy Resource 사용하기
API Gateway를 작업하다 보면 여러개의 경로(Resource) 및 다양한 종류의 HTTP 메소드로 들어온 요청을 하나의 람다함수로 보내야 하는 경우가 있는데 이 경우 각 경로마다 람다함수를 지정하게되면 여간 번거로운 일이 아닐 것입니다.
API Gateway에서는 이 경우에 Proxy Resource와 Custom Resource 기능(템플릿 경로 변수, templated path variables)을 제공하는데 두 기능의 차이점은 Proxy Resource는 해당 경로 계층을 따라 모든 경로를 참조할 수 있지만 Custom Resource는 특정 경로의 리소스만 참조할 수 있습니다.
이번 포스팅에서는 Proxy Resource를 사용하여 Proxy Resource로 들어오는 모든 경로 및 HTTP 메소드로 들어오는 요청을 하나의 람다함수로 연결하는 실습을 진행해 보도록 하겠습니다.
API Gateway 생성
Proxy Resource를 사용하기 위해서는 먼저 API Gateway를 생성해줘야 합니다.
API Gateway 콘솔 화면으로 들어가 REST API를 선택한 후 Build 버튼을 눌러 API Gateway를 생성해 줍니다.
API Gateway의 이름을 지정해준 후 Create API 버튼을 눌러 API Gateway를 생성해 줍니다.
Create Resource 버튼을 눌러 기본 리소스를 하나 생성해 줍니다.
그 다음 리소스명과 경로를 지정해 줍니다. 리소스명과 경로는 일치시켜 주는 것이 좋습니다.
다 지정해줬다면 Create Resource 버튼을 눌러 리소스를 생성해 줍니다.
Proxy Resource 생성
이제 Proxy Reource를 생성해 줄 차례입니다. 위에서 생성한 리소스를 선택한 후 Create Resource 버튼을 눌러 리소스를 생성해 줍니다.
Proxy Resource 옵션을 활성화한 후 리소스명과 경로를 지정해 줍니다. 여기서 중요한 점은 경로를 지정할 때
{리소스명+} 으로 지정해 주어야 합니다.
다 지정해줬다면 Create Resource 버튼을 눌러 Proxy Resource를 생성해 줍니다.
그 다음 람다 함수를 지정해 줍니다. (람다 함수 생성은 생략 하도록 하겠습니다.)
지정해줬다면 Save 버튼을 눌러 저장해 줍니다.
API 배포
이제 API를 배포해야 합니다. Deploy API 버튼을 눌러 API를 배포해 줍니다.
stage를 새로 생성해 준 후 Deploy 버튼을 눌러 API를 배포해 줍니다.
그러면 다음과 같이 Invoke URL이 생성되는 것을 보실 수 있습니다.
Proxy Resource 테스트
그 다음 Proxy Resource를 테스트하기 위해 다음과 같이 람다 코드를 작성해 줍니다.
exports.handler = async (event) => {
const response = {
statusCode: 200,
body: JSON.stringify(event.pathParameters)
};
return response;
};
이제 위에서 생성된 Invoke URL로 접속해 봅니다.
당연히 에러를 반환합니다. / 경로에는 어떠한 HTTP 메소드도 허용해주지 않았기 때문입니다.
따라서 위에서 HTTP 메소드를 정의해준 /produce/{proxy+} 경로로 요청을 보내야 정상적으로 작동할 것입니다.
다음과 같이 /produce/fruit 경로로 요청을 보냈을 때 정상적으로 람다함수가 호출되는 것을 보실 수 있습니다.
좀 더 깊이있는 경로로 요청을 보내면 어떻게 될까요?
이번에는 /produce/vegetble/banana 경로로 요청을 보내보았습니다.
역시나 정상적으로 람다함수가 호출되는 것을 보실 수 있습니다.
이것이 바로 Proxy Resource의 장점입니다. 위에서 말했듯이 Proxy Resource는 경로 계층을 따라 모든 리소스를 참조할 수 있다고 하였습니다. 때문에 Proxy Resource는 이처럼 깊이 있는 경로도 잘 받아올 수 있는 것입니다.
다만 이러한 이유 떄문에 Proxy Resource 아래에 하위 리소스를 생성하지 못한다는 것이 단점이긴 합니다만,
Proxy Resource를 잘 활용하면 보다 API를 간단하면서 강력하게 구축할 수 있을 것입니다.
Custom Resource 사용 방법은 아래 글에 포스팅해놨으니 참고해 주세요.
https://yoo11052.tistory.com/173
'AWS' 카테고리의 다른 글
[AWS] DynamoDB란 (4) | 2022.05.23 |
---|---|
[AWS] API Gateway Custom Resource 사용하기 (0) | 2022.05.19 |
[AWS] VGW와 CGW를 사용하여 Site-to-Site VPN 구성하기 (0) | 2022.05.13 |
[AWS] Transit Gateway란 (1) | 2022.05.12 |
[AWS] VPC Peering 이란 (0) | 2022.03.14 |