next.js를 통해서 공공데이터 api를 불러오는 작업을 하려고 했는데 api를 call할 때마다 CORS 발생하였다.
CORS 해결하기 위해서 구글링을 통해 많은 방법을 통해 해결하려했다.
next.config.js에 rewrites를 사용하는 방법, 외부 proxy server를 활용하는 방법,
구글에 있는 Allow Cors 확장 프로그램을 통해서 CORS에러를 제거하는 방법 등 여러가지 방법을 사용해봤지만 local에서는 해결이 됐지만 vercel이나 AWS amplify를 통해서 프로젝트를 배포하여 확인하였을 때에는 CORS에러가 발생하고 있었다...
그러던 와중에 AWS Lambda함수와 API Gateway라는 것을 알게되었고 이 방법을 통해서 api를 call하고 CORS 해결하게 되었다.
우선 용어에 대해서 간단하게 설명하면
- 우선 aws에 로그인을 한 다음 Lambda 서비스를 선택해준다.
- 검색하면 함수 생성 화면이 뜨는데 오른쪽 상단에 있는 주황색 함수생성 버튼을 클릭하여 함수를 생성해준다.!
- 함수 생성 버튼을 클릭하면 다음과 같은 화면이 나오는데 여기서 기본 정보에 함수 이름을 작성한 뒤 실행할 런타임 언어를 선택하는데 난 Node.js를 사용하기 때문에 Node.js로 선택하도록 한다.
- 다음은 고급 설정인데 주요해서 봐야할 부분은 함수 URL 활성화 부분이다.
해당 부분을 체크하면 인증유형이 나오는데 함수 URL 활성화 부분 정보를 클릭하면 자세히 나오지만 간단히 설명하면 인증이 필요한 부분이면 AWS_IAM을 체크하고 필요하지 않다면 NONE을 체크해주면 된다.
난 공공데이터 api를 확인하기 때문에 NONE에 체크하겠다.
그리고 아래에 있는 CORS 구성까지 같이 체크해준다.
다 됐으면 함수생성 버튼을 클릭하면 된다.
- 함수생성이 완료되면 다음과 같이 함수 개요와 코드를 작성할 수 있는 코드 소스 부분이 나타난다.
그리고 함수 개요 부분 우측 하단에 함수 URL이라는 부분이 있는데 해당 URL을 들어가면 아래 코드가 있는 함수가 실행이 된다.
그리고 코드를 수정한 다음 Deploy 버튼을 클릭하고 다시한번 확인하면
아래 그림처럼 변경된 코드가 적용이 된다.
이까지 람다함수를 생성하는 방법을 작성했는데 다음 부분에서는 API Gateway를 생성해서 Lambda함수와 통신하는 부분에 대해 작성하도록 하겠다.