정적 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 함수를 작성합니다.
이 람다함수를 실행하는 환경에는 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를 설정합니다.
저는 게이트웨이에서 /weather 를 추가로 생성시키고 GET 메소드를 만들었습니다.
OpenWeather 의 날씨 API를 이용하기 위한 목적으로 /weather 라고 적었습니다.
그리고 매핑 템플릿에 전달할 파라미터 형식을 JSON 문자열로 입력해뒀습니다
저는 OpenWeather 라는 날씨 정보를 받아오는 사이트의 무료 API를 사용했습니다.
위도와 경도값을 이용해 날씨 데이터를 받아오는 API이고,
GET 메서드로 쿼리문자열(쿼리스트링) 파라미터를 보내서 응답까지 정상 동작하는걸 확인했습니다.
여기까지 작성했다면 외부에서 이 경로로 파라미터와 함께 요청을 보내기만 하면 됩니다.
그러면 테스트 결과를 토대로 정상적으로 데이터를 응답받을 수 있을 것이고,
저는 HTML 페이지에 사용할 것이기에 응답데이터로 화면을 재렌더링 하면 완료입니다.
'Cloud' 카테고리의 다른 글
EC2 인스턴스에 도커 컨테이너를 실행하고 배포하기 [DockerHub] (0) | 2024.11.25 |
---|---|
GitHub Pages에서 직접 외부API를 사용하는건 힘들다 [AWS/탐구] (1) | 2024.10.15 |
깃허브 페이지와 서버리스로 페이팔 결제서비스 가능할까? [AWS/탐구] (0) | 2024.10.14 |
AWS EC2에 스프링부트 첫 배포한 후기 [RDS/MySql] (0) | 2024.09.30 |
카페24 웹호스팅 실패한 경험 [스프링부트/후기] (1) | 2024.09.30 |