Cloud

아마존 AWS Lambda, API Gateway 설정하기 [후기]

rexondex 2024. 10. 15. 14:35

정적 html을 깃허브 도메인으로 제공하는 깃허브 페이지에서

API를 사용해서 외부 데이터를 요청할 수 있다는 점에 흥미를 가져

아마존 AWS Lambda와 API Gateway 기능으로

API를 요청해 서버사이드 개별함수를 실행시키고자 했습니다.

 

작동순서는 이렇습니다.

 

[깃허브 페이지] -> 요청 -> [API Gateway] -> [Lambda 함수 실행]

 

깃허브 페이지에서 자바스크립트 모듈로 API Gateway에 요청을 보내고

API Gateway는 연결된 Lambda함수에 파라미터를 전달하여 함수를 실행시킵니다.

 

그러면 깃허브 페이지 화면에서 실시간으로 응답을 받아 렌더링할수 있습니다.

 

준비물 :

1. 사용할 외부 오픈 API

2. AWS Lambda

3. AWS API Gateway

4. 본인이 API를 요청하고 활용할 HTML, 브라우저 또는 포스트맨 등

 


 

첫번째, Lambda 함수를 작성합니다.

 

Lambda 메인화면
axios 모듈이 있는 index.js

 

이 람다함수를 실행하는 환경에는 axios같은 외부 라이브러리가 없기때문에

새 폴더에 직접 axios 모듈을 다운받은 후 모듈 안에 index.js를 함께 위치시켜야 합니다.

 

그리고 이것을 파일명 function.zip 으로 압축시킨 후 코드소스에 업로드하면 axios 모듈과 함께 압축이 풀립니다.

// axios 설치
npm init -y
npm install axios

// 디렉토리에서 zip 파일 생성하기
zip -r function.zip index.js node_modules

 

[ 함수 테스트 ]

[테스트] 탭에서 파라미터를 넣어 테스트해봅니다


 

두번째, API Gateway를 설정합니다.

API Gateway

 

저는 게이트웨이에서 /weather 를 추가로 생성시키고 GET 메소드를 만들었습니다.

OpenWeather 의 날씨 API를 이용하기 위한 목적으로 /weather 라고 적었습니다.

 

 

매핑 템플릿

 

그리고 매핑 템플릿에 전달할 파라미터 형식을 JSON 문자열로 입력해뒀습니다

 

 

GET 메소드 , 상태: 200

 

저는 OpenWeather 라는 날씨 정보를 받아오는 사이트의 무료 API를 사용했습니다.

위도와 경도값을 이용해 날씨 데이터를 받아오는 API이고,

GET 메서드로 쿼리문자열(쿼리스트링) 파라미터를 보내서 응답까지 정상 동작하는걸 확인했습니다.

 


 

 

여기까지 작성했다면 외부에서 이 경로로 파라미터와 함께 요청을 보내기만 하면 됩니다.

 

그러면 테스트 결과를 토대로 정상적으로 데이터를 응답받을 수 있을 것이고,

저는 HTML 페이지에 사용할 것이기에 응답데이터로 화면을 재렌더링 하면 완료입니다.