본문 바로가기

⭐ AWS/AWS API Gateway

Route 53 + API Gateway Websocket with Custom Domain + Lambda Authorizer

#  Route 53 + API Gateway Websocket + 사용자 지정 도메인 + lambda authorizer 를 활용한 서비스 테스트 케이스

1. 테스트 케이스 개요

- 라우트 53에서 서브 도메인을 생성한다. 서브 도메인을 생성하는 이유는 메인 도메인과 서브 도메인사용을 통일 함으로 동일한 서비스로 구현을 하기위해 → 아래에서 자세히 설명

- 라우트 53에서 생성한 도메인을 API Gateway Websocket의 생성 URL을 매핑하여 API GW WS API에서 사용자 지정 도메인을 사용 하도록 구현.

- 추가로 설명을 하자면 API GW WS API를 생성하면 아래와 같이 랜덤으로 생성된? 도메인을 해당 API에게 할당한다 해당 API를 사용해도 무방하지만, 메인 도메인과 연계해서 이루어지는 서비스의 경우에는 도메인을 일치시켜야 하는 문제가 있으므로, 사용자 지정 도메인을 API GW WS의 API에 맵핑하여 동일한 도메인을 사용하도록 구현한다.

- 참고.

API GW WS의 API를 생성하면 아래와 같은 형식의 도메인 주소를 할당한다.

wss://rrrtt5cc4.execute-api.ap-northeast-2.amazonaws.com/production/

- 참고 React Router, 해당 작업을 하게 된 이유가 React Router 때문, 아래의 내용 참고

<도메인 네임>/test 와 같은 형태로 라우팅을 한다.

2. 사용자 지정 도메인 생성하기

- 아래의 URL을 참고하여 진행을 하면 된다.

중요한건, 먼저 API GW WS에서 도메인을 생성 후 사용자 지정 도메인 까지 생성을 완료한다.

사용자 지정 도메인까지 생성이 안료되면 Route 53에서 별칭 등록을 활성화 하여 생성된 API GW 의 사용자 지정 도메인을 지정 할수 있게 된다. (자세한 내용은 아래에 적는다.)

https://may9noy.tistory.com/1636

 

AWS Lambda & API Gateway & Route53 사용하기

# AWS Lambda & API Gateway & Route53을 활용한 서비스 1. ACM 에서 퍼블릭 인증서를 요청한다. - 완전히 정규화된 도메인 이름을 입력 - DNS 검증 - 권장 선택 2. 해당 인증서로 들어가서 아래와 같이 Route53에

may9noy.tistory.com

- 사용자 지정 도메인을 생성 할때 아래와 같이 창이 나오고 ACM 인증서를 선택 하도록 되어 있고 도메인 명을 입력하게 되어 있다.

- 위의 내용을 입력 및 선택 후 사용자 지정 도메인을 생성하면 된다.

3. 사용자 지정 도메인에서 API 매핑하기

사용자 지정 도메인 이름을 클릭하면 아래와 같이 API 매핑 탭에서 API 매핑을 구성 할 수 있다.

- API 매핑 구성을 클릭하여 구성을 해보면 아래와 같다.

생성한 API 정보를 선택 가능하고 스테이지 및 경로또한 지정이 가능하다.

위의 작업까지 진행되면 사용자 지정 도메인 작업은 완료된다.

4. 라우트 53에서의 작업 진행하기

- 라우트 53 호스팅 영역으로 이동하여 레코드 생성을 수행한다.

아래와 같이 별칭을 활성화 하면 위에서 생성한 API GW WS의 서브 도메인을 선택 할 수 있다.

엔드 포인트를 사용자 지정 도메인과 연결 및 리전을 선택 후 서브 도메인을 지정 후 레코드를 생성한다.

- 참고로 서브 도메인을 생성 시 ACM 으로 인증서도 발급이 필요하므로, 함께 진행한다.

ACM 인증서 관련은 아래의 URL을 참고하여 진행한다.

https://may9noy.tistory.com/1636

 

AWS Lambda & API Gateway & Route53 사용하기

# AWS Lambda & API Gateway & Route53을 활용한 서비스 1. ACM 에서 퍼블릭 인증서를 요청한다. - 완전히 정규화된 도메인 이름을 입력 - DNS 검증 - 권장 선택 2. 해당 인증서로 들어가서 아래와 같이 Route53에

may9noy.tistory.com

5. 작업된 내용 정리하기

작업된 내용을 정리하자면 아래와 같다.

리소스별로 나눠 정리 하자면,

API Gateway Websocket : API 생성 → 사용자 지정 도메인 생성 (생성 전 ACM 인증서 사전 생성 필요)  → 사용자 지정 도메인에 API 매핑 구성(생성한 API를 선택 후 스테이지 등 기입 후 진행)  → 완료. 끝.

Route 53 : 서브 도메인 생성을 위한 레코드 생성 → 서브 도메인 지정 및 별칭 활성화 → API GW WS의 서브 도메인 리소스 선택, 리전 선택 → 레코드 생성. 완료.

ACM : ACM 인증서는 Route 53에서 생성한 서브 도메인 명과 API GW 의 사용자 지정 도메인의 도메인 명과 동일하게 생성하고, API GW WS 사용자 지정 도메인을 생성 시 선택 가능토록 사전에 생성이 되어 있어야 한다.

Lambda Authorizer : 권한 부여자라고도 하며, API를 실행할때 람다를 실행 하도록 하는 기능이다. 람다를 생성 후 아래와 같이 해당 함수를 매핑 해주는 방식으로 구현된다.

자세한 내용은 6번을 참고로 진행한다.

6. Lambda Authorizer (권한 부여자) 설정하기

- 권한 부여자는 해당 API가 사용될때 Lambda를 호출 하도록 구현하는 방식이다.

관련 URL은 아래와 같다.

https://may9noy.tistory.com/1675

 

AWS API Gateway Websocket with Lambda Authorizer

# 해당 내용에 대한 AWS 관련 URL은 아래와 같다. https://aws.amazon.com/ko/blogs/compute/announcing-websocket-apis-in-amazon-api-gateway/ Announcing WebSocket APIs in Amazon API Gateway | Amazon Web Services This post is courtesy of Diego Maga

may9noy.tistory.com

7. 테스트 수행하기

- 테스트 케이스로 간단하게 동작 하는 채팅 서비스를 구현

내용은 아래와 같다.

- API GW WS의 사용자 지정 도메인과 API Web Socket URL로 호출 시 아래와 같이 정상적으로 호출이 되는것을 확인 할 수 있다.

 

- 끝 -