이번 프로젝트를 진행을 할때 Authorizatoin Server 와 Resource Server를 나누어서 진행을 하였습니다. 그렇다면 요청이 들어왔을때 JWT확인을 하고 경로를 보고 어디로 보낼지를 결정해야합니다. 고로 저희는 AWS API Gateway를 활용하기로 하였습니다. 즉 요청이 들어오면 Lambda함수를 통해 JWT access token을 확인하고 경로에 보내주는 역할을 하면 됩니다.
저는 일단 REST API로 만들었습니다.
그런다음
새롭게 API를 만들어줍니다
이 화면이 나오게 된다면 [리소스생성] 으로 경로에 알맞게 생성해줍니다.
이렇게 본인이 나누고 싶은 경로가 /v1/~, /v2/~ 이렇게 나누어져 있다면 /v1으로 시작하는 경로는 특정한 방법으로, /v2는 또 다른 방법으로 라우팅을 하면 됩니다.
예를 들어 /v1으로 시작하는 경로는 특정한 서버로 보낼것이고, /v2로 시작하는 경로는 람다로 보내고싶다고 해봅시다.
먼저 /v1밑에 리소스를 생성해줍니다. 하지만 이번에는 그저 원하는 경로를 입력하는 것이 아닌
이렇게 프록시를 이용해서 만들것 입니다. 이렇게 되면 예를 들어 /v1 뒤에 /v1/auth/signup 이런식으로 경로가 들어간다고 하면 뒤에 따라오는 경로를 그대로 다음 라우팅에 넣어줄 수 있게 됩니다. 계속해서 해보겠습니다.
위와 같이 만들었다면 이렇게 정의되지 않은 통합이라고 나타나게 되는데. 여기서 통합 편집을 눌러 봅시다.
이렇게 여러개의 방법을 선택할 수 있습니다. Lambda로 설정할 수 도 있고 기존의 HTTP Endpoint로도 가능합니다! 저는 V1 은 정해진 서버로 보낼 것 이기 때문에 HTTP를 선택하겠습니다.
이렇게 엔드포인트 url, 이 경로는 /v1으로 시작하기에 /v1을 넣어주고 뒤에 {proxy}를 넣어줘 /v1뒤의 경로를 같이 넣어줄 수 있습니다. 하지만 여기서 그냥 proxy만 입력하면 안되고
이렇게 URL 경로 파라미터에서 proxy가 뒤의 값이라는 것을 명시해서 연결해 줘야합니다.
이렇게 해서 연결을 해주면 잘 들어간것을 볼 수 있습니다.
그런데 여기서 메서드 요청이 들어올때마다 검사를 하고 싶다면
권한부여부분을 편집하면 됩니다.
물론 그전에 권환부여자 부분을 들어가서 함수를 등록해야합니다.
이렇게 권한 부여부분을 본인의 람다함수로 등록하면 됩니다.
https://velog.io/@xgro/Lambda-Authorizer
그부분은 이 블로그나
https://velog.io/@kwakwoohyun/AWS-MSA%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98-API-Gateway-JWT-Token
이 두개의 블로그를 보면서 따라하면 될듯하다.
이런식으로 API Gateway를 활용하면 될 것 같습니다!
아직 완성은 아니라 추후에 더 수정하도록 하겠습니다.