概要
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