티스토리 뷰

반응형

AWS Lambda로 크롤링 데이터 Firebase에 데이터 쌓는 법 

1편 - Lambda 설정

2편 - 로컬 테스트


토이 프로젝트에서 클로링으로 Firebase에 데이터를 쌓아야 하는 작업이 필요 했습니다.

Spring Boot Batch를 사용하여 서버를 띄워서 크롤링을 할가 고민도 했었는데 그렇게 되면 항상 서버를 구동해야 하는 문제가 생겼습니다.

 

비용도 아끼고 필요할 때만 사용하면 어떨까 고민 했는데 AWS Lambda를 사용하면 되지 않을까 생각이 들었고 그 방법을 정리해 보려고 합니다.

 

이번 장에서는 Lamdba를 이용하여 API를 호출하고 호출한 API에서 데이터를 정재하여 Firebase에 쌓는 방법을 정리해 보도록 하겠습니다.

 

01. AWS의 Lambda는 무엇인가?

 

AWS의 Lambda는 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행 할 수 있는 컴퓨팅 서비스 입니다.

구동 시간에 따라 요금을 지불하기 때문에 필요할 때만 사용하는 클롤링 작업에서는 가장 좋은 서비스라고 생각합니다.

 

02. Firebase CloudStore 란?

 

Firebase의 Cloud Firestore는 Document 방식의 DB를 제공하는 클라우드 서비스 입니다.

Cloud Firestore는 클라이언트에서 서버 필요없이 바로 DB을 연결 할 수 있도록 SDK를 제공합니다.

 

03. Firebase와 Lambda 연결하기

 

본격적으로 두가지 서비스를 연동하여 데이터를 클로링 해보도록 하겠습니다.

이 페이지에서는 환율 정보를 1시간마다 저장하는 서비스를 개발할 예정이니 다른 서비스가 필요하다면 API와 데이터 파싱 부분만 수정하여 사용하시면 될 것 같습니다.

 

1) Firebase Auth Key 발급하기

 

이 프로젝트에서는 Firebase의 프로젝트를 생성하고 Cloud Firestore를 생성 했다고 가정하에 연동 방법을 작성합니다.

해당 부분이 준비가 되어 있지 않다면 살펴보시고 생성뒤에 따라오시면 될 것 같습니다.

 

생성한 프로젝트에 들어가시면 서비스 계정 메뉴를 확인 할 수 있습니다.

해당 메뉴에 들어가서 Firebase Admin SDK 확인합니다.

 

아래 새 비공개 키 생성 버튼을 크릭하여 json 파일을 다운로드 받습니다.

해당 파일이 있어야 Firebase에 연동이 가능합니다.

 

파일 이름이 길고 알아보기 힘들기에 예제에 있는 것처럼 serviceAccountKey.json으로 변경하면 좋습니다.

 

2) AWS Lambda 설정 파일 생성하기.

 

로컬에 Lambda에 업로드할 폴더 파일을 생성합니다.

mkdir firebase-lambda
cd firebase-lambda

그리고 package.json index.js 파일을 생성합니다.

{
    "name": "firebase-lambda",
    "version": "1.0.0",
    "main": "index.js",
    "dependencies": {
      "firebase-admin": "9.6.0"
    }
}

 

3) Firebase 연동 함수 생성

 

이제 생성한 index.js에 Firebase 연동하는 함수를 생성합니다.

(저는 firestore를 사용하는 방식을 정리합니다.)

 

const admin = require('firebase-admin')
const serviceAccount = require('serviceAccountKey.json')

admin.initializeApp({
    credential: admin.credential.cert(serviceAccount)
});

exports.handler = (event, context, callback) => {
    firebaseFirestore = admin.firestore();   
}

 

4) node_module 설치.

 

node를 실행하기 위한 node_module을 설치합니다.

package.json이 생성되어 있기 때문에 해당 폴더에서 아래 명령어를 설치합니다.

 

만약, npm이 설치되어 있지 않다면 먼저 설치 해주셔야 합니다.

npm install

폴더내에 node_modules 폴더가 정상적으로 생성되었는지 확인합니다.

 

그런 뒤 해당 폴더 root에서 zip 파일을 생성합니다.

파일 이름은 firebase-lamdba.zip 으로 생성합니다.

 

5) AWS Lamdba 

 

AWS에서 Lambda를 검색하여 메뉴로 들어갑니다.

Lambda 메뉴에서 함수 생성을 클릭합니다.

함수 이름을 작성하시고 런타임 부분에서는 원하는 버전을 선택하시면 됩니다.

저는 node.js 12.x를 선택했습니다.

 

그런 뒤 함수 생성을 클릭합니다.

 

업로드 버튼을 클릭하여 .zip file을 선택합니다.

위에서 생성한 zip 파일을 업로드 합니다.

테스트 탭 메뉴를 선택하고 테스트 버튼을 클릭해봅니다.

함수가 정상적으로 호출 되는지 확인합니다.

아래와 같이 해당 함수가 정상적으로 호출 되면 성공 결과를 받을 수 있습니다.

이제 기본적인 설정 및 함수를 생성을 끝냈습니다.

 

이제 함수에서 firebase에 데이터를 넣는 방법에 대해서 다음 포스팅에서 이어가도록 할게요.

 

 

 

참고 : https://levelup.gitconnected.com/how-to-access-firebase-from-aws-lambda-f7f494dd435a

 

How to Access Firebase From AWS Lambda

A Comprehensive Step by Step Guide

levelup.gitconnected.com

 

반응형
댓글