상세 컨텐츠

본문 제목

cloud function -1- 클라우드 펑션 활용 셋팅 절차입니다. 두가지가 있는데요.

firebase

by carecat 2025. 6. 23. 17:38

본문

반응형

1.트리거사용시 활용됨

1-1. 생성방법:

         -콘솔을 이용 : console.cloud.google.com/functions 

         -CLI를 이용 : 로컬 터미널 활용

1-2. 구현언어:

        javascript, typescript, python 등.

 1-3.CLI 이용한 절차

        firebase login (미리 로그인되어있다면 생략)

        firebase init firestore

        firebase init functions

       CLI 언어 선택 (javascript / python /  typescript   

       이후 아래와 같은 경로가 생성됨.!

myproject
 +- .firebaserc    # Hidden file that helps you quickly switch between
 |                 # projects with `firebase use`
 |
 +- firebase.json  # Describes properties for your project
 |
 +- functions/     # Directory containing all your functions code
      |
      +- .eslintrc.json  # Optional file containing rules for JavaScript linting.
      |
      +- package.json  # npm package file describing your Cloud Functions code
      |
      +- index.js      # main source file for your Cloud Functions code
      |
      +- node_modules/ # directory where your dependencies (declared in
                       # package.json) are installed

 

        관련모쥴 임포트 시 주의사항!!

Cloud Functions 버전 비교

bookmark_border

Cloud Functions for Firebase에는 두 가지 버전이 있습니다.

  • Cloud Functions(2세대): Cloud Run에서 함수를 서비스로 배포하여 Eventarc  Pub/Sub를 사용하여 함수를 트리거할 수 있도록 합니다.
  • Cloud Functions(1세대): 이벤트 트리거와 구성 가능성이 제한된 함수의 원래 버전입니다.

가능하다면 새로운 함수에 Cloud Functions(2세대)를 선택하는 것이 좋습니다.

하지만 Cloud Functions(1세대)도 계속 지원할 계획입니다.

이 페이지에서는 Cloud Functions에 도입된 기능을 설명하고 두 제품 버전을 비교합니다.

 

[1세대 표기법]

// The Cloud Functions for Firebase SDK to create Cloud Functions and set up triggers.
const functions = require('firebase-functions/v1');

// The Firebase Admin SDK to access Firestore.
const admin = require("firebase-admin");
admin.initializeApp();

       

[2세대 표기법] 

// The Cloud Functions for Firebase SDK to create Cloud Functions and triggers.
const {logger} = require("firebase-functions");
const {onRequest} = require("firebase-functions/v2/https");
const {onDocumentCreated} = require("firebase-functions/v2/firestore");

// The Firebase Admin SDK to access Firestore.
const {initializeApp} = require("firebase-admin/app");
const {getFirestore} = require("firebase-admin/firestore");

=> 터미널에서 node index.js 실행.,

 

 

[로컬에서 에뮬레이터 띄어서 테스트 하는 방법]

    firebase emulators:start

       =>http 함수 의 url 은 firebase emulators:start 명령어의 출력에서 확인됨..

          http://localhost:5001/MY_PROJECT/us-central1/addMessage 

         링크를 클릭하면 브라우져가 열리고 결과가 표시됨.(새로 고침해주면 변경된 사항이 적용되어짐)

   

  [cloud functions 처리할수있는일]

  -관심을 가질만한 상황이 발생할때 사용자에게 알림

  -데이터베이스 정리및 유지보수 수행

  -앱이 아닌 클라우드에서 집약적인 작업 실행

  -서드 파티 서비스 및  API 통신

 

     [http 요청을 통한 함수호출]

       functions.https 를 활용, get/post/put/delete/options 

exports.date = functions.https.onRequest((req, res) => {
  // ...
});

중요: 모든 HTTP 함수가 올바르게 종료되는지 확인하세요. 함수를 올바르게 종료해야 함수가 너무 오래 실행되어 과도한 요금이 청구되는 일을 피할 수 있습니다. res.redirect(), res.send() 또는 res.end()로 HTTP 함수를 종료하세요.

const formattedDate = moment().format(`${format}`);
functions.logger.log('Sending Formatted date:', formattedDate);
res.status(200).send(formattedDate);

 

const express = require('express');
const cors = require('cors');

const app = express();

// Automatically allow cross-origin requests
app.use(cors({ origin: true }));

// Add middleware to authenticate requests
app.use(myMiddleware);

// build multiple CRUD interfaces:
app.get('/:id', (req, res) => res.send(Widgets.getById(req.params.id)));
app.post('/', (req, res) => res.send(Widgets.create()));
app.put('/:id', (req, res) => res.send(Widgets.update(req.params.id, req.body)));
app.delete('/:id', (req, res) => res.send(Widgets.delete(req.params.id)));
app.get('/', (req, res) => res.send(Widgets.list()));

// Expose Express API as a single Cloud Function:
exports.widgets = functions.https.onRequest(app);

   

 [이벤트기반 함수]

 

 

출처:      https://firebase.google.com/docs/functions?_gl=1*1wydywh*_up*MQ..*_ga*MzUwODcwOTk5LjE3NTA2NzMwNTk.*_ga_CW55HF8NVT*czE3NTA2NzMwNTkkbzEkZzAkdDE3NTA2NzMwNTkkajYwJGwwJGgw

 

  

반응형

관련글 더보기