j2h30728 / react-s3-cloudfront

0 stars 0 forks source link

2024.06.22 : AWS Lambda + API GateWay 로 서버리스 API 생성 #1

Open j2h30728 opened 1 week ago

j2h30728 commented 1 week ago
j2h30728 commented 1 week ago

marvel API 는 url param에 public key 와 private key, hash(ts + private key + public key)를 주입하여 요청해야하기 때문에 클라이언트에 위험이 따른다.

MARVEL API는 param으로 전달하는 값은 hash 처리하기 때문에 private key은 숨겨지고, 환경변수를 사용하면 된다. 코드샌드 박스 제출시 환경변수를 주입하게 되면 동작하지 않는 상황이 발생하고 이미 서버리스 API 구축 했기떄문에 학습차 해당 api 를 사용한다.

Authentication for Server-Side Applications Server-side applications must pass two parameters in addition to the apikey parameter:

ts - a timestamp (or other long string which can change on a request-by-request basis) hash - a md5 digest of the ts parameter, your private key and your public key (e.g. md5(ts+privateKey+publicKey) For example, a user with a public key of "1234" and a private key of "abcd" could construct a valid call as follows: http://gateway.marvel.com/v1/public/comics?ts=1&apikey=1234&hash=ffd275c5130566a2916217b101f26150 (the hash value is the md5 digest of 1abcd1234)

ec2 서버를 띄우지 않고 AWS Lambda + API Gateway로 Serverless API 환경 구성하여 위험이 될 수 있는 값들을 숨김처리한다.

j2h30728 commented 1 week ago

AWS Lambda + API GateWay로 Serverless API 환경 구성 완료

aws lambda 에서 라이브러리 사용시 lambda layers 사용 필요

AWS Lambda Layers를 사용하면 여러 Lambda 함수에서 공통 라이브러리를 쉽게 공유 가능

  1. 패키지 설치 및 zip 파일로 만든 후에 layers 파일 업로드
  2. 원하는 런타임을 선택하고 layers 생성 (lambda 함수와 동일한 런타임을 선택해야한다.)
  3. lamdda 함수 설정에서 생성한 layers 추가 및 적용
  4. lamdba 함수 내에서 공통 라이브러리 사용가능 (현재 프로젝트는 crypto-js)

관련 내용

j2h30728 commented 1 week ago

트러블 슈팅

수정 전

캐릭터 리스트의 전체 데이터를 get 요청으로 가져오기 때문에 timeout 3 seconds를 초과한다.

수정 후

offset 과 limit를 추가하여 페이지네이션 처리 합니다.