【Go】envファイルの読み込み方!

Go

kamiです。
TwitterYoutubeもやってます。

今回はGo言語の学習です。
現場では必ず使うenvファイルの読み込み方法です。

envの読み込み

initまたはmainでenvを読み込みます。

「.envファイル」から環境変数を読み込んで、実行中のプロセスの環境変数に設定します。

「.envファイル」をプロジェクトのルートに置き、godotenv.Load() を呼び出すことで、そのファイルに定義された環境変数を読み込みます。

これで環境変数がプログラム内で利用可能になります。

package main

import (
   "fmt"
   "os"
   "github.com/joho/godotenv"
)

func init() {
	// 環境変数ファイルの読み込み
	err := godotenv.Load()
	if err != nil {
		log.Printf(".envファイルの読み込みエラー: %v", err)
	}
}

ファイル指定が明示的指定して読み取る方法もできます。

if err := godotenv.Load(".env"); err != nil {
   log.Printf(".envファイルの読み込みエラー: %v", err)}
}

こちらの場合は、Loadの引数にファイル名を指定することでできます。

could not import github.com/joho/godotenv (no required module provides package “github.com/joho/godotenv")

先ほどのgodotenvを記述するとimportに「"github.com/joho/godotenv"」が記述されて警告が出ます。

import { "github.com/joho/godotenv" }

「github.com/joho/godotenv」をモジュールに追加します。

go get github.com/joho/godotenv

「go get」すると、「go.mod」ファイルのrequireセッションにgodotenvが追加されます。

「go get」 を実行したら、依存関係を最新に更新します

go mod tidy

スポンサードサーチ

envファイル側

envファイルに設定していることで、記述内容がLoadで読み込まれます。

AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_SESSION_TOKEN=

読み込みハンドリング

os.Getenv は、Go言語の標準ライブラリである os パッケージの関数で、環境変数の値を取得するために使用されます。

icon

指定した環境変数名に対応する値を文字列として返します。

	awsKey := os.Getenv("AWS_ACCESS_KEY_ID")
	if awsKey == "" {
		logger.Fatal("AWS_ACCESS_KEY_IDが見つかりません")
	}

Getenvの引数はenv内の文字列で変数を指定しています。

主な違い

特徴os.Getenvgodotenv.Load
役割環境変数の値を取得.env ファイルから環境変数を設定
返り値指定した環境変数の値(存在しない場合は空)成功またはエラーを示す (error)
使用する場面環境変数が既に設定されているとき.env ファイルから環境変数を読み込みたいとき

まとめ

  • os.Getenv は既存の環境変数を取得するために使用します。
  • godotenv.Load は .env ファイルから環境変数を読み込むために使用し、その後に os.Getenv でそれらの環境変数を取得できます。

GoGo

Posted by kami