Cloud Functions【Cloud SQL 사용편】

개요



Cloud Functions에서 Cloud SQL을 활용할 때 시간이 많이 걸렸으므로 절차를 기록해 둡니다.

Google Cloud Platform

CloudFunctions for Firebase

Connecting to Cloud SQL (공식 문서 / 영어)

Cloud SQL 설정



다음 순서로 인스턴스 생성



1, Google Cloud Platform > 네비게이션 메뉴 > SQL



2, 인스턴스 만들기 > 데이터베이스 선택(MySQL or PostgreSQL) > 인스턴스 ID/root 패스워드/리전/데이터베이스 버전 등을 설정
※DB 패스워드는 재발행할 수 없다고 하므로, 잊지 않도록 메모한다! ! !



3, 테이블 만들기
※Cloud Shell이나 SQL 클라이언트 툴을 사용해 작성할 수 있다. 이번에는 생략

Functions 설정



MySQL 사용 예 (공식 데모 참조)



functions/index.js
const mysql = require('mysql');

const connectionName =
'<インスタンス接続名>';
const dbUser = '<任意のDBユーザー>';
const dbPassword = '<任意のDBユーザーのパスワード>';
const dbName = '<DB名>';

const mysqlConfig = {
  connectionLimit: 1,
  user: dbUser,
  password: dbPassword,
  database: dbName,
};

if (process.env.NODE_ENV === 'production') {
  mysqlConfig.socketPath = `/cloudsql/${connectionName}`;
}

let mysqlPool;

exports.mysqlDemo = (req, res) => {
    if (!mysqlPool) {
    mysqlPool = mysql.createPool(mysqlConfig);
  }

  mysqlPool.query('SELECT NOW() AS now', (err, results) => {
    if (err) {
      console.error(err);
      res.status(500).send(err);
    } else {
      res.send(JSON.stringify(results));
    }
  });
}

우선 이것으로 움직인다.
ORM을 사용할 때 설정이 부족한 경우 mysqlConfig예:
const config = {
  host: `/cloudsql/${connectionName}`,
  dialect: 'mysql',
  username: dbUser,
  password: dbPassword,
  database: dbName,
  dialectOptions: {
    socketPath: `/cloudsql/${connectionName}`
  },
};

좋은 웹페이지 즐겨찾기