見出し画像

AWS Lambda × Node.js(webpack)で環境変数を使う

はじめに

tokenやkeyなどgitignoreしたい変数を扱うのに.envファイルを使いたい時、今まで dotenv を使っていました。しかしwebpackでビルドしてから実行する場合は違う方法で設定することになるので調べたメモです。

ローカル環境

webpackを使って構築したので、dotenv-webpack を使って設定してみました。これはwebpackのDefinePluginをwrapしたpluginになります。

インストール

npm install dotenv-webpack --save-dev

.envファイルを作成

// .env
DB_HOST=127.0.0.1
DB_PASS=foobar
S3_API=mysecretkey

webpack.config

これをwebpackのpluginsに追加するだけです!

ちなみに、webpack.config内で環境変数(process.env.DB_HOST)を取得したいときは dotenv をinstallして「require('dotenv').config()」すると出来ます。

// webpack.config.js
const Dotenv = require('dotenv-webpack');
module.exports = {
 ...
 plugins: [
   new Dotenv()
 ]
 ...
};

ためしてみる

Lambda関数の中でconsole.logしてみます。

exports.lambdaHandler = async (event, context) => {
...
console.log('process.env.DB_HOST: ', process.env.DB_HOST)
...
};

これで無事に取れます。👍

画像1

本番環境では

管理コンソールからキーと値を設定します。

画像2

参考

-----------------------


スキ頂けると嬉しいです〜