본문 바로가기
프로그래밍/클라우드서버

NCP Cloud Functions & PlanetScale 연결

by Damon11 2023. 3. 13.

NCP 공식 블로그 글을 참고하였다.

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=n_cloudplatform&logNo=222159923255 

 

[이렇게 사용하세요!] Cloud Functions 서비스와 Cloud DB를 활용하여 애플리케이션 서버 없이 API 제공

#CloudFunctions 서비스와 #CloudDB for #MySQL 을 활용한 애플리케이션 서버 없이 API 제공하...

blog.naver.com

MySQL 서버 비용이 은근 많이 나가서, 무료 DB가 가능한 PlanetScale을 사용하였다.

 

연결하는 부분만 바꿔주면 간단하게 가능하다.

 

NCP 콘솔페이지로 가서

우측 Service -> Compute -> Cloud Function

 

서버 설정은 공홈보고 하실 수 있을테니, 파일 생성하는 부분으로 넘어감

 

 

  1. 업로드하기 위한 디렉토리를 새로 만든다. 
    -> Cloud Function에 업로드 할 때 이 폴더 전체를 압축하여 업로드해야한다.
  2. package.json파일을 생성한다.
  3. 해당 디렉토리에서 terminal을 통해 패키지 설치
    npm install dotenv mysql2
  4. index.js 파일도 생성

3번 실행 전에 package.json 먼저 생성하자.

name 과 main 부분 역할은 잘 모르겠음

dependencies는 비워두자

{
    "name": "example",
    "main": "index.js",
    "dependencies": {

    }
}

 

3번을 실행하고나면 package.json 이 다음과 같이 바뀐다.

{
    "name": "example",
    "main": "test.js",
    "dependencies": {
        "dotenv": "^16.0.3",
        "mysql2": "^3.2.0"
    }
}

 

디렉토리에는 다음파일들이 필수로 있어야한다.

- package.json

- index.js

- .env

 

dotenv : .env 파일의 값을 읽어올 수 있도록 함

mysql2: planetscale DB와 연동하기 위해 필요함

 

 

index.js 파일은 다음과 같이 작성

require('dotenv').config()
const mysql = require("mysql2");
let conn;

function createTable(params) {

   return new Promise(function(resolve, reject) {
    if(!conn) {
        conn = mysql.createConnection(process.env.DATABASE_URL)
        conn.connect();
    }

       conn.query(`SELECT * FROM products`, function (error, results, fields){
        if (error) {
            reject({error: error});
        }
        resolve({
            products: results
        });
       });
   })
}

exports.main = createTable;

PlanetScale과 연결되는 부분은 process.env.DATABASE_URL 부분이다.

.env 파일 안에 정보를 넣어두었다.

DATABASE_URL='mysql://eusjaevn81kgrr2xwglf:************@ap-northeast.connect.psdb.cloud/************?ssl={"rejectUnauthorized":true}'

이 데이터는 PlanetScale 사이트에서 확인할 수 있다.

기본적인 설정 방법은 패스하고,

연결링크 찾는 부분 설명

 

콘솔에 들어가면 CLI 명령어를 통해 DB를 생성하고 편집할 수 있다.

 

Cloud Function Action 생성 후 파일 업로드

---패키지 활용법

패키지는 여러 액션들을 그룹으로 묶을 수 있다.

패키지 장점은, 기본적으로 사용하는 파라미터를 공유할 수 있다. 예를들면 env 파일을 zip파일에 넣어두는 것 보다는 Package를 생성하여 그 안에 파라미터를 입력하여 사용한다.

action마다 zip에 넣었을 경우, 파라미터가 바뀌는 일이 일어나면 action 파일 개수만큼 일일이 모두 직접 수정해야하는 참사가...

패키지 생성

process.env. 로 시작했던 변수들을 아래와 같이 바꾸어야 한다.

 

params.

 

 

액션 생성
패키지 선택

 

폴더를 통째로 zip으로 압축하여 업로드한다.

 

Action 을 실행하면 아래와 같이 DB 연결 됨 확인

 

댓글