【Golang × AWS RDS】Golangでデータアクセスしてみた

Golang
  • URLをコピーしました!

こんにちは!RYOTAです!

当記事をご覧くださりありがとうございます!

当記事ではGolangでRDSにアクセスしデータを取得する方法をお話します。

ORMはGORMを利用するので下記の記事も合わせてご覧くださいませ。

あわせて読みたい
【Golang + GORM + MySQL】Go言語のORM「GORM」を使ってみた こんにちは!RYOTAです! 当記事をご覧くださりありがとうございます! 当記事はGo言語(Golang)でDBアクセスをするための設定を説明する記事となります! 【はじめに】 ...
目次

はじめに

業務でGo×Lambda環境を構築しそこからRDSにアクセスしてデータを取得する処理を実装しました。

今回はそのRDSへの接続方法を説明していこうと思います。

実際に使うライブラリは下記の通りです。

ライブラリ

実装方法

今回は環境変数に.envを使おうと思うので、joho/godotenvで環境変数をロードさせます。

joho/godotenvのインストール

$ go get -u github.com/joho/godotenv

joho/godotenvで環境変数をロード

RDSの接続情報を.envに記述しておきます。

DB_USERNAME={username}
DB_PASSWORD={password}
DB_HOST={host}
DB_NAME={database}

上記で設定した変数をロードします。

package rds

import (
	"fmt"

	"github.com/joho/godotenv"
)

/*
	RDSと接続
*/
func RdsConnection() {
	err := godotenv.Load(".env")
	if err != nil {
		fmt.Printf(err)
	}
}

環境変数のロードができたらRDSへの接続処理を記述します。

package rds

import (
	"os"

	_ "github.com/go-sql-driver/mysql"
	"github.com/jinzhu/gorm"
)

/*
	RDSと接続
*/
func RdsConnection() *gorm.DB {
        // 環境変数ロード
	err := godotenv.Load(".env")
	if err != nil {
		fmt.Printf(err)
	}

	// 接続情報設定
	DBMS := "mysql"
	USER := os.Getenv("DB_USERNAME")
	PASS := os.Getenv("DB_PASSWORD")
	HOST := os.Getenv("DB_HOST")
	DBNAME := os.Getenv("DB_NAME")

	CONNECT := USER + ":" + PASS + "@tcp(" + HOST + ")/" + DBNAME + "?charset=utf8&parseTime=true&loc=Asia%2FTokyo"

	// RDS接続
	db, err := gorm.Open(DBMS, CONNECT)
	if err != nil {
		panic(err.Error())
	}

	return db
}

これだけ!簡単!

あとは実際にDBアクセスするところでインポートして使えばOK!

db := rds.RdsConnection()

var test []Test
db.Find(&test)
defer db.Close()

さいごに

今回はGormを使ってRDSに接続してみましたが簡単にDBにアクセスができました!

Lambda環境の場合はRDSに直接繋ぐのはよろしくないので、次回はRDS Proxyを設置してProxy経由でデータの取得をする記事を書いていこうと思います。

最後までご覧くださりありがとうございました!

Golang

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次