概要
Serverless フレームワークで .env
を使った環境変数の設定方法について紹介します。
サンプルプロジェクトの作成
まず、サンプル用のプロジェクトを作成します。
Serverless フレームワークをインストールしていない場合は npm install -g serverless
を実行します。
serverless create --template aws-nodejs
Dotenv を使えるようにする
serverless.yml
を開いて以下を追加します。
これだけで .env
による環境変数の設定が可能になります。
# serverless.yml
useDotenv: true
使ってみる
ためしに .env
ファイルを追加してプログラムを実行してみます。
# .env
BASE_URL=my.api.com
// handler.js
module.exports.hello = async (event) => {
console.log(process.env.BASE_URL)
// ...
};
編集したらターミナルでハンドラを呼び出してみましょう。
sls invoke local -f hello
> my.api.com
ステージごとにファイルを分けることも可能です。
その場合、 .env.{stage名}
の形式でファイルを作成します。
# .env.dev
BASE_URL=my.api.jp
この環境変数はステージが dev
のときだけ有効です。
もういちどハンドラを呼び出してみます。
sls invoke local -f hello
> my.api.jp
sls invoke local -f hello --stage prod
> undefined
注意すべきは上のように .env.dev
ファイルを作ると .env
ファイルが無視されてしまうことです。
Dotenv の拡張機能
あらかじめプログラムを実行するマシンに設定されている変数を .env
ファイルに埋め込むこともできます。
その場合 .env
ファイル内で $
表記を使います。
# .env
BASE_URL=$MY_URL
export MY_URL=my.api.com
sls invoke local -f hello
> my.api.com